HuggingFace Diffusers 0.12 : 使用方法 : 推論のためのパイプライン – 拡散モデルの生成の制御 (翻訳/解説)
翻訳 : (株)クラスキャット セールスインフォメーション
作成日時 : 03/07/2023 (v0.13.1)
* 本ページは、HuggingFace Diffusers の以下のドキュメントを翻訳した上で適宜、補足説明したものです:
* サンプルコードの動作確認はしておりますが、必要な場合には適宜、追加改変しています。
* ご自由にリンクを張って頂いてかまいませんが、sales-info@classcat.com までご一報いただけると嬉しいです。
- 人工知能研究開発支援
- 人工知能研修サービス(経営者層向けオンサイト研修)
- テクニカルコンサルティングサービス
- 実証実験(プロトタイプ構築)
- アプリケーションへの実装
- 人工知能研修サービス
- PoC(概念実証)を失敗させないための支援
- お住まいの地域に関係なく Web ブラウザからご参加頂けます。事前登録 が必要ですのでご注意ください。
◆ お問合せ : 本件に関するお問い合わせ先は下記までお願いいたします。
- 株式会社クラスキャット セールス・マーケティング本部 セールス・インフォメーション
- sales-info@classcat.com ; Web: www.classcat.com ; ClassCatJP
HuggingFace Diffusers 0.12 : 使用方法 : 推論のためのパイプライン – 拡散モデルの生成の制御
拡散モデルにより生成される出力の制御はコミュニティにより長く追求され、今では活発な研究トピックになりました。多くのポピュラーな拡散モデルでは、画像とテキストプロンプト両方の入力の微妙な変化が出力を劇的に変化させる可能性があります。理想的な世界では、セマンティクスがどのように保存されて変化させられるかを制御できることを望みます。
セマンティクスの保存の殆どの例は、入力の変化を出力の変化に正確にマップできることに帰着されます。例えば、プロンプトの主題への形容詞の追加は画像全体を保存し、変更された主題だけを変化させます。あるいは、特定の主題の画像バリエーションは主題のポーズを保存します。
更に、セマンティックな保存の域を超えて、影響を与えたい生成画像の品質があります。例えば一般に、出力には良い品質であり、特定のスタイルに忠実に従い、あるいはリアルリスティックであることを求めます。
拡散モデルの生成を制御する、diffusers がサポートするテクニックの幾つかをドキュメント化していきます。多くは最先端の研究で非常に特定の意味合いを持つ (nuance) かもしれません。何かを明瞭にする必要があったり提案がある場合には、フォーラム の discussion や GitHub issue をオープンすることをためらわないでください。
私たちは生成がどのように制御できるかの高位な説明と技術的なスニペットを提供しています。技術のより深い説明については、パイプラインからリンクされている原論文が常に最善のリソースです。
ユースケースに依存して、それに応じてテクニックを選択するべきです。多くの場合、これらのテクニックは組み合わせることができます。例えば、Textual Inversion を使用して生成された出力によりセマンティックな誘導を提供するために Textual Inversion を SEGA と組み合わせることができます。
特に言及がなければ、これらのテクニックは既存のモデルとともに動作し、独自の重みは必要としません。
- Instruct Pix2Pix
- Pix2Pix Zero
- Attend and Excite
- Semantic Guidance
- Self-attention Guidance
- Depth2Image
- MultiDiffusion Panorama
- DreamBooth
- Textual Inversion
- ControlNet
Instruct Pix2Pix
Instruct Pix2Pix は入力画像の編集をサポートするために stable diffusion から再調整されています。それは入力として画像と編集を記述するプロンプトを受け取り、編集された画像を出力します。Instruct Pix2Pix は InstructGPT ライクなプロンプトで上手く動作するように明示的に訓練されています。
使用方法の詳細は こちら をご覧ください。
Pix2Pix ゼロ
Pix2Pix ゼロ は、一般的な画像セマンティクスを保持したまま、一つのコンセプトや主題が別のものに変換されるように画像を変更することを可能にします。
ノイズ除去過程はあるコンセプトの埋め込みから別のコンセプトの埋め込みへと誘導されます。中間的な潜在的変数はノイズ除去過程の間に最適化されて、アテンションマップを参照アテンションマップに押し進めます。参照アテンションマップは入力画像のノイズ除去過程に由来し、セマンティックな保存を促すために使用されます。
Pix2Pix ゼロは合成画像と実画像の両方を編集するために利用できます。
- 合成画像を編集するために、最初に与えられたキャプションから画像を生成します。次に、編集されるコンセプトと新しいターゲットコンセプトに対する画像キャプションを生成します。この目的のために Flan-T5 のようなモデルを利用できます。次に、ソースとターゲット・コンセプトの両方に対する「平均」プロンプト埋め込みがテキスト・エンコーダを通して作成されます。最後に、合成画像を編集するために pix2pix-ゼロ・アルゴリズムが使用されます。
- 実画像を編集するには、BLIP のようなモデルを使用して画像キャプションを最初に生成します。次に、プロンプトと画像に ddim inversion を適用して “inverse” 潜在的変数を生成します。前と同様に、ソースとターゲット・コンセプトの両方に対する「平均」プロンプト埋め込み作成され、最後に “inverse” 潜在的変数と組み合わせた pix2pix-ゼロ・アルゴリズムが使用されて画像を編集します。
Pix2Pix ゼロは「ゼロショット」画像編集を可能にした最初のモデルです。これは、ここ で示されるようにコンシューマ GPU 上で 1 分未満で画像を編集できることを意味します。
上記のように、Pix2Pix ゼロは生成を特定のコンセプトに誘導するために、(UNet, VAE やテキストエンコーダのいずれかではなく) 潜在的変数の最適化を含みます。これは、パイプライン全体が標準的な StableDiffusionPipeline よりも多くのメモリを必要とするかもしれないことを意味します。
See here for more information on how to use it.
Attend and Excite
Attend and Excite はプロンプトの主題が最終的な画像で忠実に表現されることを可能にします。
トークンインデックスのセットが入力として与えられ、これらは画像内に存在しなければならないプロンプトの主題に対応します。ノイズ除去の間、各トークンインデックスは少なくとも画像の 1 つのパッチに対して最小のアテンション閾値を持つことが保証されます。中間的な潜在的変数はノイズ除去過程の間に反復的に最適化され、すべての主題トークンについてアテンション閾値がパスされるまで最も無視されている主題トークンのアテンションを強化します。
Pix2Pix ゼロのように、Attend and Excite もまたそのパイプラインでミニ最適化ループ (事前学習済み重みはそのまま触れずに) を含み、そして通常の StableDiffusionPipeline よりも多くのメモリを必要とする可能性があります。
See here for more information on how to use it.
Semantic Guidance (SEGA)
SEGA は画像から一つまたはそれ以上のコンセプトを適用したり削除することを可能にします。コンセプトの強度もまた制御できます。例えば、スマイル・コンセプトはポートレートのスマイルを徐々に増やしたり減らしたりするために使用できます。
分類器フリーガイダンスが空のプロンプト入力でガイダンスを提供する方法に類似して、SEGA はコンセプト・プロンプトでガイダンスを提供します。これらのコンセプト・プロンプトは複数同時に適用できます。各コンセプト・プロンプトはガイダンスがポジティブに適用されるかネガティブに適用されるかに依存して、コンセプトを追加したり削除することができます。
Pix2Pix ゼロや Attend and Excite とは違い、SEGA は明示的な勾配ベースの最適化を実行する代わりに、拡散過程と直接的に相互作用します。
See here for more information on how to use it.
Self-attention ガイダンス (SAG)
Self-attention ガイダンス は画像の一般的な品質を改善します。
high-frequency な細部で条件付けされていない予測から完全に条件付けられた画像への誘導を提供します。high frequency な細部は UNet self-attention マップから抽出されます。
See here for more information on how to use it.
Depth2Image
Depth2Image は Stable Diffusion から再調整され、テキスト誘導画像バリエーションに対してセマンティクスをより良く保存します。
それは元画像の単眼深度推定上で条件付けられています。
See here for more information on how to use it.
MultiDiffusion パノラマ
MultiDiffusion は事前訓練済み拡散モデルに対して新しい生成過程を定義します。この過程は複数の拡散生成手法を一緒に結びつけて、高品質で多様な画像を生成するために手軽に適用できます。結果は、アスペクト比 (例えばパノラマ)、タイトなセグメンテーションマスクから境界ボックスに渡る空間的誘導信号、のようなユーザ提供の制御に忠実になります。MultiDiffusion パノラマ は任意のアスペクト比 (例えばパノラマ) で高品質画像を生成することを可能にします。
See here for more information on how to use it to generate panoramic images.
貴方自身のモデルの再調整
事前訓練済みモデルに加えて、Diffusers はユーザ提供データ上でモデルを再調整するための訓練スクリプトを持ちます。
DreamBooth
DreamBooth はモデルに新しい主題について教えるためにモデルを再調整します。例えば、ある人物の 2, 3 の画像を使用して、異なるスタイルでその人物の画像を生成することができます。
See here for more information on how to use it.
Textual Inversion
Textual Inversion はモデルに新しいコンセプトについて教えるためにモデルを再調整します。例えば、アートワークのスタイルの 2, 3 の写真を使用してそのスタイルでの画像を生成することができます。
See here for more information on how to use it.
ControlNet
ControlNet は条件を追加する補助的なネットワークです。エッジ検出、走り描き (scribbles), 深度マップ, そしてセマンティック・セグメンテーションのような様々な条件で訓練された 8 つの規範となる事前訓練済み ControlNet があります。
See here for more information on how to use it.
以上