Stable Diffusionで顔が崩れる?原因別の対策はこれだ!

Stable Diffusionで画像を生成する際、特に人物の顔部分が不自然になったり、ディテールが崩れたりする現象に遭遇することがあります。これは、主に画像サイズ・解像度の不足プロンプトの情報の曖昧さに起因します。

この記事では、対応するネットから得た顔崩れの主な原因と、具体的な対策、有効な補助機能や拡張機能を実際に試した結果も踏まえて詳しく解説します。

スポンサーリンク

はじめに

  • 以下の画像を各対策で実施する
  • サイズは500×500
  • Seed値は固定する
対象の画像

原因1:画像サイズ・解像度の不足

画像サイズが小さかったり、全身や引きの構図で顔の占める面積が非常に小さい場合、AIが顔のディテールを十分に描き込めず、結果として顔が崩れてしまうことがあります。

📌 対策1: Hires.fix(高解像度補助)の利用

生成する画像サイズが小さくても、生成後にHires.fix(高解像度補助機能)を使用してアップスケールとディテール描写を行うことで、顔の崩れを効果的に防げます。

  • 設定のポイント:
    • Upscalerの種類を変更し、顔のディテールが際立つものを選びましょう。
    • Denoising strength(ノイズ除去強度)の値を調整することで、アップスケール後の画像の質感やディテールの変化を制御できます。顔を大きく変えずに修正したい場合は値を低めに、大きく描き直したい場合は高めに設定します。

アップスケール時のサイズを大きくしすぎると、画像全体が崩れてしまうリスクがあるため、バランスを見ながら調整することが重要です。

設定箇所
結果
Hires.fix無効
Hires.fix/Upscaler=Latent/Dienoising strength=0.7
Hires.fix/Upscaler=Latent/Dienoising strength=1

顔は奇麗に出ましたがプロンプトで細かく髪の色など指定していない為、生成結果が安定しませんでした。

📌 対策2: Sampling Step数の調整

Sampling Step(サンプリングステップ)の値を増やすことで、AIがより時間をかけて詳細な部分まで計算し、描き込むことが可能になります。これにより、顔のディテールが書き込まれやすくなり、崩れを防ぐ助けになります。

設定箇所
結果
Sampling step=50

ほとんど効果なし

📌 対策3: 「Restore faces」オプションを試す

簡易的な修正方法として、「Restore faces」オプションを試してみるのも良いでしょう。この機能は、場合によっては手軽に顔の崩れを直してくれることがあります。しかし、効果がない場合は、上記のようにHires.fixや拡張機能を用いた本格的な対策を試してください。

設定箇所
事前設定

Stable Diffusion→Settingsタブ→Fase Resulusion→Restore facesにチェック→Apply Settingボタンを押す→Stable Diffusionを再起動

結果
Refiner/Swtich at=0.8

ほとんど効果なし

原因2:プロンプト(呪文)の情報の曖昧さ

プロンプトが抽象的で顔に関する具体的な情報が指定されていないと、AIがディテールを描ききれず、ぼやけた顔や不自然な顔になることがあります。

📌 対策: プロンプトの工夫と品質向上語句の追加

顔の特徴や画像の品質を具体的かつ明確にプロンプトで指示しましょう。

  • 具体的な顔の特徴の明記:
    • 例:「detailed face(詳細な顔)」「beautiful eyes(美しい瞳)」
    • 描きたい顔のパーツや表情を具体的に指定することで、AIがディテールを正確に描き出す手助けになります。
  • 画像品質を高める語句の追加:
    • 例:「masterpiece(傑作)」「high resolution(高解像度)」
    • これらの語句を加えることで、AIが生成する画像の品質そのものを向上させ、結果的に顔のディテールも改善される効果が期待できます
設定箇所

なし、プロンプトに追加するだけ

結果
プロンプトに品質向上語句を追加

ほとんど効果ない上に、生成結果が変わってしまう

3:【最も有効な対策】拡張機能の導入

上記の対策に加えて、特定の拡張機能を導入することで、顔崩れや違和感を大幅に自動で改善することが可能です。

📌 対策: ADetailerなどの拡張機能を導入

ADetailer(Automatic Detailer)は、生成された画像内の(さらには手や指などの崩れやすいパーツも)を自動で判別し、後から高品質なディテールを加えて修正する機能です。この機能を利用することで、手軽かつ大幅に顔の崩れを改善することができます。

設定箇所
事前準備

Stable Diffusion→Externtionsタブ→Install from URLタブ→下記のURL入力→Installを押す→Stable Diffusionを再起動

GitHub - Bing-su/adetailer: Auto detecting, masking and inpainting with detection model.
Auto detecting, masking and inpainting with detection model. - Bing-su/adetailer
結果
ADetailer

効果ありと思っていたが、イマイチだった。

💡 まとめ:効果的な顔崩れ対策の進め方

元々のサイズ512×512が小さすぎたせいで、ADdetailerを使っても求めるような出力結果にはならなかった。ある程度のサイズは必要だということになる。

以下のようにサイズを少し大きくしてADetailerを有効にすると結果は改善した。顔のみ改善したい場合は、ある程度サイズを大きくする+ADetailerが有効だと思う。

サイズ=512×800/ADetailer無効
サイズ=512×800/ADetailer有効

コメント

タイトルとURLをコピーしました