ComfyUI の FaceDetailer (Impact Pack) ノード
FaceDetailerはYOLO検出器で顔(または手や目)を見つけて、それぞれを切り取り、モデルとプロンプトでフル解像度で再レンダリングし、元に戻して、広い画面の小さくぼやけた顔を直します。
FaceDetailer (Impact Pack) の役割
FaceDetailerはDr. Lt. DataのComfyUI-Impact-Packから来ていて、手動で「顔を高解像度でインペイントする」作業を自動化します。Ultralyticsの検出器(face_yolov8m.ptやhand_yolov8s.pt)が領域を見つけ、SAMがあればマスクをさらにきれいにして、guide_sizeで切り取り、アップスケールし、denoise 0.4-0.5でサンプリングして、フェザー処理で合成します。このノードは検出器、サンプラー設定、合成を一つにまとめています。
メインのサンプラーと同じモデル、clip、vae、conditioningを使い、UltralyticsDetectorProviderからBBOX_DETECTORを受け取り、必要ならSAM_MODELも使います。出力には修正済みの画像、切り取ってきれいにしたプレビュー、検出マスクがあり、何が検出されたか確認するのに便利です。顔の後に手を処理するなど複数回使う場合はFaceDetailerノードを2つつなげて使います。
入力
名前 | 型 | 意味 |
|---|---|---|
image | IMAGE | レンダリングされた画像。 |
model / clip / vae / positive / negative | MODEL, CLIP, VAE, CONDITIONING | メインのサンプラーと同じもの。 |
bbox_detector | BBOX_DETECTOR | UltralyticsDetectorProviderからface_yolov8m.ptなどを使う。 |
sam_model_opt | SAM_MODEL | より正確なマスク用のオプションのSAM。 |
guide_size / max_size | INT | 切り取った部分はguide_size(SD1.5なら384-512、SDXLなら1024)にアップスケールされ、max_sizeで上限が決まる。 |
seed / steps / cfg / sampler / scheduler / denoise | sampler settings | denoiseは0.35-0.5が一般的。 |
feather / noise_mask / force_inpaint | INT / BOOLEAN | エッジのぼかしとインペイントの動作。 |
bbox_threshold / bbox_dilation / bbox_crop_factor | FLOAT / INT | 検出の信頼度、マスクの拡大、顔の周囲の余白(crop_factorは3推奨)。 |
出力
名前 | 型 | 意味 |
|---|---|---|
image | IMAGE | 修正された顔のある画像。 |
cropped_refined | IMAGE | きれいにした切り取り画像のプレビュー。 |
cropped_enhanced_alpha | IMAGE | アルファ付きの切り取り画像。 |
mask | MASK | 検出されたマスクの合成。 |
detailer_pipe | DETAILER_PIPE | 連結したDetailer用の設定一式。 |
FaceDetailer (Impact Pack) の使い方
- ComfyUI ManagerからComfyUI-Impact-Pack(とUltralytics provider用のImpact Subpack)をインストール。
- UltralyticsDetectorProviderを追加し、face_yolov8m.pt(models/ultralytics/bboxにダウンロード済み)を選択。
- FaceDetailerを追加し、VAE Decodeからimage、メイングラフからmodel/clip/vae/positive/negative、providerからbbox_detectorをつなぐ。
- guide_sizeを512(SD1.5)か1024(SDXL)、denoiseを0.45、crop_factorを3、featherを5に設定。
- image出力をSave Imageにつなぎ、cropped_refinedをPreview Imageで確認。
設定とコツ
- メインのプロンプトがシーン中心なら、顔に特化したプロンプト(「詳細な顔、シャープな目」など)を別のCLIP Text Encodeで使うといい。
- 小さい顔が多いときはbbox_thresholdを上げて背景の人混みを飛ばすか、顔が見逃されるなら下げる。
- 手はhand_yolov8s.ptを使い、denoise 0.5で「完璧な手」のプロンプトを使うといいが、結果はまちまち。
- FaceDetailerを2つつなげてdetailer_pipe出力を使い、顔→目の順に処理できる。
- 顔パスでキャラ用のLoRAを使うと、顔の特徴が安定する。
FaceDetailer (Impact Pack) のトラブルシューティング
顔が検出されず、画像がそのまま通る
原因
bbox_thresholdが高すぎる、顔が小さすぎる、または検出器モデルのダウンロードに失敗している。
対処法
bbox_thresholdを0.3に下げ、models/ultralytics/bboxにface_yolov8m.ptがあるか確認し、detailerの前に画像をアップスケールする。
新しい顔が体と合わない(色やスタイルが違う)
原因
denoiseが高すぎる、または顔パスで違うプロンプトやLoRAを使っている。
対処法
denoiseを0.3-0.45にし、crop_factorを3にして周囲の文脈を取り込み、メインパスと同じモデルとLoRAを使う。
顔の周りに四角い境界が見える
原因
featherが低すぎるか、noise_maskがオフでマスクが硬い。
対処法
featherを10-20にし、noise_maskをオン、bbox_dilationを10にする。
ModuleNotFoundError: ultralytics / Impact Subpackがない
原因
UltralyticsDetectorProviderはImpact Subpackにあり、新しいバージョンでは別途インストールが必要。
対処法
ManagerからComfyUI-Impact-Subpackをインストールして再起動。
顔に二重の目ができたり別人になる
原因
denoiseが0.6以上だと顔をプロンプトから描き直してしまい、修正にならない。
対処法
denoiseを下げ、FaceID IP-Adapterやキャラ用LoRAで顔の特徴を維持する。
FaceDetailer (Impact Pack) に関する質問
FaceDetailerはADetailerと同じ?
ComfyUI版のA1111 ADetailer拡張に相当し、同じ検出器モデルを使っている。
Fluxでも使える?
はい、cfg 1.0とFlux Guidanceのpositiveで使えます。guide_sizeは1024推奨。
手も直せる?
手検出器で手をきれいにできますが、結果はモデル次第です。ControlNet AuxのMeshGraphormer手リファイナーも別の選択肢です。
関連ノード
KSampler
ComfyUI core
KSamplerはノイズ除去のループを実行します。モデル、プロンプト、潜在変数を受け取り、シード、ステップ数、cfg、サンプラー、スケジューラー、denoiseで制御された完成した潜在画像を出力します。
Upscale Image (using Model)
ComfyUI core
Upscale Image (using Model) は ESRGANスタイルのアップスケーラー(4x-UltraSharp、RealESRGAN、4x_NMKD-Siax、4x_foolhardy_Remacri)をIMAGEにかけて、モデルの固定倍率で拡大し、ディテールを追加して返します。
IPAdapter (IP-Adapter Plus)
ComfyUI_IPAdapter_plus
IPAdapterノードは、参照画像を「イメージプロンプト」としてモデルに入力し、言葉で説明しなくてもスタイルや構図、顔を転送します。IPAdapter Unified LoaderとIPAdapter Advancedの組み合わせが一般的です。
Grow Mask, Feather Mask and Invert Mask
ComfyUI core
この基本的なマスクツールは、MASKを拡張(Grow Mask)、ぼかし(Feather Mask)、反転(Invert Mask)して、修正した部分が周囲の画像と自然に馴染むようにします。
ReActor Fast Face Swap
ComfyUI-ReActor
ReActorはInsightFaceを使って、元の写真の顔を生成された画像に入れ替えます。GFPGANやCodeFormerでの修復や顔の強調もできて、LoRAをトレーニングしなくてもキャラを安定して入れ替えられます。
その他の ComfyUI ノード
CLIP Text Encode (Prompt)
ComfyUI core
CLIP Text EncodeはテキストプロンプトをモデルのテキストエンコーダーでCONDITIONINGに変換します。1つのノードがポジティブプロンプトを、もう1つがネガティブプロンプトを持ちます。
ComfyUI Manager
ComfyUI-Manager
ComfyUI Managerは、インターフェース内からカスタムノードパックやモデルのインストール、更新、修正を行い、インポートしたワークフローの不足ノードを解決し、設定のスナップショットを作成する拡張機能です。
Load Checkpoint
ComfyUI core
Load Checkpoint(CheckpointLoaderSimple)は、.safetensorsまたは.ckptのモデルファイルを開いて、ワークフローで必要な3つのパーツ、つまりdiffusion MODEL、CLIPテキストエンコーダー、VAEを出力します。
Save Image
ComfyUI core
Save ImageはIMAGEテンソルをPNGとしてComfyUI/outputに保存します。ファイルのメタデータにワークフロー全体が埋め込まれているので、その画像をComfyUIにドラッグするとグラフを復元できます。
VAE Decode
ComfyUI core
VAE DecodeはサンプリングされたLATENTをVAEを使ってピクセルのIMAGEに変換します。VAE Decode (Tiled)はとても大きな画像をタイル単位で同じ処理をします。
Empty Latent Image
ComfyUI core
Empty Latent Imageは、テキストから画像を生成するときのスタート地点となる空の潜在キャンバス(幅、高さ、バッチサイズ)を作ります。サイズは8の倍数で、モデルファミリーに合っている必要があります。
