当ブログにはプロモーション、アフィリエイト広告が含まれます。

【Stable Diffusion】After Detailer(ADetailer)の使い方!特定の部位を検出して修正

Stable Diffusion Web UIの便利な拡張機能紹介記事です。

今回は画像の人・顔・手などを修正できる「After Detailer(ADetailer)」について紹介します。

After Detailerとは?

After Detailerは名前の通り、後から画像の特定の部位を修正できる機能です。

使用するモデルによって検出部位が異なり、人・顔・手などを修正できます。

また修正する箇所の範囲を制限したり、ControlNetのインペイントと合わせて使ったり自由度も高めです。

修正後のクオリティも比較的高いので、崩れた画像を修正したいときに便利な機能となっています。

Bing-su/adetailer: Auto detecting, masking and inpainting with detection model.

After Detailerのインストール

Extensions→Install from URL→URL for~に下記URLを入力し、Installボタンをクリックしてください。

https://github.com/Bing-su/adetailer.git

UIをリスタート、または再起動すれば設定が反映され、txt2imgなどADetailerというタブが追加されていれば、インストールは完了です。

After Detailerの使い方

基本は修正したい画像を生成時と同じ設定にして、After Detailerを有効化するだけです。

まず何らかの画像を生成して、生成時と同じパラーメータ・シード値にしておいてください。

メタ情報が残っている画像なら、PNG infoで取り込み、txt2imgに送れば生成時の情報を反映できます。

この状態でAfter Detailerを有効化、モデルを選択してGenerateを押します。

そうすると選択したモデルによって特定の部位が検出され、自動で修正してくれます。

この画像だと顔が修正されているのがわかると思います。

右がface_yolov8n.ptで修正した画像

公式を見ると、モデルはyolov8が2・3次元両方に対応、mediapipeは3次元画像に対応しているみたいです。

またyolov8のhandは手、personは人を検出できます。

face_yolov8n.pt2D / realistic face
face_yolov8s.pt2D / realistic face
hand_yolov8n.pt2D / realistic hand
person_yolov8n-seg.pt2D / realistic person
person_yolov8s-seg.pt2D / realistic person
mediapipe_face_fullrealistic face
mediapipe_face_shortrealistic face
mediapipe_face_meshrealistic face
引用:https://github.com/Bing-su/adetailer

基本はyolov8n・yolov8sが万能で使用している方も多いようです。

修正したい部位やクオリティに合わせて、モデルを変えてみてください。

After Detailerで設定できるパラーメータ

ADetailer prompt/negative prompt

これは検出した部位に対して、追加でプロンプトを反映できるものです。

例えば顔を修正するとき、「angry」と入力すれば怒った顔になります。

ネガティブプロンプトも使い方は同じです。

特定の部位に対して反映したくない要素を入力すれば、ある程度抑えることができます。

Detection

Detectionは、検出した顔のスコアやマスクのサイズを指定して、修正範囲を制御できるものです。

複数顔がある画像でyolov8nを使用すると、「顔」として検出した部分がスコアで表示されます。

数値が高いほど「顔」として強く認識されているということです。

スコアの画像は、setting→ADetailer→Save mask previewsにチェックを入れると保存できます。

Detectionはこの数値やマスクの大きさを指定して、修正する範囲を指定できます。

Detection model confidence threshold

Detection model confidence thresholdは、指定した数値以上の顔を検出するというものです。

例えばこの画像で0.87を指定すると、0.87以上は修正、以下はしないというように修正範囲を制限できます。

Mask min area ratio

Mask min area ratioは、検出するマスクサイズの最小値を指定できます。

例えば0.03にした場合は、画像全体に対してマスクサイズが3%以上のもののみ修正が行われます。

この画像だと左側2人が全体の3%以上のマスクサイズと認識され、修正が行われています。

Mask only the top k largest (0 to disable)

これはマスクが大きい順に並べて上位何人まで修正するかを指定できます。

マスクの大きい順に順位をつけると以下のようになります。

「3」と指定すれば、マスクの大きい順に上位3位までの顔(左3人)が修正されます。

Mask max area ratio

Mask max area ratioは、検出するマスクの最大値を指定できます。

例えば0.01にすると、画像全体に対してマスクサイズが1%以下のマスクのみ修正が行われます。

この画像だと一番右の女性のみ修正されます。

Mask Preprocessing

これはマスクの位置を調整できるものです。

例えばx軸の値をマイナスにすれば検出時より左に、プラスにすれば右にマスクをずらすことができます。

  • Mask x(→) offset:横軸
  • Mask y(↑) offset:縦軸
  • Mask erosion (-) / dilation (+):拡大縮小

Mask merge modeは修正時の効果を変更できます。

Mergeモードは修正方法を変更しているようで、通常の修正とは異なる結果になりました。

Merge and Invertはマスク以外の部分にADetailerを適用できるものです。画像を見ると顔以外の背景や服が修正されているのがわかると思います。

Inpainting

Inpaintingはマスク部分に対して、さまざまなパラーメータを設定できます。

例えばUse separate checkpointにチェックを入れて、別のモデルを選択すると、検出した部位をそのモデルで修正できます。

左から元画像・anyloraで修正・counterfeitで修正したもの

設定できるパラーメータは以下の通りです。

Use separate noise multiplierだけどういう機能かよくわかりませんでした。

Inpaint mask blur修正した部分を周囲とどの程度馴染ませるか
Inpaint denoising strengthマスク修正時のノイズ除去強度
Inpaint only maskedインペイントをマスクのみに適用
Use separate width/heightマスク内の解像度
Use separate stepsマスク部分の修正を何回行うか
Use separate CFG scaleマスク部分に対するCFG scale
Use separate checkpointマスク部分に使用するモデル
Use separate VAEマスク部分に使用するVAE
Use separate samplerマスク部分に使用するsampler
Use separate noise multiplier不明
Use separate CLIP skipマスク部分のCLIP skipを指定
Restore faces after ADetailerADetailerの後に顔を修正
※自動でcodeformerやGFPGANがダウンロードされます

なお、ControlNetのインペイントを併用すると、ADetailerで検出した部分とControlNetで塗ったマスクの部分を修正できます。

ADetailerで検出された顔とControlNetのマスクで髪修正されたもの

After Detailerの使い方まとめ

今回はAfter Detailerの使い方についてご紹介しました。

修正後のクオリティが高いため、一枚一枚丁寧に生成したい人にはわりと便利な機能かと思います。

img2imgのバッチ機能を使えばまとめて修正もできるので、作業効率化も可能です。

特定の部位を修正したり、画像のクオリティを求めたりしたい方は、ぜひ使ってみてください。

コメント

タイトルとURLをコピーしました