Stable Diffusion

Stable Diffusionで顔が崩れる場合の簡単な解決方法

2023年11月4日

はじめに

Stable Diffusionは、テキストや画像の説明から、リアルで美しい画像を生成することができるディープラーニングモデルです。しかし、Stable Diffusionで画像生成を行うと、顔が崩れる場合があるようです。顔の輪郭が歪んだり、目や鼻が欠けたり、不自然な表情になったりすることがあります。

本記事では、Stable Diffusionで顔が崩れる場合の解決方法の1つである、画像のサイズを大きくする方法をご紹介します。

顔が崩れる原因

顔が崩れる場合は、プロンプトに「full body」のように全身の描写を指示する場合によく起こります。これは、顔の細かい部分を表現するよりも、全身のバランスを優先するためと考えられます。また、相対的に全体に占める顔の面積が小さくなるために描写が疎かになるためとも考えられます。

具体例

プロンプトに「full body」を入れて画像生成したものが次の写真になります。

顔だけが崩れているのが分かります。写真は載せていませんが、プロンプトから「full body」を除くと問題なく高品質な写真が生成されることは確認しています。顔を拡大した写真は次のとおりです。

顔を拡大するとすごく崩れているのがお分かりいただけると思います。

解決策:Hires.fixで解像度を上げる

顔の崩れはHires.fixで画像の解像度を上げるのが最も簡単な解決策です。
まず、「Hires fix」にチェックを入れます。
「Upscale by」の数値を上げます。1だと何もしないことになりますので、1以上にする必要があります。
「Hires steps」を増やしてください。この値が小さいと、ガビガビの絵になります。

設定が住んだら「Generate」を押します。

これで生成される画像は次のようになりました。

引きの絵だと分かりづらいので顔を拡大した写真が次のとおりです。顔の崩れはほとんど無くなっています。

実はプロンプトにLoRaを入れてあるので、LoRaの学習データをよく反映した画像になっています。

注意点

Hires.fixを用いると、計算時間が長くなります。また、メモリ容量も大きく必要になります。

まとめ

Stable Diffusionで顔が崩れる場合は、Hires.fixを使って画像のサイズを大きくすることで、簡単に改善することができます。

-Stable Diffusion