Stable Diffusionで同じ顔の人物の画像を生成する方法

「Stable Diffusionで思い通りの画像が生成できない…」「どうやって同じ顔の人物の画像を生成するの?」そう思う方もいるのではないでしょうか。

実は、Stable Diffusionの機能を正しく活用することで、簡単に同じ顔の人物を生成することができます。

今回PROMPTYでは、同じ顔の人物の画像を生成する方法を具体例を交えてご紹介します。

方法①:Seed値を固定して同じ顔の人物を生成する

Seed値とは?

画像生成モデルでは、Seed値という制御要素が使用されます。これは乱数を生み出す生成アルゴリズムに入力されます。同じアルゴリズムでも、Seed値の違いにより生成画像は変わります。

Stable Diffusionについても、同じプロンプト(呪文)を入力してもSeed値が違えば生成されるイラストは異なります。しかし、Seed値を手動で固定すれば、同じ絵を生成することも可能です。

このSeed値を固定すると、同じプロンプトで絵の内容が一定になり、それにより調整したプロンプトの影響度を評価することが可能となります。

Stable Diffusion WebUIでは、設定画面から”Seed”の値(赤枠部分)を入力することで、Seed値を指定できます。

デフォルトではSeedは”-1″となっており、ランダムな画像が生成されます。

Seed値を固定して画像を生成する

Stable Diffusionでは、Seed値を同じ値に指定することで同じ顔の人物を生成できます。

今回の記事では、こちらのプロンプトで作成した画像のSeed値を固定して表情を変更します。

プロンプト:

masterpiece,high quality,extremely detailed face,1 girl,blonde hair,smile,black dress,red eyes

ネガティブプロンプト:

flat color, flat shading, nsfw,(worst quality, low quality:1.4), interlocked fingers, (zombie, sketch, comic)

モデル:Anythingv5

Seed:3456752755

Sampling method:DPM++SDE Karras
Sampling steps:20
Width:512
Height:512
Batch count:1
Batch size:1
CFG Scale:7
Script:None

生成された画像:

プロンプトの”smile”の部分を別の表情を表す単語に変更して画像を生成します。

Seed値は元の画像の”3456752755″を入力しています。

生成した画像:

構図や服装は変わってしまいましたが、同じ人物のまま、表情を変えた画像を生成することができました。

Seed値についてさらに詳しく知りたい方は、こちらの記事をご覧ください。

関連記事

Stable Diffusionで画像生成を行う際に、特定のキャラクターを何度でも再現したいと考えたことはありませんか? Stable Diffusionで思い通りの画像を生成するためには、Seed(シード)値の理解と活用が求められ[…]

方法②:ControlNetのreference-onlyを使う

“reference-only”はControlNetで使用可能なPreprocessorの一部で、元の画像を参照して同じスタイルや画風の画像を生成します。

これにより、描くキャラクターの形状が一定程度保たれ、物語のようなイラストを作りやすくなります。キャラクターが同じ顔にならないという悩みを解消することができます。

reference-onlyの導入方法

reference-onlyはControlNet v1.1をインストールすることで、WebUIに導入することができます。ControlNetのインストールはwebUIの「Extensions」メニューから行います。

「Available」タブの「Load From」をクリックします。

“sd-webui-controlnet”と検索して、「Install」をクリックします。

インストール後、Web UIを再起動するとControlNetを使用できます。

WebUIのtxt2imgのタブにControlNetが追加されていれば、正常にインストールできています。

ControlNetについて詳しく知りたい方は、こちらの記事をご覧ください。

reference-onlyの使い方

実際にreference-onlyを使って、同じ顔の人物の画像を生成します。

はじめに、ControlNetタブの”Processor”から”reference-only”を選択します。ControlNetモデルの導入や選択は必要ありません。

今回、その他の項目はデフォルトで使用します。

参照する画像を”ここに画像をドロップまたはクリックしてアップロード”の欄に入れます。

また、”Enable”と”Pixel Perfect”にチェックを入れます。

これでreference-onlyを使う準備は完了です。

reference-onlyを設定すると、元の画像を参照して画像を生成するため、何もプロンプトを入力しない状態でも、元の画像と似たイラストを生成できます。

何も入力せずに”Generate”をクリックした場合:

また、Seed値を固定した方法と同様に、こちらのプロンプトで表情を変更した画像を生成します。

プロンプト:

masterpiece,high quality,extremely detailed face,1 girl,blonde hair,{表情},black dress,red eyes

ネガティブプロンプト:

flat color, flat shading, nsfw,(worst quality, low quality:1.4), interlocked fingers, (zombie, sketch, comic)

モデル:Anythingv5

Sampling method:DPM++SDE Karras
Sampling steps:20
Width:512
Height:512
Batch count:1
Batch size:1
CFG Scale:7
Script:None

生成した画像:

同じ顔の人物で表情を変えた画像を生成することができました。画像自体を参照して生成しているため、Seed値を固定する場合よりも構図や服装の再現度が高くなっています。

まとめ

今回PROMPTYでは、Stable Diffusionで同じ顔の人物の画像を生成する方法を紹介しました。

今回の記事では、「Seed値を固定する方法」と「ControlNetのreference-onlyを活用する方法」について詳しく解説しました。

今回の例を参考に、皆さまもStable Diffusionを活用して、同じ顔の人物の画像を生成する試みをしてみてはいかがでしょうか。

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

~Stable Diffusionで素早く画像生成するには~ Stable Diffusionの画像生成スピードや画像サイズは、グラフィックボード(GPU)の性能によって大きく変わります。

このため、より効率的かつ快適な画像生成を望むユーザーにとって、最適なグラフィックボードの選択が重要となります。推論処理やLoRAなどの追加学習処理といった大量の計算を効率よく行うためには、12GB以上のVRAMを持つグラフィックボードを選ぶことを強くおすすめします。

2GBや4GBのVRAMを持つグラフィックボードでは、学習プロセスや高解像度の画像生成に支障が出る可能性が高いです。 コスパを重視する方は、RTX 3060を選ぶと良いでしょう。

このグラフィックボードを使えば、Stable Diffusionの画像生成機能を最大限に活用することが可能となります。