模型概述
模型特點
模型能力
使用案例
🚀 Controlnet - 人體姿態版本
ControlNet 是一種神經網絡結構,通過添加額外條件來控制擴散模型。此檢查點對應於基於人體姿態估計的 ControlNet,可與 Stable Diffusion 結合使用。
🚀 快速開始
本模型可與 Stable Diffusion v1 - 5 結合使用。實驗表明,該檢查點也可與其他擴散模型(如經過微調的 Stable Diffusion)配合使用。
若要處理圖像以創建輔助條件,需要安裝外部依賴,步驟如下:
- 安裝 https://github.com/patrickvonplaten/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)
# Remove if you do not have xformers installed
# see https://huggingface.co/docs/diffusers/v0.13.0/en/optimization/xformers#installing-xformers
# for installation instructions
pipe.enable_xformers_memory_efficient_attention()
pipe.enable_model_cpu_offload()
image = pipe("chef in the kitchen", image, num_inference_steps=20).images[0]
image.save('images/chef_pose_out.png')
✨ 主要特性
ControlNet 能夠控制預訓練的大型擴散模型,以支持額外的輸入條件。它可以端到端地學習特定任務的條件,即使在訓練數據集較小(< 50k)的情況下,學習過程也很穩健。訓練 ControlNet 的速度與微調擴散模型相當,並且可以在個人設備上進行訓練。如果有強大的計算集群,該模型也可以擴展到處理大量(數百萬到數十億)的數據。
📦 安裝指南
- 安裝 https://github.com/patrickvonplaten/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)
# Remove if you do not have xformers installed
# see https://huggingface.co/docs/diffusers/v0.13.0/en/optimization/xformers#installing-xformers
# for installation instructions
pipe.enable_xformers_memory_efficient_attention()
pipe.enable_model_cpu_offload()
image = pipe("chef in the kitchen", image, num_inference_steps=20).images[0]
image.save('images/chef_pose_out.png')
📚 詳細文檔
模型詳情
屬性 | 詳情 |
---|---|
開發者 | Lvmin Zhang, Maneesh Agrawala |
模型類型 | 基於擴散的文本到圖像生成模型 |
語言 | 英語 |
許可證 | CreativeML OpenRAIL M 許可證 是一種 Open RAIL M 許可證,改編自 BigScience 和 RAIL Initiative 在負責任的人工智能許可領域的聯合工作。另見 關於 BLOOM Open RAIL 許可證的文章,本許可證基於該文章。 |
更多信息資源 | GitHub 倉庫,論文 |
引用格式 | @misc{zhang2023adding, |
簡介
Controlnet 由 Lvmin Zhang 和 Maneesh Agrawala 在 Adding Conditional Control to Text-to-Image Diffusion Models 中提出。
論文摘要如下:
我們提出了一種神經網絡結構 ControlNet,用於控制預訓練的大型擴散模型,以支持額外的輸入條件。ControlNet 可以端到端地學習特定任務的條件,即使訓練數據集較小(< 50k),學習過程也很穩健。此外,訓練 ControlNet 的速度與微調擴散模型相當,並且可以在個人設備上進行訓練。或者,如果有強大的計算集群,該模型可以擴展到處理大量(數百萬到數十億)的數據。我們發現,像 Stable Diffusion 這樣的大型擴散模型可以通過 ControlNets 進行增強,以支持邊緣圖、分割圖、關鍵點等條件輸入。這可能會豐富控制大型擴散模型的方法,並進一步推動相關應用的發展。
已發佈的檢查點
作者發佈了 8 個不同的檢查點,每個檢查點都基於 Stable Diffusion v1 - 5 在不同類型的條件下進行訓練:
模型名稱 | 控制圖像概述 | 控制圖像示例 | 生成圖像示例 |
---|---|---|---|
lllyasviel/sd - controlnet - canny 使用 Canny 邊緣檢測進行訓練 |
黑色背景上帶有白色邊緣的單色圖像。 | ![]() |
![]() |
lllyasviel/sd - controlnet - depth 使用 Midas 深度估計進行訓練 |
黑色代表深區域,白色代表淺區域的灰度圖像。 | ![]() |
![]() |
lllyasviel/sd - controlnet - hed 使用 HED 邊緣檢測(軟邊緣)進行訓練 |
黑色背景上帶有白色軟邊緣的單色圖像。 | ![]() |
![]() |
lllyasviel/sd - controlnet - mlsd 使用 M - LSD 線檢測進行訓練 |
黑色背景上僅由白色直線組成的單色圖像。 | ![]() |
![]() |
lllyasviel/sd - controlnet - normal 使用法線貼圖進行訓練 |
法線貼圖 圖像。 | ![]() |
![]() |
lllyasviel/sd - controlnet_openpose 使用 OpenPose 骨骼圖像進行訓練 |
[OpenPose 骨骼](https://github.com/CMU - Perceptual - Computing - Lab/openpose) 圖像。 | ![]() |
![]() |
lllyasviel/sd - controlnet_scribble 使用人類塗鴉進行訓練 |
黑色背景上帶有白色輪廓的手繪單色圖像。 | ![]() |
![]() |
lllyasviel/sd - controlnet_seg 使用語義分割進行訓練 |
ADE20K 的分割協議圖像。 | ![]() |
![]() |
訓練
Openpose 模型在 200k 個姿態圖像 - 字幕對上進行訓練。姿態估計圖像使用 Openpose 生成。該模型以 Stable Diffusion 1.5 為基礎模型,使用 Nvidia A100 80G 進行了 300 GPU 小時的訓練。
博客文章
如需更多信息,請查看 ControlNet 官方博客文章。
🔧 技術細節
Openpose 模型在 200k 個姿態圖像 - 字幕對上進行訓練。姿態估計圖像使用 Openpose 生成。該模型以 Stable Diffusion 1.5 為基礎模型,使用 Nvidia A100 80G 進行了 300 GPU 小時的訓練。
📄 許可證
本模型使用 CreativeML OpenRAIL M 許可證,這是一種 Open RAIL M 許可證,改編自 BigScience 和 RAIL Initiative 在負責任的人工智能許可領域的聯合工作。另見 關於 BLOOM Open RAIL 許可證的文章,本許可證基於該文章。
⚠️ 重要提示
如果要處理圖像以創建輔助條件,需要安裝外部依賴。
💡 使用建議
建議將此檢查點與 Stable Diffusion v1 - 5 結合使用,因為該檢查點是基於此模型進行訓練的。

