许可证:openrail
基础模型:runwayml/stable-diffusion-v1-5
标签:
- 艺术
- controlnet
- stable-diffusion
- 图像生成
ControlNet - 人体姿态版本
ControlNet是一种通过添加额外条件来控制扩散模型的神经网络结构。
此检查点对应基于人体姿态估计条件训练的ControlNet模型。
可与Stable Diffusion结合使用。

模型详情
简介
ControlNet由张吕敏和Maneesh Agrawala在论文为文本到图像扩散模型添加条件控制中提出。
摘要如下:
我们提出了一种神经网络结构ControlNet,通过添加额外输入条件来控制预训练的大型扩散模型。该结构能以端到端方式学习任务特定条件,即使在小训练集(<5万)下仍保持鲁棒性。训练速度与微调扩散模型相当,可在个人设备上完成。若配备强大算力集群,还可处理百万至十亿级数据。实验表明,Stable Diffusion等大型扩散模型结合ControlNet后,能支持边缘图、分割图、关键点等条件输入,这将丰富控制大模型的方法并推动相关应用。
已发布检查点
作者发布了8个不同检查点,均基于Stable Diffusion v1-5训练,对应不同控制条件:
使用示例
建议配合Stable Diffusion v1-5使用本检查点。实验表明,该检查点也可适配其他扩散模型(如DreamBooth微调的Stable Diffusion)。
注意:如需预处理图像生成辅助条件,需安装以下依赖:
- 安装controlnet_aux:
pip install controlnet_aux
- 安装diffusers及相关包:
pip install diffusers transformers accelerate
- 运行代码:
from PIL import Image
from diffusers import StableDiffusionControlNetPipeline, ControlNetModel, UniPCMultistepScheduler
import torch
from controlnet_aux import OpenposeDetector
from diffusers.utils import load_image
openpose = OpenposeDetector.from_pretrained('lllyasviel/ControlNet')
image = load_image("https://huggingface.co/lllyasviel/sd-controlnet-openpose/resolve/main/images/pose.png")
image = openpose(image)
controlnet = ControlNetModel.from_pretrained("lllyasviel/sd-controlnet-openpose", torch_dtype=torch.float16)
pipe = StableDiffusionControlNetPipeline.from_pretrained(
"runwayml/stable-diffusion-v1-5", controlnet=controlnet, safety_checker=None, torch_dtype=torch.float16
)
pipe.scheduler = UniPCMultistepScheduler.from_config(pipe.scheduler.config)
pipe.enable_xformers_memory_efficient_attention()
pipe.enable_model_cpu_offload()
image = pipe("厨房中的厨师", image, num_inference_steps=20).images[0]
image.save('images/chef_pose_out.png')



训练细节
Openpose模型基于20万张姿态-图像对训练,姿态图由Openpose生成。使用NVIDIA A100 80G显卡,以Stable Diffusion 1.5为基底模型训练300 GPU小时。
博客文章
更多信息请参阅官方ControlNet博客文章。