FLUX.1 文生图模型微调指南
FLUX.1 是 Black Forest Labs 今年夏天发布的文本转图像模型系列。FLUX.1 模型为开源图像生成模型树立了新标准:它们可以生成逼真的手、清晰的文本,甚至可以生成搞笑表情包这样异常困难的任务。
现在,你可以使用 Ostris 的 Replicate 上的 AI Toolkit 对 FLUX.1 [dev] 进行微调。
如果你知道这一切意味着什么,并且已经准备好使用你的数据集进行尝试,你可以跳到代码部分。否则,以下是它的含义以及你应该关注的原因:
左图:使用基本 FLUX.1 模型生成。右图:与模型 fofr/flux-bad-70s-food 相同的提示和种子
NSDT工具推荐: Three.js AI纹理开发包 - YOLO合成数据生成器 - GLTF/GLB在线编辑 - 3D模型格式在线转换 - 可编程3D场景编辑器 - REVIT导出3D模型插件 - 3D模型语义搜索引擎 - AI模型在线查看 - Three.js虚拟轴心开发包 - 3D模型在线减面 - STL模型在线切割
1、什么是微调?
这些大型图像生成模型(如 FLUX.1 和 Stable Diffusion)在一堆添加了噪声的图像上进行训练,并学习“添加噪声”的反向功能。令人惊讶的是,这竟然是“创建图像”。
他们怎么知道要创建哪幅图像?他们以 CLIP 和 T5 等转换器模型为基础,这些模型本身经过大量图像-标题对的训练。这些是语言到图像的编码器:它们学习将图像及其标题映射到高维空间中的相同形状。当您向他们发送文本提示时,例如“公园里读报纸的松鼠”,他们可以将其映射到网格中的像素模式。对于编码器来说,图片和标题是同一回事。
图像生成过程如下所示:获取一些输入像素,将它们稍微远离噪声并移向文本输入创建的模式,然后重复,直到达到正确的步数。
反过来,微调过程会从数据集中获取每个图像/标题对,并稍微更新内部映射。你可以通过这种方式教模型任何东西,只要它可以通过图像-标题对来表示:角色、设置、媒介、风格、流派。在训练过程中,模型将学会将你的概念与特定的文本字符串关联起来。将此字符串包含在提示中以激活该关联。
例如,假设你想针对漫画超级英雄微调模型。你将收集一些角色图像作为数据集。一个全面的批次:不同的设置、服装、灯光,甚至不同的艺术风格。这样,模型就会明白它正在学习的是这个人,而不是任何其他偶然的细节。
选择一个简短、不常见的单词或短语作为触发器:一些不会与其他概念或微调冲突的独特的东西。你可以选择“70 年代的糟糕食物”或“JELLOMOLD”之类的东西。训练您的模型。现在,当你提示“在旧金山的派对上拍摄 70 年代的糟糕食物”时,你的模型将调用你的特定概念。就这么简单。
拍几张你的宠物或你最喜欢的室内植物的照片,让我们开始吧。
左图:使用基本 FLUX.1 模型生成。右图:使用模型 fofr/flux-bad-70s-food 的相同提示和种子
2、如何微调 FLUX.1
n你只需在网络上或通过 API 上传一些图像,即可在 Replicate 上微调 FLUX.1。
如果你不熟悉 Replicate,我们可以轻松地将 AI 作为 API 运行。你不必寻找强大的 GPU,不必处理环境和容器,也不必担心扩展。可以使用普通 API 编写普通代码,只需为你使用的内容付费。
2.1 准备训练数据
要开始微调,你需要一组代表想要教给模型的概念的图像。这些图像应该足够多样化,以涵盖概念的不同方面。例如,如果你正在对特定角色进行微调,请包括各种设置、姿势和灯光下的图像。
以下是一些指导原则:
- 使用 12-20 张图像以获得最佳效果
- 尽可能使用大图像
- 使用 JPEG 或 PNG 格式
- 或者,为每个具有相同名称的图像创建一个相应的 .txt 文件,其中包含标题
获得图像(和可选标题)后,将它们压缩成一个文件。
2.2 在网络上创建训练
要开始在网络上进行训练过程,请在 Replicate 上导航到 Ostris 的 FLUX.1 [dev] 训练器。
首先,选择一个模型作为目标,或者通过在模型选择器字段中键入名称来创建一个新模型。
接下来,将包含训练数据的 zip 文件作为 input_images
上传,然后设置训练参数。
trigger_word
指的是你正在训练的对象、风格或概念。选择一个不是真实单词的字符串,例如 TOK 或与正在训练的内容相关的内容,例如 CYBRPNK。你指定的触发词将在训练期间与所有图像相关联。然后,当你运行经过微调的模型时,可以在提示中包含触发词以激活你的概念。
对于步骤,一个好的起点是 1000。
将 learning_rate
、 batch_size
和 resolution
保留为默认值。除非你想提供自己的字幕,否则请保持自动字幕启用。
如果你想在 Hugging Face 上保存自己的模型,请输入你的 Hugging Face 令牌并设置存储库 ID。
填写完表格后,单击“创建训练”以开始微调过程。
2.3 通过 API 创建训练
或者,你可以使用 API 从自己的代码创建训练。
确保已在环境中设置了 REPLICATE_API_TOKEN。在你的帐户设置中找到它。
export REPLICATE_API_TOKEN=r8_***************************
创建一个新模型,作为微调权重的目标。一旦流程完成,你的训练模型将驻留在此位置。
import replicatemodel = replicate.models.create(owner="yourusername",name="flux-your-model-name",visibility="public", # or "private" if you preferhardware="gpu-t4", # Replicate will override this for fine-tuned modelsdescription="A fine-tuned FLUX.1 model"
)print(f"Model created: {model.name}")
print(f"Model URL: https://replicate.com/{model.owner}/{model.name}")
现在你有了模型,请通过创建新的训练运行来开始训练过程。你需要提供输入图像、步数以及任何其他所需参数。
# Now use this model as the destination for your training
training = replicate.trainings.create(version="ostris/flux-dev-lora-trainer:4ffd32160efd92e956d39c5338a9b8fbafca58e03f791f6d8011f3e20e8ea6fa",input={"input_images": open("/path/to/your/local/training-images.zip", "rb"),"steps": 1000,"hf_token": "YOUR_HUGGING_FACE_TOKEN", # optional"hf_repo_id": "YOUR_HUGGING_FACE_REPO_ID", # optional},destination=f"{model.owner}/{model.name}"
)print(f"Training started: {training.status}")
print(f"Training URL: https://replicate.com/p/{training.id}")
请注意,此时为模型选择哪种硬件并不重要,因为我们将所有 FLUX.1 微调路由到 H100。训练这么多步骤通常需要 20-30 分钟,费用不到 2 美元。
2.4 使用训练好的模型
训练完成后,可以像使用任何其他模型一样直接在 Replicate 上使用训练好的模型。
你可以在 Web 上运行它:
- 转到 Replicate 上的模型页面(例如
https://replicate.com/yourusername/flux-your-model-name
)。 - 对于提示输入,请包含触发词(例如“70 年代的糟糕食物”)以激活你的微调概念。
- 根据需要调整任何其他输入。
- 单击“运行”以生成你的图像。
或者,使用 API。例如,使用 Python 客户端:
import replicateoutput = replicate.run("yourusername/flux-your-model-name:version_id",input={"prompt": "A portrait photo of a space station, bad 70s food","num_inference_steps": 28,"guidance_scale": 7.5,"model": "dev",****}
)print(f"Generated image URL: {output}")
将 yourusername/flux-your-model-name:version_id
替换为你的实际模型详细信息。
你可以在模型页面的“API”选项卡上找到有关使用 API 运行它的更多信息。
3、使用 FLUX.1 [schnell] 实现更快的生成
你可以将 FLUX.1 [dev] LoRA 与较小的 FLUX.1 [schnell] 模型一起使用,以更快、更便宜地生成图像。只需在生成时将模型参数从 dev 更改为 schnell,并将 num_inference_steps 降低到 4 等小值即可。
请注意,输出仍将受 FLUX.1 [dev] 的非商业许可。
3.1 示例和用例
查看我们的示例库以获取灵感。你可以看到其他人如何微调 FLUX.1 来创建不同的风格、角色、永无止境的可爱动物游行等等。
基本 FLUX.1 模型输出:
左图:使用基本 FLUX.1 模型生成。右图:使用 fofr/flux-bad-70s-food 模型的相同提示和种子
3.2 许可和商业使用
如果你使用 FLUX.1 模型及其微调在 Replicate 上生成图像,则可以将这些图像用于商业用途。
如果你从 Replicate 下载权重并在自己的计算机上生成图像,则不能将这些图像用于商业用途。
原文链接:FLUX.1微调指南 - BimAnt
相关文章:

FLUX.1 文生图模型微调指南
FLUX.1 是 Black Forest Labs 今年夏天发布的文本转图像模型系列。FLUX.1 模型为开源图像生成模型树立了新标准:它们可以生成逼真的手、清晰的文本,甚至可以生成搞笑表情包这样异常困难的任务。 现在,你可以使用 Ostris 的 Replicate 上的 A…...
JavaWeb基础:HTTP协议与Tomcat服务器
目录 1. HTTP协议简介 示例代码:创建HTTP GET请求 2. Tomcat服务器介绍 Tomcat的基本操作 示例代码:部署简单Servlet 3. 使用Servlet处理请求 示例代码:处理POST请求 在现代网络开发中,理解HTTP协议和如何使用Tomcat作为服…...

python井字棋游戏设计与实现
python实现井字棋游戏 游戏规则,有三个井字棋盘,看谁连成的直线棋盘多谁就获胜 棋盘的展现形式为 棋盘号ABC和位置数字1-9 输入A1 代表在A棋盘1号位数下棋 效果图如下 部分源码如下: 卫星工纵浩 白龙码程序设计,点 代码获取 …...

据说是可以和 Windows 一拼的 5个 Linux 发行版
现如今有数以千计的 Linux 发行版可供您使用,然而人们却无法选择一个完美的操作系统来替代 Windows。 使用 Windows 时,傻瓜都能操作自如,同样的方法却不适用于 Linux。在这里,您必须具备操作和使用操作系统的基本知识。因此人们经…...
PHP 常用函数
1. ksort() 如果你有一个数组 array([11] > array(XX), [6] > array(YYY)),你想要返回按照key重新排序,并不改变键和值之间的关联,处理之后的结果为 array([6] > array(YY…...

如何将MySQL迁移到TiDB,完成无缝业务切换?
当 MySQL 数据库的单表数据量达到了亿级,会发生什么? 这个现象表示公司的业务上了一个台阶,随着数据量的增加,公司规模也进一步扩大了,是非常喜人的一个改变 ,然而随之而来的其他变化,就没那么…...

【嵌入式烧录刷写文件】-2.10-为一个Intel Hex文件计算校验和Checksum
案例背景(共6页精讲): 有如下一段Intel Hex文件,为其创建Checksum校验和:CRC16,CRC32(CVN),SHA-256 Hash算法…, 将Checksum Value填充到指定地址。 :2091000058595A5B5C5D5E5F606162636465666768696A6B6C6D6E6F707172737475767…...

整体思想以及取模
前言:一开始由于失误,误以为分数相加取模不能,但是其实是可以取模的 这个题目如果按照一般方法,到达每个节点再进行概率统计,但是不知道为什么只过了百分之十五的测试集 题目地址 附上没过关的代码 #include<bits…...

RabbitMQ 消息可靠保障
RabbitMQ 消息可靠保障 消息的可靠性保证生产者重连生产者确认解决思路A-确认机制解决思路B-备份交换机 MQ 服务器宕机导致消息丢失消费端消息的可靠性保障 消费端限流给消息生成唯一id 消息的可靠性保证 实际项目中 MQ 的流程一般是:生产端把消息路由到交换机&…...
Redis 作为 PHP 的会话存储
使用 Redis 作为 PHP 的会话存储,可以实现多个服务器之间的会话共享,提高会话管理的效率,特别是在分布式系统中。这种方法将会话数据存储在 Redis 中,而不是使用默认的文件系统,从而使多个服务器可以访问相同的会话数据…...

基于伏图的数字心脏模拟仿真APP应用介绍
一、背景介绍 心脏是保证人体正常运转最重要的动力,人体内的血液循环通过心血管运输到各个部位,因此,心血管系统的稳定是人体健康的关键。心血管内科领域极具专业性,其理论研究与技术发展日新月异,心血管疾病患者往往…...

智云-一个抓取web流量的轻量级蜜罐docker一键启动
智云-一个抓取web流量的轻量级蜜罐docker安装教程 github地址 https://github.com/xiaoxiaoranxxx/POT-ZHIYUN docker快速启动(v1.4) git clone https://github.com/xiaoxiaoranxxx/POT-ZHIYUN.git cd POT-ZHIYUN docker-compose up -d默认映射到80和8080端口 mysql不对外开放…...

原生HTML5、CSS、JavaScript实现简易网易云音乐播放
1.效果图 2.源码 1.index.html <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><title>网易云音乐</title><link rel"stylesheet" href"../CSS/index.css"> </head>…...

网上商城小程序的设计
管理员账户功能包括:系统首页,个人中心,用户管理,商品信息管理,商品类型管理,活动专区管理,新品上架管理,用户评价管理,订单管理,系统管理 微信端账号功能包…...

微分方程(Blanchard Differential Equations 4th)中文版Section2.2
动力系统的几何分析 捕食者-猎物系统的向量场 在第2.1节中,我们展示了两个不同捕食者-猎物系统的 R ( t ) R(t) R(t) 和 F ( t ) F(t) F(t) 图形,但没有描述我们是如何生成这些图形的。我们将在第2.5节中解决这个问题,采用欧拉方法推广到…...
Swift 环境搭建
Swift 环境搭建 Swift 是由苹果公司开发的一种强类型编程语言,用于iOS、macOS、watchOS和tvOS应用程序的开发。搭建Swift开发环境是开始使用Swift进行编程的第一步。本文将详细介绍如何在不同的操作系统上搭建Swift开发环境。 在macOS上搭建Swift环境 系统要求 …...
科技与出版
科技与出版 ISSN: 1005-0590 CN: 11-3209/G3 常设栏目:特别策划、产业观察、融媒之光、编辑实务、营销方略、学术探索、创作空间等。 稿件要求 (1)来稿应有创新性;立论科学,主题明确,推理严谨;词语准确,…...
5年前端面试之路
作者:星空海绵 顺便吆喝一声,技术大厂,内推捞人,前/后端or测试←感兴趣 --加班偶尔较多,但周末加班两倍工资。 --15-35K,工资一线城市属于一般,但二线城市很可以。 前言 由于公司要进行…...

产品运营(一)--产品运营是什么?
1.运营是什么? 通过一系列穿针引线式的行为和资源投入,让一件事能持续良性运转。 运营面向的主体不同,使用的运营手段也是不同的。作用:赋予产品闪耀的光芒。距离用户最近的人(体验用户,成为用户?demo:k…...

学习大数据DAY41 Hive 分区表创建
目录 分区表 分区表应用场景 oracle 分区表种类 oracle 分区-范围分区 oracle 分区-列表分区 oracle 分区-散列分区 oracle 分区-组合分区 oracle 分区-分区表操作 hive 分区-创建分区表 hive 分区-分区表操作 hive 分区-动态分区表配置 上机练习 分区表 分区是将一…...
C++:std::is_convertible
C++标志库中提供is_convertible,可以测试一种类型是否可以转换为另一只类型: template <class From, class To> struct is_convertible; 使用举例: #include <iostream> #include <string>using namespace std;struct A { }; struct B : A { };int main…...

中南大学无人机智能体的全面评估!BEDI:用于评估无人机上具身智能体的综合性基准测试
作者:Mingning Guo, Mengwei Wu, Jiarun He, Shaoxian Li, Haifeng Li, Chao Tao单位:中南大学地球科学与信息物理学院论文标题:BEDI: A Comprehensive Benchmark for Evaluating Embodied Agents on UAVs论文链接:https://arxiv.…...
蓝桥杯 2024 15届国赛 A组 儿童节快乐
P10576 [蓝桥杯 2024 国 A] 儿童节快乐 题目描述 五彩斑斓的气球在蓝天下悠然飘荡,轻快的音乐在耳边持续回荡,小朋友们手牵着手一同畅快欢笑。在这样一片安乐祥和的氛围下,六一来了。 今天是六一儿童节,小蓝老师为了让大家在节…...
条件运算符
C中的三目运算符(也称条件运算符,英文:ternary operator)是一种简洁的条件选择语句,语法如下: 条件表达式 ? 表达式1 : 表达式2• 如果“条件表达式”为true,则整个表达式的结果为“表达式1”…...
VTK如何让部分单位不可见
最近遇到一个需求,需要让一个vtkDataSet中的部分单元不可见,查阅了一些资料大概有以下几种方式 1.通过颜色映射表来进行,是最正规的做法 vtkNew<vtkLookupTable> lut; //值为0不显示,主要是最后一个参数,透明度…...
论文解读:交大港大上海AI Lab开源论文 | 宇树机器人多姿态起立控制强化学习框架(一)
宇树机器人多姿态起立控制强化学习框架论文解析 论文解读:交大&港大&上海AI Lab开源论文 | 宇树机器人多姿态起立控制强化学习框架(一) 论文解读:交大&港大&上海AI Lab开源论文 | 宇树机器人多姿态起立控制强化…...
JAVA后端开发——多租户
数据隔离是多租户系统中的核心概念,确保一个租户(在这个系统中可能是一个公司或一个独立的客户)的数据对其他租户是不可见的。在 RuoYi 框架(您当前项目所使用的基础框架)中,这通常是通过在数据表中增加一个…...

Golang——7、包与接口详解
包与接口详解 1、Golang包详解1.1、Golang中包的定义和介绍1.2、Golang包管理工具go mod1.3、Golang中自定义包1.4、Golang中使用第三包1.5、init函数 2、接口详解2.1、接口的定义2.2、空接口2.3、类型断言2.4、结构体值接收者和指针接收者实现接口的区别2.5、一个结构体实现多…...

论文阅读:LLM4Drive: A Survey of Large Language Models for Autonomous Driving
地址:LLM4Drive: A Survey of Large Language Models for Autonomous Driving 摘要翻译 自动驾驶技术作为推动交通和城市出行变革的催化剂,正从基于规则的系统向数据驱动策略转变。传统的模块化系统受限于级联模块间的累积误差和缺乏灵活性的预设规则。…...

C++--string的模拟实现
一,引言 string的模拟实现是只对string对象中给的主要功能经行模拟实现,其目的是加强对string的底层了解,以便于在以后的学习或者工作中更加熟练的使用string。本文中的代码仅供参考并不唯一。 二,默认成员函数 string主要有三个成员变量,…...