『体はいい感じなのに顔がちゃんと生成されてない……』
『顔だけなんか崩れちゃう……』
AI画像生成をしていてこんな困りごとはないでしょうか?
特に引きの構図や体全体を映した構図にするとこの現象が起こりやすくなります。
↓↓↓ 顔がちゃんと生成されてない…… ↓↓↓
こんな時に使えるのが、「ADetailer」というプラグインです!
ADetailerを使用すれば顔の崩れを簡単に補正することが可能です!
↓↓↓先ほどの画像にADetailerを使用したものがこちら!↓↓↓
顔の精度が格段に上がっていますね!
今回はADetailerの導入方法から、使用例までを紹介します!
インストールさえ出来ればあとは非常に簡単に使うことができ、リアル調からイラスト調まで幅広く対応しているので、とてもおすすめのプラグインです!
ADetailer のありなし比較
【 ADetailer のありなし比較 】
↓↓↓ 真ん中のつまみをスライドして比較できます! ↓↓↓
【イラスト系の画像の場合】
イラスト系のサンプルも載せておきます!
イラスト系の画像でも顔の精度が上がっていますね!
そのほか、この記事の最後に筆者が生成したサンプル画像をいくつか載せてます!
プロンプトも併せて記載しているので、そちらもよければ参考にしてみてください!
↓ここからも飛べます↓
【STEP1 導入】ADetailerの導入方法
では、ADetailerの導入方法から紹介していきます。
※Stable diffusion webUI (AUTOMATIC1111)が導入済みのことが前提となりますのでご注意ください。
① ADetailerをインストールする
Stable diffusion webUI (AUTOMATIC1111)を起動し、
上部に表示されるグローバルナビから「Extensions」を選択します↓
次に「Install from URL」タブを選択します↓
▼URLの入力とインストール
「Install from URL」タブが表示出来たら、
↓①②の手順でURLの入力とインストールを行います。
① URLを入力:一番上のテキストボックスにURLを入力します
[URL]
https://github.com/Bing-su/adetailer
②「Install」ボタンをクリック:URL入力後、「Install」ボタンをクリックします。
それから数秒待つと
「Installed into (※webUIのフォルダパス)/extensions/adetailer. Use Installed tab to restart.」
というメッセージが表示されます↓
このメッセージが表示されれば、インストールが正常に完了しています。
後は、Stable Diffusion WebUI に適用すれば ADetailer が使用できるようになります。
② Stable Diffusion WebUI に ADetailer を適用する
インストールが完了したら、
Stable Diffusion WebUI に ADetailer を適用する必要があります。
まずは、「Installed」タブに移動します。
表示される一覧(↓画像参照)に“adetailer”が追加されていることとチェックが付いていることを確認して、
「Apply and restart UI」ボタンをクリックします。
すると、Stable Diffusion WebUIが再起動されます。
再起動後、「txt2img」タブに移動し、
「ADetailer」が追加されていれば適応が完了です(画像の下のほう↓)
以上で、「ADetailer」の導入作業は完了です!! お疲れさまでした!
※もし追加されていない場合は、Stable Diffusion WebUIを一度完全に終了し再起動すると追加されるはずです。
これで準備は整いました!🎉
後は画像生成するのみです!!✨✨
【STEP2 実践】では、実際に使ってみましょう!
「ADetailer」はとても簡単に使用できます!
顔の精度を上げるだけなら、基本的に「txt2img」または「img2img」のどちらかで、
ADetailer を有効にするための ☑ボックスをオンにするだけです!
- 「txt2img」:
-
テキストtoイメージ。
プロンプト(テキスト文字列)から画像をAI生成します。ADetailerを有効化すると、生成時点で同時に顔の補正までしてくれるので便利です。本記事ではこちらに重点を置いて説明しています。 - 「img2img」:
-
イメージtoイメージ。
指定した画像をもとに画像をAI生成します。
すでに生成済みの画像から顔だけ補正したい場合はこちらを使います。
細かい設定値の調整等はしなくても、高いクオリティで顔の補正を行ってくれるのがADetailerの強みですね。
↓↓↓ では!画像を交えて、実際の使用例を紹介していきます! ↓↓↓
「txt2img」で使用する場合
「txt2img」タブに移動します
次に、プロンプトを入力します。
ここはいつも通り生成したい画像の設定値を入れていってください。
参考に筆者が使ったプロンプトを載せておきます!
↓↓↓今回はこんな感じのシンプルな設定で生成してみました。↓↓↓
使用モデル:
beautifulrealistic_v60
プロンプト:
3girl
ネガティブプロンプト:
EasyNegativeV2
生成サイズ:
Width : 600
Height : 960
その他 (初期値のまま):
Sampling method:Euler a
Sampling steps:20
CFG scale : 7
あとは、ADetailerの設定をしていきましょう!
ADetailerが正常に導入できていれば、
↓のように、画面上に「ADetailer」というタブがあると思いますのでクリックします。
すると、「ADetailer」のタブが開き↓のようになります。
このエリアの中が、ADetailerに対する設定値を入力するエリアとなります。
ではまずは、エリアの上の方、ADetailerと書いているところのすぐ下の
「Enable ADetailer」にチェックを入れましょう!(↓の画像を参照)
これによって、ADetailer有効状態となります。
これが、ADetailerを使う上で一番大事な作業です😁
「あれ? ADetailerがうまく動いてない?」ってときはまずここのチェックを忘れてないか確認しましょう。
そして、顔の補正で必要なのはひとまずこれだけです!
その他の設定は初期値のままで問題ありません!!
では、画像を生成してみましょう!
~~~~画像生成中~~~~
生成できました!
今回は、わかりやすくするために「ADetailer なし」と「ADetailer あり」の2パターン生成してみました!
↓↓↓生成結果がこちら↓↓↓
ADetailerなしの場合は少し顔が崩れていますが、ADetailerありの場合は綺麗に顔が補正されています!
これがADetailerの効果です!
今回は、チェックボックスをオンにするだけで上記のような顔の補正を行いましたが、
先ほど少し触れた、ADetailerに対する設定値を入力するエリアの設定値を調節することで
生成結果をある程度コントロールすることもできます。
設定値については「【応用編】~」としてこの記事の後の方で少し触れています。
「img2img」で使用する場合
「img2img」で使用する場合も「txt2img」と同様に、
普段の使用方法に追加してADetailerのタブから「Enable ADetailer」のチェックボックスをオンにするだけです。
なお、元画像から顔だけ補正したいときは、
”Denoising strength”を「0」にすればうまくいきます。
また、「img2img」では顔のみに補正をあてることができるので、うまく使用すれば表情差分を作成することもできます!
「img2img」での詳しい使い方や、ADetailerを使った表情差分の作り方については、こちらの記事にまとめています!
もし興味があれば見てみてください!!
【備考】ADetailerの注意点
手軽に顔の補正ができるADetailerですが、
ADetailerを使用した場合、画像の生成時間が通常の1.5~2倍程度かかってしまうので注意が必要です。
時間がかかる理由には、どのようにADetailerが顔を補正しているかという仕組みが関係していますので、その部分について軽く解説します。
ADetailerは、まず、補正対象の画像から↓のように顔を自動で抽出します。
そして、抽出した顔の部分を抜き出し、それぞれに対して再生成処理を行います。(※”Inpaint”に近い仕組みと言われています。)
これによって顔の描画精度を高めているのですが、そのぶん画像生成に時間がかかってしまうという訳です。
特に、補正対象の顔の数が多いほど時間が多くかかるのでご注意ください。
ADetailerが抽出した範囲を確認する方法
↓こちらの画像のように、ADetailer抽出した範囲を確認したい場合は以下の設定を行うと見れるようになります!
手順
「Settingsタブ」→「ADetailer」を選択
表示される設定から以下の項目にチェックを付ける。
「Save mask previews」:ここを有効にすることで、ADetailerがどのように判定しているかの画像が「outputs」は以下に出力されるようになります。
「Save images before ADetailer」:修正前の画像も確認したい場合はこちらも有効にします。
【パラメーター解説】ADetailer のパラメーターについて解説!
まずはよく使うパラメーターについてより詳しく解説し、その後に一覧で解説したいと思います。
「face_yolov8n.pt」とは?
では最初に、ADetailerで特によく使うパラメーターについて、紹介していきます!
ご紹介するのは以下の3つのパラメーターです。
・① ADetailer model
・② ADetailer prompt
・③ ADetailer negative prompt
「face_yolov8n.pt」については、「① ADetailer model について」の項目で説明いたします。
① ADetailer model について
1つ目に紹介するパラメーターは「ADetailer model」です。
ADetailerを開いたときに一番上に表示されているパラメーターで、初期値では「face_yolov8n.pt」となっています。
ここで選択できるパラメーターは以下となります。
モデル名 | 内容 |
---|---|
face_yolov8n.pt (初期値) | 2D/リアルな顔 (バージョンn) |
face_yolov8s.pt | 2D/リアルな顔 (バージョンs) |
hand_yolov8n.pt | 2D/リアルな手 |
person_yolov8n-seg.pt | 2D/リアルな体 (バージョンn) |
person_yolov8s-seg.pt | 2D/リアルな体 (バージョンs) |
mediapipe_face_full | リアルな顔 (”full”方式で顔を検出) |
mediapipe_face_short | リアルな顔 (”short”方式で顔を検出) |
mediapipe_face_mesh | リアルな顔 (”mesh”方式で顔を検出) |
None | ※ADetailerを無効にする |
「face_yolov8n.pt」「face_yolov8s.pt」と同じようなものが2つあると思いますが、末尾の”n”、”s”の違いはバージョンの違いを示しており、それぞれで若干性能が変わります。
・「8n」(Nanoモデル) のほうが生成速度が速いことが特徴で、その代わり顔を検出する確度が落ちます。
・「8s」(Smallモデル) は確度が高いですが、その代わり生成速度が遅くなります。
速度優先か、確度優先かでその都度使い分けるのが良いでしょう。
[ADetailerの注意点]の欄で説明したように、ADetailerは元画像から顔などの特定の物体を検出し、抜き出して補正しているのですが、その時に使用する仕組みがこの各モデルとなります。
例えば、「face_yolov8n.pt」を使用する場合は、
”yolov8n”という物体検出の仕組みで”顔”のみを検出するモデルを使用するという感じです。
お気づきの方もいるかと思いますが、ADetailerではこのモデルを変えることで、
顔の補正のほかに「手の補正」や「体の補正」もできます(ただ、顔の修正力に比べれば弱い印象です)。
もし顔と手の両方に補正をしたいという場合は、ADetailerのタブの1st・2ndそれぞれに各モデルを設定することもできるので、気になる方は試してみていただければと思います。
各モデルの違いについても触れておきます。
ADetailerでは、大きく分けて「yolov8」と「mediapipe」の2種類の物体検出モデルが用意されています。
yolov8 : 2D/リアル両方ともに検出能力に優れている。
mediapipe:リアル系の検出能力に優れている。また、「full」「short」「mesh」と検出方法が選べる。ただし、yolov8より検出能力は低い印象。
細かい部分の説明は省きますが、「yolov8」のほうが、イラスト系・リアル系どちらでも使用できることに加え、検出能力もmediapipeより高いので、筆者としては「yolov8」のほうがおすすめです。
【備考メモ】
● yolov8(ヨーロー・ブイハチ) : Ultralytics社が公開している物体検出モデル”YOLO”シリーズのバージョン8。YOLOとは「You Only Look Once(見るのは一度だけ)」の略称。
※物体検出モデルとは取り込んだ画像や動画から”顔”のように特定の物体をAIで抽出するための仕組みです。
face_yolov8n.pt(Nanoモデル):
パラメータ数が少ないため、軽量で処理速度が速い。リソースの少ない環境でも使用可能だが、その分精度がやや低くなる傾向がある。
face_yolov8s.pt(Smallモデル):
Nanoモデルよりもパラメータ数が多い。これにより、精度が向上し顔認識の性能も上がっているが、処理速度やメモリ使用量も増える。
● mediapipe(メディアパイプ) : Googleで開発を主導しているオープンソースの機械学習ライブラリー。
mediapipe_face_full:
顔全体の詳細な解析を行う。精度が高いがそのぶん重い。
mediapipe_face_short:
簡略化された顔検出モデル。精度よりも処理の軽量さを求められる場合に有用。
mediapipe_face_mesh:
3Dメッシュの顔解析が可能。ARや3Dアバターなど立体的な顔解析を行う際に最適といわれる。
② ADetailer prompt について
2つ目に紹介するパラメーターは「ADetailer prompt」です。
プロンプトという名称からなんとなく予想できるかもしれませんが、ここでは補正する箇所のみに適用できるプロンプトを指定できます。
例えば「smile」と入力すれば、笑顔に補正することができます。
「img2img」でこれを使用することで表情差分の画像が作れたりするので楽しいです!
なお、ここに何も入れない場合は、メインのプロンプトに記載しているものが自動で採用されます。
ADetailerを使った表情差分の作り方については、こちらの記事にまとめています!
もし興味があれば見てみてください!!
③ ADetailer negative prompt について
3つ目に紹介するパラメーターは「ADetailer negative prompt」です。
名前の通り、「② ADetailer prompt」で紹介したもののネガティブプロンプト版です。
補正する箇所のみに適用できるネガティブプロンプトを指定できます。
こちらも、何も入れない場合はメインのネガティブプロンプトに記載しているものが自動で採用されます。
よく使うパラメーターについては以上となります。
各パラメーターを一覧で解説!
ADetailerの各設定値についての一覧で解説します
それぞれの見出しをクリックすることで開閉できます!
↓↓↓↓
モデル、プロンプト の設定値一覧
ADetailer model, prompts(モデル、プロンプト)の設定値
(ADetailerで使用する物体検出モデル) | ADetailer model何を検出するかを決定するモデル仕組みを設定します。 ※後ほど詳しく記載しています。 | None = 無効にする |
(ADetailerで使用するプロンプト) | ADetailer prompt, negative promptADetailerに適用するプロンプトとネガティブプロンプト。 ※後ほど詳しく記載しています。 | 空白のままにすると、メインのプロンプトと同じものが自動で使用されます。 |
Detection タブの設定値一覧
Detection(検出)。補正対象を検出するときに、対象範囲を絞り込むための設定値です。
(検出モデルの信頼しきい値) | Detection model confidence threshold検出モデルの信頼度がこのしきい値を超えるオブジェクトのみが修復に使用されます。 デフォルトでは「0.3以上」を対象とする設定となっています。 |
(マスクの最小/最大比) | Mask min/max ratio画像全体の面積に対してこれらの面積比率の間にあるマスクのみが修復に使用されます。 上の「 Detection model confidence threshold」が信頼度によって区別するのに対し、こちらはその面積によって区別します。 |
「Detection model confidence threshold」についての補足
ここでいうしきい値ですが、ADetailerでは画像を読み込んだ後に物体検出を行い、それが対象物である確率(=信頼度)を割り出しています。(↓の参考画像の場合だと、0.84の確率で顔であるというような意味)
しきい値はこれの足切りを行うときのしきいとする値です。「0.3以上」と設定している場合は、それより少ない確率のものは対象から除外するという扱いとなります。
Mask Preprocessing タブの設定値一覧
Mask Preprocessing (マスクの前処理)。修復する範囲を微調整するための設定値です。
(マスク x、y オフセット) | Mask x, y offsetマスクを水平方向と垂直方向に移動します。 ADetailerが物体検出した位置から、指定した座標ぶんだけ修復する位置をずらすことができます。 |
(マスクの侵食 (-) / 膨張 (+)) | Mask erosion (-) / dilation (+)検出されたマスクを拡大または縮小します。 ADetailerが物体検出した範囲から、修復する範囲を拡大または拡張します。 |
(マスクマージモード) | Mask merge modeNone : 各マスクを修復します。Merge : すべてのマスクを結合して修復します。Merge and Invert : すべてのマスクを結合して反転してから修復します。 |
Inpainting タブの設定値一覧
Inpainting (修復)。各オプションは、img2imgタブの inpaintオプションと同じ意味合いとなっています。
※筆者的に、設定値いじることがあるのは「 Inpaint denoising strength(ノイズ除去の強さ)」くらいかなと思います。
(マスクのぼかし) | Inpaint mask blurマスク部分との境界線へのぼかし設定です。 値が小さいほど境界線がはっきりと見えるようになります。 |
(ノイズ除去の強さ) | Inpaint denoising strengthdenoising strengthとは、元画像からの変化の度合いを設定する値となります。 この値が小さいほど元画像に忠実に、逆に大きいほど元画像から大きく変化した画像が生成されます。 デフォルトでは「0.4」が設定されています。 プロンプトの効き目が悪かったり、眉毛が2重で現れてしまうなどの問題がある場合はここの数値を調整すれば解決することがあります。 ※Inpaintingタブの中では比較的よく使う項目です。 |
(マスクのみを修復するか) | Inpaint only maskedチェックボックスで有効・無効を設定。 指定しているプロンプトや設定、使用するチェックポイントなどをマスクの範囲のみで使用するかを選択できます。デフォルトで有効となっており、基本的に変更する必要はないかと思います。 有効にした場合「 Inpaint only masked padding, pixels」が活性化され、マスク部分から、指定したピクセル分だけ拡張して適用範囲を広げることができます。 |
(幅と高さを別に使用する) | Use separate width/heightチェックボックスで有効・無効を設定。 マスク部分を補正した後に出力される補正部分の画像サイズを指定できます。 例えば、ADetailerとアップスケーラー併用してマスク部分だけ解像度が低いままでぼやけてしまうという場合、こちらを有効にして「inpaint width/height」をアップスケール後のサイズを指定することでぼやけを回避することができます。※ただ、サイズの計算とかが割とめんどくさいのであまりお勧めはしません。 |
(stepsを別に使用する) | Use separate stepsチェックボックスで有効・無効を設定。 「Sampling steps」と同じものです。ADetailer内のみでstepsを変更したい場合に設定します。 なお、Sampling stepsとは、画像生成にあたっての計算(ノイズ除去)を何度実行するかという設定です。回数を増やせば増やすほど画像は精密・緻密になっていきますが、かわりに処理の負荷や処理時間が増大します。 |
(CFG scaleを別に使用する) | Use separate CFG scaleチェックボックスで有効・無効を設定。 「CFG Scale」と同じものです。ADetailer内のみでCFG Scaleを変更したい場合に設定します。 なお、CFG Scaleとは、どのくらいプロンプトに従うかという設定です。この値が大きいほど、よりプロンプトに忠実な画像が生成されるようになります。ただし、この値を大きくしすぎると画像の破綻(ノイズが多い、絵が崩れるなど)が起こりやすくなるというデメリットがあります。基本的には「7~10」が推奨されています。 |
(noise multiplierを別に使用する) | Use separate noise multiplierチェックボックスで有効・無効を設定。 初期ノイズに小さな係数を乗算すると、高いノイズ除去値を使用せずに、より詳細な img2img 結果が得られます。 「Noise multiplier for img2img」を”1″以下にすると、生成後のノイズが少なくなりますが、やりすぎると画像の輪郭がぼんやりとなる印象です。反対に”1″以上に増やしていくと、ノイズが増えますが、輪郭ははっきりしたものになる印象です。 |
(ADetailerの後にRestore facesを使用する) | Restore faces after ADetailerチェックボックスで有効・無効を設定。 「Restore faces」と同じものです。有効にすると、ADetailerで補正した後にRestore facesを実行することができます。 「Restore faces」は、リアル系の画像出力する場合に、顔をよりリアルに補正する機能です。イラスト系の画像の場合はあまり恩恵が得られません。 |
「Restore faces after ADetailer」についての補足
「Restore faces」はメインの設定入力のところにあるチェックボックスのやつです。
↓↓これです↓↓
ControlNet model タブ
ControlNet がインストールされており、ControlNet モデルがある場合は、ControlNet 拡張機能を使用できます。
controlnet modelsをサポートしますinpaint, scribble, lineart, openpose, tile
。モデルを選択すると、プリプロセッサが自動的に設定されます。これは、Controlnet 拡張機能によって設定されたモデルとは別に動作します。
【ギャラリー】ADetailerを使って生成した画像を紹介します!
ADetailerを使っていくつか画像生成してみたのでサンプルに掲載します
リアル系
リアル系①
↓↓↓ 真ん中のつまみをスライドして比較できます! ↓↓↓
使用モデル:
beautifulrealistic_v60
プロンプト:
american shot,perfect lighting,looking at viewer,common scenery,dasha,3girl,teens
ネガティブプロンプト:
BadDream, (UnrealisticDream:1.4)
生成サイズ:
Width : 720
Height : 1024
その他:
Steps: 30, Sampler: DPM++ SDE Karras, CFG scale: 9, Seed: 2351005270
ADetailer model:
face_yolov8n.pt
リアル系②
↓↓↓ 真ん中のつまみをスライドして比較できます! ↓↓↓
使用モデル:
beautifulrealistic_v60
プロンプト:
head shot, looking at viewer, common scenery, 2girl, teens
ネガティブプロンプト:
BadDream, (UnrealisticDream:1.4)
生成サイズ:
Width : 1024
Height : 720
その他:
Steps: 30, Sampler: DPM++ SDE Karras, CFG scale: 9, Seed: 2817296090
ADetailer model:
face_yolov8n.pt
イラスト系
イラスト系の画像も補正してくれるので紹介します!
イラスト系①
↓↓↓ 真ん中のつまみをスライドして比較できます! ↓↓↓
使用モデル:
ghostmix_v12
プロンプト:
overhead_shot, looking at viewer, common scenery, (10+girls:1.5), teens, happy, smiling, diverse_expressions
ネガティブプロンプト:
BadDream, (UnrealisticDream:1.4)
生成サイズ:
Width : 1024
Height : 720
その他:
Steps: 30, Sampler: DPM++ SDE Karras, CFG scale: 9, Seed: 3521029619
ADetailer model:
face_yolov8n.pt
イラスト系②
↓↓↓ 真ん中のつまみをスライドして比較できます! ↓↓↓
使用モデル:
ghostmix_v12
プロンプト:
overhead_shot, looking at viewer, common scenery, (10+girls:1.5), teens, happy, smiling, diverse_expressions
ネガティブプロンプト:
BadDream, (UnrealisticDream:1.4)
生成サイズ:
Width : 1024
Height : 720
その他:
Steps: 30, Sampler: DPM++ SDE Karras, CFG scale: 9, Seed: 3425343364
ADetailer model:
face_yolov8n.pt
以上です!
ここまで読んでいただきありがとうございました!!<(_ _)>
コメント