あなたはStable diffusion 3 の真の性能を発揮できていない


Stable Diffusion開発元の、Stability AI Japan - External AdvocateのD̷ELLと申します。
ぜひご一読頂きたい記事のため、挑戦的なタイトルを付けたことをお詫び申し上げます。

先日、[Stable diffusion 3 Mediumのモデルが公開](https://ja.stability.ai/blog/stable-diffusion-3-medium)され、[Stable Image APIでもLargeモデルが利用可能](https://platform.stability.ai/)となりました。

Stable Diffusion 3の**真の性能を発揮する**には、既存のStable Diffusionとは違うテクニックが必要なことをご存知でしょうか？今回は、**Stable Diffusion 3の性能を最大限に引き出す方法** をご紹介したいと思います。
※ 本記事の内容は、[Replicate, Inc.](https://replicate.com/)の[fofr氏](https://replicate.com/fofr)によって執筆された記事を和訳したものです。

# TL; DR
抑えておくべき重要なポイントは以下の３点です。
- **長いプロンプトに対応**し、テキストエンコーダーにより**異なる品質の画像**を生成できる
- プロンプトは詳細かつ具体的に記述し、 **ネガティブプロンプトは使用しないこと**
- 推奨設定は **28ステップ、3.5～4.5のCFG、dpmpp_2m sgm_uniformスケジューラー付きサンプラー、3.0シフト**

どういうことなのか、ぜひ記事本文をご覧ください。

# 【和訳】Stable Diffusion 3 で最高の結果を得る方法
**How to get the best results from Stable Diffusion 3**
**Posted June 18, 2024 by @fofr**
**https://replicate.com/blog/get-the-best-from-stable-diffusion-3**

Stability AI は最近、2億パラメータのテキストから画像へのモデルである Stable Diffusion 3 Medium の重みをリリースしました。このモデルは、フォトリアリズム、タイポグラフィ、およびプロンプトの追従に優れています。

[公式の Stable Diffusion 3 モデルを Replicate で実行できます](https://replicate.com/stability-ai/stable-diffusion-3)し、商用利用も可能です。また、私たちは [Diffusers](https://github.com/replicate/cog-stable-diffusion-3) と [ComfyUI](https://github.com/fofr/cog-comfyui-sd3) の実装をオープンソース化しました（[ComfyUI ガイドを読む](https://replicate.com/guides/comfyui)）。

このブログ投稿では、Stable Diffusion 3 (SD3) を使用して最高の画像を得る方法、特に以前の Stable Diffusion モデルとは少し異なるプロンプトの方法について説明します。

実験を助けるために、ここで議論したすべての設定を公開している [SD3 エクスプローラーモデル](https://replicate.com/fofr/sd3-explorer) を作成しました。

## SD3 のバージョンの選び方

Stability AI は、できるだけ多くのデバイスで実行できるように、SD3 Medium をさまざまな方法でパッケージ化しました。

SD3 は3つの異なるテキストエンコーダーを使用します。（テキストエンコーダーは、プロンプトを受け取り、モデルが理解できる形式に変換する部分です）。これらの新しいテキストエンコーダーの1つは非常に大きく、多くのメモリを使用します。 [SD3 Hugging Face Weight](https://huggingface.co/stabilityai/stable-diffusion-3-medium) を見ると、異なるテキストエンコーダー構成の4つのオプションが表示されます。利用可能な VRAM に基づいて、どれを使用するかを選択する必要があります。

### **sd3_medium_incl_clips_t5xxlfp8.safetensors**

このエンコーダーには、モデルの重み、2つの CLIP テキストエンコーダー、および圧縮 fp8 フォーマットの大きな T5-XXL モデルが含まれています。シンプルで最高の結果を得るために、これらの重みをお勧めします。

### **sd3_medium_incl_clips_t5xxlfp16.safetensors**

`sd3_medium_incl_clips_t5xxlfp8.safetensors` と同じですが、T5 部分がそれほど圧縮されていません。fp8 の代わりに fp16 を使用することで、画像品質がわずかに向上しますが、メモリ使用量が増加します。

### **sd3_medium_incl_clips.safetensors**

このバージョンでは T5 要素を完全に排除しています。2つの CLIP テキストエンコーダーだけで重みを含みます。VRAM が少ない場合に良いオプションですが、完全版とは大きく異なる結果が得られる可能性があります。このバージョンでは、プロンプトの追従性が低下し、画像内のテキストの品質も低下する可能性があります。

### **sd3_medium.safetensors**

このモデルはテキストエンコーダーなしの基本的な重みだけです。これらの重みを使用する場合は、テキストエンコーダーを別々に読み込むようにしてください。Stability AI はこれに対する [ComfyUI ワークフローの例](https://huggingface.co/stabilityai/stable-diffusion-3-medium/blob/main/comfy_example_workflows/sd3_medium_example_workflow_multi_prompt.json) を提供しています。

## プロンプトの作成

SD3 の使用における大きな変化はプロンプトの作成です。非常に長く詳細なプロンプトを入力しても、プロンプトに非常に忠実な画像を返すことができます。もう CLIP テキストエンコーダーの77トークンの制限を気にする必要はありません。

プロンプトは10,000文字、または1,500語以上にすることができます。実際にはそのような長さは必要ありませんが、プロンプトの長さを心配する必要はありません。

非常に長いプロンプトの場合、現時点では画像にどの部分が反映されるかを予測するのは難しいです。プロンプトのどの部分にモデルが注意を払うかは明確ではありません。しかし、プロンプトが長く複雑になるほど、何かが欠ける可能性が高くなります。

### ネガティブプロンプトを使用しないでください

SD3 はネガティブプロンプトでトレーニングされていません。ネガティブプロンプトは SD3 では期待通りに機能しません。すでに SD3 を試したことがある場合、ネガティブプロンプトを与えると画像が変わることに気付いたかもしれませんが、その変化は意味のあるものではありません。ネガティブプロンプトは不要な要素を除去するのではなく、コンディショニングにノイズを加え、単に出力を変動させるだけです。

### プロンプト技術

長いプロンプトが許可されるようになった今、望む画像を説明するために平易な英語の文章と文法を使用できます。以前のようにカンマで区切られたキーワードを使用することもできますが、具体的なものを目指す場合は、プロンプトを詳細かつ明確にすることが重要です。このレベルのプロンプトは、Midjourney バージョン6や DALL·E 3 のプロンプトの方法に似ています。

画像の要素を説明するときは、その説明が画像の他の部分にも適用されないようにするために、曖昧さのない言葉を使うようにしてください。

以下は、SD3 で良好なプロンプト追従性を示す長く詳細なプロンプトの例です：
> a man and woman are standing together against a backdrop, the backdrop is divided equally in half down the middle, left side is red, right side is gold, the woman is wearing a t-shirt with a yoda motif, she has a long skirt with birds on it, the man is wearing a three piece purple suit, he has spiky blue hair（[例を見る](https://replicate.com/p/z78h5v1dwxrgp0cg5cvrpgs2fc)）

> a man wearing 1980s red and blue paper 3D glasses is sitting on a motorcycle, it is parked in a supermarket parking lot, midday sun, he is wearing a Slipknot t-shirt and has black pants and cowboy boots （[例を見る](https://replicate.com/p/pg4r85kd39rgm0cg5dp9e8q56c)）

> a close-up half-portrait photo of a woman wearing a sleek blue and white summer dress with a monstera plant motif, has square white glasses, green braided hair, she is on a pebble beach in Brighton UK, very early in the morning, twilight sunrise（[例を見る](https://replicate.com/p/nts3c16qhnrgj0cg5dqv31jjm0)）

### 各テキストエンコーダーに異なるプロンプトを使用

3つのテキストエンコーダーを持つようになったため、技術的には各エンコーダーに異なるプロンプトを渡すことができます。例えば、CLIP テキストエンコーダーには画像の一般的なスタイルとテーマを渡し、T5 部分には詳細な主題を渡すことができます。我々の実験では、まだ特別な

技法は見つかっていませんが、引き続き試行しています。

[CLIP と T5 エンコーダーに異なるプロンプトを渡した例はこちら](https://replicate.com/p/vmp5h000c9rgj0cg5d6813mmnr)。

## 設定

SD3 では、画像出力を変更するための多くの新しい設定があります。以下に良いデフォルト設定をいくつか推奨しますが、自分の好みに合わせて実験することをお勧めします。

要約すると、以下の設定から実験を開始することをお勧めします（詳細は後述します）：

- 28ステップ
- 3.5から4.5の CFG
- `dpmpp_2m` `sgm_uniform` スケジューラー付き サンプラーと
- 3.0 のシフト

### 幅と高さ

SDXL と同様に、SD3 は約1メガピクセルで最高の出力を提供します。解像度は64で割り切れる必要があります。以下の一般的なアスペクト比に対して、次の幅と高さを推奨します：

- **1:1** - 1024 x 1024（正方形の画像）
- **16:9** - 1344 x 768（シネマティックおよびワイドスクリーン）
- **21:9** - 1536 x 640（シネマティック）
- **3:2** - 1216 x 832（風景のアスペクト比）
- **2:3** - 832 x 1216（ポートレートのアスペクト比）
- **5:4** - 1088 x 896（風景のアスペクト比）
- **4:5** - 896 x 1088（ポートレートのアスペクト比）
- **9:16** - 768 x 1344（長い縦長の画像）
- **9:21** - 640 x 1536（非常に背の高い画像）

以前に Stable Diffusion 1.5 や SDXL をトレーニングされた解像度よりも大きな解像度で使用したことがある場合、歪んだ画像、複数の頭、繰り返しの要素など、奇妙な出力に馴染みがあるかもしれません。（[以前の SDXL ガイドでいくつかの例を見られます](https://sdxl.replicate.dev/)。）これは SD3 では発生しません。SD3 では、予想される解像度よりも大きくすると、中央に合理的な画像があり、周辺には奇妙な繰り返しのアーティファクトが表示されます（[ここに大きすぎる画像の予測例があります](https://replicate.com/p/4qnntmc8znrgj0cg5dc928wsk0)）。同様に、解像度が小さすぎると、画像が厳しくトリミングされます（[ここに小さすぎる画像の予測例があります](https://replicate.com/p/kbzq9743whrgg0cg5dd8ztxm50)）。

### ステップ数

この設定は、モデルが画像を生成する際のノイズ除去ステップの数です。SDXL では通常この値は20前後であり、Lightning モデルでは4ステップです。ステップ数は画像生成にかかる時間の主要な要因です。ステップが多いほど良い画像、ステップが少ないほど早く画像が生成されます。

SD3 では28ステップを推奨します。この数値は、興味深い前景と背景を持ち、VAE アーティファクト（生成された画像に見られるノイズパターン）が少ないシャープな画像を提供し、それほど時間もかかりません。

### ステップを増やすことの効果

ステップが画像品質に与える影響は、以前の Stable Diffusion モデルとは異なります。従来のモデルでは、ステップが品質を段階的に向上させ、ある点で効果が頭打ちになり、画像がほぼ静的になるのが一般的でした。しかし、SD3 ではステップが増えると異なる現象が見られます。

SD3 は通常、8〜10ステップである程度見栄えのする画像を生成できます（[ここに10ステップの予測例があります](https://replicate.com/p/egdx1h72rsrgm0cg5ddttacxa8)）、ただし VAE ノイズアーティファクトや一部の画像が一貫性を欠く場合があります。これはプロンプトとシードにも依存します。ステップが増えると、より一貫性があり興味深い画像が得られます。最適な範囲は26〜36ステップです。

画像とその主題は、ステップ値によって劇的に変わることもあります。例えば、人の曖昧なプロンプトの場合、ステップが増えるにつれて年齢、性別、民族が変わることがあります。これらの2つの出力を比較してください：[10ステップのもの](https://replicate.com/p/c92xbp36p9rgp0cg5df9py1cm0)と、同じ設定とシードを使用した [32ステップのもの](https://replicate.com/p/vhbjm0qva5rgp0cg5devah6n34)。

### ガイダンススケール

ガイダンススケール（または CFG、classifier-free guidance）は、出力がプロンプトにどれだけ似ているべきかをモデルに指示します。SD3 では、SD 1.5 や SDXL よりも低い値を使用する必要があります。

3.5から4.5の範囲を推奨します。出力が「焼けた」ように見え、コントラストが強すぎる場合は CFG を下げてください（[CFG が高すぎる場合の焼けた画像の例](https://replicate.com/p/s7775f6gbxrgp0cg5dfvzy36jr)）。

また、CFG を低くすると、異なるテキストエンコーダーオプション間で出力の類似性が高まることも指摘しておく価値があります（つまり、T5 テキストエンコーダーを fp8、fp16 で使用するかどうかに関係なく）。非常に低い CFG を使用する場合、大きな T5 エンコーダーを省略しても画像品質にはほとんど影響しません。例えば、同じシードと CFG 1.5 を使用した2つの出力を比較してください：[fp16 を使用した出力](https://replicate.com/p/kb3404y5jnrgg0cg5dhrrwnatc)と、[非常に似ている CLIP のみの出力](https://replicate.com/p/x1j7z7j791rgj0cg5dhrekmh08)。

### サンプラーとスケジューラー

異なるツールではこれらのラベルが異なりますが、基本的にはモデルがノイズを管理するために使用するアルゴリズムです。異なるアルゴリズムは異なる画像を生成します。

SD3 では、ComfyUI で `dpmpp_2m` サンプラーと `sgm_uniform` スケジューラーを使用することを推奨します。Automatic1111 では `dpm++ 2M` を使用します。`Euler` も良い結果をもたらすことがあります。

一部のサンプラーとスケジューラーは SD3 では機能しません。特に `ancestral` と `sde` サンプラー、および人気のある SDXL ノイズスケジューラー `karras` は機能しません。

### シフト

シフトは、SD3 で変更できる新しいパラメーターです。これはタイムステップスケジューリングシフトを表し、シフト値が高いほど高解像度でノイズをうまく管理できます。基本的には、ノイズがよりよく処理され、シフトを使用すると見栄えの良い画像が得られます。タイムステップスケジュールシフトの理論については、[SD3 の研究論文](https://arxiv.org/pdf/2403.03206) を参照できます。

3.0 は人間の好みの評価に基づく推奨デフォルト値ですが、もちろん変更することもできます。ComfyUI では、「ModelSamplingSD3」ノード

でこの値を見つけることができ、Diffusers では `FlowMatchEulerDiscreteScheduler` にシフトパラメーターを渡すことができます。

シフト値 6.0 は人間の評価で高評価を得ており、試す価値があります。2.0 や 1.5 のような低い値を使用すると、より生の「未処理」な見た目の画像が得られ、特定のプロンプトにはうまく機能します。

## 結論

これらのヒントを使用して Stable Diffusion 3 を楽しんで実験してください！SD3 を使用する際の詳細については、最近のブログ投稿をチェックしてください：

- [API を使用して Stable Diffusion 3 を実行する](https://replicate.com/blog/run-stable-diffusion-3-with-an-api)
- [ComfyUI を使用して自分のマシンで Stable Diffusion 3 を実行する](https://replicate.com/blog/run-sd3-on-comfyui)
- [カスタムバージョンの Stable Diffusion 3 をプッシュする](https://replicate.com/blog/push-a-custom-sd3)

# 解説

## プロンプトの作成
Stable Diffusion 3の大きな特徴は、そのプロンプトの柔軟性です。以前のバージョンではプロンプトの長さが制限されていましたが、今回のバージョンでは10,000文字, 1,500語以上まで入力できます。これにより、非常に詳細で複雑な指示が可能になり、具体的なイメージをより正確に生成できるようになりました。

例として、途中でいくつかサンプルが出てきましたね。
> a man and woman are standing together against a backdrop, the backdrop is divided equally in half down the middle, left side is red, right side is gold, the woman is wearing a t-shirt with a yoda motif, she has a long skirt with birds on it, the man is wearing a three piece purple suit, he has spiky blue hair

これを和訳すると、以下のようになります。
> 男性と女性が背景を背にして立っています。背景は中央で左右に均等に分かれており、左側は赤、右側は金色です。女性はヨーダのモチーフが描かれたTシャツを着ており、鳥のデザインが入った長いスカートを履いています。男性は3ピースの紫のスーツを着ており、青いとがった髪をしています。

既存のStable Diffusionのプロンプトに直すと、こんな感じでしょうか。
> 2 characters, man, woman, standing, red background, gold background, split background, Yoda T-shirt, bird design skirt, long skirt, purple suit, 3-piece suit, blue spiky hair

ですが、Stable Diffusion 3では、サンプルのような細かいプロンプトが指定可能となりました。
[前回の記事](https://qiita.com/nqdior/items/ce894b5c5382b2029ced)でご紹介したような、ChatGPTを用いてプロンプトを生成する方法は、意図せず有効打だったことが判明しましたね。

### 参考：ChatGPTを用いたプロンプト生成例
[Stable Diffusion Prompter](https://chatgpt.com/g/g-eJRvH4169-stable-diffusion-prompter)を利用
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/419037/5fd2afe7-54f8-169e-1349-12f9918f5937.png)

## テキストエンコーダー
テキストエンコーダーの構成も重要なポイントです。Stable Diffusion 3は3つの異なるテキストエンコーダーを使用しますが、その中でも特に大きなT5エンコーダーは多くのメモリを必要とします。このエンコーダーを使うと、より高品質な画像が得られます。メモリが限られている場合は、CLIPエンコーダーだけを使うオプションもあります。※ その場合はプロンプトの追従性や画像内のテキストの品質が少し落ちるかもしれません

ご自身の環境に合わせた調整ができることにより、可能性が広がりますね。

## プロンプト技術

プロンプトの作成方法についても注意が必要です。Stable Diffusion 3はネガティブプロンプトには対応していないので、**ネガティブプロンプトを使用しても期待通りの結果は得られません。** 代わりに、プロンプトを詳細かつ具体的に記述することで、より良い結果を得ることができます。
先に記載したように、「赤と青の3Dメガネをかけた男性がバイクに座っている」といった具体的な描写を使うと、モデルがより正確にイメージを生成してくれます。

## 設定

推奨される設定は以下の通りです。

- **ステップ数**：28ステップ。これは画像のノイズ除去ステップの数で、増やすとよりシャープで詳細な画像が得られます。
- **CFG（ガイダンススケール）**：3.5から4.5。この値が高すぎると画像が「焼けた」ように見えることがありますので、注意が必要です。
- **サンプラー**：dpmpp_2m。これはノイズを管理するためのアルゴリズムで、異なるサンプラーを試すことで画像の雰囲気が変わります。
- **スケジューラー**：sgm_uniform。これもノイズ管理に関する設定で、この組み合わせが安定した結果をもたらします。
- **シフト**：3.0。タイムステップスケジューリングシフトの値で、これを調整することで高解像度の画像のノイズ管理が改善されます。

これらの設定を基にして、自分の好みに合わせて実験してみると良いですね。特に、ステップ数やCFGを微調整することで、より自分のイメージに近い結果が得られるはずです。

# まとめ

いかがでしたか？新しい設定や技術を活用することで、これまで以上に素晴らしい画像が生成できると思います。

Stable Diffusion 3 Mediumは、以下のURLからダウンロードが可能です。

https://ja.stability.ai/blog/stable-diffusion-3-medium

Stable Diffusion 3 Large以上のモデルは、以下の記事を参考にAPIをご利用ください。

https://qiita.com/nqdior/items/6e3d873f91f792e5bea3

みなさまがより新しい画像生成体験ができることを祈っております。最後までご覧いただき、ありがとうございました。