为了账号安全,请及时绑定邮箱和手机立即绑定

从自拍到个性化杰作:用个人照片微调Flux模型

生成式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的比例了。

对于这一步,前往BIRMEB 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 格式提供。

  • 您可以使用这个链接生成 base64 编码的 URL。
  • 您还可以通过提供图片和对应文本文件的路径,使用这个脚本链接批量转换为 base64 格式。

你需要非常小心,确保图片和对应的文本文件同名,例如 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)

用于精调的数据集
HuggingFace上的公开模型

这项工作是由我的研究员Nitin Kushwaha(https://www.linkedin.com/in/nitin-kushwaha-00075a18b/)完成

点击查看更多内容
TA 点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
  • 推荐
  • 评论
  • 收藏
  • 共同学习,写下你的评论
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消