🚀 Controlnet - v1.1 - Canny Version
Controlnet v1.1は、拡散モデルに追加条件を加えることで制御するニューラルネットワーク構造です。このモデルは、画像生成における条件付き入力を可能にし、エッジマップやセグメンテーションマップなどの入力に対応します。
🚀 クイックスタート
Controlnet v1.1 は Controlnet v1.0 の後継モデルで、Lvmin Zhang によって lllyasviel/ControlNet-v1-1 で公開されました。
このチェックポイントは、元のチェックポイント を diffusers
形式に変換したものです。Stable Diffusion と組み合わせて使用でき、例えば runwayml/stable-diffusion-v1-5 と一緒に使うことができます。
詳細については、🧨 Diffusers のドキュメント も参照してください。
ControlNetは、追加の入力条件をサポートするために事前学習された大規模拡散モデルを制御するニューラルネットワーク構造です。

このチェックポイントは、Cannyエッジを条件としたControlNetに対応しています。
✨ 主な機能
- 拡散モデルに追加条件を加えて制御することができます。
- エッジマップ、セグメンテーションマップ、キーポイントなどの条件付き入力をサポートします。
- 学習が高速で、個人のデバイスでもトレーニング可能です。
📦 インストール
外部依存関係のインストール
- opencv をインストールします。
$ pip install opencv-contrib-python
diffusers
と関連パッケージをインストールします。
$ pip install diffusers transformers accelerate
💻 使用例
基本的な使用法
import torch
import os
from huggingface_hub import HfApi
from pathlib import Path
from diffusers.utils import load_image
import numpy as np
import cv2
from PIL import Image
from diffusers import (
ControlNetModel,
StableDiffusionControlNetPipeline,
UniPCMultistepScheduler,
)
checkpoint = "lllyasviel/control_v11p_sd15_canny"
image = load_image(
"https://huggingface.co/lllyasviel/control_v11p_sd15_canny/resolve/main/images/input.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)
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(33)
image = pipe("a blue paradise bird in the jungle", num_inference_steps=20, generator=generator, image=control_image).images[0]
image.save('images/image_out.png')
注意事項
⚠️ 重要提示
画像を処理して補助条件を作成する場合、上記のように外部依存関係が必要です。
💡 使用建议
このチェックポイントは Stable Diffusion v1-5 でトレーニングされているため、これと一緒に使用することをお勧めします。実験的に、他の拡散モデル(dreamboothed stable diffusion など)とも使用できます。
📚 ドキュメント
モデル詳細
概要
Controlnetは、Lvmin ZhangとManeesh Agrawalaによる Adding Conditional Control to Text-to-Image Diffusion Models で提案されました。
概要は以下の通りです。
私たちは、事前学習された大規模拡散モデルを制御して追加の入力条件をサポートするニューラルネットワーク構造であるControlNetを提案します。ControlNetは、エンドツーエンドでタスク固有の条件を学習し、学習データセットが小さい場合(< 50k)でもロバストです。さらに、ControlNetのトレーニングは拡散モデルのファインチューニングと同じくらい速く、個人のデバイスでもトレーニングできます。あるいは、強力な計算クラスターが利用可能な場合、モデルは大量(数百万から数十億)のデータにスケールできます。Stable Diffusionのような大規模拡散モデルは、ControlNetで拡張することで、エッジマップ、セグメンテーションマップ、キーポイントなどの条件付き入力を可能にできます。これにより、大規模拡散モデルを制御する方法が豊富になり、関連するアプリケーションがさらに促進される可能性があります。
他の公開されたチェックポイント v1-1
著者らは、Stable Diffusion v1-5 でそれぞれ異なるタイプの条件付きでトレーニングされた14の異なるチェックポイントを公開しています。
📄 ライセンス
このモデルは The CreativeML OpenRAIL M license の下で公開されています。