Stable Diffusion WebUIの拡張機能である「ADetailer」のインストール・使い方を紹介します。
ADetailerを使用すれば、顔面崩壊してしまった画像を簡単に修正することが可能です.
- ADetailerのインストール方法
- ADetailerのパラメーターの詳細
- ADetailerの使い方(顔、手の修正)
- ADetailerの画像生成時間について
ADetailerとは?
ADetailerは生成した画像に対して顔や手の範囲を自動判定し、そのエリアに対して修正を行う機能です。
自動判別するエリアはモデルとして用意されており、大きく分けると顔、手、体の3種類です。
この自動判別エリアには独自にプロンプトを設定することも可能なので、
表情だけを変更して出力することも可能になります。
ADetailerによる顔修正サンプル
ADetailerのメリット・デメリットについて
ADetailerは体の部位ごとに修正が可能ですが、デメリットも存在します。
以下にメリットとデメリットを一覧にするので確認しておきましょう。
顔の修正は十分効果が有りますが、手の修正は正直微妙です。
また、処理時間が長いので別の手段のほうが良い結果が得られるかも・・・
処理時間については、後ほど紹介するよ。
ADetailerのインストール方法
ADetailerは以下手順でインストール可能です。
stable diffusion webUIを起動したら上部に表示されるタブ一覧から「Extensions」をクリックします。
Extensionsタブ内の「Available」をクリックします。
「Extension index URL」に表示されているテキストを確認してください。
「https://raw.githubusercontent.com/AUTOMATIC1111/stable-diffusion-webui-extensions/master/index.json」が入力されていれば問題ありませんが、空欄であったり別の記載であった場合は以下をコピペしてください。
https://raw.githubusercontent.com/AUTOMATIC1111/stable-diffusion-webui-extensions/master/index.json
localizationのチェックを外したら、「Load from:」ボタンをクリックします。
一覧の中から「ADetailer」を探し、右に表示される「install」ボタンをクリックします。
ADetailerはブラウザの検索機能を使えば簡単に見つかります。
ADetailerをインストールしたらWebUIをリロードしましょう。
上部に表示される「Reload UI」ボタンをクリックすればリロード完了です。
後は普段通り、WebUIを起動しよう!
ADetailerのパラメーター設定について
ADetailerのパラメーターについて解説していきます。
ADetailer部分をクリックするとメニューが展開されます。
ADetailerの基本パラメーター
ADetailerを使用する場合は、基本的に以下のパラメーターを調整すれば問題ありません。
修復結果が微妙だった場合は、基本パラメーター以外を調整しよう
基本パラメーターの詳細を確認する
- 1.Enable ADetailer
-
チェックすることでADetailerを有効化する。
- 2.1st,2nd
-
修正を行う対象を選択する。
項目の数はADetailerの設定で変更可能です。
- 3.ADetailer model
-
修正を行う部位(モデル)を選択する。
スクロールできますモデル名 修正内容 face_yolov8n.pt 顔の修正 face_yolov8s.pt 顔の修正 hand_yolov8n.pt 手の修正 person_yolov8n-seg.pt 人物の修正 person_yolov8s-seg.pt 人物の修正 yolov8x-worldv2.pt オブジェクト(車や船)の修正 mediapipe_face_full 顔の修正(フォトリアル向け) mediapipe_face_short 顔の修正(フォトリアル向け) mediapipe_face_mesh 顔の修正(フォトリアル向け) mediapipe_face_mesh_eyes_only 目の修正(フォトリアル向け) - 4.ADetailer prompt
-
プロンプトを追加可能。
- 5.ADetailer negative prompt
-
ネガティブプロンプトを追加可能。
Detection
Detectionメニューは、ADetailerの適用範囲の設定を行います。
Detectionパラメーターの詳細を確認する
- 1.Detection model confidence threshold
-
この閾値を超えるオブジェクトを処理対象とします。
誤検出される場合は値を大きくしてください。 - 2.Mask only the top k largest (0 to disable)
-
大きいオブジェクトから、いくつのオブジェクトを対象とするか設定する。
例として2を設定するとオブジェクト2つが対象になります。 - 3.Mask min area ratio
-
検出範囲の最小値を設定します。
値を大きくすることで、小さいオブジェクトを対象外にすることが可能です。 - 4.Mask max area ratio
-
検出範囲の最大値を設定します。
Mask Preprocessing
検出したオブジェクトの範囲を調整することが可能です。
Mask Preprocessingパラメーターの詳細を確認する
- 1.Mask x(→) offset
-
範囲を横方向に調整できます。
- 2.Mask y(↑) offset
-
範囲を縦方向に調整できます。
- 3.Mask erosion (-) / dilation (+)
-
範囲の拡大縮小が調整できます。
- 4.Mask merge mode
-
範囲の修復方法を選択する。
- None:各範囲を別々に修復する
- Merge:各範囲をマージしてから修復する
- Merge and Invert:各範囲をマージ判定してから修復する
Inpainting
修復方法の設定を行います。
Inpaintingパラメーターの詳細を確認する
- 1.Inpaint mask blur
-
マスク境界のぼかし度合いを調整します。
- 2.Inpaint denoising strength
-
Inpaintのノイズ除去強度を設定する。
- 3.Inpaint only masked
-
チェックでマスク部のみに対して修復を行う。
- 4.Use separate width/height
-
修復した画像のサイズを設定する。
アップスケーラー併用時、画像がぼやけてしまう場合に使用する。 - 5.Use separate steps
-
修復する際のステップ数を指定します。
- 6.Use separate CFG scale
-
修復時のCFGスケール(プロンプトの忠実度)を設定する。
- 7.Use separate checkpoint
-
修復時に使用するチェックポイントモデルを設定する。
- 8.Use separate VAE
-
修復時に使用するVAEを設定する
- 9.Use separate sampler
-
修復時に使用するサンプラーを設定する。
- 10.Use separate noise multiplier
-
ノイズ係数の調整を行う。
小さくするとノイズが少なくなるが、ぼやけていきます。
大きくするとシャープになるがノイズが増える。 - 11.Use separate CLIP skip
-
修復時のCLIP skip値を変更できる。
- 12.Restore faces after ADetailer
-
チェックすると、ADetailerでの修復後にRestore facesを実行する。
ControlNet
ControlNetをインストールしている場合に選択できます。
ControlNetの機能をADetailerで併用することが可能になります。
ControlNetパラメーターの詳細を確認する
- 1.ControlNet model
-
使用するContorolNetモデルを選択する。
- 2.ControlNet weight
-
ControlNetの影響度合いを設定する。
- 3.ControlNet Guidance start
-
ControlNetの処理開始stepを指定する。
0の場合最初から処理する。 - 4.ControlNet Guidance end
-
ControlNetの処理終了stepを指定する。
1の場合最後まで処理する。
ControlNetのインストール方法については↓の記事で紹介しています。
ADetailerを使って顔を修正する方法
それではADetailerを使用して顔の修正を行ってみます。
顔や手の修正であればデフォルト設定で簡単に使えるよ!
「Enable ADetailer」をチェックします。
「ADetailer model」からモデルを選択します。
今回はフォトリアル系の顔修復を行うので「mediapipe_face_full」を選択しましょう。
ADetailerのプロンプト欄は追加する必要はありません。
ADetailer prompt、ADetailer negative promptは空欄の状態でプロンプト、ネガティブプロンプトの内容が反映されています。
設定が完了したら画像を生成するだけです。
ADetailerは指定エリアに対して画像生成を行うので、通常の画像生成よりも1.5から2倍程度の時間を要します。
生成した結果は以下の通りです。
修正前は顔が崩れてしまっていますが、修正後は顔が綺麗に描画されていますね。
ADetailerで顔の表情を変更する方法
ADetailerのプロンプト欄を使って、特定の範囲にだけプロンプトを反映することが可能です。
表情を変更する場合は、顔の修正と同じ手順でADetailerの設定を行います。
違う点はADetailerのプロンプト欄です。
ADetailerのプロンプト欄にプロンプトを追加すると、ADetailerで検出した範囲にのみプロンプトを適用することが可能です。
以下は「smile」というプロンプトをADetailerのプロンプトに追加して生成テストしました。
こんな感じで特定の範囲にだけプロンプトを反映することが可能になります。
ADetailerのプロンプト欄には、LoRAを追加することも可能なので、マスク範囲内にだけLoRAの効果を載せるといったことも可能です。
ADetailerで手を修正する方法
手を修正する場合は、顔の修正と同じ手順で、ADetailer modelだけ「hand_yolov8n.pt」に変更します。
以下が実際に修正を行った結果です。
このように手のディテールは修正されますが、指の本数まで修正することは困難です。
手の修正を手軽に行いたい場合は「badhandv4」や「bad-hands5」というembeddingをおすすめします。
以下はbad-hands5で修正した画像です。
embeddingはプロンプトに影響を与えるので、指以外の部分も変化してしまうことが弱点です。
手間はかかりますが「depth_hand_refiner」を使えば構図に影響無く手の修正が可能です。
depth_hand_refinerを使って手を修正する手順については、以下の記事で紹介しています。
ADetailerの設定について
簡単な使い方を理解した上で、「設定」の項目を確認してみましょう。
ADetailerの設定変更は以下の通りです。
上部タブから設定(setting)をクリックします。
左メニューから「ADetailer」をクリックする。
ADetailerの設定の設定項目は以下の通りです。
設定項目の詳細を確認する
- Max models
-
適用する最大モデル数です。
大抵の方は顔と手の修正に使用するので、「2」のままで困らないかと思います。 - Save mask previews
-
チェックすると、検出範囲を可視化した画像が保存されます。
有効エリアを確認できるのでチェック推奨です。Save mask previewsで出力される画像 - Save images before ADetailer
-
チェックすると修正前の画像が保存されます。
顔が崩れた場合に使用することがほとんどなので、必要無いかなぁ。 - Apply only selected scripts to ADetailer
-
他の拡張機能の効果を有効にします。
基本的に有効で問題ありません。別の拡張機能の影響によりエラーが発生する場合には、チェックを外しましょう。
- Script names to apply to ADetailer (separated by comma)
-
ADetailerに適用するスクリプト名を記述します。
基本的に設定変更する必要はありません。動作させたい機能のpythonファイル名を追加します。
- Sort bounding boxes by
-
複数領域が重なって検出された場合に、ADetailerを適用する順序(領域の並べ替え)を設定します。
チェックボックスの詳細を確認する
- None
-
ランダム(制御の順番を指定しない)
- Position (left to right)
-
左から右に領域を並べ替える
- Position (center to edge)
-
中心から端に向かって並べ替える
- Area(large to small)
-
大きい領域から小さい領域に並べ替える
設定を変更したら上部の設定を適用(Apply settings)をクリックしましょう。
次にUIの再読み込み(Reload UI)を実施します。
ADetailerを使用した場合の生成時間を確認する
ADetailerが画像生成時間にどの程度影響するのか確認してみました。
モデル「Meinamix」を使用し、以下設定で画像生成時間を測定しました。
- ADetailer無し
- 顔修正(face_yolov8n.pt)のみ
- 顔・手修正(face_yolov8n.pt,hand_yolov8n.pt)
- Hires. fix(2倍)
- Hires. fix(2倍)SDPA併用
step数は20、解像度は512×768で生成しています。
生成画像を確認する
予想していた通りだけど、画像生成時間にかなり影響しますね。
複数修復すると、その分step数が増えるのでどんどん生成時間が長くなることがわかりました。
ただ修復して高画質化したいのであればHires. fixの方がおすすめです。
Hires. fixについては以下の記事で解説しています。
何も高速化せずにHires. fixを使用するとかなり遅いですが、
SDPAを使用すると全ての工程が早くなり、約13.7秒で1024×1536の画像が仕上がります。
Hires. fixは被写体はもちろんだけど、背景のディテールも向上しているね!
構図が少しでも変わるのを嫌う場合や、
部分的にプロンプトやLoRAを反映したい場合にADetailerはおすすめです。
SDPAによる高速化については↓の記事で解説しています。
まとめ
今回は、Stable Diffusion WebUIの拡張機能「ADetailer」を紹介しました。
低解像度で体全体を描こうとするとどうしても顔が崩れてしまうので、ADetailerは必ずインストールしておきましょう!
ADetailerは別の修復モデルを追加することが可能です。
モデルの追加方法については以下の記事で解説しています。
コメント