【Stable Diffusion】顔を自動認識して崩れを補正してくれる拡張機能「adetailer」の使い方を紹介!【表情差分】

こんにちは!悠です!

 

txt2imgでfull bodyやmultiple girlsなどのプロンプトを使ってAIイラストを生成すると、どうしても顔の描写範囲が小さくなって細部が崩れてしまいますよね。

そこで今回は、AIイラストの顔を自動認識して崩れを補正してくれる拡張機能「adetailer」について紹介していきます。

「detection detailer(ddetailer)」にとてもよく似た拡張機能になっています!

 

アイキャッチ画像はモデルに「AbyssOrangeMix3」、LoRAに「flat2」を使って生成しています。「flat2」の効果が凄すぎてもう言葉になりません…凄まじい書き込みの量ですし、なぜか手と指の崩れまで防いでくれます。加えて無負荷なので、これは最強のアップスケーラーの1つといってもいいのではないでしょうか。
スポンサーリンク
スポンサーリンク

「adetailer」とは?

「adetailer(After Detailer)」は、生成されるイラストの顔や手を自動認識して崩れを補正してくれる拡張機能です。

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

 

その実例をお見せいたします。

まずは「adetailer」を無効化して、txt2imgで下記のプロンプトを使って画像を生成いたしました。画像サイズは768×512で、モデルには「AbyssOrangeMix3」を使用しています。

【Positive】
masterpiece, best quality, absurdres, highres, official art, multiple girls, group shot, full moon, gothic, black dress, long skirt, black hair, red eyes, medium breasts,
【Negative】
(worst quality, low quality:1.4), (monochrome, greyscale:1.4), nude, bad anatomy, EasyNegative, text, logo, watermark, bad_prompt_version2

 

 

これが「adetailer」を有効化すると下記のようになります。

 

一目でわかるくらい明らかに顔のディテールが向上していますよね。

「adetailer」は、こうやってAIが苦手な小さい領域への描写を補正してくれる拡張機能になっています。

 

「ddetailer」との違い

「adetailer」と似た拡張機能に「ddetailer」というものがあり、こちらも顔を自動認識して補正をかけてくれます。

GitHub - dustysys/ddetailer
Contribute to dustysys/ddetailer development by creating an account on GitHub.

 

この2つの拡張機能の違いは顔の自動認識システムです。

どちらがより正確に認識してくれるのかは正直わかりませんが、「ddetailer」の方は導入する際8GB程度の追加プログラムをインストールする必要があるのに対し、「adetailer」は100MB程度で済みます。

ストレージに優しく簡単に導入できるのが「adetailer」の魅力ですね!

 

なお「ddetailer」のフォーク版である「dddetailer」と「adetailer」の作者は同じ方です。

GitHub - Bing-su/dddetailer: Detection Detailer hijack edition
Detection Detailer hijack edition. Contribute to Bing-su/dddetailer development by creating an account on GitHub.

 

「adetailer」の導入方法

 

ローカル版の場合

「Extensions」→「Install from URL」の「URL for extension’s git repository」に下記のURLを入力しInstallをクリックしましょう。

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

 

 

WebUIを再起動して、After Detailerの項目が増えていれば導入は成功です。

 

旧バージョンのやり方

最新版のadetailerでは、下のようにptファイルをダウンロードして配置する必要はないかもしれません。この工程をスキップしても動作します。

次に「\webui\models\adetailer」に、下記のHugging Faceのページでダウンロードできるモデルデータ(.ptファイル)を全て保存して下さい。

adetailerのフォルダがない場合は新たに作成しましょう。

Bingsu/adetailer at main
We’re on a journey to advance and democratize artificial intelligence through open source and open science.

 

 

Google Colaboratory版の場合

私はColabの有料版を契約していないため、下記で紹介する方法を実際に試すことができません。下の方法で導入できたという方は、ぜひコメント欄で報告していただけると嬉しいです!

 

下記の方法で紹介している「maintained by Akaibu」のノートブックを使って、拡張機能「adetailer」を導入していきます。

まだご覧になっていない方は、まず最初にこちらを準備しておいてください。

【Stable Diffusion】AUTOMATIC1111のWebUIをGoogle Colaboratory上で使う方法!【maintained by Akaibu】
「Stable Diffusion」で、「AUTOMATIC1111」が用意しているノートブック「maintained by Akaibu」を使って、Google Colaboratory上で自分の好きなモデルデータやLoRAを使用する方法についてまとめた記事です。
【Stable Diffusion】AUTOMATIC1111のColab版でLoRAを使う方法について紹介!【maintained by Akaibu】
AUTOMATIC1111のColab版「maintained by Akaibu」でLoRAを使う方法についてまとめた記事です。2.5D風AIコスプレイヤーを作成できる「KoreanStyle2.5D」も紹介しています。

 

Google Driveからモデルデータを読み込むセルの下に新しくセルを作成し、下記のコードを入力します。

#adetailerをインストール
%cd /content/stable-diffusion-webui/extensions/
!git clone https://github.com/Bing-su/adetailer /content/stable-diffusion-webui/extensions/adetailer

%cd /content/stable-diffusion-webui

 

旧バージョンのやり方

最新版のadetailerでは、下のようにptファイルをダウンロードして配置する必要はないかもしれません。この工程をスキップしても動作します。

下記のHugging Faceのページからモデルデータ(.ptファイル)を入手して、Google Drive内に保存してください。

Bingsu/adetailer at main
We’re on a journey to advance and democratize artificial intelligence through open source and open science.

 

git cloneでWebUIを導入するセルの中に、下記のように記述します。

#最新版のWebUIを複製
!git clone https://github.com/AUTOMATIC1111/stable-diffusion-webui
%cd stable-diffusion-webui

