原作: マックス・ウルフ
**出典:**ファウンダー・パーク
OpenAI がモデルを改善するために使用する強化学習プロセスは、人間のポジティブなインタラクションによるネガティブな行動を暗黙的に削減します。
この論文では、著者らは新しい実践的なアプローチを採用しています。それは、人間のネガティブなインタラクション(つまり、意図的に低品質の画像を選択すること)を利用して、ポジティブな行動を暗黙のうちに増強するというものです。
Dreambooth LoRA を使用すると、この目標を達成するために大規模な言語モデルをトレーニングするほど多くの入力データを準備する必要は基本的にありません。
最適化レベルが異なる「エイリアン型バーガー()」
著者は、Stable Diffusion XL 1.0 によってリリースされた 2 つのコア機能、プロンプト ワード重み付けと Dreambooth LoRA トレーニングと推論を紹介し、Textual Inversion (テキスト反転) メソッドを組み合わせて Lora をトレーニングし、Lora をよりスマートで使いやすくします。
著者について: Max Woolf (@minimaxir) は、BuzzFeed のデータ サイエンティストであり、AI/ML ツールやさまざまなオープンソース プロジェクトに取り組んでいます。
元のリンク:
以下は、Founder Park氏が編集した記事の内容です。
先月、Stability AI は Stable Diffusion XL 1.0 (SDXL) をリリースしてオープンソースにし、ユーザーが特別な権限なしでアクセスできるようにしました。
SDXL1.0出力例
SDXL は実際には 2 つのモデルで構成されています。1 つはベース モデル、もう 1 つはオプションのリファインメント モデルで、速度のオーバーヘッドを発生させずに細部の表現を大幅に強化します。
Stable Diffusion のさまざまなバージョンのモデル間の相対品質の比較
間引きモデルを使用した後の品質の大幅な向上に注目してください。
SDXL 1.0 の機能
このバージョン (SDXL 1.0) は、特別な対策なしで 1024x1024 解像度の画像をネイティブに生成できる最初のオープン ソース モデルの 1 つであり、生成された画像はより詳細であることは注目に値します。
Hugging Face のディフューザー Python ライブラリがこのモデルを完全にサポートし、パフォーマンスがいくつか最適化されました。
同時に、ディフューザーは、プロンプト単語の重み付けと Dreambooth LoRA のトレーニングと推論という 2 つの新機能のサポートも実装しました。そこで、試してみるつもりです (ディフューザーでの SDXL デモ コードは記事の最後でご覧いただけます)。
ディフューザーのプロンプト単語重み付けサポートは、compel と呼ばれる Python ライブラリを利用して、より数学的な方法で用語に重み付けを行います。特定の単語に任意の数の + または - を追加して、生成された位置テキスト埋め込みにおけるその「重要性」を増減し、最終的な出力に影響を与えることができます。
同じ原理で、フレーズをラップすることもできます。たとえば、「サルバドール ダリによるサンフランシスコの風景、キャンバスに油彩」を生成すると、サンフランシスコのリアルな写真が生成され、アート形式をフレームに入れて次のようになります。 「サルバドール・ダリのサンフランシスコの風景、(キャンバスに油彩)+++」と入力し、安定拡散で期待される効果を出力させます。
環境の準備
私はクラウド VM を起動し、新しいミッドレンジ Nvidia L4 GPU (Google Cloud Platform のスポット インスタンスで 1 時間あたり 0.24 ドル) をプロビジョニングし、作業を開始しました。
1 つの L4 GPU を使用すると、各 1024x1024 イメージを生成するのに約 22 秒かかります。また、以前の安定拡散モードとは異なり、ミッドレンジ GPU は GPU 使用率がすでにフルであるため、一度に 1 つのイメージしか生成できません。もっと辛抱強くなるために。解像度を下げるとビルド速度が向上しますが、結果はひどいものになるため、行わないことを強くお勧めします。
** 少しカスタマイズされた構成 **
私のテストでは、Stable Diffusion 2.0 以降に導入されたプロンプト ワードの問題のほとんどが修正され、特に分類子なしのガイダンス値が高く設定されていました (guiding_scale のデフォルトは 7.5 ですが、私は 13 に変更したいと思います)。
この記事の LoRA モデルによって生成されたすべての例のガイド スケールは 13 です。
SDXL 1.0 の最も重要なアップデートは、実際には Dreambooth LoRA のサポートです。これにより、安定した拡散モデルをカスタマイズできるようになります。
Dreambooth は、非常に少数のソース画像セットとトリガー キーワードに基づいて安定拡散を微調整する技術で、これらの画像内の「コンセプト」をキーワードが与えられた他のコンテキストで使用できるようにします。
Dreamboothの動作原理の概略図
LoRA の利点: ドメイン固有の「小規模モデル」
Stable Diffusion 自体をトレーニングする場合、たとえ小規模なモデルであっても、多くの高価な GPU で何時間もトレーニングする必要があります。
ここで LoRA が役に立ちます。ビジョン モデルの小さなサブセットをトレーニングするため、結果を出力するのに安価な GPU のみが必要となり、最終モデル + LoRA の品質は完全に微調整されたモデルに匹敵します。 (一般的に、安定拡散の微調整について言及するとき、多くの場合、LoRA の作成を指します)。
トレーニングされた LoRA は、他のユーザーと簡単に共有したり、Civitai などのリポジトリにアップロードしたりできる、小型の自己完結型バイナリです。
LoRA の小さな欠点は、一度にアクティブにできるのは 1 つだけであることです。複数の LoRA を組み合わせてそれぞれの利点を組み合わせることができますが、実際にはそれほど単純ではありません。
テキスト反転 実際の戦闘: テキスト反転
Stable Diffusion LoRA が広く普及する前は、テキスト エンコーダが概念を学習できるようにするテキスト反転と呼ばれる手法がありましたが、トレーニングに何時間もかかり、結果も醜いものになる可能性がありました。
以前のブログ投稿「Ugly Sonic (Sonic)」でテキスト反転をトレーニングしましたが、安定拡散のソース データセットに含まれていなかったため、結果は独特なものになりました。生成された結果は次のとおりですが、さまざまな結果が含まれます。
(醜い)ソニック、でもとんでもなく醜い
今回は、LoRA のトレーニングにアグリー ソニックを使用することが、SDXL の可能性をテストする良い例になると思います。
たまたま、Hugging Face は、SDXL 基本モデルを使用して LoRA をトレーニングできる train_dreambooth_lora_sdxl.py スクリプトを提供しています。このスクリプトはまだ箱から出していない状態ですが、パラメータを少し調整しました。
さまざまなプロンプトの言葉の下で訓練された LoRA によって生成されたアグリー ソニック画像は、見栄えが良く、より整理されていると言っても過言ではありません。
ソニック、今回は歯付き
この実験が成功した後、私はテキスト反転を使って以前に行った別の実験をやり直すことにしました。つまり、より良い画像を生成するために間違ったキューワードを追加するというものでした。
今回の方法は、ひどく歪んだ低品質の画像を使用して LoRA をトレーニングするもので、与えられたプロンプトの単語が間違っているため、LoRA が間違っていることを「否定的なプロンプト」として扱い、この状況を回避して歪みの少ない画像を生成できることを願っています。
私は Jupyter Notebook を作成し、SDXL を使用して多くの「間違った」合成画像を自分で作成しました。今回はまた、さまざまなヒントの重みを使用して、ぼやけた (ぼやけた) 手や悪い手 (間違った描画) の手など、失敗した画像のより明白なインスタンスを生成しました。 。
皮肉なことに、高解像度の失敗した画像を生成するには SDXL を使用する必要があります。
上記は合成された間違った画像の例です
2000年代のパンクロックのアルバムジャケットの要素を意図せず組み込んでいる
この LoRA をトレーニングして Stable Diffusion XL ベース モデルにロードし (モデルの微調整に LoRA は必要ありません)、Jupyter Notebook を作成して、指定されたプロンプト ワードに対する次の出力を比較しました。
LoRA なしのベース モデル + パイプライン。 (基本)
LoRA パイプラインがありません。ネガティブ ヒントとして間違ったものを使用します (ネガティブ ヒントを追加)
LoRA のパイプラインを使用し、間違っていることをネガティブなヒントとして使用する (理想的な目標)
生成された各結果のシードは同じであるため、3 つの出力写真の構成は類似しているはずです。また、間違ったネガティブ ヒントと LoRA の効果、および基本モデル パイプラインの違いは非常に明らかであるはずです。
SDXL 0.9 テスト ケース
SDXL 0.9 を使用して、テストを開始するための簡単なプロンプトを示してみましょう。
「ヨセミテ国立公園のオオカミ、極寒の自然ドキュメンタリー映画撮影」
上の写真を注意深く見ると、ベース モデルの間違ったヒントによって背景の森に葉と奥行きが追加されていることがわかりますが、LoRA ではさらに多くのものが追加されています。より強力な照明と影、より詳細な葉、および変更が加えられています。オオカミの見た目、カメラアングルがより面白く見えます。
次に、プロンプトワードに「エクストリームクローズアップ(非常にクローズアップ)」を追加し、以前のシードを再利用した後、同様の写真構成でオオカミの異なる視点のクローズアップを取得しました。
「ヨセミテ国立公園のオオカミを極限までクローズアップ、極寒の自然ドキュメンタリーフィルム撮影」
現時点では、LoRA の質感と鮮明度は他のモデルよりもはるかに優れており、画像はより鮮明です。ただし、間違った手がかり単語を 1 つ追加すると、見方が変わってしまうことに注意してください。
もう 1 つの良いテスト ケースは食べ物の写真で、DALL-E 2 で作成した奇妙な食べ物のショットは特に優れています。 SDXL + 間違った LoRA は、何らかのヒントの重み付けを使用して、奇妙に見える非ユークリッド バーガーを生成できますか?
「大きくておいしいハンバーガー(5次元エイリアン幾何学の形をした)++++、プロの食べ物写真」
「おいしいビッグバーガー(5Dエイリアンジオメトリ)++++、プロの料理写真」
答えは、プロンプトの単語を何度調整しても、それはできないということです。それでも、出力は興味深いものです。ベースの SDXL は、プロンプトの「エイリアン」の部分を私が思っていたよりも文字通りに解釈しているようです (そして、それにかわいい山高帽を与えました!)。しかし、LoRA の方がうまく機能します。彼はヒントの意味を明確に理解していました。人間が食べるのが難しい「エイリアン」バーガーを作り、イメージスタイルがより輝いています。
絵師はどうなるのでしょうか?間違った LoRA は、人工知能が手を描画しないという悪名高い問題を解決できるでしょうか?そして、LoRA のトレーニング データにもそのような例が多数含まれています。テイラー・スウィフト大統領を描画するために初めて Stable Diffusion 2.0 を試したときに使用したプロンプトを変更してみましょう。
「テイラー・スウィフト米国大統領(署名用紙)++++、AP通信撮影」
「テイラー・スウィフト米国大統領(署名文書)++++、写真提供:AP」
Taylor の右腕を見てください。デフォルトの SDXL モデルはおかしな結果を出力し、間違っていると実際にはさらに悪くなるのですが、LoRA ではそれが修正されています。 LoRA の色の重ね合わせははるかに優れており、彼女のジャケットは黄色と白ではなく白がより目立つようになりました。しかし、彼女の手はまだ注意深く見ることができません。SDXL 1.0 でキャラクターを描くのは依然として面倒で信頼性がありません。
結論は明らかです。それぞれのケースで間違った + LoRA の出力は、単純に間違ったネガティブ キューを追加した場合の出力よりも興味深いため、以下では基本的な出力と LoRA の出力のみを比較します。以下は、間違った LoRA と比較した基本モデルの例です。
「コンピューターワークステーションでブログを書くリアルな人間のシュレック、バニティフェアで受賞した超現実的な写真」
「ハートの形をしたペパロニピザ、受賞歴のある超現実的なプロの料理写真」
(ハート型のペパロニピザ、超リアルな受賞歴のあるプロの料理写真) - より詳細なペパロニ、熱い泡、ピザの端の余分なペパロニが減り、生地がより硬く見えます
間違った LoRA はここで入手できますが、ディフューザー以外のインターフェイスでのパフォーマンスは保証できません。
これらのイメージの生成に使用されるすべてのノートブックは、この GitHub リポジトリにあります。これには、標準の SDXL 1.0 + 微調整モデル + LoRA Colab ノートブックも含まれます。このノートブックは無料の T4 GPU で実行できます。この記事で使用されている生成された画像の高解像度バージョンを確認したい場合は、記事のソース コードにアクセスしてください。
LoRA の誤り このトリックは、生成される画像の品質と鮮明さを向上させるだけですが、LoRA は SDXL の動作をよりスマートにし、プロンプトの言葉の精神をより反映させるようです。
技術レベルでは、この否定的な手がかりは、拡散によって画像が生成される潜在空間の領域を設定します。この領域は、間違った基本モデルと LoRA の両方で同じです。
私の直感では、LoRA は巨大な高次元潜在空間内のこの望ましくない領域を開始領域により似るように再形成するため、正常な生成結果がこの領域にヒットする確率が小さくなり、品質が低下することが改善されています。 (上記エイリアンバーガーの変更手順を参照)
SDXL を低品質の画像でトレーニングして改善することは、技術的にはヒューマン フィードバックによる強化学習 (RLHF) の一種です。このアプローチは ChatGPT の成功への道でもあります。 OpenAI がモデルを改善するために使用する強化学習プロセスは、ポジティブなユーザー インタラクションからネガティブな行動を暗黙的に減らすことですが、ここではネガティブなユーザー インタラクション (つまり、意図的に低品質の画像を選択する) を使用してポジティブな行動を暗黙的に増加させています。
ただし、Dreambooth LoRA を使用すると、基本的に、大規模な言語モデルをトレーニングするほど多くの入力データを準備する必要はありません。
「ネガティブ LoRA」の可能性は依然として大きく、合成データセット生成パラメーターには改善の余地が多く、LoRA は長期間トレーニングすることもできます。しかし、これまでの結果には非常に満足しており、他の LoRA とマージして後者を強化できるかどうかを確認するなど、ネガティブな LoRA でさらにテストを行っていきたいと考えています (特に間違った LoRA + アグリー ソニック LoRA!)。
添付: ディフューザーでの SDXL デモ
輸入トーチ
ディフューザーからインポート DiffusionPipeline、AutoencoderKL
vae = AutoencoderKL.from_pretrained("madebyollin/sdxl-vae-fp16-fix",
トーチ_dtype=torch.float16)
Base = DiffusionPipeline.from_pretrained(
"stabilityai/stable-diffusion-xl-base-1.0",
フィート = フィート、
トーチ_dtype=torch.float16、
iant="fp16",
use_safetensors=True、
)
_ =base.to("cuda")
リファイナー = DiffusionPipeline.from_pretrained(
"stabilityai/stable-diffusion-xl-refiner-1.0",
text_encoder_2=base.text_encoder_2,
脚=ベース.脚、
_ = Refiner.to("cuda")
両方のモデルを使用した生成 (専門家の混合)
高_ノイズ_frac = 0.8
=「馬に乗った宇宙飛行士」
ネガティブ_ = 「ぼやけていて、悪い手」
画像 = ベース(
=、
ネガティブ_=ネガティブ_、
ノイズ除去_end=high_noise_frac、
出力_type="潜在",
).画像
画像 = リファイナー(
ノイズ除去_start=high_noise_frac、
画像=画像、
).画像 [0]
38k 人気度
4k 人気度
5k 人気度
39k 人気度
17k 人気度
31k 人気度
3k 人気度
95k 人気度
27k 人気度
AIによって生成された悪い画像は、実際には逆に「モデルを微調整」できるのでしょうか?
原作: マックス・ウルフ
**出典:**ファウンダー・パーク
OpenAI がモデルを改善するために使用する強化学習プロセスは、人間のポジティブなインタラクションによるネガティブな行動を暗黙的に削減します。
この論文では、著者らは新しい実践的なアプローチを採用しています。それは、人間のネガティブなインタラクション(つまり、意図的に低品質の画像を選択すること)を利用して、ポジティブな行動を暗黙のうちに増強するというものです。
Dreambooth LoRA を使用すると、この目標を達成するために大規模な言語モデルをトレーニングするほど多くの入力データを準備する必要は基本的にありません。
著者は、Stable Diffusion XL 1.0 によってリリースされた 2 つのコア機能、プロンプト ワード重み付けと Dreambooth LoRA トレーニングと推論を紹介し、Textual Inversion (テキスト反転) メソッドを組み合わせて Lora をトレーニングし、Lora をよりスマートで使いやすくします。
著者について: Max Woolf (@minimaxir) は、BuzzFeed のデータ サイエンティストであり、AI/ML ツールやさまざまなオープンソース プロジェクトに取り組んでいます。
元のリンク:
以下は、Founder Park氏が編集した記事の内容です。
SDXL の簡単な紹介
先月、Stability AI は Stable Diffusion XL 1.0 (SDXL) をリリースしてオープンソースにし、ユーザーが特別な権限なしでアクセスできるようにしました。
SDXL は実際には 2 つのモデルで構成されています。1 つはベース モデル、もう 1 つはオプションのリファインメント モデルで、速度のオーバーヘッドを発生させずに細部の表現を大幅に強化します。
間引きモデルを使用した後の品質の大幅な向上に注目してください。
SDXL 1.0 の機能
このバージョン (SDXL 1.0) は、特別な対策なしで 1024x1024 解像度の画像をネイティブに生成できる最初のオープン ソース モデルの 1 つであり、生成された画像はより詳細であることは注目に値します。
Hugging Face のディフューザー Python ライブラリがこのモデルを完全にサポートし、パフォーマンスがいくつか最適化されました。
同時に、ディフューザーは、プロンプト単語の重み付けと Dreambooth LoRA のトレーニングと推論という 2 つの新機能のサポートも実装しました。そこで、試してみるつもりです (ディフューザーでの SDXL デモ コードは記事の最後でご覧いただけます)。
ディフューザーのプロンプト単語重み付けサポートは、compel と呼ばれる Python ライブラリを利用して、より数学的な方法で用語に重み付けを行います。特定の単語に任意の数の + または - を追加して、生成された位置テキスト埋め込みにおけるその「重要性」を増減し、最終的な出力に影響を与えることができます。
同じ原理で、フレーズをラップすることもできます。たとえば、「サルバドール ダリによるサンフランシスコの風景、キャンバスに油彩」を生成すると、サンフランシスコのリアルな写真が生成され、アート形式をフレームに入れて次のようになります。 「サルバドール・ダリのサンフランシスコの風景、(キャンバスに油彩)+++」と入力し、安定拡散で期待される効果を出力させます。
環境の準備
私はクラウド VM を起動し、新しいミッドレンジ Nvidia L4 GPU (Google Cloud Platform のスポット インスタンスで 1 時間あたり 0.24 ドル) をプロビジョニングし、作業を開始しました。
1 つの L4 GPU を使用すると、各 1024x1024 イメージを生成するのに約 22 秒かかります。また、以前の安定拡散モードとは異なり、ミッドレンジ GPU は GPU 使用率がすでにフルであるため、一度に 1 つのイメージしか生成できません。もっと辛抱強くなるために。解像度を下げるとビルド速度が向上しますが、結果はひどいものになるため、行わないことを強くお勧めします。
** 少しカスタマイズされた構成 **
私のテストでは、Stable Diffusion 2.0 以降に導入されたプロンプト ワードの問題のほとんどが修正され、特に分類子なしのガイダンス値が高く設定されていました (guiding_scale のデフォルトは 7.5 ですが、私は 13 に変更したいと思います)。
この記事の LoRA モデルによって生成されたすべての例のガイド スケールは 13 です。
はじめに丨LoRA を探索する
SDXL 1.0 の最も重要なアップデートは、実際には Dreambooth LoRA のサポートです。これにより、安定した拡散モデルをカスタマイズできるようになります。
Dreambooth は、非常に少数のソース画像セットとトリガー キーワードに基づいて安定拡散を微調整する技術で、これらの画像内の「コンセプト」をキーワードが与えられた他のコンテキストで使用できるようにします。
LoRA の利点: ドメイン固有の「小規模モデル」
Stable Diffusion 自体をトレーニングする場合、たとえ小規模なモデルであっても、多くの高価な GPU で何時間もトレーニングする必要があります。
ここで LoRA が役に立ちます。ビジョン モデルの小さなサブセットをトレーニングするため、結果を出力するのに安価な GPU のみが必要となり、最終モデル + LoRA の品質は完全に微調整されたモデルに匹敵します。 (一般的に、安定拡散の微調整について言及するとき、多くの場合、LoRA の作成を指します)。
トレーニングされた LoRA は、他のユーザーと簡単に共有したり、Civitai などのリポジトリにアップロードしたりできる、小型の自己完結型バイナリです。
LoRA の小さな欠点は、一度にアクティブにできるのは 1 つだけであることです。複数の LoRA を組み合わせてそれぞれの利点を組み合わせることができますが、実際にはそれほど単純ではありません。
テキスト反転 実際の戦闘: テキスト反転
Stable Diffusion LoRA が広く普及する前は、テキスト エンコーダが概念を学習できるようにするテキスト反転と呼ばれる手法がありましたが、トレーニングに何時間もかかり、結果も醜いものになる可能性がありました。
以前のブログ投稿「Ugly Sonic (Sonic)」でテキスト反転をトレーニングしましたが、安定拡散のソース データセットに含まれていなかったため、結果は独特なものになりました。生成された結果は次のとおりですが、さまざまな結果が含まれます。
今回は、LoRA のトレーニングにアグリー ソニックを使用することが、SDXL の可能性をテストする良い例になると思います。
たまたま、Hugging Face は、SDXL 基本モデルを使用して LoRA をトレーニングできる train_dreambooth_lora_sdxl.py スクリプトを提供しています。このスクリプトはまだ箱から出していない状態ですが、パラメータを少し調整しました。
さまざまなプロンプトの言葉の下で訓練された LoRA によって生成されたアグリー ソニック画像は、見栄えが良く、より整理されていると言っても過言ではありません。
高度な丨詳細なテキスト反転
この実験が成功した後、私はテキスト反転を使って以前に行った別の実験をやり直すことにしました。つまり、より良い画像を生成するために間違ったキューワードを追加するというものでした。
今回の方法は、ひどく歪んだ低品質の画像を使用して LoRA をトレーニングするもので、与えられたプロンプトの単語が間違っているため、LoRA が間違っていることを「否定的なプロンプト」として扱い、この状況を回避して歪みの少ない画像を生成できることを願っています。
私は Jupyter Notebook を作成し、SDXL を使用して多くの「間違った」合成画像を自分で作成しました。今回はまた、さまざまなヒントの重みを使用して、ぼやけた (ぼやけた) 手や悪い手 (間違った描画) の手など、失敗した画像のより明白なインスタンスを生成しました。 。
皮肉なことに、高解像度の失敗した画像を生成するには SDXL を使用する必要があります。
上記は合成された間違った画像の例です
2000年代のパンクロックのアルバムジャケットの要素を意図せず組み込んでいる
この LoRA をトレーニングして Stable Diffusion XL ベース モデルにロードし (モデルの微調整に LoRA は必要ありません)、Jupyter Notebook を作成して、指定されたプロンプト ワードに対する次の出力を比較しました。
LoRA なしのベース モデル + パイプライン。 (基本)
LoRA パイプラインがありません。ネガティブ ヒントとして間違ったものを使用します (ネガティブ ヒントを追加)
LoRA のパイプラインを使用し、間違っていることをネガティブなヒントとして使用する (理想的な目標)
生成された各結果のシードは同じであるため、3 つの出力写真の構成は類似しているはずです。また、間違ったネガティブ ヒントと LoRA の効果、および基本モデル パイプラインの違いは非常に明らかであるはずです。
SDXL 0.9 テスト ケース
SDXL 0.9 を使用して、テストを開始するための簡単なプロンプトを示してみましょう。
「ヨセミテ国立公園のオオカミ、極寒の自然ドキュメンタリー映画撮影」
上の写真を注意深く見ると、ベース モデルの間違ったヒントによって背景の森に葉と奥行きが追加されていることがわかりますが、LoRA ではさらに多くのものが追加されています。より強力な照明と影、より詳細な葉、および変更が加えられています。オオカミの見た目、カメラアングルがより面白く見えます。
次に、プロンプトワードに「エクストリームクローズアップ(非常にクローズアップ)」を追加し、以前のシードを再利用した後、同様の写真構成でオオカミの異なる視点のクローズアップを取得しました。
現時点では、LoRA の質感と鮮明度は他のモデルよりもはるかに優れており、画像はより鮮明です。ただし、間違った手がかり単語を 1 つ追加すると、見方が変わってしまうことに注意してください。
もう 1 つの良いテスト ケースは食べ物の写真で、DALL-E 2 で作成した奇妙な食べ物のショットは特に優れています。 SDXL + 間違った LoRA は、何らかのヒントの重み付けを使用して、奇妙に見える非ユークリッド バーガーを生成できますか?
「おいしいビッグバーガー(5Dエイリアンジオメトリ)++++、プロの料理写真」
答えは、プロンプトの単語を何度調整しても、それはできないということです。それでも、出力は興味深いものです。ベースの SDXL は、プロンプトの「エイリアン」の部分を私が思っていたよりも文字通りに解釈しているようです (そして、それにかわいい山高帽を与えました!)。しかし、LoRA の方がうまく機能します。彼はヒントの意味を明確に理解していました。人間が食べるのが難しい「エイリアン」バーガーを作り、イメージスタイルがより輝いています。
絵師はどうなるのでしょうか?間違った LoRA は、人工知能が手を描画しないという悪名高い問題を解決できるでしょうか?そして、LoRA のトレーニング データにもそのような例が多数含まれています。テイラー・スウィフト大統領を描画するために初めて Stable Diffusion 2.0 を試したときに使用したプロンプトを変更してみましょう。
「テイラー・スウィフト米国大統領(署名文書)++++、写真提供:AP」
Taylor の右腕を見てください。デフォルトの SDXL モデルはおかしな結果を出力し、間違っていると実際にはさらに悪くなるのですが、LoRA ではそれが修正されています。 LoRA の色の重ね合わせははるかに優れており、彼女のジャケットは黄色と白ではなく白がより目立つようになりました。しかし、彼女の手はまだ注意深く見ることができません。SDXL 1.0 でキャラクターを描くのは依然として面倒で信頼性がありません。
結論は明らかです。それぞれのケースで間違った + LoRA の出力は、単純に間違ったネガティブ キューを追加した場合の出力よりも興味深いため、以下では基本的な出力と LoRA の出力のみを比較します。以下は、間違った LoRA と比較した基本モデルの例です。
(ハート型のペパロニピザ、超リアルな受賞歴のあるプロの料理写真) - より詳細なペパロニ、熱い泡、ピザの端の余分なペパロニが減り、生地がより硬く見えます
間違った LoRA はここで入手できますが、ディフューザー以外のインターフェイスでのパフォーマンスは保証できません。
これらのイメージの生成に使用されるすべてのノートブックは、この GitHub リポジトリにあります。これには、標準の SDXL 1.0 + 微調整モデル + LoRA Colab ノートブックも含まれます。このノートブックは無料の T4 GPU で実行できます。この記事で使用されている生成された画像の高解像度バージョンを確認したい場合は、記事のソース コードにアクセスしてください。
違います いったい何が起こっているのでしょうか?
LoRA の誤り このトリックは、生成される画像の品質と鮮明さを向上させるだけですが、LoRA は SDXL の動作をよりスマートにし、プロンプトの言葉の精神をより反映させるようです。
技術レベルでは、この否定的な手がかりは、拡散によって画像が生成される潜在空間の領域を設定します。この領域は、間違った基本モデルと LoRA の両方で同じです。
私の直感では、LoRA は巨大な高次元潜在空間内のこの望ましくない領域を開始領域により似るように再形成するため、正常な生成結果がこの領域にヒットする確率が小さくなり、品質が低下することが改善されています。 (上記エイリアンバーガーの変更手順を参照)
SDXL を低品質の画像でトレーニングして改善することは、技術的にはヒューマン フィードバックによる強化学習 (RLHF) の一種です。このアプローチは ChatGPT の成功への道でもあります。 OpenAI がモデルを改善するために使用する強化学習プロセスは、ポジティブなユーザー インタラクションからネガティブな行動を暗黙的に減らすことですが、ここではネガティブなユーザー インタラクション (つまり、意図的に低品質の画像を選択する) を使用してポジティブな行動を暗黙的に増加させています。
ただし、Dreambooth LoRA を使用すると、基本的に、大規模な言語モデルをトレーニングするほど多くの入力データを準備する必要はありません。
「ネガティブ LoRA」の可能性は依然として大きく、合成データセット生成パラメーターには改善の余地が多く、LoRA は長期間トレーニングすることもできます。しかし、これまでの結果には非常に満足しており、他の LoRA とマージして後者を強化できるかどうかを確認するなど、ネガティブな LoRA でさらにテストを行っていきたいと考えています (特に間違った LoRA + アグリー ソニック LoRA!)。
添付: ディフューザーでの SDXL デモ
輸入トーチ
ディフューザーからインポート DiffusionPipeline、AutoencoderKL
ロードベース SDXL とリファイナー
vae = AutoencoderKL.from_pretrained("madebyollin/sdxl-vae-fp16-fix",
トーチ_dtype=torch.float16)
Base = DiffusionPipeline.from_pretrained(
"stabilityai/stable-diffusion-xl-base-1.0",
フィート = フィート、
トーチ_dtype=torch.float16、
iant="fp16",
use_safetensors=True、
)
_ =base.to("cuda")
リファイナー = DiffusionPipeline.from_pretrained(
"stabilityai/stable-diffusion-xl-refiner-1.0",
text_encoder_2=base.text_encoder_2,
脚=ベース.脚、
トーチ_dtype=torch.float16、
iant="fp16",
use_safetensors=True、
)
_ = Refiner.to("cuda")
両方のモデルを使用した生成 (専門家の混合)
高_ノイズ_frac = 0.8
=「馬に乗った宇宙飛行士」
ネガティブ_ = 「ぼやけていて、悪い手」
画像 = ベース(
=、
ネガティブ_=ネガティブ_、
ノイズ除去_end=high_noise_frac、
出力_type="潜在",
).画像
画像 = リファイナー(
=、
ネガティブ_=ネガティブ_、
ノイズ除去_start=high_noise_frac、
画像=画像、
).画像 [0]