ADetailerで治せるのか?【手や顔を修正するコツを紹介】

スーツ姿の黒髪女性の画像

Stable Diffusion WebUIの拡張機能である「ADetailer」のインストール・使い方を紹介します。

ADetailerを使用すれば、顔面崩壊してしまった画像を簡単に修正することが可能です.

この記事で理解できること
  • ADetailerのインストール方法
  • ADetailerのパラメーターの詳細
  • ADetailerの使い方(顔、手の修正)
  • ADetailerの画像生成時間について
目次

ADetailerとは?

黒地に赤字のクエスチョンマークの画像

ADetailerは生成した画像に対して顔や手の範囲を自動判定し、そのエリアに対して修正を行う機能です。

自動判別するエリアはモデルとして用意されており、大きく分けると顔、手、体の3種類です。

この自動判別エリアには独自にプロンプトを設定することも可能なので、
表情だけを変更して出力することも可能になります。

ADetailerによる顔修正サンプル

鎧を着た女性のAIイラスト
顔が崩れている
ADetailer修正前
鎧を着た女性のAIイラスト
顔が修正されている
ADetailer修正後

ADetailerのメリット・デメリットについて

ADetailerは体の部位ごとに修正が可能ですが、デメリットも存在します。

以下にメリットとデメリットを一覧にするので確認しておきましょう。

メリット
デメリット
  • 体の部位ごとに修正ができる
  • 特定の部位だけにLoRAを適用できる
  • 特定の部位だけにプロンプトを適用することが出来る
  • 処理に時間がかかる
  • 顔以外の修正は苦手

顔の修正は十分効果が有りますが、手の修正は正直微妙です。
また、処理時間が長いので別の手段のほうが良い結果が得られるかも・・・

処理時間については、後ほど紹介するよ。

ADetailerのインストール方法

ADetailerは以下手順でインストール可能です。

STEP
「Extensions」タブに移動する

stable diffusion webUIを起動したら上部に表示されるタブ一覧から「Extensions」をクリックします。

Extensionsのクリックを誘導している
STEP
「Available」タブに移動する

Extensionsタブ内の「Available」をクリックします。

Availableのクリックを誘導している
STEP
拡張インデックスURLを確認する

「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
「Extension index URL」をフォーカスしている
STEP
「Load from:」ボタンをクリックする

localizationのチェックを外したら、「Load from:」ボタンをクリックします。

「Load from:」ボタンクリックを誘導している
STEP
ADetailerをインストールする

一覧の中から「ADetailer」を探し、右に表示される「install」ボタンをクリックします。

拡張機能一覧からADetailerをフォーカスしている

ADetailerはブラウザの検索機能を使えば簡単に見つかります。

STEP
「Reload UI」をクリックする

ADetailerをインストールしたらWebUIをリロードしましょう。
上部に表示される「Reload UI」ボタンをクリックすればリロード完了です。

「Reload UI」ボタンクリックを誘導している

後は普段通り、WebUIを起動しよう!

ADetailerのパラメーター設定について

ADetailerのパラメーターについて解説していきます。

ADetailerの表示箇所をフォーカスしている
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のインストール方法については↓の記事で紹介しています。

あわせて読みたい
ControlNetのインストール方法と使い方【ポーズの指定が出来る!】Stable Diffusion WebUIの使い方 はじめに Stable Diffusion WebUIの拡張機能である「ControlNet」のインストールから使い方までを紹介します。 ControlNetには様々な機能が搭載されていますが、今回は...

ADetailerを使って顔を修正する方法

それではADetailerを使用して顔の修正を行ってみます。

顔や手の修正であればデフォルト設定で簡単に使えるよ!

STEP
ADetailerを有効にする

「Enable ADetailer」をチェックします。

「Enable ADetailer」チェックを誘導している
STEP
モデルを選択する

「ADetailer model」からモデルを選択します。

今回はフォトリアル系の顔修復を行うので「mediapipe_face_full」を選択しましょう。

ADetailer modelをフォーカスしている

ADetailerのプロンプト欄は追加する必要はありません。
ADetailer prompt、ADetailer negative promptは空欄の状態でプロンプト、ネガティブプロンプトの内容が反映されています。

STEP
画像を生成する

設定が完了したら画像を生成するだけです。
ADetailerは指定エリアに対して画像生成を行うので、通常の画像生成よりも1.5から2倍程度の時間を要します。

生成した結果は以下の通りです。

黒い服を着た女性全身の写真
顔が崩れてしまっている
修正前
黒い服を着た女性全身の写真
顔が修正されている
修正後

修正前は顔が崩れてしまっていますが、修正後は顔が綺麗に描画されていますね。

ADetailerで顔の表情を変更する方法

ADetailerのプロンプト欄を使って、特定の範囲にだけプロンプトを反映することが可能です。

表情を変更する場合は、顔の修正と同じ手順でADetailerの設定を行います。

違う点はADetailerのプロンプト欄です。
ADetailerのプロンプト欄にプロンプトを追加すると、ADetailerで検出した範囲にのみプロンプトを適用することが可能です。

以下は「smile」というプロンプトをADetailerのプロンプトに追加して生成テストしました。

