
拡張ツールADetailerの使用する目的とパラメーター設定内容
StablediffusionでAI画像を生成する際に必須の機能が「ADetailer」。
自分がこうだと思っていた機能以上だったので再度内容を調べて学びなおしました。
ADetailerとは!?というのからパラメーター設定についてを分かりやすく紹介したいと思います。
ADetailerとは!?
顔や体や手などのクオリティを向上させる
キャラや表情を固定したままプロンプトで変更などができる
いつもADetailerを使っていますが、1の顔や体や手などのクオリティを向上させるのみしか使っていませんでした。
2の変更などを変えるというのを知りませんでした。
この2は、かなり凄いことで、txt2imgで作成し、あとから変更する際にimg2imgで画像を一括処理できるので、表情を変えたい画像をフォルダーに集め、まとめて表情を変えたり、もっとよくしたいや質の高いAI画像をまとめてそこから脱が・・・などいろいろ幅が広がります。
ADetailerの顔や体や手などのクオリティを向上させる
基本的にADetailerは、顔や体や手をディテール、解像度を上げ綺麗にするというのがメインです。
下記は、ADetailerの「face_yolov8n.pt」を使用して比較しています。
ADetailer前の画像
顔や顔の付近の髪の毛の影響で頬をの部分が少し雑な生成になっています。

ADetailer(face_yolov8n.pt)後の画像
顔の無駄な部分をぼけや線がなくなり、ハッキリとした顔になりました。

横に並べてみるとより分かりやすいです。
←左がADetailer前で→右がADetailer(face_yolov8n.pt)後のイラストです。

上記で見ても違いが分かりづらいのでGIFで見ると分かりやすいです。

顔がハッキリと見えるので、ADetailerは生成時のクオリティを上げるので、必須機能の1つといっても過言ではありません。
顔だけでなく、体や手などの修正もしてくれるので、Stable diffuisonのAIイラスト生成をするにあたって覚えていくべき機能です。
キャラクターを固定したまま部分検知で表情などを変更する
ずっと顔や手や体を向上させるだけと思っていたADetailer。
txt2imgでプロンプトを書いて、わざわざADetailerのプロンプトに書く必要がわからないと思っていました。
この「キャラクターを固定したまま表情などを変更する」を使う際に、私の場合は、img2imgで実施するのが増えてきました。
ワイルドカードで生成した画像達で、この画像達は、全て無表情だけど笑顔の方が断然に良いというのがあります。
そういった笑顔にしたいという画像を集め、img2imgでADetailerを使って変化させます。
txt2imgでプロンプトを変更すれば、作成できますが、img2imgで作ったものを一部プロンプトを変更する方が生成は圧倒的に早いです。
さきほどの画像で実施していみます。

上記からimg2imgでsmileをいれて、笑わせます。

