模型概述
模型特點
模型能力
使用案例
🚀 Controlnet - v1.1 - openpose 版本
Controlnet v1.1 是一個功能強大的圖像生成模型,它是 Controlnet v1.0 的後續版本。該模型由 Lvmin Zhang 發佈於 lllyasviel/ControlNet-v1-1,可與 Stable Diffusion 結合使用,為圖像生成提供更多的條件控制。
🚀 快速開始
Controlnet v1.1 是 Controlnet v1.0 的後續模型,由 Lvmin Zhang 在 lllyasviel/ControlNet-v1-1 中發佈。
此檢查點是將 原始檢查點 轉換為 diffusers
格式後的版本,它可以與 Stable Diffusion 結合使用,例如 runwayml/stable-diffusion-v1-5。
更多詳細信息,請查看 🧨 Diffusers 文檔。
ControlNet 是一種神經網絡結構,通過添加額外條件來控制擴散模型。
此檢查點對應於基於 openpose 圖像 進行條件控制的 ControlNet。
✨ 主要特性
模型優勢
- 強大的條件控制:ControlNet 可以控制預訓練的大型擴散模型,支持額外的輸入條件,如邊緣圖、分割圖、關鍵點等。
- 高效的訓練方式:可以端到端地學習特定任務的條件,即使訓練數據集較小(< 50k),學習過程也很穩健。訓練速度與微調擴散模型相當,甚至可以在個人設備上進行訓練。
- 廣泛的兼容性:可以與 Stable Diffusion 等大型擴散模型結合使用,豐富了控制大型擴散模型的方法,促進了相關應用的發展。
版本改進
- 更高的準確性:基於改進的 OpenPose 實現,處理器更加準確,尤其是對手部的處理。
- 更多的輸入支持:支持更多的輸入,如手部和麵部信息。
- 優化的訓練數據集:解決了之前訓練數據集中存在的問題,如重複圖像、低質量圖像和錯誤的提示配對等,使模型在更多情況下更加合理。
📦 安裝指南
安裝依賴庫
如果要處理圖像以創建輔助條件,需要安裝以下外部依賴項:
- 安裝 https://github.com/patrickvonplaten/controlnet_aux
$ pip install controlnet_aux==0.3.0
- 安裝
diffusers
及相關包:
$ pip install diffusers transformers accelerate
💻 使用示例
基礎用法
建議將此檢查點與 Stable Diffusion v1-5 結合使用,因為該檢查點是基於此模型進行訓練的。實驗表明,該檢查點也可以與其他擴散模型(如經過 dreamboothed 的 Stable Diffusion)一起使用。
import torch
import os
from huggingface_hub import HfApi
from pathlib import Path
from diffusers.utils import load_image
from PIL import Image
import numpy as np
from controlnet_aux import OpenposeDetector
from diffusers import (
ControlNetModel,
StableDiffusionControlNetPipeline,
UniPCMultistepScheduler,
)
checkpoint = "lllyasviel/control_v11p_sd15_openpose"
image = load_image(
"https://huggingface.co/lllyasviel/control_v11p_sd15_openpose/resolve/main/images/input.png"
)
prompt = "chef in the kitchen"
processor = OpenposeDetector.from_pretrained('lllyasviel/ControlNet')
control_image = processor(image, hand_and_face=True)
control_image.save("./images/control.png")
controlnet = ControlNetModel.from_pretrained(checkpoint, torch_dtype=torch.float16)
pipe = StableDiffusionControlNetPipeline.from_pretrained(
"runwayml/stable-diffusion-v1-5", controlnet=controlnet, torch_dtype=torch.float16
)
pipe.scheduler = UniPCMultistepScheduler.from_config(pipe.scheduler.config)
pipe.enable_model_cpu_offload()
generator = torch.manual_seed(0)
image = pipe(prompt, num_inference_steps=30, generator=generator, image=control_image).images[0]
image.save('images/image_out.png')
高級用法
目前文檔未提及高級用法相關內容,可參考官方文檔獲取更多信息。
📚 詳細文檔
模型詳情
屬性 | 詳情 |
---|---|
開發者 | Lvmin Zhang, Maneesh Agrawala |
模型類型 | 基於擴散的文本到圖像生成模型 |
語言 | 英文 |
許可證 | CreativeML OpenRAIL M 許可證 是一種 Open RAIL M 許可證,改編自 BigScience 和 RAIL Initiative 在負責任的 AI 許可領域的聯合工作。有關許可證的更多信息,請參閱 關於 BLOOM Open RAIL 許可證的文章 |
更多信息資源 | GitHub 倉庫,論文 |
引用方式 | @misc{zhang2023adding, title={Adding Conditional Control to Text-to-Image Diffusion Models}, author={Lvmin Zhang and Maneesh Agrawala}, year={2023}, eprint={2302.05543}, archivePrefix={arXiv}, primaryClass={cs.CV} } |
模型介紹
Controlnet 由 Lvmin Zhang 和 Maneesh Agrawala 在論文 Adding Conditional Control to Text-to-Image Diffusion Models 中提出。
論文摘要如下:
我們提出了一種神經網絡結構 ControlNet,用於控制預訓練的大型擴散模型,以支持額外的輸入條件。ControlNet 可以端到端地學習特定任務的條件,即使訓練數據集較小(< 50k),學習過程也很穩健。此外,訓練 ControlNet 的速度與微調擴散模型相當,並且可以在個人設備上進行訓練。或者,如果有強大的計算集群,模型可以處理大量(數百萬到數十億)的數據。我們發現,像 Stable Diffusion 這樣的大型擴散模型可以通過添加 ControlNet 來支持邊緣圖、分割圖、關鍵點等條件輸入。這可能會豐富控制大型擴散模型的方法,並進一步促進相關應用的發展。
其他已發佈的檢查點 v1-1
作者發佈了 14 種不同的檢查點,每種檢查點都基於 Stable Diffusion v1-5 在不同類型的條件下進行訓練:
模型名稱 | 控制圖像概述 | 控制圖像示例 | 生成圖像示例 |
---|---|---|---|
lllyasviel/control_v11p_sd15_canny 基於 Canny 邊緣檢測訓練 |
黑色背景上帶有白色邊緣的單色圖像。 | ![]() |
![]() |
lllyasviel/control_v11e_sd15_ip2p 基於像素到像素指令訓練 |
無特定條件。 | ![]() |
![]() |
lllyasviel/control_v11p_sd15_inpaint 基於圖像修復訓練 |
無特定條件。 | ![]() |
![]() |
lllyasviel/control_v11p_sd15_mlsd 基於多級線段檢測訓練 |
帶有註釋線段的圖像。 | ![]() |
![]() |
lllyasviel/control_v11f1p_sd15_depth 基於深度估計訓練 |
帶有深度信息的圖像,通常表示為灰度圖像。 | ![]() |
![]() |
lllyasviel/control_v11p_sd15_normalbae 基於表面法線估計訓練 |
帶有表面法線信息的圖像,通常表示為彩色編碼圖像。 | ![]() |
![]() |
lllyasviel/control_v11p_sd15_seg 基於圖像分割訓練 |
帶有分割區域的圖像,通常表示為彩色編碼圖像。 | ![]() |
![]() |
lllyasviel/control_v11p_sd15_lineart 基於線稿生成訓練 |
帶有線稿的圖像,通常是白色背景上的黑色線條。 | ![]() |
![]() |
lllyasviel/control_v11p_sd15s2_lineart_anime 基於動漫線稿生成訓練 |
帶有動漫風格線稿的圖像。 | ![]() |
![]() |
lllyasviel/control_v11p_sd15_openpose 基於人體姿態估計訓練 |
帶有人體姿態的圖像,通常表示為一組關鍵點或骨架。 | ![]() |
![]() |
lllyasviel/control_v11p_sd15_scribble 基於塗鴉圖像生成訓練 |
帶有塗鴉的圖像,通常是隨機或用戶繪製的筆觸。 | ![]() |
![]() |
lllyasviel/control_v11p_sd15_softedge 基於軟邊緣圖像生成訓練 |
帶有軟邊緣的圖像,通常用於創建更具繪畫或藝術效果的圖像。 | ![]() |
![]() |
lllyasviel/control_v11e_sd15_shuffle 基於圖像打亂訓練 |
帶有打亂的圖像塊或區域的圖像。 | ![]() |
![]() |
Openpose 1.1 的改進
- 準確性提升:此模型的改進主要基於我們對 OpenPose 的改進實現。我們仔細審查了 PyTorch OpenPose 和 CMU 的 C++ OpenPose 之間的差異,現在處理器應該更加準確,尤其是對手部的處理。處理器的改進帶來了 Openpose 1.1 的性能提升。
- 更多輸入支持:支持更多的輸入(手部和麵部)。
- 優化訓練數據集:之前的 cnet 1.0 訓練數據集存在一些問題,包括(1)一小部分灰度人體圖像被重複數千次(!!),導致之前的模型有些容易生成灰度人體圖像;(2)一些圖像質量較低,非常模糊,或有明顯的 JPEG 偽影;(3)一小部分圖像由於數據處理腳本中的錯誤而存在錯誤的配對提示。新模型解決了訓練數據集中的所有問題,在許多情況下應該更加合理。
更多信息
如需更多信息,請查看 Diffusers ControlNet 博客文章 和 官方文檔。
🔧 技術細節
目前文檔未提及技術細節相關內容,可參考官方文檔獲取更多信息。
📄 許可證
本模型使用 CreativeML OpenRAIL M 許可證,這是一種 Open RAIL M 許可證,改編自 BigScience 和 RAIL Initiative 在負責任的 AI 許可領域的聯合工作。有關許可證的更多信息,請參閱 關於 BLOOM Open RAIL 許可證的文章。
常用提示信息
⚠️ 重要提示
如果要處理圖像以創建輔助條件,需要安裝外部依賴項,如
controlnet_aux
和diffusers
等相關庫。
💡 使用建議
建議將此檢查點與 Stable Diffusion v1-5 結合使用,因為該檢查點是基於此模型進行訓練的。實驗表明,該檢查點也可以與其他擴散模型(如經過 dreamboothed 的 Stable Diffusion)一起使用。

