🚀 Small SDXL-controlnet: Canny
このモデルは、stabilityai/stable-diffusion-xl-base-1.0をベースに、Cannyエッジ検出を用いて学習された小型のControlNetの重みです。このチェックポイントは、元のXL ControlNetチェックポイントよりも7倍小さいです。以下にいくつかのサンプル画像を示します。
サンプル画像
- プロンプト: aerial view, a futuristic research complex in a bright foggy jungle, hard lighting

- プロンプト: a woman, close up, detailed, beautiful, street photography, photorealistic, detailed, Kodak ektar 100, natural, candid shot

- プロンプト: megatron in an apocalyptic world ground, runied city in the background, photorealistic

- プロンプト: a couple watching sunset, 4k photo

🚀 クイックスタート
まずは必要なライブラリをインストールしましょう。
pip install accelerate transformers safetensors opencv-python diffusers
そして、以下のコードを実行します。
from diffusers import ControlNetModel, StableDiffusionXLControlNetPipeline, AutoencoderKL
from diffusers.utils import load_image
from PIL import Image
import torch
import numpy as np
import cv2
prompt = "aerial view, a futuristic research complex in a bright foggy jungle, hard lighting"
negative_prompt = "low quality, bad quality, sketches"
image = load_image("https://huggingface.co/datasets/hf-internal-testing/diffusers-images/resolve/main/sd_controlnet/hf-logo.png")
controlnet_conditioning_scale = 0.5
controlnet = ControlNetModel.from_pretrained(
"diffusers/controlnet-canny-sdxl-1.0-small",
torch_dtype=torch.float16
)
vae = AutoencoderKL.from_pretrained("madebyollin/sdxl-vae-fp16-fix", torch_dtype=torch.float16)
pipe = StableDiffusionXLControlNetPipeline.from_pretrained(
"stabilityai/stable-diffusion-xl-base-1.0",
controlnet=controlnet,
vae=vae,
torch_dtype=torch.float16,
)
pipe.enable_model_cpu_offload()
image = np.array(image)
image = cv2.Canny(image, 100, 200)
image = image[:, :, None]
image = np.concatenate([image, image, image], axis=2)
image = Image.fromarray(image)
images = pipe(
prompt, negative_prompt=negative_prompt, image=image, controlnet_conditioning_scale=controlnet_conditioning_scale,
).images
images[0].save(f"hug_lab.png")

詳細については、StableDiffusionXLControlNetPipeline
の公式ドキュメントを参照してください。
⚠️ 重要提示
このチェックポイントは実験的なものであり、改善の余地がたくさんあります。コミュニティの皆さんには、これをベースに開発を行い、改善していただき、フィードバックを提供していただけると幸いです。
🔧 技術詳細
学習方法
このモデルの学習スクリプトは、こちらにある公式の学習スクリプトをベースに構築されています。完全な詳細については、このスクリプトを参照してください。
- このチェックポイントでは蒸留を行っていません。SDXL UNetから初期化された小型のControlNetを使用しています。コミュニティの皆さんにも蒸留を試していただきたいです。この点に関しては、このリソースが役立つかもしれません。
- ControlNetの初期化方法について詳しく知りたい場合は、このコードブロックを参照してください。
- このモデルには注意ブロックがありません。
- このモデルは、ほとんどの条件付き画像で良好に機能します。ただし、より複雑な条件付けの場合は、より大きなチェックポイントの方が適しているかもしれません。私たちはこのチェックポイントの品質向上に引き続き取り組んでおり、コミュニティからのフィードバックを求めています。
- 画像生成の品質を向上させるために、
controlnet_conditioning_scale
とguidance_scale
の引数を調整することをおすすめします。
学習データ
このモデルは、LAION aesthetic 6 plusサブセットの300万枚の画像を使用して学習されました。バッチサイズは256、学習ステップは50k、学習率は3e-5で一定です。
計算環境
1台の8xA100マシンを使用して学習しました。
混合精度
FP16を使用して学習しました。
📄 ライセンス
このプロジェクトは、OpenRAIL++ライセンスの下で公開されています。