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

🚀 クイックスタート
このチェックポイントはStable Diffusion v1 - 5で学習されているため、同モデルとの組み合わせでの使用を推奨します。実験的には、dreamboothed stable diffusionなどの他の拡散モデルとも使用できます。
必要な依存関係のインストール
- https://github.com/patrickvonplaten/controlnet_aux をインストールします。
$ pip install controlnet_aux
diffusers
と関連パッケージをインストールします。
$ pip pip install diffusers transformers accelerate
コードの実行
from PIL import Image
from diffusers import StableDiffusionControlNetPipeline, ControlNetModel, UniPCMultistepScheduler
import torch
from controlnet_aux import MLSDdetector
from diffusers.utils import load_image
mlsd = MLSDdetector.from_pretrained('lllyasviel/ControlNet')
image = load_image("https://huggingface.co/lllyasviel/sd-controlnet-mlsd/resolve/main/images/room.png")
image = mlsd(image)
controlnet = ControlNetModel.from_pretrained(
"lllyasviel/sd-controlnet-mlsd", 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("room", image, num_inference_steps=20).images[0]
image.save('images/room_mlsd_out.png')

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