【Stable Diffusion】SDXLでADetailerを活用した顔・手の崩れ防止と高品質化ガイド

問題の概要:SDXLにおける顔や手の崩れ、細部の不自然さ

Stable Diffusion XL(SDXL)は高解像度で精細な画像生成が可能ですが、特に人物画像を生成する際に、以下のような問題に直面することがあります。

  • 顔のパーツ(目、鼻、口)の位置が不自然、または歪んでいる
  • 手の指の本数がおかしい、または形状が崩れている
  • 全体の画質は高いが、顔や手などの重要な部分の解像度やディテールが不足している
  • Bad eye detail」、「Weird hand pose」といった生成結果に対する不満

これらの問題は、SDXLの基本モデルだけでは完全に解決が難しく、生成後に専用の修正プロセスを追加する「ADetailer」のような拡張機能の活用が効果的です。本記事では、ADetailerのSDXL向け正しい設定方法と、顔崩れを防止する実践的なテクニックを解説します。

原因の解説:なぜSDXLでも顔や手が崩れるのか?

Stable Diffusionモデルが顔や手の生成に苦戦する主な原因はいくつかあります。

1. データセットの偏りと複雑な構造

学習データセットにおいて、顔や手は背景などに比べてバリエーションが極めて多く(表情、角度、照明、ポーズ)、かつ構造が複雑です。特に手は、関節の自由度が高く、自己遮蔽(指同士が重なる)も頻繁に発生するため、モデルが一貫した形状を学習するのが困難です。

2. 低解像度ラテント空間での生成

SDXLのラテント空間の解像度は(デフォルトで)128×128ピクセルです。この低解像度の特徴マップから高解像度の画像をアップスケールする過程で、細かいディテールが失われたり、不正確に補間されたりする可能性があります。

3. プロンプトの限界

perfect eyes, beautiful detailed hands」といったプロンプトはある程度有効ですが、モデルの根本的な理解を超えて完全に正確な解剖学的構造を保証するものではありません。

ADetailerは、これらの課題に対する「事後修正」アプローチです。最初の生成画像から顔や手などの特定領域を検出し、その領域だけを切り取って(クロップ)、より高い解像度と注意深いプロンプトで再生成(インペイント)します。これにより、全体の構図を保ちつつ、重要な部分の品質を劇的に向上させることができます。

解決方法:SDXL向けADetailerの設定と最適化手順

ここでは、AUTOMATIC1111 WebUIを使用していることを前提に、ADetailerの導入からSDXL用設定までをステップバイステップで説明します。

ステップ1: ADetailer拡張機能のインストール

WebUIの「Extensions」タブ → 「Available」をクリック → 「Load from」ボタンを押下。一覧から「adetailer」を探し、「Install」をクリックします。インストール後、WebUIを再起動してください。

# または、コマンドラインからインストールする場合(WebUIディレクトリで実行)
cd extensions
git clone https://github.com/Bing-su/adetailer.git

ステップ2: SDXL対応モデルのダウンロード(オプションだが推奨)

ADetailerはデフォルトで人物検出用の学習済みモデル(face_yolov8n.ptなど)を含みますが、SDXLの高解像度出力に最適化された専用モデルを使用することをお勧めします。Hugging Faceなどから「face_yolov8s.pt」や「hand_yolov8s.pt」をダウンロードし、stable-diffusion-webui/models/adetailerディレクトリに配置します。

ステップ3: txt2imgまたはimg2imgタブでのADetailer設定

スクリプト選択プルダウンから「ADetailer」を選択すると、詳細な設定パネルが表示されます。SDXL用の推奨設定は以下の通りです。

ADetailer 1st 設定例:
- ADetailer model: `face_yolov8n.pt` (または `face_yolov8s.pt`)
- Prompt: `(best quality, masterpiece, ultra-detailed:1.2)`
- Negative Prompt: `(worst quality, low quality:1.4)`
- Denoising strength: `0.3 - 0.4` (強すぎると顔が変わってしまうので注意)
- Inpaint Padding: `32` (ピクセル)
- その他: 「Mask only」はチェックせず、「Inpaint masked」を選択

