🚀 Controlnet - v1.1 - InPaint版本
Controlnet v1.1是一個用於控制擴散模型的神經網絡結構,通過添加額外條件來增強圖像生成的可控性。它可以與Stable Diffusion等模型結合使用,為圖像生成任務提供更多的靈活性和創造性。
🚀 快速開始
安裝依賴
首先,我們需要安裝diffusers
及相關的依賴包:
$ pip install diffusers 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
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()
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]
示例圖片

✨ 主要特性
- 可控性強:通過添加額外條件,如邊緣圖、分割圖、關鍵點等,實現對圖像生成過程的精細控制。
- 訓練高效:訓練速度快,可在個人設備上進行訓練,也可擴展到大規模數據集。
- 兼容性好:可以與Stable Diffusion等主流擴散模型結合使用。
📦 安裝指南
安裝diffusers
及相關依賴包:
$ pip install diffusers transformers accelerate
💻 使用示例
基礎用法
推薦將該檢查點與Stable Diffusion v1-5一起使用,因為該檢查點是在其上進行訓練的。實驗表明,該檢查點也可以與其他擴散模型(如dreamboothed stable diffusion)一起使用。
高級用法
可以根據具體需求調整代碼中的參數,如num_inference_steps
、eta
等,以獲得不同的圖像生成效果。
📚 詳細文檔
模型詳情
模型介紹
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上針對不同類型的條件進行了訓練:
更多信息
如需更多信息,請查看 Diffusers ControlNet博客文章 和 官方文檔。
📄 許可證
本項目採用 The CreativeML OpenRAIL M license。