ADetailerの各パラメーターについて
ADetailer modelの内容について
$$
\begin{array}{|c|c|c|} \hline
モデル & 対象 & 対象の画風 \\ \hline
face_yolov8n.pt & 顔 & アニメ系/実写系 \\ \hline
face_yolov8s.pt & 顔 & アニメ系/実写系 \\ \hline
hand_yolov8n.pt & 手 & アニメ系/実写系 \\ \hline
person_yolov8n-seg.pt & 体全体 & アニメ系/実写系 \\ \hline
person_yolov8s-seg.pt & 体全体 & アニメ系/実写系 \\ \hline
mediapipe_face_full & 顔 & 実写系 \\ \hline
mediapipe_face_short & 顔 & 実写系 \\ \hline
mediapipe_face_mesh & 顔 & 実写系 \\ \hline
\end{array}
$$
下記の表記は、forgeでの設定になります。
もしかしたらa1111と若干違う可能性があります。
Detection
Detection model confidence threshold(検出モデルの信頼度閾値)
検出モデルがオブジェクトを「検出した」と判断するための信頼度の閾値を設定します。例えば、0.3に設定すると、信頼度が30%以上の検出結果が対象となります。
誤検出が多い場合は値を大きくし、検出されにくい場合は小さく設定します。
Mask only the top k largest (0 to disable)(最大のk個のオブジェクトのみマスク)
検出されたオブジェクトの中で、面積が大きい順に上位k個を対象とします。0に設定すると、この機能は無効になります。例えば、2に設定すると、最も大きい2つのオブジェクトが対象となります。
Mask min area ratio(最小面積比)
検出されたオブジェクトの面積が、画像全体の面積に対して占める最小の比率を設定します。例えば、0.03に設定すると、画像全体の3%以上の面積を持つオブジェクトのみが対象となります。
Mask max area ratio(最大面積比)
検出されたオブジェクトの面積が、画像全体の面積に対して占める最大の比率を設定します。例えば、0.1に設定すると、画像全体の10%未満の面積を持つオブジェクトのみが対象となります。
Mask Preprocessing(マスク前処理)
顔だけのface_yolov8n.ptだと顔検知しますが、その際に範囲を対象をMaskで増やすことで髪の毛まで修正や顔付近の背景のクオリティを上げるとったことができますが、効きに関しては、ケースバイケースになります。
Mask x(→) offset(マスクのx軸方向オフセット)とMask y(↑) offset(マスクのy軸方向オフセット)
Mask x(→) offset(マスクのx軸方向オフセットでマスク領域(X領域)を水平方向に移動させるオフセット値を設定します。
正の値で右方向、負の値で左方向に移動します。
Mask y(↑) offset(マスクのy軸方向オフセット)でマスク領域を垂直方向に移動させるオフセット値を設定します。
正の値で上方向、負の値で下方向に移動します。
上記でface_yolov8n.pで検知して、その部分から修正範囲を増やすことができるので、顔だけでなく、髪の毛まで修正範囲を増やして髪の毛の色や髪型を変えることが可能です。
ただし、ロングヘアーなど範囲の指定が難しいのとMask x(→) offsetだけでは、できないこともあり、ショートヘアだと指定する範囲が難しいので対応できるかと思います。
Mask erosion (-) / dilation (+)(マスクの収縮(-)/膨張(+))
マスク領域の形状を調整します。
正の値で膨張、負の値で収縮します。例えば、4に設定すると、マスク領域が膨張します。
Mask merge mode(マスクのマージモード)
複数のマスクをどのように組み合わせるかを設定します。
主なオプションは以下の通り
None: マスクを組み合わせません。
Merge: マスクを統合します。
Merge and Invert: マスクを統合し、反転させます。
Inpainting
Inpaint mask blur
マスク境界のぼかし度合いを調整します。値を大きくすると、マスクの境界が滑らかになり、修復部分と周囲の違和感が減少します。
Inpaint denoising strength(使用によって生成に影響する)
Inpaintのノイズ除去強度を設定する。
高い値に設定すると、ノイズが減少しますが現在の画像からかけ離れ、細部のディテールも失われる可能性があります。
0.3~0.4で元の画像を維持できますが、入れたプロンプトや内容が効きづらく上げていくことによって効きが良くなりますが、元の画像から離れていきます。
自分にあったパラメーターを調整していく形です。

上記からperson_yolov8n-seg.ptで全体を検知し、micro bikiniをADetailerのプロンプトに入れ、Inpaint denoising strengthを0.6にした結果が下記です。

bikiniが反応していますが、フリーレン様じゃない顔になり、0.3や0.4だと反映しません。
使用する画像によって、実施するパラーメーターの調整が変わるので、この画像だったらこのパラメーターが効きやすく、元の画像が維持しやすいといった慣れが必要になります。
Inpaint only masked
チェックでマスク部のみに対して修復を行う。これにより、特定の領域だけを修正することが可能です。
Use separate width/height
修復した画像のサイズを設定する。
デフォルトでは、幅と高さは同じ比率で設定されますが、個別に調整することで、異なるアスペクト比の画像を生成できます。
Use separate steps
修復する際のステップ数を指定します。ステップ数を増やすと、修復の精度が向上しますが、処理時間も長くなります。
Use separate CFG scale
修復時のCFGスケール(プロンプトの忠実度)を設定する。高い値に設定すると、プロンプトに忠実な修復が行われます。
Use separate checkpoint
修復時に使用するチェックポイントモデルを設定する。これにより、特定のモデルを使用して修復を行うことが可能です。
Use separate VAE
修復時に使用するVAEを設定する。VAEを変更することで、修復後の画像の品質やスタイルを調整できます。
Use separate sampler
修復時に使用するサンプラーを設定する。サンプラーを変更することで、修復処理の挙動や結果を調整できます。
Use separate noise multiplier
生成後のノイズを調整する。値を大きくすると、画像に追加のノイズが加わり、逆に小さくするとノイズが減少します。
Use separate CLIP skip
修復時のCLIP skip値を変更できる。CLIP skipを調整することで、画像の特徴抽出の深さを制御し、修復結果に影響を与えます。
Restore faces after ADetailer
チェックすると、ADetailerでの修復後にRestore facesを実行する。
「Restore faces」は、画像内の顔部分の品質を向上させる機能です。
顔がぼやけていたり、崩れたりしている場合に有効です。このオプションにチェックを入れることで、顔の部分を効果的に補正できます。
顔補正がうまくいかない時に使用する顔の最後の砦です。
ADetailerのプロンプトにワイルドカードを入れるも反応せず
ワイルドカードを入れてみましたが、出力結果のプロンプトを見るとワイルドカードの文字そのものが表示されているので、私の場合は使用できないです。
ADetailerで顔だけLoRA適用
次に顔検知で顔だけLoRAを入れて、変更します。
フリーレン様をネテロ会長にします。


笑える。
ネテロ会長感はでないですが、ADetailerのプロンプトに入れたので反応しています。
上記から顔のface_yolov8n.ptで顔を検知して、その部分だけを変更することができます。
ただし、プロンプトを使用しただけでは変化しなかったりするのでパラーメーターを弄りながら実施する形になります。
ADetailerについての結論
色やポーズを変更は難しいですが、たとえば描き込みをアップさせるLoRAを適用するや表情を変えたいといった応用が効くのでimg2imgのADetailerで生成されたものを微修正するのに適しているかと思います。
いいなと思ったら応援しよう!
