许可证: 其他
许可证名称: flux-1-dev-非商业许可证
许可证链接: https://huggingface.co/black-forest-labs/FLUX.1-dev/blob/main/LICENSE.md
语言:
- 英文
库名称: diffusers
管道标签: 文本生成图像
标签:
- 文本生成图像
- ControlNet
- Diffusers
- Flux.1-dev
- 图像生成
- Stable Diffusion
基础模型: black-forest-labs/FLUX.1-dev
FLUX.1-dev-ControlNet-Union-Pro-2.0
本仓库包含由Shakker Labs发布的FLUX.1-dev模型的统一ControlNet。我们提供了在线演示。社区提供的FP8量化版本可在ABDALLALSWAITI/FLUX.1-dev-ControlNet-Union-Pro-2.0-fp8找到。
关键点
与Shakker-Labs/FLUX.1-dev-ControlNet-Union-Pro相比:
- 移除了模式嵌入,模型体积更小。
- 改进了canny和pose的控制效果和美学表现。
- 新增对soft edge的支持,移除了对tile的支持。
模型卡片
- 该ControlNet包含6个双模块和0个单模块,移除了模式嵌入。
- 我们使用2000万张高质量通用和人像图片数据集从头训练了30万步。训练分辨率为512x512,使用BFloat16精度,批量大小=128,学习率=2e-5,引导强度均匀采样于[1,7]。文本丢弃率设为0.20。
- 支持多种控制模式:canny、soft edge、depth、pose、gray。可像普通ControlNet一样使用。
- 可与其他ControlNet联合使用。
效果展示
推理示例
import torch
from diffusers.utils import load_image
from diffusers import FluxControlNetPipeline, FluxControlNetModel
base_model = 'black-forest-labs/FLUX.1-dev'
controlnet_model_union = 'Shakker-Labs/FLUX.1-dev-ControlNet-Union-Pro-2.0'
controlnet = FluxControlNetModel.from_pretrained(controlnet_model_union, torch_dtype=torch.bfloat16)
pipe = FluxControlNetPipeline.from_pretrained(base_model, controlnet=controlnet, torch_dtype=torch.bfloat16)
pipe.to("cuda")
control_image = load_image("./conds/canny.png")
width, height = control_image.size
prompt = "一位年轻女孩优雅地站在宁静海滩边,海风轻拂她飘逸的长发。她穿着柔和的淡彩色连衣裙,与海岸景致的蓝绿色调相得益彰。夕阳的金色光芒温暖地映照在她的脸庞上,突显她宁静的表情。背景是辽阔的蔚蓝海洋,轻柔的波浪拍打着海岸,远处是悬崖和晴朗无云的天空。构图强调女孩在自然美景中的宁静存在,冷暖色调和谐交融。"
image = pipe(
prompt,
control_image=control_image,
width=width,
height=height,
controlnet_conditioning_scale=0.7,
control_guidance_end=0.8,
num_inference_steps=30,
guidance_scale=3.5,
generator=torch.Generator(device="cuda").manual_seed(42),
).images[0]
多重推理
import torch
from diffusers.utils import load_image
from pipeline_flux_controlnet import FluxControlNetPipeline
from controlnet_flux import FluxControlNetModel
base_model = 'black-forest-labs/FLUX.1-dev'
controlnet_model_union = 'Shakker-Labs/FLUX.1-dev-ControlNet-Union-Pro-2.0'
controlnet = FluxControlNetModel.from_pretrained(controlnet_model_union, torch_dtype=torch.bfloat16)
pipe = FluxControlNetPipeline.from_pretrained(base_model, controlnet=[controlnet], torch_dtype=torch.bfloat16)
pipe.to("cuda")
control_image = load_image("./conds/canny.png")
width, height = control_image.size
prompt = "同上描述..."
image = pipe(
prompt,
control_image=[control_image, control_image],
width=width,
height=height,
controlnet_conditioning_scale=[0.35, 0.35],
control_guidance_end=[0.8, 0.8],
num_inference_steps=30,
guidance_scale=3.5,
generator=torch.Generator(device="cuda").manual_seed(42),
).images[0]
推荐参数
可通过调整controlnet_conditioning_scale和control_guidance_end获得更强控制或更好细节保留。为保持稳定性,建议使用详细提示词,某些情况下多重条件效果更佳。
- Canny: 使用cv2.Canny,controlnet_conditioning_scale=0.7,control_guidance_end=0.8
- Soft Edge: 使用AnylineDetector,参数同上
- Depth: 使用depth-anything,controlnet_conditioning_scale=0.8
- Pose: 使用DWPose,controlnet_conditioning_scale=0.9,control_guidance_end=0.65
- Gray: 使用cv2.cvtColor,controlnet_conditioning_scale=0.9
相关资源
致谢
本模型由Shakker Labs开发,灵感源自xinsir/controlnet-union-sdxl-1.0。保留所有权利。
引用
如用于研究,请引用:
@misc{flux-cn-union-pro-2,
author = {Shakker-Labs},
title = {ControlNet-Union},
year = {2025},
howpublished={\url{https://huggingface.co/Shakker-Labs/FLUX.1-dev-ControlNet-Union-Pro-2.0}},
}