🚀 Controlnet - Canny Version
ControlNetは、追加の条件を加えることで拡散モデルを制御するニューラルネットワーク構造です。このチェックポイントは、Cannyエッジを条件としたControlNetに対応しています。
Stable Diffusionと組み合わせて使用することができます。

✨ 主な機能
ControlNetは、追加の入力条件をサポートするために事前学習された大規模拡散モデルを制御するニューラルネットワーク構造です。このモデルは、特定のタスク条件をエンドツーエンドで学習し、訓練データセットが小さい場合でもロバストな学習が可能です。
📦 インストール
サンプルコードを実行するには、以下の依存関係をインストールする必要があります。
- opencvのインストール
$ pip install opencv-contrib-python
diffusers
と関連パッケージのインストール
$ pip install diffusers transformers accelerate
💻 使用例
基本的な使用法
import cv2
from PIL import Image
from diffusers import StableDiffusionControlNetPipeline, ControlNetModel, UniPCMultistepScheduler
import torch
import numpy as np
from diffusers.utils import load_image
image = load_image("https://huggingface.co/lllyasviel/sd-controlnet-hed/resolve/main/images/bird.png")
image = np.array(image)
low_threshold = 100
high_threshold = 200
image = cv2.Canny(image, low_threshold, high_threshold)
image = image[:, :, None]
image = np.concatenate([image, image, image], axis=2)
image = Image.fromarray(image)
controlnet = ControlNetModel.from_pretrained(
"lllyasviel/sd-controlnet-canny", 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("bird", image, num_inference_steps=20).images[0]
image.save('images/bird_canny_out.png')
生成された画像の例

📚 ドキュメント
モデルの詳細
概要
Controlnetは、Lvmin ZhangとManeesh Agrawalaによる Adding Conditional Control to Text-to-Image Diffusion Models で提案されました。
概要は以下の通りです。
私たちは、事前学習された大規模拡散モデルを制御して追加の入力条件をサポートするニューラルネットワーク構造であるControlNetを提案します。ControlNetは、タスク固有の条件をエンドツーエンドで学習し、訓練データセットが小さい場合(< 50k)でも学習がロバストです。さらに、ControlNetを訓練するのは拡散モデルを微調整するのと同じくらい速く、モデルは個人用デバイスで訓練することができます。あるいは、強力な計算クラスターが利用可能な場合、モデルは大量(数百万から数十億)のデータにスケールすることができます。私たちは、Stable Diffusionのような大規模拡散モデルにControlNetを追加することで、エッジマップ、セグメンテーションマップ、キーポイントなどの条件付き入力を可能にできることを報告しています。これにより、大規模拡散モデルを制御する方法が豊富になり、関連するアプリケーションがさらに促進される可能性があります。
公開されたチェックポイント
著者らは、Stable Diffusion v1-5 をベースに、異なるタイプの条件付きで訓練された8つの異なるチェックポイントを公開しています。
訓練
Cannyエッジモデルは、300万のエッジ画像とキャプションのペアで訓練されました。このモデルは、Stable Diffusion 1.5をベースモデルとして、Nvidia A100 80Gを使用して600GPU時間訓練されました。
ブログ記事
詳細情報については、公式ControlNetブログ記事 も参照してください。
📄 ライセンス
このモデルは The CreativeML OpenRAIL M license の下で提供されています。