🚀 Controlnet - v1.1 - lineart Version
ControlNet v1.1は、拡散モデルを追加条件で制御するためのニューラルネットワーク構造です。このチェックポイントは、Stable Diffusionと組み合わせて使用でき、画像生成における高度な制御を可能にします。
🚀 クイックスタート
Controlnet v1.1 は Lvmin Zhang によって lllyasviel/ControlNet-v1-1 でリリースされました。
このチェックポイントは、元のチェックポイント を diffusers
形式に変換したものです。Stable Diffusion、例えば runwayml/stable-diffusion-v1-5 と組み合わせて使用できます。
詳細については、🧨 Diffusers ドキュメント も参照してください。
ControlNetは、追加条件を追加することで拡散モデルを制御するニューラルネットワーク構造です。

このチェックポイントは、線画画像を条件とするControlNetに対応しています。
📚 ドキュメント
モデルの詳細
概要
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 で学習されているため、同じモデルと組み合わせて使用することをお勧めします。実験的に、このチェックポイントは dreamboothed stable diffusion などの他の拡散モデルとも使用できます。
⚠️ 重要提示
画像を処理して補助条件を作成する場合は、以下に示すように外部依存関係が必要です。
- https://github.com/patrickvonplaten/controlnet_aux をインストールします。
$ pip install controlnet_aux==0.3.0
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
from PIL import Image
import numpy as np
from controlnet_aux import LineartDetector
from diffusers import (
ControlNetModel,
StableDiffusionControlNetPipeline,
UniPCMultistepScheduler,
)
checkpoint = "ControlNet-1-1-preview/control_v11p_sd15_lineart"
image = load_image(
"https://huggingface.co/ControlNet-1-1-preview/control_v11p_sd15_lineart/resolve/main/images/input.png"
)
image = image.resize((512, 512))
prompt = "michael jackson concert"
processor = LineartDetector.from_pretrained("lllyasviel/Annotators")
control_image = processor(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(0)
image = pipe(prompt, num_inference_steps=30, generator=generator, image=control_image).images[0]
image.save('images/image_out.png')



その他のv1-1チェックポイント
著者らは、Stable Diffusion v1-5 を使用して、異なるタイプの条件付きで学習された14種類の異なるチェックポイントをリリースしています。
📄 ライセンス
このモデルは The CreativeML OpenRAIL M license の下で提供されています。