ComfyUI
のImpact Pack
に含まれるFace Detailer
というノード。
こちらはwebUI
でいうところのADetailer
に近い動きで、1度生成された画像から顔のみを検出し再描画するノード
ご存知だと思うがAI画像生成は小さいサイズで生成する場合に顔がキレイに出ないことが多いため、このノードは重宝する。
今回の方法を使うと左の画像から右のように顔だけ修正可能
元絵 | FaceDetailerをかけた後 |
---|---|
あまり気合をいれてやっていないが、頑張ればもっと良いものが出来ると思う。
こちらはImpact Pack
に含まれるノード。
インストール方法や詳しい設定などは解説しないので注意。
※細かい設置などは筆者もよく分かっていない。
Impact Pack
のインストール以外にも顔を検出するモデルを用意しておく必要がある。
こちらはComfyUI Manager
を利用してインストールすることを推奨しているので、やり方がわからない場合は次の記事を参照してほしい。
ComfyUI Manager
のInstall Models
からdetector
で検索する。
その中から次を入れておく
sam model
で検索し、次を入れておく
ComfyUI Manager
を利用した場合、保存場所などを気にする必要はない。自動でやってくれる。
上の各モデルは筆者が動作確認したものだが、同型の亜種が複数存在するためそちらでも良い。
検知する精度や処理速度に差があるらしいのだが、詳細な違いまで調べていないので気になれば別途調べてほしい。
検索でFaceDetailer
ノードを出して、上の基本的なノードを接続しておく。
上部はKSampler等に入力する感じでOK。特別なノードを挟む必要はない。
こちらにはUltralyticsDetectorProvider
というノードを繋ぎ、中にface_yolov8nv2.pth
を入れる。
BBOX_DETECTOR
からピンを出すこと。
このノードは上でDLした顔を検出するモデルを読み込む物。
また、ここでは「bbox」と接頭辞がついており、これは四角形のざっくりとした切り抜きで検出することを意味している。
つまり顔意外の部分もまとめて検出される。
検出される画像サンプル
こちらはSAMLoader
というノードを出してsam_vit_b_01ec64.pth
を入れる。
こちらopt(恐らくoptionの意)と書いてある通り入力しなくても良い。
公式の解説ではこれを入力しているので、恐らく検出の補助の役割をするのでは?と考えているが現時点でよくわかってないのでとりあえず繋ぐレベル。
SAMモデルがどんな検出をしているのかについては次で少し触れている。
こちらもUltralyticsDetectorProvider
ノードを繋ぎface_yolov8n-seg2_60.pt
を入れる。
最初のBBoxに対してこちらがセグメントを出力するもの。
BBoxが四角形の大雑把な範囲だったのに対し、こちらは自動で顔の部分だけくり抜いてくれる。
切り抜いたサンプルが次
私もsegmだけで良いのでは?と思っているのだが、このノードはBBoxに対応するDetectorが入っていないとエラーで動作しないようになっている。
私の使い方が悪いのかもしれないが、逆にBBoxのfaceのみだとなぜか顔そのものを検出しないことがありsegm側も接続しておくことをおすすめする。
個人的に設定しておきたい箇所だけ記す。
試した限りだと1024x1024ぐらいのサイズでは小さすぎて顔が再描画されても美しくならなかった。
元絵はアップスケーラーで1500以上とか2000以上ぐらいまで大きくしたほうが良いかも?というのが個人的な経験談。
ここは違うかもしれないので要検証。
当然ではあるがここに入れるチェックポイントを変えると、そのチェックポイントに寄った顔が出てくる。
ここで顔が苦手なチェックポイントを入れてしまうとFaceDetailer
を通しても顔は良くならないので、このあたりは注意しておきたい。
逆を言えば「顔は苦手だが個性があるチェックポイント」で画像を生成した後「顔が得意なチェックポイント」で再描画してやると面白いかもしれない。
サンプラーとスケジューラーは出てくる顔に大きな影響を及ぼしていることを確認している。
デフォルトのeuler
で良くならないことが多いので、ここはよくあるdpmpp_2m
のkarras
などにしておくのが良いかもしれない。
dpmpp_3m_sde
も個人的に良い。
下部にプロンプトを入力する欄があるので、ほしい表情はここで入れる。
クオリティに影響するというか、表情がある場合はここで確実に表情を入れておきたい。
上の画像の下部についているcycle
だが、単純にこれを2にするだけで再描画が2週かかることになる。
かけ過ぎも良くないのだが2週、3週ぐらいまでは良くなるパターンもあるのでここも試しておきたい。
単純に1週のほうが良いケースもあるため何度か調整したい。
Denoise
の値やguide_size
あたりも影響しそうに思うが、個人的にここは調整しても上手くいかない事が多いのでデフォルトで良いと思う。
Impact Pack
周りは情報が少なく、実験している時間もそれほど取れないためザックリとした記事となってしまった。
しかしながら、そもそも使い方がわからないケースが多いと思うのでこの記事がいくらか役に立つとは思う。
顔は調整次第でかなり良くなるので試してみてほしい。