📘 模型说明卡:ControlNet v1.1 - OpenPose
模型名称:control_v11p_sd15_openpose
作者:Lvmin Zhang, Maneesh Agrawala
平台:Hugging Face
许可证:CreativeML OpenRAIL M
论文引用:arXiv:2302.05543
🔍 简介
control_v11p_sd15_openpose
是 ControlNet v1.1 系列中基于 OpenPose 人体姿态估计图像 训练的控制模型。可与 Stable Diffusion v1.5 搭配使用,通过“骨架提示图(keypoint map)”进行强力的人体姿态控制。
适用于人体换装、动态一致性图生图、动作还原、动漫角色动态生成等场景。
🧠 模型原理组成(简略版)
ControlNet 的结构在原始 Stable Diffusion 模型基础上添加了一个条件分支,接收额外的“控制图”输入。该版本使用的是 OpenPose 骨架图(keypoints) 作为条件引导。
🧾 模型权重版本选择对比
文件名 | 精度 | 格式 | 文件大小 | 推荐用途 |
---|---|---|---|---|
diffusion_pytorch_model.fp16.safetensors ✅ | FP16 | Safetensors | 723 MB | 推荐推理使用(快、显存小) |
diffusion_pytorch_model.safetensors | FP32 | Safetensors | 1.45 GB | 推荐高精度需求/兼容性调试 |
diffusion_pytorch_model.fp16.bin | FP16 | PyTorch | 723 MB | 可选,格式较旧 |
diffusion_pytorch_model.bin | FP32 | PyTorch | 1.45 GB | 可选,不推荐新项目使用 |
📥 下载命令(使用 HuggingFace 镜像)
✅ 下载推荐版本(半精度 safetensors):
wget -O control_v11p_sd15_openpose.safetensors "https://hf-mirror.com/lllyasviel/control_v11p_sd15_openpose/resolve/main/diffusion_pytorch_model.fp16.safetensors?download=true"
✅ 下载全精度 safetensors 版本:
wget -O control_v11p_sd15_openpose_fp32.safetensors "https://hf-mirror.com/lllyasviel/control_v11p_sd15_openpose/resolve/main/diffusion_pytorch_model.safetensors?download=true"
📁 推荐存放路径(以 ComfyUI 为例)
/ComfyUI/models/controlnet/control_v11p_sd15_openpose.safetensors
你可以将两个版本分别命名为:
-
control_v11p_sd15_openpose.safetensors
(fp16) -
control_v11p_sd15_openpose_fp32.safetensors
(fp32)
🧪 使用建议(Diffusers 示例)
from diffusers import ControlNetModel, StableDiffusionControlNetPipeline
from controlnet_aux import OpenposeDetector
from PIL import Image
controlnet = ControlNetModel.from_pretrained(
"lllyasviel/control_v11p_sd15_openpose", torch_dtype=torch.float16
)
pipe = StableDiffusionControlNetPipeline.from_pretrained(
"runwayml/stable-diffusion-v1-5", controlnet=controlnet, torch_dtype=torch.float16
)
image = Image.open("your_image.png").convert("RGB")
processor = OpenposeDetector.from_pretrained("lllyasviel/ControlNet")
control_image = processor(image, hand_and_face=True)
pipe.enable_model_cpu_offload()
result = pipe("a dancer posing gracefully", image=control_image, num_inference_steps=30).images[0]
result.save("output.png")