ComfyUIの人物一貫性:InstantID・FaceID・ReActorの選び方

"cubiqのComfyUI_InstantID READMEには、現在のSDXL対象範囲、antelopev2とモデルの配置先、CFG、キーポイント制御が記載されています。"
許諾済みモデルの正面写真が1枚あり、同じ人物を複数の場面で生成したいとします。あるいは、完成済みのポスターがあり、顔だけを指定したオリジナルの仮想キャラクターに差し替えたい場合もあります。前者は生成中に人物IDを条件として与え、後者は後処理で顔を交換するため、必要な技術が異なります。
ComfyUIでよく使われる選択肢はInstantID、IPAdapter FaceID、ReActorです。名前は似ていますが、役割は同じではありません。現在のComfyUI向けInstantIDノードはSDXLを対象とし、依存関係が多めです。FaceIDはSD1.5とSDXLを扱えますが、モデルとLoRAを正しく組み合わせる必要があります。ReActorは生成には参加せず、後処理で顔を交換します。
まず、作業が生成中なのか、画像完成後なのかを判断します。そのうえでモデル依存関係、調整方向、よくあるエラー、素材とライセンスの境界を確認します。
1. 3つの方式:生成中の人物ID維持と後処理の顔交換
同じ人物の新しい画像を複数生成したいのか、既存画像の顔だけを交換したいのかを先に決めます。この判断で選ぶ方式が決まります。
| 方式 | 役割 | 向いている用途 | 入力 | モデル上の制約 | 依存関係の複雑さ |
|---|---|---|---|---|---|
| InstantID | 生成中の人物ID維持 | 同じ顔で複数の新規画像を生成 | 顔の参照画像1枚 | 現在のComfyUI_InstantIDはSDXL向け | 高(InsightFace + onnxruntime + antelopev2 + ControlNet + InstantID本体モデル) |
| IPAdapter FaceID | 生成中の人物ID維持 | 同じ顔で複数の新規画像を生成 | 顔の参照画像1枚または複数 | SD1.5 + SDXL | 中(InsightFace + FaceIDモデル + 対応LoRA) |
| ReActor | 後処理の顔交換 | 既存画像の顔だけを交換 | 対象画像 + 参照する顔 | 生成時のベースモデルに依存しない | バージョン依存(0.7 alphaの新コアはInsightFaceを必須としないが、モデルとライセンスの確認は必要) |
選び方
- 同じ人物の新しい画像を複数生成する → InstantIDまたはFaceID
- 完成済み画像の顔だけを交換する → ReActor
- 顔の参照画像が1枚だけある → 3方式とも扱えるが、生成中の制御にはInstantIDかFaceIDが適する
- 既存画像の姿勢と構図を保って顔だけを変える → ReActorが直接的
ライセンスの境界を先に確認する
InstantIDとFaceIDは通常、顔特徴の抽出にInsightFaceを利用します。InsightFaceのコードはMIT Licenseですが、学習データとそのデータで学習したモデルは、原則として非商用研究向けです。FaceIDのモデルカードも該当モデルを研究用途に限定しています。ReActorはSFW-friendlyを掲げ、nudity detectorを搭載しており、READMEでも責任ある利用を求めています。
商用利用や一般公開の前に、肖像利用の許諾、モデルweightのライセンス、プラットフォーム規約を別々に確認してください。ここで扱うのは、許諾済みまたは自分が権利を持つ素材、オリジナルキャラクター、適法な内部テストだけです。
2. InstantID:SDXL向けの生成中人物ID維持
2.1 インストールとモデルの配置先
InstantIDはFaceIDやReActorより依存関係が多く、ノード導入後はモデルの配置先でつまずきやすい方式です。
インストール手順:
# 1. ノードをcloneする
cd ComfyUI/custom_nodes
git clone https://github.com/cubiq/ComfyUI_InstantID.git
# 2. 依存パッケージを導入する
pip install insightface onnxruntime onnxruntime-gpu
InsightFace 1.0の標準Pythonパッケージは、任意のC++/Cython face3d拡張をビルドしなくなり、ローカルのコンパイラ要件が軽くなりました。古い環境や手順でビルドエラーが出る場合は、現在使っているバージョンを確認して独立した仮想環境を用意し、現行版でもVisual Studio C++ Build Toolsが必須だと決めつけないでください。
| モデル | 配置先 | 入手元 |
|---|---|---|
| antelopev2 | ComfyUI/models/insightface/models/antelopev2 | InsightFaceモデル |
| InstantID本体モデル | ComfyUI/models/instantid | InstantX Hugging Face |
| InstantID ControlNet | ComfyUI/models/controlnet | InstantX Hugging Face |
現在のComfyUI_InstantID READMEでは、このノードはSDXL専用とされています。SD1.5ベースのワークフローではFaceIDを選びます。
ComfyUI_InstantIDリポジトリは2025年4月14日からmaintenance onlyです。重要な修正が取り込まれる可能性はありますが、継続的な開発は約束されていないため、導入前に現在のREADMEを確認してください。
2.2 ワークフローと調整
基本ワークフロー:
- SDXL checkpointを読み込む
- Apply InstantIDを接続し、正面向きの顔参照画像を入力する
- InstantIDモデルとControlNetの条件をsampling chainへ接続する
- 画像を生成する
参照画像の品質は類似度に直接影響します。正面向きで鮮明、遮蔽物がなく、照明が均一な画像ほど安定しやすくなります。横顔、顔が小さい画像、ぼけた画像、遮蔽が多い画像では、検出失敗や類似度低下が起こります。
| 症状 | 調整方向 |
|---|---|
| 類似度が低い | InstantIDモデルまたはControlNetの重みを段階的に上げる |
| 焼けた見た目になる、プロンプトが効きにくい | まずInstantIDモデルの重みを下げ、基準画像と比較する |
| CFGが高すぎる | ノードのREADMEに従って4〜5程度まで下げるか、RescaleCFGを使う |
InstantID上流実装の基本経路は複数人物の参照に対応せず、ランドマークには最大の顔を使います。ComfyUI_InstantIDには複雑で処理も遅いMulti-IDのサンプルがありますが、単純で安定した複数人物向けの基準ワークフローとは考えないほうが安全です。
高度なノード機能:
- Advanced InstantID:InstantIDモデルとControlNetの重みを別々に調整する
- Noise injection:焼けた見た目を抑え、類似度を細かく調整する
image_kps入力:別画像のキーポイントで姿勢を変え、人物参照から姿勢が移る影響を減らす
姿勢をさらに厳密に制御するなら、ControlNet OpenPoseを組み合わせます。
3. IPAdapter FaceID:SD1.5とSDXLの生成中人物ID維持
FaceIDはIPAdapterの顔向け派生です。通常のCLIP image embeddingではなくface recognition embeddingを使い、LoRAを組み合わせて人物IDの一貫性を高められます。
3.1 インストールとモデルの組み合わせ
ComfyUIのPython環境に依存パッケージを導入します。
pip install insightface
FaceIDモデルはComfyUI/models/ipadapter、対応LoRAはComfyUI/models/lorasへ置きます。Unified Loader FaceIDは公式ファイル名を使って自動判定するため、名前を変えると自動読み込みに失敗することがあります。
| FaceIDモデル | 対応LoRA | 配置先 |
|---|---|---|
ip-adapter-faceid_sd15.bin | ip-adapter-faceid_sd15_lora.safetensors | models/ipadapter + models/loras |
ip-adapter-faceid-plusv2_sd15.bin | ip-adapter-faceid-plusv2_sd15_lora.safetensors | 同上 |
ip-adapter-faceid_sdxl.bin | ip-adapter-faceid_sdxl_lora.safetensors | 同上 |
ip-adapter-faceid-plusv2_sdxl.bin | ip-adapter-faceid-plusv2_sdxl_lora.safetensors | 同上 |
モデル一覧とファイル名はノード更新で変わる可能性があります。導入前にComfyUI_IPAdapter_plus READMEを確認し、ベースモデルとバージョンごとにFaceIDモデルとLoRAを一対一で対応させます。LoRAの欠落や誤った組み合わせは、人物IDの一貫性を大きく下げます。
バージョンの違い:
- PlusV2:face ID embeddingと調整可能なCLIP image embeddingを併用し、face structureの重みを変更できる
- Portrait:ポートレート生成向けでLoRAやControlNetが不要。複数の顔画像を受け取り、類似度を高められる
- SDXL FaceIDとPlusV2-SDXL:モデルカードではexperimentalとされているため、無条件に安定した方式として扱わない
ComfyUI_IPAdapter_plusリポジトリも2025年4月14日からmaintenance onlyです。
3.2 ワークフローと調整
FaceIDのweightを1.0から始める必要はありません。人物IDの重みが強すぎると参照画像には近づきますが、テキストプロンプトの制御が弱くなることがあります。
調整の方向:
- 0.8前後で基準画像を作り、類似度が低ければ少しずつ上げる
- プロンプトにより忠実にしたい場合は、IPAdapter Advancedのweight typeを変えるかweightを下げる
- PlusV2ではface structureに関する重みも別に調整できる
FaceIDとInstantIDはいずれも生成中に人物IDの条件を追加します。FaceIDはSD1.5とSDXLを扱えますが、現在のComfyUI_InstantIDノードはSDXL向けです。VRAM使用量はベースモデル、解像度、GPU、ノードの版で変わるため、一つの固定値では表せません。
4. ReActor:SFWの後処理顔交換
ReActorは前の2方式とは処理段階が異なります。diffusion生成には参加せず、生成済みまたは既存の画像に対して顔を交換します。
4.1 インストールと依存関係の変更
ReActor 0.7.0 alphaの新しいコアは、InsightFaceとC++ Build Toolsが不要だと説明しています。ただし、現在のREADMEにあるモデル表とライセンス節にはbuffalo_lやinswapper_128.onnxなどが残っています。インストール手順と利用権限の判断は、使用する版に合わせて確認してください。
| モデル | 現在のREADMEにある配置先 |
|---|---|
| buffalo_l | ComfyUI/models/insightface/models/buffalo_l |
| inswapper_128 | ComfyUI/models/insightface |
| reswapper | ComfyUI/models/reswapper |
| hyperswap | ComfyUI/models/hyperswap |
| Face Restoreモデル | ComfyUI/models/facerestore_models |
古い手順ではInsightFaceとC++ Build Toolsを固定の前提とすることがあります。説明が食い違う場合はReActorの版を特定し、旧版の依存手順と混ぜず、その版のREADMEに従います。
ReActorにはnudity detectorがあります。READMEでは、実在人物の顔を使う場合は本人の同意を得て、一般公開時には合成された内容だと明示するよう求めています。buffalo_lやinswapper_128などの商用利用権限は別途確認が必要です。
4.2 ワークフロー
基本的な顔交換手順:
- 処理対象の画像を
input_image、許諾済みの参照顔をsource_imageへ接続する - ReActorSetWeightを控えめな強度から試す
- 必要ならFace Similarityで交換後の類似度を確認する
- 必要ならFace Restorationで輪郭と細部を修復する
- 必要ならface modelを保存し、同じ顔のembeddingを後から直接読み込む
| 機能 | 用途 |
|---|---|
| ReActorSetWeight | ノードの刻み幅で0%〜100%の交換強度を調整する。強すぎるとプラスチックのような質感や不自然な輪郭が出る |
| Face Similarity | 顔交換後の類似度を確認する |
| Face Restoration | 交換後の輪郭と細部を修復する。強すぎると不自然な質感になる |
| Face Model | 顔のembeddingを保存または読み込み、同じ顔を再利用する |
ReActorは元画像の構図、服装、姿勢を再生成しません。完成済み画像を保ち、顔領域だけを処理する目的ならInstantIDやFaceIDより直接的です。
5. 参照画像の品質とよくあるエラー
5.1 参照画像のチェック項目
重みを上げ続けるより、参照画像の品質を見直すほうが効果的な場合があります。正面向きで鮮明、遮蔽物がなく、照明が均一な画像は合わせやすくなります。横顔、ぼけた顔、小さな顔、強い遮蔽は、weightを上げても完全には補えません。
優先順位:
- 正面 > 横顔または斜め向き
- 鮮明 > ぼけ
- 遮蔽物なし > 眼鏡、マスク、前髪による遮蔽
- 均一な照明 > 強い影または逆光
この基準はInstantID、FaceID、ReActorのすべてに当てはまります。検出に失敗したら、すべてのweightを最大にする前に、顔を切り抜くか参照画像を変更します。
5.2 よくあるエラーの対処表
| 問題 | 主な原因 | 対処 |
|---|---|---|
モデルが見つからない(antelopev2 / buffalo_l / InstantID本体モデル) | 配置先が違う、またはモデルがない | 使用ノードの現行READMEと照合し、models/insightface/models、models/instantidなどを確認する |
検出に失敗する(no face detected) | 横顔、顔が小さい、ぼけ、遮蔽 | 正面向きで鮮明、遮蔽物のない画像へ変更し、必要なら顔を切り抜く |
| 顔は似たが姿勢や表情が移る | 顔条件が構造的な特徴も一部持ち込む | ControlNetで姿勢を指定するか、完成済み画像ならReActorへ切り替える |
| 類似度が低い | FaceID用LoRAの欠落、weight不適合、参照画像の品質不足 | モデルとLoRAの対応を確認し、0.8前後で基準を作ってから一つずつ調整する |
| 輪郭が不自然、顔がプラスチックのように見える | 顔交換またはFace Restorationが強すぎる | 交換と修復の強度を下げ、対象顔の大きさ、角度、照明を確認する |
| 依存パッケージの導入に失敗する | 古い手順、旧ノード、現在のPython環境が混在している | ノードとInsightFaceの版を確認し、独立環境で現行READMEに従って導入する |
次の順で確認します。
- 検出に失敗する → まず参照画像の品質を見る
- 類似度が低い → まずモデル、LoRAの組み合わせ、パスを見る
- 姿勢がずれる → 生成中の人物ID条件、後処理、追加ControlNetのどれが必要かを判断する
6. ControlNet、Kontext、LoRAとの組み合わせ
同じ顔を保っても、姿勢、体、服装、構図は固定されません。InstantIDやFaceIDで人物IDの条件を与えると、参照画像の姿勢、表情、髪型も結果に影響する場合があります。
組み合わせの例:
- InstantIDまたはFaceID + ControlNet OpenPose → 顔条件が人物IDを、ControlNetが体と姿勢を担当する
- FaceID + 通常のIPAdapter → FaceIDで顔を保ち、通常のIPAdapterでスタイルや構図を制御する。両方とも控えめなweightから始める
- ReActor + 高解像度化と修復 → 対象画像を生成してから顔を交換し、必要に応じてface restoreや局所inpaintを使う
- Kontext → 同じ入力画像の背景、服装、場面変更に向くが、顔専用の人物ID固定機能ではない
- LoRA → 学習用データセットを用意でき、長期間使うオリジナルキャラクターやブランド用の仮想人物に向く
姿勢を厳密に指定する場合は、ControlNet OpenPoseへ目的の姿勢を入力します。InstantIDまたはFaceIDが顔を、ControlNetが体と姿勢を担当できます。完成済みの構図を保って顔だけを交換するならReActorのほうが直接的です。
関連記事:
7. コンプライアンスとライセンスの境界
ライセンスと素材の権利は必ず確認する項目です。技術的に動作しても、素材、モデル、公開方法のすべてが許諾されているとは限りません。
InsightFaceのコードとモデルのライセンスを分ける
InsightFaceのコードはMIT Licenseで、学術利用と商用利用が認められています。一方、その学習データと、データから作られた学習済みモデルは、原則として非商用研究向けです。現在のInsightFace READMEには、inswapperシリーズとオープンソースの顔認識モデルについて、別々のライセンス問い合わせ先も記載されています。
FaceIDのモデルカードも、InsightFaceの学習済みモデルに依存するためIP-Adapter-FaceIDは研究用途だと明記しています。ノードのコードライセンスを、すべてのモデルweightの商用利用許可と解釈しないでください。
ReActorの責任と表示
現在のReActorはSFW-friendlyを掲げ、nudity detectorを搭載しています。READMEでは現地法の順守、実在人物の顔を使う場合の同意取得、一般公開時の顔交換またはAI合成の明示を求めています。
使用できる素材の範囲
ここで扱う素材は次の範囲に限ります。
- 肖像と用途について明示的な許諾を得たモデル写真
- 自分が所有し、処理する権利を持つ個人素材
- 実在人物を表さないオリジナルの仮想キャラクター
- 外部公開しない適法な内部テスト
商用利用や一般公開の前に、肖像利用の許諾、モデルライセンスの範囲、プラットフォーム規約を別々に確認してください。どれか一つでも不明な場合は公開や商用利用を行わないでください。
まとめと次のステップ
判断基準は次のとおりです。
- 生成中に人物IDを維持する → InstantID(現在のComfyUIノードはSDXL向け)またはFaceID(SD1.5 + SDXL)
- 後処理で顔を交換する → ReActor
- weightをむやみに上げる前に、参照画像の品質、モデルパス、バージョンの組み合わせを確認する
- コードライセンスだけでは学習済みモデルを商用利用できず、実在人物の顔には肖像利用の許諾も必要
InstantIDはSDXLワークフロー向けで依存関係が多い一方、人物IDとキーポイント関連の条件を分けて調整できます。FaceIDはより多くのベースモデルを扱えますが、モデルとLoRAの対応が必要です。ReActorはdiffusion生成には参加せず、既存画像の顔領域を処理する目的に向きます。
次に確認する内容:
- 姿勢がずれる、構図を厳密に指定したい → ComfyUI ControlNet実践
- オリジナルキャラクターを長期間再利用したい → ComfyUI LoRA実践
- 顔交換後に高解像度化や局所修復が必要 → ComfyUIの高解像度化とinpaint
- ノードやモデルパスのエラーが繰り返す → ComfyUIワークフロー再利用ガイド
ComfyUIの人物一貫性ワークフローを選んで調整する
処理段階で方式を選び、参照画像とモデル構成を確認してから、重みを一つずつ調整します。
- 1
ステップ 1: 処理する段階を決める
顔写真から新しい画像を生成するならInstantIDかIPAdapter FaceID、既存画像の顔だけを差し替えるならReActorを選びます。 - 2
ステップ 2: 適切な許諾済み参照画像を用意する
正面向きで鮮明、遮蔽物がなく、照明が均一で、顔が十分大きい画像を選び、利用権限も確認します。 - 3
ステップ 3: 方式ごとのモデルと依存関係を導入する
InstantIDではantelopev2、InstantID本体モデル、ControlNetを確認します。FaceIDではinsightface、FaceIDモデル、対応LoRAを確認し、ReActorは使用中の版のREADMEに従います。 - 4
ステップ 4: 基準になる結果を作る
初期値または控えめな重みで基準画像を1枚生成します。姿勢、表情、髪型、ベースモデル、複数の人物重みを同時に変えないでください。 - 5
ステップ 5: 原因を一つずつ調整する
似ていなければ人物重みかモデルの組み合わせを確認し、プロンプトが効きにくければAdapter重みを下げます。顔が不自然なら交換と修復の強度を下げます。 - 6
ステップ 6: 姿勢制御や長期キャラクター運用を追加する
姿勢を厳密に指定するならControlNetを追加します。長期間使うオリジナルキャラクターでは、1枚の顔写真にすべてを任せずLoRA学習を検討します。
FAQ
ComfyUIで同じ人物を維持するならInstantIDとReActorのどちらを使いますか?
IPAdapter FaceIDでLoRAも必要なのはなぜですか?
ComfyUIのInstantIDはSDXL専用ですか?
ReActor 0.7でもInsightFaceとC++ Build Toolsが必要ですか?
ComfyUIの顔交換は商用利用できますか?
顔交換後の顔がプラスチックのように見えるのはなぜですか?
9分で読めます · 公開日: 2026年8月21日 · 更新日: 2026年8月21日
ComfyUI と Stable Diffusion シリーズ: 入門、workflow、モデル選び、prompt
検索からこのページに来た場合は、前後の記事もあわせて読むと同じテーマの理解がかなり早く深まります。
前の記事
ComfyUIでFLUX.1 Kontextを使う:反復編集とキャラクター一貫性
ComfyUIでKontext Devを動かし、モデル配置、保持条件付きプロンプト、反復編集、ドリフト時の巻き戻し、LoRAやControlNetとの使い分けを確認します。
第 8 / 13 記事
次の記事
ComfyUIで高解像度化と部分修正:Hires Fix、FaceDetailer、Inpaintingの使い分け
ピクセル拡大、latent再サンプリング、FaceDetailer、手動inpainting、タイル分割を使い分け、顔の変化、境界の継ぎ目、mask外への影響を切り分けます。
第 10 / 13 記事



コメント
GitHubアカウントでログインしてコメントできます