2024-01-21

【Impact Pack #2】顔を再描画!Face Detailerの使い方【ComfyUI】

ComfyUIにて顔だけ描画し直すノードを紹介!ひとまず動けば良い人向け!

Article Image

顔を再描画するFace Detailerの使い方

ComfyUIImpact Packに含まれるFace Detailerというノード。

こちらはwebUIでいうところのADetailerに近い動きで、1度生成された画像から顔のみを検出し再描画するノード

ご存知だと思うがAI画像生成は小さいサイズで生成する場合に顔がキレイに出ないことが多いため、このノードは重宝する。

実際の効果

今回の方法を使うと左の画像から右のように顔だけ修正可能

元絵 FaceDetailerをかけた後
使用する画像 FaceDetailer後

あまり気合をいれてやっていないが、頑張ればもっと良いものが出来ると思う。

とにかく動けば良い人向け

こちらはImpact Packに含まれるノード。

インストール方法や詳しい設定などは解説しないので注意。

※細かい設置などは筆者もよく分かっていない。

用意するもの

Impact Packのインストール以外にも顔を検出するモデルを用意しておく必要がある。

こちらはComfyUI Managerを利用してインストールすることを推奨しているので、やり方がわからない場合は次の記事を参照してほしい。

【ComfyUI基礎シリーズ#4】ComfyUI Managerの詳しい使い方 | 謎の技術研究部

ComfyUI ManagerInstall Modelsからdetectorで検索する。

その中から次を入れておく

  • face_yolov8n_v2 (bbox)
  • face_yolov8n-seg2_60

sam modelで検索し、次を入れておく

  • ViT-B SAM model

ComfyUI Managerを利用した場合、保存場所などを気にする必要はない。自動でやってくれる。

上の各モデルは筆者が動作確認したものだが、同型の亜種が複数存在するためそちらでも良い。

検知する精度や処理速度に差があるらしいのだが、詳細な違いまで調べていないので気になれば別途調べてほしい。

FaceDetailerノード

検索でFaceDetailerノードを出して、上の基本的なノードを接続しておく。

上部はKSampler等に入力する感じでOK。特別なノードを挟む必要はない。

基本のつなぎ方

bbox_detector

こちらにはUltralyticsDetectorProviderというノードを繋ぎ、中にface_yolov8nv2.pthを入れる。

BBOX_DETECTORからピンを出すこと。

このノードは上でDLした顔を検出するモデルを読み込む物。

また、ここでは「bbox」と接頭辞がついており、これは四角形のざっくりとした切り抜きで検出することを意味している。

つまり顔意外の部分もまとめて検出される。

UltralyticsDetectorProviderノード1

検出される画像サンプル

BBOX検出サンプル

sam_model_opt

こちらはSAMLoaderというノードを出してsam_vit_b_01ec64.pthを入れる。

SamLoaderノード

こちらopt(恐らくoptionの意)と書いてある通り入力しなくても良い。

公式の解説ではこれを入力しているので、恐らく検出の補助の役割をするのでは?と考えているが現時点でよくわかってないのでとりあえず繋ぐレベル。

SAMモデルがどんな検出をしているのかについては次で少し触れている。

【Impact Pack #1】SEGSとは何か【ComfyUI】 | 謎の技術研究部

segm_detector_opt

こちらもUltralyticsDetectorProviderノードを繋ぎface_yolov8n-seg2_60.ptを入れる。

UltralyticsDetectorProviderノード2

最初のBBoxに対してこちらがセグメントを出力するもの。

BBoxが四角形の大雑把な範囲だったのに対し、こちらは自動で顔の部分だけくり抜いてくれる。

切り抜いたサンプルが次

segmサンプル

いや3種類もいらんでしょ!segmだけでいいのでは?

私もsegmだけで良いのでは?と思っているのだが、このノードはBBoxに対応するDetectorが入っていないとエラーで動作しないようになっている。

私の使い方が悪いのかもしれないが、逆にBBoxのfaceのみだとなぜか顔そのものを検出しないことがありsegm側も接続しておくことをおすすめする。

FaceDetailerno設定(簡易)

個人的に設定しておきたい箇所だけ記す。

元画像のサイズ

試した限りだと1024x1024ぐらいのサイズでは小さすぎて顔が再描画されても美しくならなかった。

元絵はアップスケーラーで1500以上とか2000以上ぐらいまで大きくしたほうが良いかも?というのが個人的な経験談。

ここは違うかもしれないので要検証。

モデルの選定

当然ではあるがここに入れるチェックポイントを変えると、そのチェックポイントに寄った顔が出てくる。

ここで顔が苦手なチェックポイントを入れてしまうとFaceDetailerを通しても顔は良くならないので、このあたりは注意しておきたい。

逆を言えば「顔は苦手だが個性があるチェックポイント」で画像を生成した後「顔が得意なチェックポイント」で再描画してやると面白いかもしれない。

1. sampler_nameとscheduler

サンプラーとスケジューラーは出てくる顔に大きな影響を及ぼしていることを確認している。

デフォルトのeulerで良くならないことが多いので、ここはよくあるdpmpp_2mkarrasなどにしておくのが良いかもしれない。

dpmpp_3m_sdeも個人的に良い。

サンプラー

2. プロンプト

下部にプロンプトを入力する欄があるので、ほしい表情はここで入れる。

プロンプト

クオリティに影響するというか、表情がある場合はここで確実に表情を入れておきたい。

3. cycle

上の画像の下部についているcycleだが、単純にこれを2にするだけで再描画が2週かかることになる。

かけ過ぎも良くないのだが2週、3週ぐらいまでは良くなるパターンもあるのでここも試しておきたい。

単純に1週のほうが良いケースもあるため何度か調整したい。

他は?

Denoiseの値やguide_sizeあたりも影響しそうに思うが、個人的にここは調整しても上手くいかない事が多いのでデフォルトで良いと思う。

さいごに

Impact Pack周りは情報が少なく、実験している時間もそれほど取れないためザックリとした記事となってしまった。

しかしながら、そもそも使い方がわからないケースが多いと思うのでこの記事がいくらか役に立つとは思う。

顔は調整次第でかなり良くなるので試してみてほしい。



この記事をシェア


謎の技術研究部 (謎技研)