Stable Diffusionで複数枚の画像を1度に連続生成する方法

Stable Diffusionでの画像生成は不確定要素が多く、理想の画像を生成する場合何度も同じプロンプトで繰り返し生成する必要があります。今回はStable Diffusionでその繰り返しの作業を1度で済ませることができる連続生成する方法をご紹介します。

画像を連続生成するメリット

画像を連続するとその分生成時間も長くなるのでその間に他の作業をしながら効率的に画像を生成できます。

「あとはたくさん生成して理想の画像が出るまで生成するのみ」「様々なプロンプトを一度に生成したい」という方におすすめです。

同じプロンプトで複数枚生成する方法

Stable Diffusionのデフォルト機能として生成枚数に関係する機能が2つあります。このデフォルトの生成方法ではSeed値が固定できず、1枚目から連番で生成されます。

Batch Count (バッチ回数)

Batch Countは指定枚数分を順番に生成する項目です。Seed値は1枚目のSeed値から1つずつ連番で画像が生成されます。

2215363698にseed値を固定して生成しましたが、2215363698から2215363707まで一枚ずつ生成されました。

Batch Countは100まで設定できるため、Seed値が連番の画像を100枚まで連続生成できます。

Batch Size(バッチサイズ)

Batch Sizeは指定枚数分を同時に生成する方法で、生成枚数が多いほどスペックを必要とします。

数値は1~8まで選択可能で、Batch Countと合わせて使用するとその数を掛けた数の画像が生成されます。

プロンプトの一部に選択肢を設けてランダムで連続生成する方法

「DynamicPrompt」という拡張機能を使用します。DynamicPromptはプロンプト内で{|}を使って1つのプロンプトを数パターンに分け、それぞれ画像生成することができます。

例えば「1 girl, cute, {room|ocean|street} background」というプロンプトで生成すると部屋、海、街が背景の画像がランダムで生成されます。Batch count を3に設定するとそれぞれ一枚ずつ、5に設定するとそれぞれの画像が最低1枚、合計5枚生成されます。

DynamicPromptを導入する方法

DynamicPromptは他の拡張機能同と様にExtensionから簡単に導入できます。「Extension」→「Available」→「Load from:」をクリックし、項目から「Dynamic prompts」を選択します。

かなり数が多いのでページ内検索で探すことをお勧めします。右端の「Install」をクリックします。

「Extension」→「Install」のExtensionの項目に「sd-dynamic-prompts」を確認し、「Apply and restart UI」をクリックし導入完了です。

導入すると画像生成のパラメータの下に新しく「Dynamic Prompts」が追加されます。

Dynamic Promptを使って画像を生成する方法

Dynamic Promptの使用方法は簡単で、Dynamic Promptsの項目の「Dynamic Prompts enabled」にチェックを入れ、生成したい枚数を「Batch count」または「Batch size」で調整します。早速生成してみましょう。

先ほど例にご紹介したプロントを使って、部屋、海、街が背景の画像を生成してみます。

モデル:

ambientmixAnAnime_v10.safetensors [fdffd3c312]

プロンプト:

1 girl, cute, {room|ocean|street} background

ネガティブプロンプト:

lower quality, worst quality

Sampling method:DPM++ 2M Karras
Sampling steps:20
Width:512
Height:512
Batch count:1
Batch size:1
CFG ScaleSeed:13
Seed:200

画像生成:

一度の生成で3パターンの画像を生成することができました。書き出される順番はランダムになっています。

様々なプロンプトを1度に連続生成する方法

複数のプロンプトを生成したい場合、生成が終わるたびにプロンプトを変更してジェネレートするという操作の繰り返しですが、Automatic1111に標準で装備されている機能で、複数のプロンプトを1度に生成する方法があります。

まずパラメータの下部「Script」の項目から「Prompts from file textbox」を選択します。

するとその下に項目が出てきます。「List of prompt inputs」にプロンプトを書き込むと、通常のプロンプトは無視され、こちらのプロンプトで画像が生成されます。また、この項目では改行することで、全く別のプロンプトとして認識され、その行の数だけ画像が生成されます。Batch countを増やすとそれぞれの画像がBatch countの数値の数生成されます。

Seed値の設定は「Iterate seed every line=行ごとにシードを繰り返す」「Use same random seed for all lines=全ての行に同じSeed値を使用」の2つがあります。

どちらも選択しない場合は全てSeed値がランダムで生成され、「Iterate seed every line」では、Batch countのように連番でseed値が決定されます。「Use same random seed for all lines」を選択すると全てのSeed値が固定され、あらかじめSeedを設定していればそのSeedに統一して生成することができます。

4パターンで画像を生成してみます。

プロンプト(使用されない):

1 girl, cute, document background

List of prompt inputs:

girl
boy
dog
cat

ネガティブプロンプト:

lower quality, worst quality

Sampling method:DPM++ 2M Karras
Sampling steps:20
Width:512
Height:512
Batch count:1
Batch size:1
CFG ScaleSeed:13
Seed:50000
Use same random seed for all lines

生成画像:

全く同じSeed値で4つの画像を1度に生成することができました。詳細を見るとプロンプトのみ無効となり生成されていることがわかります。

自動で生成が繰り返される生成方法

Stable Diffusionで生成する際に使う「Generate」ボタンを右クリックすると下の画像のように「Generate forever」という項目が出てきます。この項目から生成すると「Cancel generate forever」をクリックするまで永遠に画像生成が自動的に繰り返されます。

この方法では生成を始めるごとにその時のプロンプトを使用するのでSeed値を固定したまま生成することができますが、生成画像が塗り替えられていくのでずっと見張る必要があります。

プロンプトなどを変更した場合は次の生成画像から反映されます。

「Cancel generate forever」をクリックするか、Stable Diffusionを閉じない限り生成が繰り返されるのでお気をつけください。

まとめ

今回はStable Diffusionで様々な画像の連続生成方法をご紹介しました。画像の一部を変更して生成したい場合は「Dynamic Prompt」、様々なプロンプトを一度に連続生成する場合は標準機能の「Prompts from file textbox」、とりあえず同じプロンプトで似た画像を生成したい場合は「Batch Count」で操作するのがお勧めです。

それぞれに特徴があって、時間短縮につながるのでぜひご活用ください。

~Stable Diffusionで素早く画像生成するには~

Stable Diffusionの画像生成スピードや画像サイズは、グラフィックボード(GPU)の性能によって大きく変わります。 このため、より効率的かつ快適な画像生成を望むユーザーにとって、最適なグラフィックボードの選択が重要となります。 推論処理やLoRAなどの追加学習処理といった大量の計算を効率よく行うためには、12GB以上のVRAMを持つグラフィックボードを選ぶことを強くおすすめします。 2GBや4GBのVRAMを持つグラフィックボードでは、学習プロセスや高解像度の画像生成に支障が出る可能性が高いです。 コスパを重視する方は、RTX 3060を選ぶと良いでしょう。 このグラフィックボードを使えば、Stable Diffusionの画像生成機能を最大限に活用することが可能となります。