!mkdir -p /content/stable-diffusion-webui/models/adetailer

 

Google Driveに保存してあるadetailerのモデルデータを、次の要領で読み込みます。

!cp /content/drive/MyDrive/StableDiffusion/adetailer/face_yolov8s.pt /content/stable-diffusion-webui/models/adetailer

 

「adetailer」の使い方

「adetailer」はtxt2imgとimg2imgの両方で使用することができ、アップスケーラーとも併用できます。

 

使い方は簡単で、After Detailerの項目を開き、Enabled ADetailerにチェックを入れ、ダウンロードしたADetailer modelを選択するだけです。Generateボタンを押せば後は自動で補正してくれます。

なおControlNetのinpaintモデルを保存している場合は、下の方の設定欄で併用することができます。

※使わなくても十分自動補正が効きます。ダウンロードはこちら

 

「face_yolov~」がアニメ系の顔認識、「mediapipe_face~」が実写系の顔認識、「hand_yolov~」が手の認識に使うモデルです。

 

なお、ADetailer promptの欄に表情を表すプロンプトを入力することで、簡単に表情差分が作れます。

【元画像】

 

【ADetailer PromptにCryingを適用】

 

また、Settingsに追加されているAfter Detailerの欄の、Save mask previewsにチェックを入れることで下記のようなマスク画像を同時に保存することができます。

 

 

2つのモデルを同時利用できるように!

拡張機能のアップデートで、「adetailer」で2つのモデルを同時に利用できるようになりました。

これにより顔の修正と手の修正を1クリックでできるようになりました。神過ぎる…!

 

「adetailer」の欠点

「adetailer」の唯一の欠点として、AIイラスト生成後に顔を補正する処理が入るため、生成時間が約2倍になります。

MultiDiffusion等のアップスケーラーと併用した場合、補正処理が複数回挟まれるため、更に遅くなります。

これが最大の難点ですね。

 

ですので、face close upやupper body、portraitのようなプロンプトを使って、顔のアップ・上半身に注目した画像を生成する際は無効化しておくことをおすすめします。



まとめ

以上が「Stable Diffusion」で、AIイラストの顔を自動認識して崩れを補正してくれる拡張機能「adetailer」の使い方でした。

同じような拡張機能の「ddetailer」と比べて導入が簡単なので、ぜひ試してみてはいかがでしょうか?

では、ここまで読んでいただきありがとうございました。

コメント

  1. saito より:

    はじめまして、これはすごい機能ですね。解説して頂きとても助かります。質問なのですが、「手を補正しつつ顔も補正する」といったように、複数のモデルを適用するにはどうしたらいいのでしょうか?

    • 悠 より:

      コメントありがとうございます!

      初期設定のままだと2つのモデルを同時には使えないんですが、adetailerのissueを見ていたところ、解決策が挙がっていました。
      https://github.com/Bing-su/adetailer/issues/17

      これによると、extensionsフォルダ内のadetailerをコピーする(多分名前を変えて複製する?)とできるっぽいです。
      まだ試していないんですが、adetailerの項目が2つできて、そこで別々のモデルを選べるのかもしれません。

      • saito より:

        早速のご回答ありがとうございます!別名でコピーしたらまさにその通りになりました。本当に助かりました、ありがとうございます!

  2. va より:

    3日前からはじめてこのサイトに行き着き、とても助かっています。ありがとうございます。
    adetailerの拡張機能を導入できたのですが、t2iで使用すると98%で止まったまま生成が完了されません。

    stable diffusion webuiはCドライブ直下に入れ、Lora以外は日本語を避けたディレクトリ名にしています。
    環境は python: 3.10.9  •  torch: 2.0.0+cu118  •  xformers: 0.0.17  です。

    コマンドプロンプトに下記の表示が出ていたため、stable diffusion webuiを最初から入れ直してみましたがだめでした。(管理者権限でwebui-user.batを起動してみましたが起動しませんでした。)
    何が問題なのでしょうか。

    [-] ADetailer: if you get stuck here, try moving the stable-diffusion-webui to a different directory, or try running as administrator.

    • 悠 より:

      コメントありがとうございます!

      特にエラーメッセージは表示されていないけど、生成が98%で止まってしまう感じなのですね。
      拡張機能の不具合で良くありがちなのが、
      ・Python3.10.6では無いから動かない
      ・webuiコミットが新しいすぎるor古すぎる
      です。

      Pythonを3.10.9ということなので3.10.6にする、または下の記事の方法でコミットをダウングレードしてみるとどうでしょう?
      https://yuuyuublog.org/localwebui_update/

      ちなみにどのコミットを使用されています?webuiを起動してコマンドプロンプトに現れるcommit hashってやつです!

      拡張機能自体のアップデートとかも試してみてください!
      https://yuuyuublog.org/sdextensions_update/

      • va より:

        早急の返信ありがとうございます。
        Pythonを3.10.6にコミットを5ab7f213bec2f816f9c5644becb32eb72c8ffb89から
        上記記事内で推奨されていたa9fed7c364061ae6efb37f797b6b522cb3cf7aa2や
        4月20日リリース7ef5551634f8d06301929cb43069f5bf37ee8f1aに変えてみましたが改善されませんでした。
        拡張機能のアップデートは確認し最新版でした。

        • 悠 より:

          その辺が原因じゃありませんでしたか…エラー出ないのは厄介ですね….

          1度adetailerの方をextensionフォルダから削除して、再インストールしてみるとどうなりますでしょうか?

          後これが原因だったらすごい面倒なんですが、拡張機能の競合の可能性もあるかもしれません。

          adetailer以外の拡張機能を個別に無効化していって原因になっていないか探るとかも試してみてください!