加载中...

「AI 写真自由」如何在朋友圈正式出道、成为最瞩目的仔 ?


0x00 前言

FLUX 是由 Stable Diffusion 原班人马创立的新公司 Black Forest Labs(黑森林实验室)在今年 8 月推出的一款最新的文生图大模型。

FLUX 模型包含三个版本:

  • FLUX.1 [pro]: 这是 FLUX.1 目前最强的版本(闭源),专为商业用途设计,提供最先进的图像生成性能,包括顶级的提示词遵循、视觉质量、图像细节和输出多样性
  • FLUX.1 [dev]: 直接从 FLUX.1 [pro] 蒸馏而来的一个开源的引导蒸馏模型,适用于非商业应用。它获得了类似的质量和提示词遵循能力,同时比同等大小的标准模型更高效。
  • FLUX.1 [schnell]: 响应速度最快的模型,专为本地开发和个人使用量身定制。

在本文中,我们将学会如何使用 FLUX.1 [dev] 在线上免费生成个人写真。

因为是在线生成,因此对个人电脑配置没有任何门槛要求的,对没办法安装 SD 的同学非常友好。

0x10 流程说明

整个出图流程大概如下:

  1. 准备至少 12 张自己的正脸各个角度的照片
  2. 使用 Replicate 在线训练自己的 LoRA 模型,存储到 Hugging Face
  3. 使用 Replicate 在线出图

你要做的只有准备个人照和注册对应站点的帐号,是不是很简单呢?

废话不多说,我们先看看最终的出图效果:

蜘蛛侠

蜘蛛侠中秋送月饼

蜘蛛侠中秋送月饼

0x20 准备工作

0x21 注册 Replicate

Replicate 是一个 AI 模型运行平台,允许用户通过 API 运行和微调开源的 AI 模型。

它支持生成图像、文本、视频、音乐和语音等任务,用户可以使用简单的代码部署自定义模型,使用自己的数据微调模型,并自动管理基础设施。这个平台旨在简化机器学习模型的部署和扩展,提供各种 AI 模型的生产级 API。

Replicate 目前只能通过关联 Github 账户注册。

点击这个优惠链接注册,新用户可以领取 $10 的免费额度: https://replicate.com/invites/572ae3c6-1385-41b3-afdc-1e99e11836b8

如果领取优惠成功,可以在账单 https://replicate.com/account/billing 中看到信用额度:

任务执行失败不扣费,生成一个 LoRA 模型大概需要 $2.23,生成一张图大概需要 $0.03,因此 $10 的免费额度足够挥霍很久了。

0x22 注册 Hugging Face

早在《SD 零基础入门系列》我们已经介绍过,Hugging Face 其实就是大模型的主要源仓库,如果你之前已经有注册过,复用帐号即可; 否则在官网 https://huggingface.co/ 注册新帐号即可。

Hugging Face 需要科学上网才能访问

0x23 创建存储 LoRA 的仓库

在去年 SD 系列中的《LoRA 训练》,我们也介绍过什么是 LoRA 模型、以及 LoRA 模型是如何训练的了。

但当时在本地训练,环境准备比较繁琐、而且受限于本地硬件配置,训练速度和质量也略显不足。这次我们把训练搬到线上,看看训练效果会不会比本地更好些。

但训练 LoRA 之前,我们需要在 Hugging Face 创建一个存储 LoRA 的模型仓库:

  1. 点击右上角个人头像
  2. New Model
  3. 输入 LoRA 模型仓库名称,随意即可
  4. 可见性必须选择 public,因为 private 的私有仓库是无法被 Replicate 读写的
  5. 点击 Create Model 按钮创建模型,复制模型仓库的名字备用,如我这里为 EXPM02/EXP-Flux-LoRA

如果担心自己的 LoRA 模型泄露给他人乱用,记得在使用完之后设置为 private,需要用到时再重新设置为 public

0x24 生成 API Token

为了让 Replicate 可以读写刚刚创建的 LoRA 模型仓库,我们还需要生成一个 Hugging Face 的 API Token 供其调用接口:

  1. 点击右上角个人头像
  2. Settings
  3. Access Token
  4. Create New Token

此时进入新 Token 权限编辑的页面,注意:

  1. Token Type 必须选择 Write
  2. Token Name 随机即可
  3. 在 User permissions 下,把 Repositories、Inference、Webhooks、Collections 的权限全部勾选上
  4. 点击最下方的 Save Token
  5. 存储并保管好获得的 API Token,千万不要泄露,格式形如 hf_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

