生成式AI工具,比如DALLE和Midjourney,被全世界的人广泛用于生成各种令人惊叹的图像。虽然这些公开可用的工具在生成通用图像方面非常出色,但它们需要进行微调才能生成特定人物的图像。例如,如果我想用AI生成一张包含我自己在任意场景中的图片,我无法用这些公开工具达到这一目的。以前,使用自定义图像对这些模型进行微调既困难又昂贵,效果也不理想。然而,最近发布的Flux模型在这一领域里堪称一场变革!许多来自原始稳定扩散团队的核心成员都在Black Forest Labs及其旗舰模型Flux背后。
正如我们在这篇博客中将要展示的,只需大约40张个人照片即可轻松微调此模型,而微调后的模型效果简直就像施了魔法一样!使用Nvidia H100 GPU硬件进行微调的成本不到2.0美元(大约170卢比)。想象一下,人们在拍婚前照时能省下多少钱!
我们使用斯瓦米·维韦卡南达的照片对FLUX模型进行了微调,以下是对提示词“一个年轻的印度僧侣戴着太阳镜站在板球场上,手里拿着球棒”的微调前后的效果:
稳定扩散 VS 流动 FLUX 模型系列 准备:图像调整数据为了开始微调,你需要至少40张512x512像素的JPEG或PNG格式的图片,这些图片需要代表你希望模型学习的特定概念。这里所说的概念指的是特定人物的脸和身体特征。这些图片应该多样化,以涵盖概念的不同方面,比如不同角度、姿势和光线条件。比如,如果你想在斯瓦米·维韦卡南达上进行微调,你应该包括不同场景、姿势和光线条件下的图片。
首先,我们需要将所有图片统一裁剪成正方形。这样,训练代码就不会将矩形图片拉伸成1:1的比例了。
对于这一步,前往BIRME(B ulk I mage R esizing M ade E asy)并拖放你保存的数据集文件。一旦所有图片上传完成(这可能需要一分钟,具体取决于图片的数量),你会看到除了图片中的正方形部分外,其余部分都被灰掉了。我们提供的链接应该启用了“自动检测焦点”功能,这将大大节省你手动选择想要包含在正方形区域内的内容的时间,但如果你愿意,也可以手动调整选择。当你对所有图片的选择满意后,点击“保存为Zip”按钮。
调整图像大小也可以用Python轻松实现,但使用BIRME的滑动功能对于正确构建数据集至关重要。例如,如果我们有一张想要突出主要对象的图片,我们需要利用滑动功能。比如一张包含许多对象的图片,使用BIRME,你可以轻松滑动以专注于主要对象。
我们决定将图片保存为512x512,而不是256x256,尽管我们的模型输出为256x256。这样可以提高输出质量。
调整图片大小后,你可能还需要提升图片质量,因为原始图片质量可能不高。在我们的情况下,我们使用公开的维韦卡南达图片来微调模型,但这些图片质量不是很好。我们尝试了几种标准的图片增强技术,但效果不理想。因此,我们尝试了Picsart的AI工具,效果非常好。
编写图像提示并整理您的数据集然后你需要为每张图片写一个清晰的描述,并保持对图片中主要角色描述的一致性。例如,在使用斯瓦米·维韦卡南达的照片时,我们都用“一位年轻的印度僧侣”来描述,并描述真实的场景。你也可以用一些AI工具来生成每张图片的描述,然后再手动调整以达到完美。
触发功能的关键词每个提示语可以包含一个特殊的字符串[触发词],如果有指定的触发词,它会替换掉字幕中的[trigger]。
触发关键词:
- 用于提示中的字符串,如果未设置则。
- 如果为 None,[trigger] 将保持原样。
- 如果没有字幕,将使用触发词替代提示字符串。
- 如果有字幕,触发词将替换 [trigger]。
例如,
- trigger_word: “一位年轻的印度和尚”
- captions: “这张黑白[触发]照片显示了一个显得沉思的男子肖像。”
这是一张年轻的印度僧侣的黑白影像,他表情沉思。
这允许根据设定的触发词动态调整字幕。
我们正在自定义数据集上调整Flux模型黑森林实验室公司发布了FLUX.1文本转图像模型系列,这些模型在图像细节、指令响应、风格多样性和场景复杂度方面定义了新的业界标准。我们选择了fal.ai来微调,其微调过程非常简单。
为了使该模型发挥最佳性能,请确保图像以 base64 编码的数据 URL 格式提供。
你需要非常小心,确保图片和对应的文本文件同名,例如 Swami_Vivekananda(1).png 和 Swami_Vivekananda(1).txt。这些图片和描述需要按照 JSON 格式 排列,在 JSON 中,每一项都包含提示(文本描述)和 Base64 编码的图片链接。
- 确保
image_url
的图片尺寸正好是 512x512。 - 确保将
sync_mode
设置为True
。这将确保在进行推理时,你将从我们的 API 获得一个 base64 编码的数据 URL。
你也可以选择768x768或1024x1024作为图片尺寸,但这会增加训练和推断的成本和时间。
您可以使用这个Python代码来微调模型。只需要替换图片的URL和提示。
你可以使用fal.ai游乐场的训练页面来调整,而不必使用Python代码,只需按照自己的需要选择所有相关参数即可。
一旦训练完成,您就可以在fal.ai的GPU或HuggingFace平台上发布您的模型。
瑞典微调后的模型来做推理这里有两种选择:
- 您可以下载权重或将此模型发布到HF,在那里推理将免费(但速度较慢)。
- 如果您想私下托管这个模型,可以使用fal.ai [代码链接],每次推理将收费约0.03美元。
#pip install fal-client
export FAL_KEY="PASTE_YOUR_FAL_KEY_HERE"
import fal_client
handler = fal_client.submit(
"fal-ai/lora",
arguments={
"model_name": "fal-ai/fast-lcm-diffusion",
"num_inference_steps": 50,
# 请用你微调的模型名称替换模型名称。
# 要更新模型名称,请执行以下步骤:
# 1. 访问Fal.ai官方网站:https://fal.ai/
# 2. 使用你的身份验证Git凭证登录。
# 3. 点击主页图标。
# 4. 你会看到你的微调模型列表。
# 5. 点击游乐场以访问模型。
# 6. 复制模型名称并将其更新到脚本中。
"prompt": "一个年轻的印度和尚在打篮球"
},
)
result = handler.get()
print(result)
这项工作是由我的研究员Nitin Kushwaha(https://www.linkedin.com/in/nitin-kushwaha-00075a18b/)完成。
共同学习,写下你的评论
评论加载中...
作者其他优质文章