見出し画像

AIイラストの瞳や手を手軽にキレイにしよう(After Detailer等)

AIで絵を作成する方法は様々ですが、今の所どの生成サービスでも「手」や「目(顔)」に課題を抱えていることが多いように思います。
そこで拡張機能やプロンプトを駆使して、品質を向上しよう!という記事です。
主にStable Diffusion の After Detailerという拡張機能のお話ですが、この記事の真ん中くらいにNovelAIでも使えるプロンプトに関するテクニックも簡単に載せておきます。

After Detailer(stable diffusion)

この拡張機能を導入することで、手や顔などを自動で認識して補正してくれます。
実際に使ってみたイメージは以下です。

左側の画像がツールでの補正後、右側が補正前(顔が認識されたところを出力する設定にしています。)

手前側の補正はわかりにくいですが、奥にいる人物の顔は確かに鮮明になっています。

左が補正後。右が補正前。(拡大)

インストール方法

 これもインストイールは簡単で、以下のアドレスを「拡張機能」の「URLからインストール」のURL欄に貼ってインストールボタンを押すだけです。

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

アドレス
イメージ

この機能は今も頻繁にアップデートが行われています。
自分が導入したタイミングでは、1回の実行で顔または手など1つしか選べませんでしたが、さきほどアップデートしてみたら2つ選べるようになっていました。

使い方

パラメータが大量にありますが、基本的にそのままで大丈夫です。
気にしたら良いのは「Enable」にチェックが入っていることと、「ADetailer model」に自分が適用したいモデルがあるかどうかでしょうか。

モデルはインストールしたデフォルトでもいくつか入っていますが、追加で導入したい場合は以下にも置いてあります。(配布元にも説明はありますが)

以下に簡単にそれぞれの項目の説明を載せておきます。

・ADetailer prompt (negative)
入力されたプロンプトをここで記述されたプロンプトに上書きして出力します。
例えば元のプロンプトで口を閉じていたとしても、ここで「open mouth」とすれば口を開けた表情になります。
シード値を固定すれば、表情差分を簡単に作れるでしょう。

・Detection model confidence threshold %
閾値です。この値によって認識される顔(や手)について補正するかしないかを制御できます。
例えば、値を85としたとき以下のように認識されます。
実行する都度揺れはありますが、手前の2人が85以上で認識されたため補正対象となり、後ろ真ん中の1人が補正対象外になっています。

ただ、これは基本的にデフォルトの30でいいかな、と個人的には思います。
むしろ、顔が小さくなっている(後ろ側にいる)人物ほど崩れがちなので、それを補正してくれてこそだと思います。
ただし、人が多く描かれる場合には、それら1人1人を対象として補正の処理が走るのでものすごく時間がかかります。なので、事前にそれらを省略したい!って時には使えるかも?

・1nd、2ndのタブ
これは最近追加されたようですね。
同時に手と顔を補正できるようになっていました。

2枚を繋げていますが、1nd(左側)で顔を、次に2nd(右側)で手を検出して補正しています。

ただ、処理時間は当然長くなります。
加えて、必ずしもキレイになるわけでもないですし、指が6本になってしまった時などは、キレイな指が6本になるだけなので、その辺はまた別の手(プロンプトを変える、Controlnetか手で修正)を検討する必要があります。

プロンプトを工夫しよう

NovelAIの場合は特にプロンプトの工夫で品質が大きく変わります。(拡張機能は入れることができませんしね。)
よく言われる「best quality」「ultra detailed」もそうですが、何を強調したいのかも記述すると品質は格段に良くなります。

プロンプト①:{{eye focus,Character focus}},from below,{{{illustration}}},{{{best quality}}},{ultra detailed},{super detailed skin},{cinematic lighting},1girl,{junior},{{face)}},{{{black maid,maid apron},big hair ribbon}},standing,{{{garden}}}, short hair,brown hair,twin braids,{{{:o,head tilt}}},{Blue hour},hold someone's hand,{{clear background}},

上記の画像はNovelAIだけで作成していますが、クオリティタグに加えて、目や顔に注目するようなタグ({{eye focus,Character focus}})も追加しています。
こうすると、NovelAIだけでも目の品質が格段に向上します。

ここでちょっと思うこととしては、そのタグが本当に効果があるのかな?というところだと思います。
そんな時はシード値を固定して、プロンプトから削ったりしてみるとよいです。

PCだと右下にシード値が表示されています。
押すと左側の設定のところにこのシード値がコピーされます。

上記の画像のプロンプトに謎の「clear background」というのがありますが、これはdanbooruのタグには存在しません。
直感的に、背景と人物の境界をもっとはっきりさせたかったので入れてみました。

本当に効果があるのか、というのをシード値固定して再度生成してみます。

clear backgroundを外してみたもの

瞳が大きく変わりましたが、背景にも微妙に変化が見られます。
次にさらに強調させて({{{{clear background}}}})実行してみます。

物凄くわかりにくいですが、左側が未適用。真ん中が上記のプロンプト①で、右側がそれを倍にしたもの
gifアニメを使った比較。微妙に濃淡が変わっています。

というように、直感的にいけそうなタグ(プロンプト)を自作しても、わりと良い感じに思った通り?に作ってくれます。
これがプロンプトで作るイラストの面白いところでもありますね。

おまけ

シード値を固定してサンプラーを変えてみます。
上記ではDPM++ 2Mを使用していましたが、Euler Ancestralにしてみます。

全体的に濃淡がはっきりして、これはこれで良いですね。

他にもステップ数を変えてみたりしても印象は変わってきます。

ステップ数40。これ以外は28で生成。

ネガティブプロンプトを工夫しよう

Stable diffusionの話に戻ります。
以下に紹介するものも、手軽であるにも関わらず、わりと大きく品質向上に役立ちます。
いくつかバリエーションはありますが、自分は以下を使っています。
使い方は物凄く簡単で、

上記のファイルであれば、ダウンロードした後に以下のフォルダに格納します。
webui\embeddings
そして、ネガティブプロンプトに「negative_hand-neg」と入れるだけです。

おまけ

目や手の話ではないですが、その他にも個別にやって欲しくないことを追加するとよいです。
結構忘れがちですが、ネガティブプロンプトも活用すると本当に生成が安定してきます。
例えば、「bowl cut hair」という単語を入れて生成した際に、ボールを持ったままの人が生成されがちですが、ネガティブプロンプトに「((((bowl))))」を入れると、それが抑制されます。


この記事が気に入ったらサポートをしてみませんか?