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

🚀 クイックスタート
このモデルを使用するには、以下の手順を実行します。
- 外部依存関係をインストールします。
$ 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-scribble/resolve/main/images/bag.png")
image = hed(image, scribble=True)
controlnet = ControlNetModel.from_pretrained(
"lllyasviel/sd-controlnet-scribble", 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("bag", image, num_inference_steps=20).images[0]
image.save('images/bag_scribble_out.png')

✨ 主な機能
- ControlNetは、追加の条件を加えることで拡散モデルを制御することができます。
- このチェックポイントは、スクリブル画像を条件とするControlNetに対応しています。
- Stable Diffusionと組み合わせて使用することができます。
📦 インストール
外部依存関係のインストール
$ 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-scribble/resolve/main/images/bag.png")
image = hed(image, scribble=True)
controlnet = ControlNetModel.from_pretrained(
"lllyasviel/sd-controlnet-scribble", 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("bag", image, num_inference_steps=20).images[0]
image.save('images/bag_scribble_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つの異なるチェックポイントを公開しました。
学習
スクリブルモデルは、500kのスクリブル画像とキャプションのペアで学習されました。スクリブル画像は、HED境界検出と一連のデータ拡張(閾値、マスキング、形態学的変換、非最大抑制)で生成されました。モデルは、Nvidia A100 80Gを使用して150GPU時間で学習され、キャニーモデルをベースモデルとして使用しました。
ブログ記事
詳細情報については、公式ControlNetブログ記事 も参照してください。
📄 ライセンス
このモデルは The CreativeML OpenRAIL M license の下で提供されています。