模型概述
模型特點
模型能力
使用案例
🚀 Controlnet - v1.1 - 圖像修復版本
Controlnet v1.1 是一種強大的神經網絡結構,可通過添加額外條件來控制擴散模型。此版本的圖像修復版本能與 Stable Diffusion 結合使用,為圖像生成提供更多的控制和靈活性。
🚀 快速開始
安裝依賴
$ pip install diffusers transformers accelerate
運行示例代碼
# !pip install transformers accelerate
from diffusers import StableDiffusionControlNetInpaintPipeline, ControlNetModel
from diffusers.utils import load_image
import numpy as np
import torch
init_image = load_image(
"https://huggingface.co/datasets/diffusers/test-arrays/resolve/main/stable_diffusion_inpaint/boy.png"
)
init_image = init_image.resize((512, 512))
generator = torch.Generator(device="cpu").manual_seed(1)
mask_image = load_image(
"https://huggingface.co/datasets/diffusers/test-arrays/resolve/main/stable_diffusion_inpaint/boy_mask.png"
)
mask_image = mask_image.resize((512, 512))
def make_inpaint_condition(image, image_mask):
image = np.array(image.convert("RGB")).astype(np.float32) / 255.0
image_mask = np.array(image_mask.convert("L")).astype(np.float32) / 255.0
assert image.shape[0:1] == image_mask.shape[0:1], "image and image_mask must have the same image size"
image[image_mask > 0.5] = -1.0 # set as masked pixel
image = np.expand_dims(image, 0).transpose(0, 3, 1, 2)
image = torch.from_numpy(image)
return image
control_image = make_inpaint_condition(init_image, mask_image)
controlnet = ControlNetModel.from_pretrained(
"lllyasviel/control_v11p_sd15_inpaint", torch_dtype=torch.float16
)
pipe = StableDiffusionControlNetInpaintPipeline.from_pretrained(
"runwayml/stable-diffusion-v1-5", controlnet=controlnet, torch_dtype=torch.float16
)
pipe.scheduler = DDIMScheduler.from_config(pipe.scheduler.config)
pipe.enable_model_cpu_offload()
# generate image
image = pipe(
"a handsome man with ray-ban sunglasses",
num_inference_steps=20,
generator=generator,
eta=1.0,
image=init_image,
mask_image=mask_image,
control_image=control_image,
).images[0]
示例圖片
✨ 主要特性
- 額外條件控制:ControlNet 是一種神經網絡結構,可通過添加額外條件來控制擴散模型。
- 圖像修復功能:此檢查點對應於基於圖像修復的 ControlNet,可用於圖像修復任務。
- 與 Stable Diffusion 結合:可與 Stable Diffusion 結合使用,如 runwayml/stable-diffusion-v1-5。
📦 安裝指南
$ pip install diffusers transformers accelerate
💻 使用示例
基礎用法
# 上述快速開始中的代碼即為基礎用法示例
📚 詳細文檔
模型詳情
屬性 | 詳情 |
---|---|
開發者 | Lvmin Zhang, Maneesh Agrawala |
模型類型 | 基於擴散的文本到圖像生成模型 |
語言 | 英文 |
許可證 | The CreativeML OpenRAIL M license 是一種 Open RAIL M license,改編自 BigScience 和 the RAIL Initiative 在負責任的 AI 許可領域的聯合工作。另見 關於 BLOOM Open RAIL 許可證的文章,本許可證基於此。 |
更多信息資源 | GitHub 倉庫,論文 |
模型介紹
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 |
使用圖像平鋪進行訓練 | 模糊圖像或圖像的一部分。 | ![]() |
![]() |
更多信息
如需更多信息,請查看 Diffusers ControlNet 博客文章 和 官方文檔。
🔧 技術細節
ControlNet 以端到端的方式學習特定任務的條件,即使訓練數據集較小(< 50k),學習過程也很穩健。此外,訓練一個 ControlNet 與微調一個擴散模型一樣快,並且該模型可以在個人設備上進行訓練。或者,如果有強大的計算集群,該模型可以擴展到大量(數百萬到數十億)的數據。
📄 許可證
本模型使用 The CreativeML OpenRAIL M license,這是一種 Open RAIL M license,改編自 BigScience 和 the RAIL Initiative 在負責任的 AI 許可領域的聯合工作。另見 關於 BLOOM Open RAIL 許可證的文章,本許可證基於此。
引用格式
@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}
}