Token Type 千万不要选错 FINEGRAINED,这个类型的 Token 在生成后,大部分权限会被强行移除且无法修改,导致训练完成后无法存储 LoRA 模型

0x25 准备个人照片

为了训练自己的 LoRA 模型,我们需要准备至少 12 张的个人照片,要求如下:

  1. 正脸照片为主,角度要丰富(45度以内的抬头、低头、侧脸等)
  2. 照片光线充足,不要太暗
  3. 人和背景能够鲜明区分
  4. 不要有任何障碍物阻挡脸部,戴眼镜可以先摘下,除非你希望出图都有眼镜
  5. 只是换脸,因此只拍上半身、甚至只有大头照即可
  6. 照片格式统一,要么全 jpg 要么全 png,混杂格式会导致训练时报错
  7. 照片尺寸没有要求,但不需要太大,像素宽度 512 差不多了,太大上传可能失败
  8. 照片统一命名格式为 a_photo_of_触发词(编号).jpg/png
  9. 所有照片不要放到文件夹中,直接压缩为 a_photo_of_触发词.zip,且必须是 .zip 压缩格式

关于 LoRA 触发词的运用,可以参考早期 SD 系列中的《LoRA 专题:五大应用场景》,它主要在出图时写在提示词中,以激活对应的 LoRA 模型

压缩包留作备用即可,可以参考我准备的照片(我的触发词为 EXP):

至此准备工作全部完成,可以开始训练了。

0x30 训练自己的 LoRA 模型

训练需要在 Replicate 平台执行。

先打开 LoRA 训练工具仓库 ai-toolkithttps://replicate.com/lucataco/ai-toolkit

  1. 选择 Train 标签
  2. 在 Destination 创建一个 Replicate 的模型仓库,名字随意即可(这个仓库主要用来记录训练结果的版本,目前我们并不会用到它)

  1. 在 images 上传前面 a_photo_of_触发词.zip
  2. 在 hf_token 中输入前面在 Hugging Face 生成的 API Token

特别地注意到 model_name 中,默认填写了 black-forest-labs/FLUX.1-dev,即使用了 FLUX.1 [dev] 模型训练 LoRA。

首次使用 FLUX.1 [dev] 模型之前,需要手动访问模型页面 https://huggingface.co/black-forest-labs/FLUX.1-dev ,点击里面的 Agree and access repository 同意访问按钮,否则训练时 API 接口无法调用这个模型,导致训练时会报错。

  1. 拉到最下面,找到 repo_id,填写前面在 Hugging Face 创建的、用于存储 LoRA 的仓库,如我这里为 EXPM02/EXP-Flux-LoRA
  2. 最后点击 Create Training 按钮开始训练

大概 20 分钟后,看到训练状态为 success 时即表示训练完毕:

此时访问我们自己在 Hugging Face 的模型仓库 EXPM02/EXP-Flux-LoRA,点击 Files and versions 可以看到训练好的 LoRA 模型文件已经上传到仓库了,这就是你自己样子的 LoRA 模型:

0x40 出图

拥有自己的 LoRA 模型之后,我们就可以用它生成自己的写真、在朋友圈正式出道了。

这里要打开 Flux 在线画图仓库 flux-dev-lorahttps://replicate.com/lucataco/flux-dev-lora

不难发现这个操作界面很像 SD,基本功扎实的同学,很快就能上手了:

  1. 在 prompt 填入画面内容的提示词,第一个要填写自己 LoRA 模型的触发词,如我这里的触发词为 EXP,后面提示词建议用 chatgpt 帮忙写
  2. 在 aspect_ratio 选择出图比例,我这里选了 16:9
  3. 注意到 image 是让我们上传一张参考图,和 SD 的《图生图》很像,这里先跳过,有兴趣的同学可以试试
  4. 在 hf_lora 填写前面生成的 LoRA 模型仓库名字,如这里为 EXPM02/EXP-Flux-LoRA,表示使用我自己的模型
  5. 在 output_format 选择出图格式
  6. 在 num_outputs 选择一次出几张图,先保持 1 张看看提示词的效果,不然效果不好就浪费钱了
  7. 其他参数保持默认即可
  8. 点击 Run 按钮直接出图

