「T2Iアダプタを使用した効率的で制御可能なSDXL生成」
Efficient and controllable SDXL generation using T2I adapter.
T2I-Adapterは、オリジナルの大規模なテキストから画像へのモデルを凍結しながら、事前学習されたテキストから画像へのモデルに追加のガイダンスを提供する効率的なプラグアンドプレイモデルです。T2I-Adapterは、T2Iモデル内部の知識を外部の制御信号と整合させます。さまざまな条件に応じてさまざまなアダプタをトレーニングし、豊富な制御と編集効果を実現することができます。
ControlNetは同様の機能を持ち、広く使用されている現代の作業です。しかし、実行するには計算コストが高い場合があります。これは、逆拡散プロセスの各ノイズ除去ステップで、ControlNetとUNetの両方を実行する必要があるためです。さらに、ControlNetは制御モデルとしてUNetエンコーダのコピーを重要視しており、パラメータ数が大きくなるため、生成はControlNetのサイズによって制約されます(サイズが大きければそれだけプロセスが遅くなります)。
T2I-Adapterは、この点でControlNetに比べて競争力のある利点を提供します。T2I-Adapterはサイズが小さく、ControlNetとは異なり、T2I-Adapterはノイズ除去プロセス全体の間ずっと一度だけ実行されます。
- 「無料のColabでGradioとHugging Faceを使用してLLaMa 2チャットボットを作成する方法」
- タイム100 AI:最も影響力のあるもの?
- アルゴリズムのバイアスの理解:タイプ、原因、および事例研究
過去数週間、DiffusersチームとT2I-Adapterの著者は、diffusersでStable Diffusion XL(SDXL)のT2I-Adapterのサポートを提供するために協力してきました。このブログ記事では、SDXLにおけるT2I-Adapterのトレーニング結果、魅力的な結果、そしてもちろん、さまざまな条件(スケッチ、キャニー、ラインアート、深度、およびオープンポーズ)でのT2I-Adapterのチェックポイントを共有します。
以前のバージョンのT2I-Adapter(SD-1.4/1.5)と比較して、T2I-Adapter-SDXLはまだオリジナルのレシピを使用しており、79Mのアダプタで2.6BのSDXLを駆動しています!T2I-Adapter-SDXLは、強力な制御機能を維持しながら、SDXLの高品質な生成を受け継いでいます。
diffusers
を使用してT2I-Adapter-SDXLをトレーニングする
私たちは、diffusers
が提供する公式のサンプルを元に、トレーニングスクリプトを作成しました。
このブログ記事で言及するT2I-Adapterモデルのほとんどは、LAION-Aesthetics V2からの3Mの高解像度の画像テキストペアで、以下の設定でトレーニングされました:
- トレーニングステップ:20000-35000
- バッチサイズ:データ並列、単一GPUバッチサイズ16、合計バッチサイズ128。
- 学習率:定数学習率1e-5。
- 混合精度:fp16
コミュニティには、スピード、メモリ、品質の間で競争力のあるトレードオフを打つために、私たちのスクリプトを使用してカスタムでパワフルなT2I-Adapterをトレーニングすることをお勧めします。
diffusers
でT2I-Adapter-SDXLを使用する
ここでは、ラインアートの状態を例にとって、T2I-Adapter-SDXLの使用方法を示します。まず、必要な依存関係をインストールします:
pip install -U git+https://github.com/huggingface/diffusers.git
pip install -U controlnet_aux==0.0.7 # for conditioning models and detectors
pip install transformers accelerate
T2I-Adapter-SDXLの生成プロセスは、主に次の2つのステップで構成されています:
- 制御イメージは、適切な制御イメージ形式に変換されます。
- 制御イメージとプロンプトは、
StableDiffusionXLAdapterPipeline
に渡されます。
Lineart Adapterを使用したシンプルな例を見てみましょう。まず、SDXLのT2I-Adapterパイプラインとラインアートディテクターを初期化します。
import torch
from controlnet_aux.lineart import LineartDetector
from diffusers import (AutoencoderKL, EulerAncestralDiscreteScheduler,
StableDiffusionXLAdapterPipeline, T2IAdapter)
from diffusers.utils import load_image, make_image_grid
# アダプタのロード
adapter = T2IAdapter.from_pretrained(
"TencentARC/t2i-adapter-lineart-sdxl-1.0", torch_dtype=torch.float16, varient="fp16"
).to("cuda")
# パイプラインのロード
model_id = "stabilityai/stable-diffusion-xl-base-1.0"
euler_a = EulerAncestralDiscreteScheduler.from_pretrained(
model_id, subfolder="scheduler"
)
vae = AutoencoderKL.from_pretrained(
"madebyollin/sdxl-vae-fp16-fix", torch_dtype=torch.float16
)
pipe = StableDiffusionXLAdapterPipeline.from_pretrained(
model_id,
vae=vae,
adapter=adapter,
scheduler=euler_a,
torch_dtype=torch.float16,
variant="fp16",
).to("cuda")
# ラインアートディテクターのロード
line_detector = LineartDetector.from_pretrained("lllyasviel/Annotators").to("cuda")
次に、ラインアートを検出するために画像をロードします:
url = "https://huggingface.co/Adapter/t2iadapter/resolve/main/figs_SDXLV1.0/org_lin.jpg"
image = load_image(url)
image = line_detector(image, detect_resolution=384, image_resolution=1024)
次に生成します:
prompt = "Ice dragon roar, 4k photo"
negative_prompt = "anime, cartoon, graphic, text, painting, crayon, graphite, abstract, glitch, deformed, mutated, ugly, disfigured"
gen_images = pipe(
prompt=prompt,
negative_prompt=negative_prompt,
image=image,
num_inference_steps=30,
adapter_conditioning_scale=0.8,
guidance_scale=7.5,
).images[0]
gen_images.save("out_lin.png")
これらは、調整量を制御するのに役立つ2つの重要な引数です。
-
adapter_conditioning_scale
この引数は、条件への影響の度合いを制御します。値が高いほど、条件の効果が高くなります。
-
adapter_conditioning_factor
この引数は、初期の生成ステップのうち、条件を適用するステップ数を制御します。値は0から1の間で設定する必要があります(デフォルトは1)。
adapter_conditioning_factor=1
の場合、アダプタはすべてのタイムステップに適用されますが、adapter_conditioning_factor=0.5
の場合は最初の50%のステップにのみ適用されます。
詳細については、公式ドキュメントをご覧ください。
デモを試す
T2I-Adapter-SDXLをこのスペースまたは以下のプレイグラウンドで簡単に試すことができます:
その他の結果
以下に、さまざまな条件を使用して得られた結果を示します。また、対応する事前学習済みチェックポイントへのリンクも補足しています。それらのモデルカードには、トレーニング方法や使用例などの詳細が記載されています。
ラインアートガイド
モデル:TencentARC/t2i-adapter-lineart-sdxl-1.0
スケッチガイド
モデル:TencentARC/t2i-adapter-sketch-sdxl-1.0
キャニーガイド
モデル:TencentARC/t2i-adapter-canny-sdxl-1.0
デプスガイド
デプスガイドモデル:TencentARC/t2i-adapter-depth-midas-sdxl-1.0
とTencentARC/t2i-adapter-depth-zoe-sdxl-1.0
OpenPoseガイド
モデル:TencentARC/t2i-adapter-openpose-sdxl-1.0
謝辞:モデルのトレーニングと洞察を共有してくれたウィリアム・バーマンには、非常に感謝しています。
We will continue to update VoAGI; if you have any questions or suggestions, please contact us!
Was this article helpful?
93 out of 132 found this helpful
Related articles