🚀 flux-controlnet-lora-test
这是一个基于 black-forest-labs/flux.1-dev 的 ControlNet PEFT LoRA。
本项目可实现文本到图像的转换,通过特定的训练和设置,能生成高质量的图像。
🚀 快速开始
你可以参考以下代码示例进行推理:
import torch
from diffusers import DiffusionPipeline
model_id = 'black-forest-labs/flux.1-dev'
adapter_id = 'bghira/flux-controlnet-lora-test'
pipeline = DiffusionPipeline.from_pretrained(model_id, torch_dtype=torch.bfloat16)
pipeline.load_lora_weights(adapter_id)
prompt = "A photo-realistic image of a cat"
from optimum.quanto import quantize, freeze, qint8
quantize(pipeline.transformer, weights=qint8)
freeze(pipeline.transformer)
pipeline.to('cuda' if torch.cuda.is_available() else 'mps' if torch.backends.mps.is_available() else 'cpu')
model_output = pipeline(
prompt=prompt,
num_inference_steps=16,
generator=torch.Generator(device='cuda' if torch.cuda.is_available() else 'mps' if torch.backends.mps.is_available() else 'cpu').manual_seed(42),
width=256,
height=256,
guidance_scale=4.0,
).images[0]
model_output.save("output.png", format="PNG")
✨ 主要特性
- 基于
black-forest-labs/flux.1-dev
模型衍生,可实现文本到图像、图像到图像的转换。
- 训练过程中使用特定的验证提示和设置,以保证模型效果。
- 文本编码器未进行训练,可复用基础模型的文本编码器进行推理。
📚 详细文档
验证设置
- CFG:
4.0
- CFG 重缩放:
0.0
- 步数:
16
- 采样器:
FlowMatchEulerDiscreteScheduler
- 种子:
42
- 分辨率:
256x256
- 跳过层引导:
注意:验证设置不一定与训练设置相同。
你可以在以下图库中找到一些示例图像:
训练设置
属性 |
详情 |
训练轮数 |
8 |
训练步数 |
250 |
学习率 |
0.0001 |
学习率调度 |
恒定 |
热身步数 |
500 |
最大梯度值 |
2.0 |
有效批次大小 |
1 |
微批次大小 |
1 |
梯度累积步数 |
1 |
GPU 数量 |
1 |
梯度检查点 |
启用 |
预测类型 |
flow_matching (额外参数=['shift=3.0', 'flux_guidance_mode=constant', 'flux_guidance_value=1.0', 'flux_lora_target=controlnet']) |
优化器 |
adamw_bf16 |
可训练参数精度 |
Pure BF16 |
基础模型精度 |
int8 - quanto |
标题丢弃概率 |
0.0% |
LoRA 秩 |
64 |
LoRA 阿尔法 |
64.0 |
LoRA 丢弃率 |
0.1 |
LoRA 初始化风格 |
默认 |
数据集
antelope-data-256
属性 |
详情 |
重复次数 |
0 |
图像总数 |
29 |
纵横比桶总数 |
1 |
分辨率 |
0.065536 兆像素 |
裁剪 |
是 |
裁剪风格 |
居中 |
裁剪纵横比 |
正方形 |
是否用于正则化数据 |
否 |
🔧 技术细节
- 本项目是基于 ControlNet PEFT LoRA 技术,从
black-forest-labs/flux.1-dev
模型派生而来。
- 在训练过程中,使用了特定的预测类型
flow_matching
以及相关的额外参数,并且采用了 adamw_bf16
优化器和 Pure BF16
的可训练参数精度,以提高训练效率和模型性能。
- 文本编码器在训练中未进行训练,可直接复用基础模型的文本编码器进行推理,减少了训练成本和计算资源的消耗。
📄 许可证
本项目使用其他许可证。