🚀 Controlnet - HED邊界版本
ControlNet是一種神經網絡結構,可通過添加額外條件來控制擴散模型。此檢查點對應的是基於HED邊界條件的ControlNet,可與Stable Diffusion結合使用。

✨ 主要特性
- 可對預訓練的大型擴散模型進行條件控制,支持額外的輸入條件。
- 以端到端的方式學習特定任務的條件,即使訓練數據集較小(< 50k),學習過程也很穩健。
- 訓練速度與微調擴散模型相當,可在個人設備上進行訓練;若有強大的計算集群,也能處理大量(數百萬到數十億)數據。
- 可增強像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 HEDdetector
from diffusers.utils import load_image
hed = HEDdetector.from_pretrained('lllyasviel/ControlNet')
image = load_image("https://huggingface.co/lllyasviel/sd-controlnet-hed/resolve/main/images/man.png")
image = hed(image)
controlnet = ControlNetModel.from_pretrained(
"lllyasviel/sd-controlnet-hed", 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)
pipe.enable_xformers_memory_efficient_attention()
pipe.enable_model_cpu_offload()
image = pipe("oil painting of handsome old man, masterpiece", image, num_inference_steps=20).images[0]
image.save('images/man_hed_out.png')
高級用法
暫未提供高級用法的相關內容。

📚 詳細文檔
模型詳情
簡介
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 在不同類型的條件下進行訓練:
訓練
HED邊緣模型在300萬個邊緣圖像 - 標題對上進行訓練。該模型使用Nvidia A100 80G,以Stable Diffusion 1.5為基礎模型,訓練了600個GPU小時。
博客文章
如需更多信息,請查看 ControlNet官方博客文章。
🔧 技術細節
HED邊界版本的ControlNet是基於Stable Diffusion 1.5進行訓練的,通過添加額外的HED邊界條件來控制圖像生成過程。在訓練過程中,使用了300萬個邊緣圖像 - 標題對,經過600個GPU小時的訓練,使得模型能夠學習到HED邊界與圖像生成之間的關係。在推理階段,通過StableDiffusionControlNetPipeline
和ControlNetModel
結合使用,利用輸入的HED邊界圖像來引導圖像生成。
📄 許可證
本項目使用 The CreativeML OpenRAIL M license,這是一種 Open RAIL M license,改編自 BigScience 和 the RAIL Initiative 在負責任的AI許可領域的聯合工作。另見 關於BLOOM Open RAIL許可的文章,本許可證基於此。