重要: ADetailerのプロンプト欄は、検出された領域「だけ」に適用されます。ここに「portrait of a woman」など全体の構図を指定するプロンプトを書くと、結果がおかしくなる可能性があります。あくまで「品質」や「ディテール」に関するキーワードに留めましょう。

ステップ4: 手の修正を追加する(2nd ADetailer)

Use ADetailer 2nd」にチェックを入れると、2つ目の検出・修正プロセスを追加できます。ここで手用のモデルを設定します。

ADetailer 2nd 設定例:
- ADetailer model: `hand_yolov8n.pt` (または `hand_yolov8s.pt`)
- Prompt: `(perfect hands, detailed fingers:1.2)`
- Negative Prompt: `(bad hands, missing fingers, extra digit, mutated hands:1.4)`
- Denoising strength: `0.35 - 0.45` (手は構造が複雑なのでやや高め)
- Inpaint Padding: `48`

ステップ5: 生成と結果の確認

通常のプロンプト(例: full body portrait of a knight in armor, standing in a castle hall, dramatic lighting)を入力し、生成を実行します。コンソールログに[ADetailer] Detected 1 face[ADetailer] Processing hand...といったメッセージが出力され、処理が行われます。最終結果と、ADetailerによって修正された領域のマスク画像が表示されるので、変化を確認してください。

コード例・コマンド例:トラブルシューティング

実際の運用で遭遇する可能性のあるエラーとその対処法です。

エラー1: 顔が検出されない、または誤検出が多い

現象: ログに[ADetailer] Detected 0 faceと出力され、修正が適用されない。または背景の物体を顔と誤認識する。

解決策: 検出閾値(Detection Threshold)を調整します。デフォルトは0.3ですが、検出漏れが多い場合は0.2に下げ、誤検出が多い場合は0.4〜0.5に上げてみてください。また、より高性能なface_yolov8m.ptモデルを試します。

# 設定変更箇所
Detection Threshold: 0.2  # 検出感度を上げる(より多くの候補を検出)

エラー2: 修正後の顔が元と全然違う人になる

現象: Denoising strengthが高すぎるために、顔領域が完全に再生成されてしまい、人物の同一性が失われる。

解決策: Denoising strengthを0.25〜0.35の範囲まで下げます。また、ADetailerのプロンプトを空欄にするか、非常に控えめなキーワード(detailed eyes, sharp)のみにすることで、元の特徴を保持させやすくなります。

エラー3: 修正領域の境界が不自然(継ぎ目が目立つ)

現象: インペイントした部分と周囲の画質や色調に違和感がある。

解決策: Inpaint Paddingの値を大きくします(例: 32 → 64)。これにより、修正対象領域の周囲のより広い範囲をコンテキストとして考慮して再生成するため、なじみがよくなります。また、CFG Scaleをメイン生成時と同じ値に設定することも有効です。

まとめ・補足情報

ADetailerは、SDXLの強力な生成能力を「部分的な弱点補強」で補完する、実用的でほぼ必須のツールです。設定のコツは、「控えめな修正」にあります。Denoising strengthとプロンプトは最小限から始め、必要に応じて少しずつ調整するアプローチが失敗を減らします。

さらに品質を追求するための補足テクニック:

  • Hi-Res. Fixとの併用: メイン生成でHi-Res. Fixを使用し、その後ADetailerを適用する流れは非常に効果的です。
  • 複数回のADetailer適用: 1回のADetailer適用後、その出力画像をimg2imgに読み込み、再度ADetailerをかけることで、さらにディテールを洗練できます。
  • プロンプトの分離: 顔用、手用、服装用など、領域ごとに特化したLoRAモデルをADetailerのプロンプトで呼び出すことで、専門性の高い修正が可能になります。

ADetailerを適切に設定することで、SDXLはその本来の潜在能力を発揮し、構図もディテールも優れた、一貫性のある高品質な人物画像を生成できるようになります。最初は設定項目の多さに戸惑うかもしれませんが、本記事の基本設定をベースに、ご自身の生成スタイルに合わせて微調整を加えてみてください。

この記事は役に立ちましたか?