「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はノイズ除去プロセス全体の間ずっと一度だけ実行されます。

過去数週間、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つのステップで構成されています:

  1. 制御イメージは、適切な制御イメージ形式に変換されます。
  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つの重要な引数です。

  1. adapter_conditioning_scale

    この引数は、条件への影響の度合いを制御します。値が高いほど、条件の効果が高くなります。

  2. 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.0TencentARC/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!

Share:

Was this article helpful?

93 out of 132 found this helpful

Discover more

人工知能

「ElaiのCEO&共同創業者、Vitalii Romanchenkoについてのインタビューシリーズ」

ヴィタリー・ロマンチェンコは、ElaiのCEO兼共同創設者であり、マイク、カメラ、俳優、スタジオの必要なく、個人が一流のビデ...

機械学習

「Prolificの機械学習エンジニア兼AIコンサルタント、ノラ・ペトロヴァ – インタビューシリーズ」

『Nora Petrovaは、Prolificの機械学習エンジニア兼AIコンサルタントですProlificは2014年に設立され、既にGoogle、スタンフ...

人工知能

「アナコンダのCEO兼共同創業者、ピーターウォングによるインタビューシリーズ」

ピーター・ワンはAnacondaのCEO兼共同創設者ですAnaconda(以前はContinuum Analyticsとして知られる)を設立する前は、ピー...

人工知能

「aiOlaのCEO兼共同創設者、アミール・ハラマティによるインタビューシリーズ」

アミール・ハラマティは、aiOlaのCEO兼共同創業者であり、スピーチを作業可能にし、どこでも完全な正確さで業界固有のプロセ...

機械学習

「機械学習 vs AI vs ディープラーニング vs ニューラルネットワーク:違いは何ですか?」

テクノロジーの急速な進化は、ビジネスが効率化のために洗練されたアルゴリズムにますます頼ることで、私たちの日常生活を形...

人工知能

「Ami Hever、UVeyeの共同創設者兼CEO - インタビューシリーズ」

עמיר חבר הוא המנכל והמייסד של UVeye, סטארט-אפ ראיה ממוחשבת בלמידה עמוקה, המציבה את התקן הגלובלי לבדיקת רכבים עם זיהוי...