Model
.ai
オープン AI モデルを追跡

ComfyUI の FaceDetailer (Impact Pack) ノード

FaceDetailerはYOLO検出器で顔(または手や目)を見つけて、それぞれを切り取り、モデルとプロンプトでフル解像度で再レンダリングし、元に戻して、広い画面の小さくぼやけた顔を直します。
ノードパック:ComfyUI-Impact-Pack
カテゴリ:人気のカスタムノードパック
Author: Dr.Lt.Data

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) の使い方

  1. ComfyUI ManagerからComfyUI-Impact-Pack(とUltralytics provider用のImpact Subpack)をインストール。
  2. UltralyticsDetectorProviderを追加し、face_yolov8m.pt(models/ultralytics/bboxにダウンロード済み)を選択。
  3. FaceDetailerを追加し、VAE Decodeからimage、メイングラフからmodel/clip/vae/positive/negative、providerからbbox_detectorをつなぐ。
  4. guide_sizeを512(SD1.5)か1024(SDXL)、denoiseを0.45、crop_factorを3、featherを5に設定。
  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手リファイナーも別の選択肢です。

その他の 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の倍数で、モデルファミリーに合っている必要があります。