模型概述
模型特點
模型能力
使用案例
🚀 Controlnet - v1.1 - 深度版本
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是一種通過添加額外條件來控制擴散模型的神經網絡結構。
此檢查點對應於基於深度圖像的ControlNet。
✨ 主要特性
- 可結合Stable Diffusion:能與Stable Diffusion模型結合,如runwayml/stable-diffusion-v1-5,實現文本到圖像的生成。
- 基於深度圖像條件:該檢查點基於深度圖像進行條件控制,可生成與深度信息相關的圖像。
- 解決訓練數據問題:新版本的深度模型解決了之前訓練數據集中存在的問題,如重複圖像、低質量圖像和錯誤配對提示等。
- 相對無偏模型:新的深度模型是一個相對無偏的模型,不依賴特定的深度估計方法,能更好地適應不同的深度估計和預處理分辨率。
- 數據增強:在訓練過程中應用了合理的數據增強方法,如隨機左右翻轉。
- 兼容性好:該模型在深度1.0表現良好的所有情況下都能正常工作,並且在深度1.0失敗的許多情況下也能有較好的表現。
📦 安裝指南
若要處理圖像以創建輔助條件,需要安裝以下外部依賴:
$ pip install diffusers transformers accelerate
💻 使用示例
基礎用法
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 transformers import pipeline
from diffusers import (
ControlNetModel,
StableDiffusionControlNetPipeline,
UniPCMultistepScheduler,
)
checkpoint = "lllyasviel/control_v11p_sd15_depth"
image = load_image(
"https://huggingface.co/lllyasviel/control_v11p_sd15_depth/resolve/main/images/input.png"
)
prompt = "Stormtrooper's lecture in beautiful lecture hall"
depth_estimator = pipeline('depth-estimation')
image = depth_estimator(image)['depth']
image = np.array(image)
image = image[:, :, None]
image = np.concatenate([image, image, image], axis=2)
control_image = Image.fromarray(image)
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')
高級用法
在上述基礎用法的基礎上,可以嘗試不同的提示詞、推理步數、隨機種子等參數,以獲得不同風格和效果的圖像。例如,可以修改prompt
和num_inference_steps
參數:
# 修改提示詞和推理步數
prompt = "A beautiful landscape with a waterfall"
num_inference_steps = 50
generator = torch.manual_seed(1)
image = pipe(prompt, num_inference_steps=num_inference_steps, generator=generator, image=control_image).images[0]
image.save('images/image_out_advanced.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這樣的大型擴散模型可以通過ControlNets進行增強,以支持邊緣圖、深度圖、關鍵點等條件輸入。這可能會豐富控制大型擴散模型的方法,並進一步促進相關應用的發展。
其他已發佈的檢查點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 |
使用圖像打亂進行訓練 | 帶有打亂補丁或區域的圖像。 | ![]() |
![]() |
lllyasviel/control_v11f1e_sd15_tile |
使用圖像平鋪進行訓練 | 模糊圖像或圖像的一部分。 | ![]() |
![]() |
深度1.1的改進
- 訓練數據集問題修復:之前的cnet 1.0訓練數據集存在一些問題,包括(1)一小部分灰度人體圖像被重複數千次,導致之前的模型有些容易生成灰度人體圖像;(2)一些圖像質量低、非常模糊或有明顯的JPEG偽影;(3)一小部分圖像由於數據處理腳本的錯誤而存在錯誤配對的提示。新模型修復了訓練數據集的所有問題,在許多情況下應該更加合理。
- 相對無偏模型:新的深度模型是一個相對無偏的模型。它不是通過某種特定的深度估計方法針對特定類型的深度進行訓練的。它不會過度擬合於某一種預處理器。這意味著該模型在不同的深度估計、不同的預處理器分辨率甚至由3D引擎創建的真實深度情況下都能更好地工作。
- 數據增強:在訓練中應用了一些合理的數據增強方法,如隨機左右翻轉。
- 兼容性和改進:該模型是在深度1.0的基礎上繼續訓練的,在深度1.0表現良好的所有情況下都應該能正常工作。如果不能正常工作,請提供圖像並提交一個問題,我們將查看具體情況。深度1.1在深度1.0失敗的許多情況下都能有較好的表現。
- 性能對比:如果使用Midas深度(Web UI插件中的“深度”)和384的預處理器分辨率,深度1.0和1.1之間的差異應該很小。然而,如果嘗試其他預處理器分辨率或其他預處理器(如leres和zoe),預計深度1.1會比1.0稍好一些。
更多信息
更多信息,請查看Diffusers ControlNet博客文章和官方文檔。
📄 許可證
本模型使用CreativeML OpenRAIL M許可證。

