Stable Diffusionのモデル固定、生成されたシード固定で背景設定を変えたり服設定を変えるなどすると顔が微妙に変わってしまいます。
シード値は完璧なものではなくて、指定してシード値を参照して近いものを生成するらしいです。例えば一度生成された顔を使い固有の人物として着せ替える・ポーズを変える写真集やアパレル商品カタログのようなものを生成するなら、拡張機能で顔固定できる「ControlNet」を使う必要があります。
ControlNetを使って顔固定する
Stable Diffusionの拡張機能のひとつ「ControlNet」を導入して、1枚の生成された画像をもとに顔を固定させます。あとは表情や髪型、服装、背景、ポーズなどはプロンプトで指定すればそれが反映されます。不思議なことにベースの顔は維持されて生成されるんです。
というわけで「ControlNet」をインストールして顔固定するまでを解説します。
「ControlNet」をインストール
- Stable Diffusion Web UIを起動
- 右上にある「拡張機能」タブをクリックする
- 「拡張機能のリポジトリのURL」の入力欄に「https://github.com/Mikubill/sd-webui-controlnet.git」をペースト
- 「インストール」ボタンを押してインストール
- 「設定」タブをクリック
- 右上にある「UIを再読み込み」をクリックしてControlNetを反映し完了
「ControlNet」に元画像を設定して顔固定する方法
「ControlNet」がインストールされるとStable Diffusion Web UIの「txt2img」に「ControlNet」が追加されています。ここを開くと下のような画面になります。
今回ベースとする画像をドラッグ・ドロップし、下にあるプルダウンの「プリプロセッサ」を開き「reference_only」を選択。
あとはプロンプト・ネガティブプロンプトにベース画像のものを入れて、ベースプロンプトから服や髪型、髪色やポーズを指定し生成してください。顔の表情を変えることも可能です。これでベースの顔はキープできるから面白いです。
元画像にどれだけ忠実に生成するか設定もできる
「ControlNet」のデフォルトの設定で基本的には顔を固定して色々な画像を生成できますが、完全固定からずらすことも可能です。
「ControlNet」の「Control Weight」というメーターを調整することでオリジナルに極力近いものにするか、少しずつ変化をつけていくかを調整できます。
デフォルトでは「1」になっているので、これを0に近づけていくとオリジナルから少しずつ別の顔に変化させることができます。この画面では1.3にしてより忠実にして使っています。
何回か「ControlNet」で顔固定して生成してみましたが、髪型などもシンプルなものであればほぼ完璧に固定して生成できます。しかし大量に顔の変わらない画像を見ていると違和感を感じるようになってきました。そのため、服の着せ替え等をした場合も寿司くらいの「ゆらぎ」をもたせたほうがよりナチュラルだと感じてます。
特にイラストではなく実写系のリアルな人物を生成する場合は、どれを見ても顔がほぼ同じというのは逆にリアル感がなくなり、アンドロイド感が強まります。実写系のリアル人物を固定して差分を作りたい場合はある程度の「ゆらぎ」をもたせたほうが自然な写真のように見えます。
Tweet
シェアしていただけると嬉しいです