Stable Diffusion で人物を描くと顔が崩れがちです。

以前、この問題をどうにかするカスタムスクリプト Face Editorこちらの記事で紹介しました。 最近このスクリプトに対して、突然たくさんのIssueが届くようになりました。それに対応しているうちに機能的にかなり便利になり、カスタムスクリプトがエクステンションになったりもして、前回の記事の内容が古くなってしまったので、改めて紹介記事を書こうと思います。

Face Editor使用例

利用の前提

  • AUTOMATIC1111 版 Web UI 専用のカスタムスクリプトです。
  • アニメ的にデフォルメされた顔の補正には不向きです。

前回の紹介記事からのアップデート内容

ざっくりいうと、以下の2点が大きな改善点になります:

  • パラメタ設定がデフォルトのままでも顔改善の安定度が増した
  • 安定度が増したことに加えて txt2img やバッチ対応したことにより、大量の画像生成に対応できるようになった

もう少し具体的に言うと以下の内容になります:

  • パラメタ調整をがんばらなくても顔の周りに四角い枠が残らないようになった
  • 顔以外の部分を極力変更しないようなパラメタ設定がデフォルトになった
  • img2img だけでなく txt2img でも利用可能になった (txt2imgで画像を生成するタイミングで顔の修正をかけることができる)
  • txt2img や img2img のバッチ実行に対応した
  • エクステンションとして利用可能になったため、他のスクリプトとの組み合わせが利用可能になった

また、ControlNet との組み合わせにも対応しています。

セットアップ

以前の記事で紹介したセットアップ方法も利用可能ですが、以下の方法でセットアップするとエクステンションとして利用することができます。

  1. “Extensions” タブを開いて “Install from URL” をクリックします。
  2. “URL of the extension’s git repository” のところに https://github.com/ototadana/sd-face-editor.git と入力してください。
  3. “Install” ボタンをクリックして、“Installed into /home/ototadana/stable-diffusion-webui/extensions/sd-face-editor. Use Installed tab to restart.” という表示が現れるまで数秒待ってください。
  4. “Installed” タブに移動して、“Apply and restart UI” をクリックして Web UI を再起動します。

使い方

txt2img に対応したため、以下のようにかなりシンプルなオペレーションで対応できます。

  1. txt2img で “Face Editor” を開いて、“Enabled” にチェックを入れる。 Check Enabled
  2. あとは通常通りプロンプトの入力やバッチ数の設定などを行って、 “Generate” ボタンをクリックしてください。
  3. 顔画像の修正結果がイマイチだと思った場合は、パラメタを調整してください。

パラメタ調整のコツ

(1) おすすめの設定

まずは以下のデフォルト設定で試してみてください:

  • “Mask size” は 0
  • “Apply inside mask only” にチェックを入れる
  • “Denoising strength for the entire image” は 0

おすすめの設定

(2) 輪郭の違和感を修正する

上記の設定で生成したとき、顔の輪郭に違和感を覚えた場合には、“Mask size” の値を大きくすることで改善できます。 ちなみに、このような違和感は「顔が正面を向いていない場合」や「前髪が顔にかかっている場合」によく発生します。

Mask size

(3) 顔の表情を変えたい

“Prompt for face” を使うと顔の表情を変えることができます。 例えば “smile” を指定すると表情は以下のように変化します。

Prompt for face

(4) 顔を修正したい画像がすでに存在する場合

従来通り img2img でカスタムスクリプトとして利用するのがおすすめです。

こちらの手順については以前の記事をご参照ください。

(5) ControlNet で顔をコントロールする

img2img を使用して、“Apply scripts to faces” をチェックすると ControlNet で顔の表情を制御できます。

なお、このチェックをした場合は、ControlNetの入力画像はimg2imgにのみ指定し、ControlNetパネルには何も指定しないようにしてください。 ControlNetパネルで指定すると、画像が完全に崩れてしまいます。

まとめ

以上、Stable Diffusionで人物を描く際に顔が崩れがちな問題を解決するためのカスタムスクリプト “Face Editor” の紹介でした。 皆様からのフィードバックのおかげで、新たにバッチ処理対応やtxt2img対応が追加され、更に楽に安定した顔の描画が可能となりました。 また、エクステンションとしての利用も可能となり、他のスクリプトとの組み合わせが可能となりました。

皆様からの反応がある限り、今後もこのツールのアップデートは続けていきますので、GitHub での Issue報告をお待ちしております。

かわかみしんいち。島根県津和野町在住のフリーランスエンジニア。複合現実(Mixed Reality)と3DUXでおもちゃを作るのが趣味。 https://github.com/ototadana