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

📚 ドキュメント
🔍 モデルの詳細
📖 概要
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つの異なるチェックポイントを公開しました。
💻 使用例
基本的な使用法
このチェックポイントは Stable Diffusion v1 - 5 で学習されているため、これと一緒に使用することをお勧めします。実験的には、このチェックポイントはdreamboothed stable diffusionなどの他の拡散モデルとも使用できます。
注意: 画像を処理して補助条件を作成する場合は、以下のように外部依存関係が必要です。
- https://github.com/patrickvonplaten/controlnet_aux をインストールします。
$ 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 OpenposeDetector
from diffusers.utils import load_image
openpose = OpenposeDetector.from_pretrained('lllyasviel/ControlNet')
image = load_image("https://huggingface.co/lllyasviel/sd-controlnet-openpose/resolve/main/images/pose.png")
image = openpose(image)
controlnet = ControlNetModel.from_pretrained(
"lllyasviel/sd-controlnet-openpose", 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("chef in the kitchen", image, num_inference_steps=20).images[0]
image.save('images/chef_pose_out.png')



🔬 学習
Openposeモデルは、200kの姿勢画像とキャプションのペアで学習されました。姿勢推定画像はOpenposeで生成されました。モデルは、Stable Diffusion 1.5をベースモデルとして、Nvidia A100 80Gを使用して300GPU時間学習されました。
📝 ブログ記事
詳細については、公式ControlNetブログ記事 もご覧ください。
📄 ライセンス
このモデルは The CreativeML OpenRAIL M license の下で提供されています。