ADetailerプロンプトにsmileと入力
ADetailerプロンプトに入力
黒い服を着た女性全身の写真
顔が崩れてしまっている
ADetailer適用前
黒い服を着た女性全身の写真
表情が笑顔に変更されている
ADetailerで笑顔に変更

こんな感じで特定の範囲にだけプロンプトを反映することが可能になります。

ADetailerのプロンプト欄には、LoRAを追加することも可能なので、マスク範囲内にだけLoRAの効果を載せるといったことも可能です。

ADetailerで手を修正する方法

手を修正する場合は、顔の修正と同じ手順で、ADetailer modelだけ「hand_yolov8n.pt」に変更します。

ADetailer modelをフォーカスしている
ADetailer modelを変更

以下が実際に修正を行った結果です。

手の指が6本で生成されたAIイラスト
ADetailer適用前
手の指が6本で生成されたAIイラスト
hand_yolov8n.ptによる検出範囲を可視化している
手が検出範囲として認識されている
hand_yolov8n.ptによる検出範囲
手の指が6本で生成されたAIイラスト
ADetailerで修正したが、指の本数は6本のまま
ADetailerで修正

このように手のディテールは修正されますが、指の本数まで修正することは困難です。

手の修正を手軽に行いたい場合は「badhandv4」や「bad-hands5」というembeddingをおすすめします。
以下はbad-hands5で修正した画像です。

手の指が5本で生成されたAIイラスト
bad-hands5を適用

embeddingはプロンプトに影響を与えるので、指以外の部分も変化してしまうことが弱点です。

手間はかかりますが「depth_hand_refiner」を使えば構図に影響無く手の修正が可能です。
depth_hand_refinerを使って手を修正する手順については、以下の記事で紹介しています。

あわせて読みたい
【Stable Diffusion】生成した画像の手をADetailerとdepth_hand_refinerで修正する方法 はじめに Stable Diffusionで生成した画像の手を、txt2imgで修正する方法を解説します。 今回はADetailerとdepth_hand_refinerを使って修正してみます。 ADetailerは手...

ADetailerの設定について

簡単な使い方を理解した上で、「設定」の項目を確認してみましょう。

ADetailerの設定変更は以下の通りです。

STEP
設定に移動する

上部タブから設定(setting)をクリックします。

設定ボタンクリックを誘導している
STEP
ADetailerの設定を表示する

左メニューから「ADetailer」をクリックする。

左メニューのADetailerクリックを誘導している
STEP
ADetailerの設定を変更する

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)

大きい領域から小さい領域に並べ替える

STEP
設定の適用

設定を変更したら上部の設定を適用(Apply settings)をクリックしましょう。

「Apply settings」クリックを誘導している

次にUIの再読み込み(Reload 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で生成しています。

生成画像を確認する
鎧を着た女性のAIイラスト
顔が崩れている
ADetailer無し
鎧を着た女性のAIイラスト
顔が修正されている
顔修正
鎧を着た女性のAIイラスト
顔と手が修正されている
顔と手修正
鎧を着た女性のAIイラスト
顔や手はもちろん、背景のディテールも向上している
Hires. fixで2倍にアップスケール
生成時間の比較
Hires. fix(2倍)
約54.6秒
Hires. fix(2倍)SDPA併用
約13.7秒
ADetailer(顔と手修正)
約8.9秒
ADetailer(顔修正)
約6.5秒
ADetailer非適用
約4.2秒

予想していた通りだけど、画像生成時間にかなり影響しますね。
複数修復すると、その分step数が増えるのでどんどん生成時間が長くなることがわかりました。

私個人の印象としては、ただ修復して高画質化したいのであればHires. fixの方がおすすめです。

何も高速化せずにHires. fixを使用するとかなり遅いですが、
SDPAを使用すると全ての工程が早くなり、約13.7秒で1024×1536の画像が仕上がります。

Hires. fixは被写体はもちろんだけど、背景のディテールも向上しているね!

構図が少しでも変わるのを嫌う場合や、
部分的にプロンプトやLoRAを反映したい場合にADetailerはおすすめです。

SDPAによる高速化については↓の記事で解説しています。

あわせて読みたい
Stable Diffusionを高速化するSDPAを紹介します はじめに Stable Diffusionの高速化では定番となるxFormersがありますが、さらなる高速化が可能となるSDPAの使い方を紹介します。 導入の仕方から、生成時間の比較結果...

まとめ

今回は、Stable Diffusion WebUIの拡張機能「ADetailer」を紹介しました。

低解像度で体全体を描こうとするとどうしても顔が崩れてしまうので、ADetailerは必ずインストールしておきましょう!

ADetailerは別の修復モデルを追加することが可能です。
モデルの追加方法については以下の記事で解説しています。

あわせて読みたい
ADetailerにモデルを追加する方法を解説します! Stable Diffusion WebUIの拡張機能であるADetailerに新しい修復モデルを追加する方法を紹介します。 ADetailerは主に顔の修復に使用しますが、修復モデルを追加すれば様...
よかったらシェアしてね!
  • URLをコピーしました!

コメント

コメントする

目次