情人节也许已经过去了,但本文中的想法可以转化为一份独特而体贴的礼物送给您的爱人。您的女朋友是否梦想去过她一直想去但从未有机会去的梦想目的地?您的父亲是否希望能见到 Johnny Cash?您的母亲是否梦想成为亚马逊雨林的护林员?虽然您可能无法实现他们所有的梦想,但通过创建一个 AI 生成的图像相册,可以成为一份有趣且富有情感的礼物。
在本文中,我将首先介绍 FLUX.1 模型,这是由 Black Forest Labs 开发的开源图像生成模型。然后,我将探讨在这个模型中可以使用 AI 生成图像的各种用例。我们将深入研究一些预训练模型,并使用我女朋友的照片训练一个模型。最后,我们将使用 Python 在本地运行微调后的模型。
为了本文的目的,我探索了目前支持 Flux LoRa 的两个平台,它们分别是 Replicate 和 fal.ai。通过第一个平台,我能够生成非常逼真的输出,而无需训练数据,而通过 fal.ai,我训练了我女朋友的图像,并创建了展示她在最梦幻场景中的提示。最后,我使用 fal.ai API 通过 Python 本地与模型进行交互。
Black Forest Labs 的 FLUX.1 是什么
Black Forest Labs 是一个 AI 研究社区,于 2024 年 8 月 1 日推出。他们旨在为媒体开发先进的最新生成式深度学习模型。
FLUX.1 是 Black Forest Labs 的第一个杰出的 AI 模型,能够通过流匹配(FM)技术从文本生成图像。与传统的文本到图像模型相比,FLUX.1 利用增强的 FM 技术进行高效的模型训练,摆脱了复杂的模拟。
扩散模型逐步消除从随机初始状态产生图像的噪声,而 FM 采用更有针对性的策略,掌握将噪声转化为真实图像所需的特定转换。因此,这种新方法导致了更高质量的图像和独特的好处,如更快的处理速度和对最终输出的更大控制。
您可以探索 FLUX.1 模型的三种不同变体:
-
FLUX.1 [pro]: 提供最佳性能的图像生成,具有出色的视觉质量、图像细节和输出多样性。可以通过 API 访问,并通过以下平台访问:Replicate、fal.ai 和 mystic。
-
FLUX.1 [dev]: 该模型专为非商业目的而设计,提供与专业版本 FLUX.1 [pro] 相当的质量,但与等效大小的常规模型相比效率更高。FLUX.1 [dev] 的权重可在 Hugging Face 上公开获取,并可在诸如 Replicate、fal.ai 和 mystic 等平台上轻松测试。
-
FLUX.1 [schnell]: 专为本地开发和个人使用而设计,FLUX.1 [schnell] 根据宽松的 Apache2.0 许可发布。与 FLUX.1 [dev] 类似,它提供了可比较的功能,具有在 Hugging Face 上的公开权重,并在 GitHub 上提供易于访问的推理代码。此外,用户可以通过诸如 Replicate、fal.ai 和 mystic 等平台轻松访问 FLUX.1 [schnell]。
在本文中,我们将主要关注 FLUX.1 [pro] 并微调 FLUX.1 [dev],通过仅训练少量图像来定制模型以生成特定风格、角色、个人和物体。这种定制是通过 大语言模型的低秩适应(LoRA) 训练技术实现的。
LoRa 技术是一种广泛使用的轻量级训练方法,可以显著减少可训练参数的数量。它通过向模型添加一组较小的新权重,仅训练这些权重来实现这一点。这种方法使 LoRA 训练更快、更节省内存,并导致更小的模型权重(仅几百 MB),更易于存储和共享。
使用 FLUX.1 生成的生成式 AI 图像的应用
使用 FLUX.1 生成的图像质量非常高,有时很难区分真实图像和 AI 生成的内容。它的潜在应用是广泛而多样的。以下是一些关于这项技术的令人兴奋的可能性和潜在风险的示例:
-
超逼真肖像: FLUX.1 模型可以创建高质量的虚构人物肖像,有时很难区分真实照片和 AI 生成的图像。
-
历史再现: 博物馆和教育机构可以使用 FLUX.1 生成详细准确的历史人物、事件或环境描绘,这些已不复存在。
-
广告和媒体: 品牌可以利用 FLUX.1 为营销活动创建令人惊叹的视觉吸引力图像,而无需昂贵的摄影活动。
-
虚拟影响者: 公司可以使用 FLUX.1 创建数字人物,设计为与观众互动,就像他们是真实人物一样。同时,公司可以通过使用 AI 影响者而不是人类模特,大幅降低成本。
-
有趣的礼物: 通过使用朋友和家人的图像微调模型,您可以在各种环境和情景中生成他们的照片,非常适合创建一本实体或数字相册,肯定会让他们开心。
虽然 FLUX.1 的功能令人印象深刻,但重要的是要认识到与高质量 AI 生成图像相关的潜在风险。以下是一些关注点:
-
深度伪造和虚假信息: 创建逼真图像和视频的能力可用于传播虚假信息和操纵公众舆论。
-
身份盗窃和勒索: AI 生成的图像可用于冒充个人,可能导致身份盗窃、骚扰或其他恶意活动。
-
工作替代: AI 生成图像的日益复杂可能会取代摄影、平面设计和视觉效果等行业的工作。
随着 FLUX.1 和其他生成图像模型的能力以前所未有的速度不断发展,重要的是要认识到这项技术的巨大潜力和危险,正如上面的例子所强调的那样。现在让我们开始尝试 FLUX.1 模型吧。
仅通过提示生成逼真的 AI 图像
在本节中,我将尝试仅使用提示和 FLUX.1 [pro] 在 Replicate 上复制我爱人的图像。
首先,您需要创建一个帐户,您可以使用您的个人 GitHub 帐户登录。
登录后,选择来自 Black Forest Labs 的 flux-pro 模型。
每张图像的成本为 $0.055。在 fal.ai 上,成本非常相似:$0.05。
现在让我们尝试以下提示,不更改参数:
"一位 30 岁的墨西哥女士的特写,她有着黑色头发和深褐色眼睛。她灿烂的微笑展现出完美洁白整齐的牙齿。她的嘴唇丰满柔软,与她开朗的表情相得益彰。她的脸上布满雀斑,脸型圆润对称,脸颊柔和圆润。她的鼻子比例适中,既不太长也不太短。她直视着镜头。"
这是使用 FLUX.1 [pro] 生成的输出,大约花费了 18 秒:
上面的图像看起来并不像我的女朋友,也不真实。关于嘴唇、皮肤和雀斑有些东西立即告诉我这是一个 AI 生成的图像。
现在让我们尝试使用 xlabs-ai 的 flux-dev-realism 模型。
这个模型生成一张图像的成本约为 $0.037,让我们看看输出:
这张照片确实比第一张更真实,尽管它仍然看起来与我的伴侣毫不相干。问题可能出在我的提示上,可能不够详细。但总体而言,我真的很喜欢这个结果,我需要更长的时间才能意识到这是 AI 生成的。实现仅通过提示就能准确生成一个人脸的输出可能是不太可能的,至少对于不是名人的人来说是如此。因此,为了获得真正看起来像我的女朋友的结果,我需要使用一组她的图像来训练 FLUX.1 [dev] 模型。
为此,我决定使用 fal.ai 来微调模型,并为我和伴侣的面孔创造梦幻般的场景。
就像 Replicate 一样,您也可以使用 GitHub 账户登录。登录后,您应该转到 fal-ai/flux-lora-general-training 开始训练您的模型。
我没有调整任何参数,只是上传了一个包含我爱人 14 张照片的压缩文件。为了获得最佳结果,请确保选择高质量的照片,因为质量越好,输出就越好。请注意,要微调模型,您需要略少于 $5,然后需要 $0.035 来生成图像。
训练模型后,点击 Run inference 生成图像。以下是我使用的提示和相应的图像输出:
提示 1:
"穿着时尚的奇亚帕斯服装,在丛林中拿着未来主义枪支和纹身。"
上面的输出在生成我女朋友的面孔方面表现出色,然而身体略有不同,而且看起来不太真实。总体而言,结果令人印象深刻,如果我在某个社交媒体上只看到这张图像的脸,我会很难理解它是假的。
提示 2:
"在沙漠中穿着《沙丘》服装,手中沙子洒落。"
对于这个提示,我选择了多个输出,但上面的图像是我最喜欢的,不是因为它与她非常相似,而是因为我非常喜欢这些颜色、服装,以及几乎所有关于它的一切。至于面孔,我知道那不是她,尽管我无法准确指出原因。这是一种奇怪的感觉,但鼻子和眼睛的某些地方清楚地表明这不是她。然而,嘴巴、脸颊和雀斑几乎完美无缺。
提示 3:
"一名女子在墨西哥瓦哈卡州的沙滩上漫步,夕阳下。一只充满活力的蓝色蝴蝶轻轻停在她的肩膀上。她背着一个面朝她的婴儿,穿着时尚的、与宁静环境协调的沙滩服装。夕阳的金色光线在场景上投下温暖的光辉,增强了宁静而亲密的时刻。"
这是我最喜欢的一个,但我不得不多次重新输入提示,因为婴儿一直面向相机。环境完美地符合提示,看起来令人难以置信地真实。我女朋友的面孔在这张图像中也非常准确,只有一些难以一眼看出的细微差异。
使用 Python 在本地使用微调的模型
如果您想将微调的模型无缝集成到您的应用程序中,您可以使用 fal.ai API 和 Hugging Face。
首先,您需要安装客户端。
pip install fal-client
其次,您需要在仪表板的 Keys 选项卡下创建一个 API 密钥。
复制先前创建的密钥,并在您的机器上导出它:
export FAL_KEY="YOUR_API_KEY"
现在返回到 fal-ai/flux-lora-general-training. 您将看到您的训练历史和右侧的微调模型。在其旁边,您将有几个选项:Hugging Face, Show output, Show files 和 Run inference.
点击 Hugging Face,创建一个新的存储库:
确保您拥有 Hugging Face 账户并生成了 API 访问令牌。接下来,提供存储库的名称、描述和一个实例提示。实例提示本质上是触发模型的关键字或短语。对于 API 交互,存储库应该是公开的,如果您想私下使用它,可以直接使用 fal.ai subtensor 链接(稍后我们将看到这一点)。
一旦您在 Hugging Face 上有了微调的模型,您需要获取包含模型作为有效负载的 URL。为此,请转到您的模型页面,然后点击 Files and versions,最后右键单击复制模型的 URL。
现在让我们最终看一下生成本地图像的 Python 脚本:
import fal_client
# 使用 LoRA 权重定义有效负载
payload = {
"prompt": (
"我的爱人在葡萄牙的海浪上冲浪,对着相机微笑,"
"穿着奇亚帕斯手工艺服装。"),
"image_size": "landscape_4_3",
"num_inference_steps": 28,
"guidance_scale": 3.5,
"num_images": 2,
"enable_safety_checker": True,
"output_format": "jpeg",
"loras": [
{
"path": (
"<your_hugging_face_model_url>"),
"scale": 1.0
}
]
}
# 提交请求
handler = fal_client.submit(
"fal-ai/flux-general", arguments=payload)
# 获取结果
result = handler.get()
print(result)
输出的 JSON 如下:
{
"images": [
{
"url": "https://fal.media/files/lion/54SfCxvW3M89EmMYbIl5J_bd54f51fede244f18ca9c296e17c26a0.png",
"width": 1024,
"height": 768,
"content_type": "image/png"
},
{
"url": "https://fal.media/files/koala/t8Vr65CSz_LvF1mEK0YBh_05060a71c9554641b3d5c5fbcd4ac9e2.png",
"width": 1024,
"height": 768,
"content_type": "image/png"
}
],
"timings": {
"inference": 17.717261105775833
},
"seed": 10265661715272741156,
"has_nsfw_concepts": [
false,
false
],
"prompt": "我的爱人在葡萄牙的海浪上冲浪,对着相机微笑,穿着奇亚帕斯手工艺服装。"
}
在两个图像输出中,下面的图像是我首选的选择,尽管腿部与身体的其他部分看起来有些不成比例。
如果您不想使用 Hugging Face,您也可以直接使用 fal.ai safetensor 链接,并确保您的模型是私有的,不被他人使用。
为此,再次转到 fal-ai/flux-lora-general-training,在右侧您将看到以 JSON 格式显示的训练历史,点击 Show output。JSON 中的一个键称为:diffusers_lora_file
。在该键下,获取 URL。
在上面显示的 Python 脚本中,只需将路径参数更改为您在训练历史中看到的 LoRa 文件 URL,然后您就可以开始了。
结论
在本文中,我演示了如何轻松微调一个模型,生成极为逼真的某人或某物的图像。仅凭我女朋友的 14 张照片,我就能够创建一个高度准确的模型,可以在各种梦幻般的场景中生成无数张她的图像。我还可以轻松地使用 Python 和 fal.ai API 将此模型集成到网站或平台中。
当然,我在征得她的同意后撰写了这篇文章,但探索这个模型的能力以及实现它的简单性让我反思了它的潜在危险。作为一名父亲,我从未在社交媒体上发布过我的孩子的照片,尝试了 FLUX.1 之后,我更加坚信应该保持这种做法。
对于在社交媒体上有公开档案的父母和个人来说,值得重新考虑您的方法,因为任何人都可以下载 10 张照片,花不到 $5 创建一个模型,并将其滥用以在网上传播您所爱的人的图像或进行勒索。