Stable Diffusionで生成される画像にはランダム性があります。
そのため、同じ顔の人物を生成することができず、困ることがあると思います。
この記事では、
- 「Stable Diffusionを使って同じ顔の人物を生成したい!」
- 「Stable Diffusionで人物を生成したけど、どうやったら同じ顔のままポーズを変更できるのかわからない!」
- 「Stable Diffusionで同じ顔の人物に違うポーズをとらせたい!」
そんな方向けに、Stable Diffusionで同じ顔の人物を生成し、違うポーズをさせる2つの方法について解説していきます。
ぜひ最後までご覧ください!
Stable Diffusionで同じ顔を生成する方法
Stable Diffusionを用いて同じ顔の人物を生成する方法は下記の2つです。
- Seed値を固定し、ポーズに該当するプロンプトを追加する
- reference_onlyという機能を利用する
以下では、それぞれの方法について詳しく解説しておりますので、ぜひご覧ください!
Stable Diffusionで同じ顔を生成する方法①:『Seed(シード)値を固定する』
Seed値とは、Stable Diffusionで画像を生成するたびに設定される固有の番号です。
デフォルトの状態では画像を新しく生成するたびに異なるSeed値が設定されるため、同じプロンプトを用いて画像を生成しても、違う顔の人物が生成されます。
しかし、Seed値を固定することによって次に生成する画像のランダム性が制御されるので、AIに同じ顔を学習させることができ、同じ顔のまま違うポーズをとらせることができるようになります。
Seed値は、実際に生成した画像の下部にあるパラメーターの情報に記載されています。
※『Seed値』については、以下の記事で詳しく解説しています!
また、過去に生成した画像のSeed値については、「PNG info」を用いることで確認することができます。
まずは、Stable Diffusionの画面上部に表示されている「PNG info」をクリックし、画面を切り替えます。
そして次に過去に生成した画像をアップロードします。
そうすることで、過去に生成した画像のパラメーター情報が確認できるようになります。
他にも、「PNG info」画面ではパラメーター情報の下部にある「Send to txt2img」をクリックすることで、プロンプトやネガティブプロンプト、Seed値といった情報が自動的にコピー&ペーストされるので活用してみてください。
『Seed(シード)値を固定』して同じ顔を生成する方法
それでは、Seed値を固定して同じ顔を生成する方法について具体的に解説していきたいと思います。
まずは、プロンプトとネガティブプロンプトを設定して人物の画像を生成します。
今回は上記のような人物を生成しました。
ちなみに、上記の人物画像を生成するために使用したプロンプトとネガティブプロンプトは以下になります。
プロンプト
8k, best quality,1 beautiful woman, longhair,25 years old, oval face, sweat, ,full body, Large eyes and a cute smile,
Clear complexion and healthy skin tone,
Well-balanced small face,
black hair color and style,
ネガティブプロンプト
sketches, (worst quality:2), (low quality:2), (normal quality:2), normal quality, ((monochrome)), ((grayscale)), bad hands, text, error, extra digit, fewer digits, cropped, watermark, username, bad body, poorly eyes, too many fingers, short neck, cross-eyed, mutated hands, skinny,
次に、生成した画像のSeed値を固定していきます。
Seed値は、パラメーター情報が記載されている部分からSeed値をSeedと記載された枠内にコピー&ペーストすることで固定することができます。
また、Seedと記載された枠の右側にあるリサイクルアイコンをクリックすると、Seed値が自動的にコピー&ペーストされ、Seed値の固定が完了します。
Seed値の固定が完了したら、次は元の画像のプロンプトにポーズに該当するプロンプトを追加していきます。
また、元の画像のプロンプトの中にポーズに該当するプロンプトがすでに組み込まれている場合は、そのプロンプトを別のポーズに該当するプロンプトに変えることによって同じ顔で違うポーズをとらせることができるようになります。
今回は先程のプロンプトに「arm up」(腕を上げる)というプロンプトを追加しました。
すると、同じ顔のまま以下のような腕を挙げたポーズをした画像が生成されます。
- Stable Diffusionのプロンプトの見本が知りたい
- 画像生成が思ったようにできない
- 色々なプロンプトを探したい
Stable Diffusionで同じ顔を生成する方法②:『reference-only』
『reference-only』とは、『ControlNet』をインストールすることで使うことができるようになるプリプロセッサ(preprocessor)です。
『reference-only』を使うことで、元として生成した画像の画風やスタイルが再現された画像を作ることができます。
『reference-only』の設定方法
『reference-only』を設定するには、『ControlNet』のインストールが必須になります。
『ControlNet』とは、Stable Diffusionで生成した元の画像から形状に関するイメージを抽出して新たに画像を生成できるようにする拡張機能の1つです。
例えば、
- ポーズの指定
- 形の指定
- 深度の指定
などを行うことで、どのような画像を生成してほしいかStable Diffusionに伝えることができます。
『ControlNet』の詳しいインストール方法や使い方については、以下の記事で詳しく解説されていますので、ぜひこちらも合わせてご覧ください!
『reference-only』の使い方
それでは、『reference-only』を用いて元の画像の人物と同じ顔を出すための具体的な手順を紹介していきたいと思います。
まず最初に、『reference-only』をStable Diffusionに導入する必要があります。
Stable Diffusionを起動したら『ControlNet』タブの右側にある「◀️」をクリックしてください。
『ControlNet』の詳細が表示されます。
そして次に、『Enable』という項目をクリックし、チェックを入れてください。
そうしましたら、『Preprocessor』と表示された枠の右側にある「▼」をクリックしてください。
『Preprocessor』を下へスクロールしていくと『reference_only』という表示が見つかるので、そちらを選択します。
これで『reference-only』の導入は完了です。
『reference-only』の使用準備が整ったら、次は元となる画像を『ControlNet』にアップロードしていきます。
今回は、『Seed値を固定する』方法でも使用した画像と同様のものを元の画像としてアップロードします。
元となる画像がControlNetにアップロードされた状態で、先ほどと同様、ポーズに該当するプロンプトを追加すると、同じ顔で違うポーズをとった人物の画像が生成されます。
今回も「arm up」を追加していきます。
プロンプト
8k, best quality,1 beautiful woman, arm up, longhair,25 years old, oval face, sweat, ,full body, Large eyes and a cute smile,
Clear complexion and healthy skin tone,
Well-balanced small face,
black hair color and style,
ネガティブプロンプト
sketches, (worst quality:2), (low quality:2), (normal quality:2), normal quality, ((monochrome)), ((grayscale)), bad hands, text, error, extra digit, fewer digits, cropped, watermark, username, bad body, poorly eyes, too many fingers, short neck, cross-eyed, mutated hands, skinny,
すると、以下の画像が生成されました。
このように、『reference-only』を使う方法でも、元となる画像を参照することで同一人物に異なるポーズをさせることができます。
※『reference_only』については、以下の記事でも詳しく解説しています!
まとめ
この記事では、Stable Diffusionを使って同じ顔の人物を生成し、異なったポーズをさせる方法を解説しました。
要点をまとめると、
- 同じ顔の人物に異なったポーズをさせる方法には、『Seed値を固定する』方法と『reference-only』を使う方法の2種類がある。
- Seed値を使う方法では、「Seed値をコピペで固定→ポーズのプロンプトを変える」という手順を踏む必要がある。
- 『reference-only』を使う方法では、「『ControlNet』のインストール→『reference-only』の導入→ポーズのプロンプトを変える」という手順を踏む必要がある。
になります。
この2つの方法を用いることで、同じ顔の人物に多様性を持たせることができます。
ぜひ活用してみてください!
- Stable Diffusionのプロンプトの見本が知りたい
- 画像生成が思ったようにできない
- 色々なプロンプトを探したい