全身画像を生成したときにこんな感じで顔が不細工になったり、崩れたりすることありませんか?
この問題は、特にfull body
という呪文(プロンプト)を利用して全身画像を生成するときによく発生します。全身画像を生成すると不自然な形状になったり、細部の表現が不足してしまうことがあります。これは多くのユーザーが経験する問題であり、様々な設定を試しても解消しない場合があります。
ここでは、そんな人物画像における大きなハードルをどう乗り越えるか、具体的な解決策を8つ解説します。具体的には次の通りです。画像生成の大きな手助けになれば幸いです。
解決策 | メリット | デメリット | 評価 |
---|---|---|---|
Hires. fixでの調整 | お手軽 | 毎回実行すると時間がかかる | ★★ |
低解像度で生成してから解像度を上げる | 必要な時に実行でき、後から修正可能 | 修正元の画像から変更が大きくなることがある | ★★ |
Inpaintによる補正 | 必要な時に実行できる、後から修正可能、高品質 | 少し手間がかかる | ★ |
After Detailer(adetailer)での補正 | お手軽で高品質 | 毎回実行すると時間がかかる | ★★★ |
顔の崩れを防ぐ呪文(プロンプト) | お手軽 | 構図が顔にフォーカスして全身画像が作りくい | ★ |
ポーズの制御にControlNetの活用 | 構図を指定しやすい、お手軽 | 参照画像が必要。ControlNetを導入する必要がある。 | ★ |
ControlNet Tileによるアップスケール | お手軽、修正元の画像の状態を維持しやすい | ControlNetを導入する必要がある。 | ★★ |
モデル選択 | お手軽 | 限界がある | ★ |
ちなみに手の補正についても解説しているので気になる方は参考にしてみてください。
全身を写すとなぜ顔が崩れるのか?
具体的な解決策の解説の前に納得感を得やすくするために、全身画像はなぜ顔が崩れるのか?について考えてみましょう。AIで全身画像を作成する際に、大きなハードルになっているのが、小さい解像度の中で顔の詳細を表現するのが難しいことです。
例えば、512×512ピクセルの画像で全身キャラクターを描くと、顔部分のピクセル数が少なくなります。その結果、顔の細部の表現が不足してしまいます。この問題は特に、顔が画像全体に対して小さくなる全身描写で顕著になります。
また、解像度の問題は呪文(プロンプト)の重み付けとも関係してきます。AIは呪文(プロンプト)の情報を元にイラストを生成するため、全身描写と顔の細部表現を両立させたい場合、どのキーワードを細部に適用して、どのキーワードを全体に適用するかが曖昧になってしまい、結果として精度が悪化していまいます。
つまり、描きたいものをはっきりと決め、その範囲内で細部まで描き出すことが重要です。この適切なバランスをとることが、AIでの画像生成のカギとなります。
解決策1 : Hires. fixで顔を調整する
Hires.fixという機能を紹介します。この機能はtxt2imgの画面から利用できて、呪文(プロンプト)から画像を生成した後に、高解像度化する処理を行います。
Hires.fixですがStable Diffusion Web UIに最初から搭載されている機能で使い方はとても単純です。
Hires.fixのメニューを開くだけです。Hires.fixメニューの横にある黒三角を押すと開くことができます。※これは新バージョンのUIです。古いバージョンの場合はHires.fixのチェックボックスにクリックを入れましょう。
このようにメニューが開かれた状態で画像を生成することで自動的に高解像度に補正された画像が生成されます。
左がHires.fixを適用せずに生成した画像で、右がHires.fixを適用して生成された画像です。Hires.fixを適用することで顔が補正されることが確認できます。
この方法のデメリットとしては毎回画像が生成されるので非効率な点です。その場合は次に紹介する解決策2をおすすめします。
Hires.fixのパラメータ調整
Hires.fixのパラメータで重要なのはUpscalerとDenoising strengthです。Upscalerは解像度を何倍にしたいかというパラメータです。こちらは顔が崩れるのであれば大きく調整していくのをおすすめします。
Denoising strengthの調整について
Denoising strengthを上げることで画像の細部までより細かく描くことができます。ただし、ノイズが多すぎると画像全体がはっきりしすぎたり、不要なものを描写したりします。一方でDenoising strengthを下げると滑らかになりますが画像がぼやけます。
そのため、大きすぎても小さすぎても駄目なので適度に調整しながら利用することをおすすめします。
先ほどの画像ですが顔がハッキリしすぎて不自然な気がします。そこでDenoising strengthの値を0.2に下げてみます。すると生成された画像は下記の左の画像のように少しぼやけてしましました。このようにDenoising strengthを小さくしすぎるとぼやけた感じになります。
Denoising strengthの値を0.5にしてみます。すると右の画像のようにほどよい感じになりました。このように構図によっても適切な値が変わってくるので、ばやけたら大きくする、ハッキリしすぎてたら小さくするといったように調整するのをおすすめします。
左はDenoising strengthが0.2、右はDenoising strength 0.5の画像です。
解決策2:低解像度で生成してから解像度を上げる
人物画像全体を生成する際に、顔部分がうまく描けないという問題。その根本的な解決策は、解像度をあげることです。顔部分のディテールを高めるためには、全体の画像解像度を高めることが一つの手段です。特に1000px程度の解像度では全身キャラクターの顔部分も適度な質感で描かれることが多いです。
まずはStable Diffusion UIでimg2imgへ画像を送りましょう。txt2imgで画像を生成した後、生成された画像の下にある「🖼️」アイコンを押します。するとimg2imgタブへ画像やプロンプトが送られ画面がimg2imgに切り替わります。(※旧バージョンの場合は”Send to img2img”を押しましょう。)
- img2imgの下部にある解像度の設定をResize byに切り替える。(※こっちの方が楽)
- Scaleを2に設定する
後は”Generate”ボタンをクリックしてimg2imgを実行すると以下のような画像が生成されます。顔の部分が補正されていることが確認できます。
顔画像が綺麗になっていることが確認できると思います。
最初から高い解像度で生成すれば良いのでは?
1回低解像度で生成してからアップスケールするなら最初から高い解像度で画像を生成するのが良いのでは?と疑問に思うかもしれません。ただし、最初から高い解像度で生成するのは次のような問題があります。
- 効率の悪化: 大きな解像度は描画時間やリソースを必要とするので効率が悪化してしまいます。最初は低解像度で作り直してから気に入った構図のものをアップスケールするほうが効率が良いです。
- 構図が不安定: 大きな画像を生成すると人物が2人になるなど構図が不安定になりやすいです。それはStable Diffusionが512×512の周辺の解像度で学習されているからです。
この手法は512✕512などの低解像度で気に入った構図になるまで画像を繰り返し生成して、そこから気に入った画像に絞って、高い解像度へ調整することで、これら2点の問題を回避しています。
解決策3:Inpaintによる補正。設定方法が肝
次に紹介する方法はInpaintによる補正です。
- img2imgに切り替え
- Inpaintに切り替え
- 顔を塗りつぶす
- Only maskedにチェック(ここが肝)
- Generateボタンをクリック
- 1/4Inapintへ画像を送信する。
txt2imgで生成したら生成した画像の下にある「🎨️」アイコンをクリックして画像をInpaintタブへ送信します。もし過去に生成した画像などを修正したい場合はimg2imgタブへ切り替えてinpaintへタブを開いて画像をセットしてください。
- 2/4修正したい箇所をマスクする
img2imgタブであることを確認します。プロンプトが設定されていることを確認します。必要に応じて修正しても大丈夫です。Inpaintタブであることを確認。修正したい箇所にマスクをします。
- 3/4Inpaintを設定
Inpaintの設定をします。顔の修正はInpaint Areaを”Only maskded”にしましょう。通常は画像全体にInpaintを適用してマスク部分を置き換えしますが、顔を修正する場合はマスク部分を切り出してInpaintを適用するほうが効果が高いです。あとは解像度を元画像に合わせましょう。
- 4/4プロンプトを入力してInpaintを実行。
最後にGenerateを押してinpaintを適用します。
生成される画像は次の通りです。
このように、全体と顔部分を分けて考えることで、全身描写と顔の細部表現を両立させることができます。それぞれの部分に集中することで、全体のバランスを保ちつつ、細部まで丁寧に描き出すことが可能になります。
この操作が面倒という方は、次に紹介するAfter Detailer(adetailer)という拡張機能を利用することで、自動でほぼ同等の操作を行うことができます。Inpaintによる修正のほうがピンポイントで変更することができて確実性が高いですが、面倒な場合は次の方法をおすすめします。
解決策4: After Detailer(adetailer)で補正する
After Detailer(adetailer)は顔や手を補正するStable Diffusionの拡張機能です。原理としては先ほど解決策3で紹介したinpaintで補正する場合とほぼ同等です。顔を自動で検出してそれをimg2imgで補正する手法となっています。adetailerを使った補正を実際に試した結果が次の通りです。
具体的な手順に関しては次の記事内で解説しているので参考にしてください。
解決策5:顔の崩れを防ぐ呪文(プロンプト)
detailed face
という呪文(プロンプト)は、AIによるキャラクター生成において、他のパーツとは別に顔だけにフォーカスを当て、精緻さを追求する際に役立ちます。またdeformed face
など崩れるのを防ぐ呪文(プロンプト)を使ってみるのも手です。
Promptにおすすめのキーワード
detailed face
Negative Promptにおすすめのキーワード
deformed face, ugly, bad face, deformed eyes, bad anatomy
cute face
,brown eye
などの顔の詳細に関する呪文(プロンプト)を追加することで顔にフォーカスするため顔が綺麗に描かれることが多いです。この解決策は、特に顔部分が難しい構図などに有効な方法です。
それでは、上記の呪文(プロンプト)を試しに使って画像を生成してみます。
Prompt:
(8k, RAW photo, best quality, masterpiece:1.2), (realistic, photo-realistic:1.4), (extremely detailed 8k wallpaper), cheerleader outfit, full body, 20 yo woman, (detailed face: 1.4)
Negative Prompt:
EasyNegative, (worst quality, low quality: 2.0), normal quality, ugly face, unclear eyes, bad mouth, bad anatomy, extra legs, beach, bad anatomy, deformed face, ugly, bad face, deformed eyes, bad anatomy
顔の歪みは無くなりましたが、同じシードであるのにも関わらず全身の画像ではなくなってしまいました。
このように呪文(プロンプト)による描画指示はバランスが重要です。顔の詳細ばかり説明してしまうと、今度は全体の構図がおろそかになっていしまいます。
全体像を描くための呪文(プロンプト)と顔部分の詳細を描くための呪文(プロンプト)が適切なバランスを保つことで、全体として均整のとれた画像を生成することが可能になります。
ControlNetについての解説は次の記事で行っているのでインストールしてない人は以下の記事を参考にインストールしてみてください。
解決策6: ControlNet Tileによるアップスケール
次に紹介するのはControlNet Tileの活用です。もしControlNetがStable Diffusion Web UIにインストールされていない場合は次の記事を参考にしてください。
ControlNet Tileは画像を高解像度に変換するので解決策2と同様に思えますが、一点優れている点があります。それはControlNet Tileを使うと元の画像の特徴を保持したまま修正が可能な点です。img2imgを使うと背景が変わってしまうのが気になる場合はControlNet Tileを試してみましょう。
解決策7:モデル選択、あなたに合ったAIを見つけよう
最後に提案したい解決策はモデルの選択です。AIの技術は日進月歩で、多種多様なモデルが開発されています。Beautiful Realistic Asians(少し引きの絵が得意)やChilloutmix(顔がアップの構図は得意、全身は不得意)などのモデルごとに得意な構図があります。それぞれのモデルには、得意とする領域や描写の仕方など特性が異なるため、あなたの目指す絵柄や表現に最適なモデルを見つけることが重要です。
しかし、どんなモデルを選ぶにしても、やはり全身のキャラクター描画には高い解像度が必要となります。大きなキャンバスで描くことで、全身のバランスと顔の細部描写を両立することが可能となります。
コメント