根据提示词:

EXP, Realistic image of a young man in a dynamic and heroic pose, wearing a Spider-Man costume without a mask, as he swings between skyscrapers at night. 
In one hand, he deftly balances a plate of mooncakes, symbolizing grace under pressure, while his other hand actively sprays spider silk, anchoring him securely to a nearby building. 
The backdrop features a large, full moon that casts a dramatic silvery glow over the cityscape, with brightly lit skyscrapers enhancing the scene’s vibrancy. 
His expression is one of intense concentration, his body language exuding cool confidence and agility.

我在中秋节化身为蜘蛛侠穿梭在城市之间送月饼,氛围感一下就出来了呢:

0x50 写真自由大赏

利用这个方法,我轻松 cos 了诸多角色的写真:

哈利波特

巫师3

赌神

海贼索隆

钢铁侠

毒液

街舞堂主

终极铁克人

cosplay 孙悟空

0xF0 Q&A

0xF1 开始训练时提示:Failed to upload file

如果你在 ai-toolkit 开始训练时,点击 Create Training 后一直提示 文件上传失败,说明 a_photo_of_触发词.zip 没上传成功。

如果你的 a_photo_of_触发词.zip 不是很大(10M 以内),一般都是网络原因引起的,你需要重复三个步骤,直到成功为止:

  1. 删掉 images 中的 a_photo_of_触发词.zip
  2. 在 images 重新选择 a_photo_of_触发词.zip 上传
  3. 点击 Create Training 按钮

不建议 a_photo_of_触发词.zip 太大,否则上传失败的几率比较高,而且训练用不到高分辨率的图片,一般在 512 像素就足够了。

0xF2 开始训练后马上就报错失败

错误提示如下:

Training failed.
Command '['python', 'run.py', 'config/replicate.yml']' returned non-zero exit status 1.
... ...
Error running job: black-forest-labs/FLUX.1-dev is not a local folder and is not a valid model identifier listed on 'https://huggingface.co/models'
If this is a private repository, make sure to pass a token having permission to this repo with `token` or log in with `huggingface-cli login`.
... ...

报错里有个关键信息: FLUX.1 [dev] 模型可能是私有的导致无法访问。

其实它不是私有的,前面已经说过,在 model_name 中,默认使用了 black-forest-labs/FLUX.1-dev 模型训练 LoRA,但是首次使用 FLUX.1 [dev] 模型之前,需要手动访问模型页面 https://huggingface.co/black-forest-labs/FLUX.1-dev ,点击里面的 Agree and access repository 同意访问按钮,否则训练时 API 接口无法调用这个模型,导致训练时会报错:

0xF3 训练完成后存储 LoRA 模型失败

错误提示如下:

Training failed.

(Request ID: Root=1-66e69ad2-3a16848326a94ec113e742c3;4af3e888-02e7-452d-833f-e5873aa75b6f) 403 Forbidden: Authorization error.. Cannot access content at: https://huggingface.co/EXPM02/EXP-Flux-LoRA.git/info/lfs/objects/batch. If you are trying to create or update content, make sure you have a token with the `write` role.

很明显就是你在 hf_token 中输入 Hugging Face 生成的 API Token 的权限不够,因为没有 Write 写权限导致无法存储模型到你的 LoRA 仓库。

解决方法请参考 0x24 去做就好了,多半是生成 Token 时, Token Type 没选对,必须选择 Write

Replicate 失败的任务并不会扣费


文章作者: EXP
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 EXP !
 上一篇
让生活更有 AI 意 让生活更有 AI 意
为庆祝母校计算机与人工智能学院的成立,特撰写本文。内容涵盖了 AI 在游戏、生活、媒体、绘画等多个领域、结合我近年来的研究作品,从实际应用出发、多角度展示 AI 的魅力,旨在引导新同学更真实地理解 AI 能做什么,激发学习兴趣。
2024-10-07
下一篇 
如何在 SteamDeck 上运行《大富翁4》? 如何在 SteamDeck 上运行《大富翁4》?
《大富翁4》是很多人童年最喜欢的多人同台桌游,前几年在 steam 上架了,本来以为能在线联机,却发现只是一次暴力移植,不但没有做平台的兼容性改造、分辨率还是 20 年前的样子,你要是不会改参数,甚至在 SteamDeck 都打不开游戏 ...
2024-08-12
  目录