テーマを切り替える

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

Easton editorial illustration: one gender-neutral faceted 3D avatar face token inside a dark rounded ComfyUI-style node canvas

"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が必須だと決めつけないでください。

モデル配置先入手元
antelopev2ComfyUI/models/insightface/models/antelopev2InsightFaceモデル
InstantID本体モデルComfyUI/models/instantidInstantX Hugging Face
InstantID ControlNetComfyUI/models/controlnetInstantX Hugging Face

現在のComfyUI_InstantID READMEでは、このノードはSDXL専用とされています。SD1.5ベースのワークフローではFaceIDを選びます。

ComfyUI_InstantIDリポジトリは2025年4月14日からmaintenance onlyです。重要な修正が取り込まれる可能性はありますが、継続的な開発は約束されていないため、導入前に現在のREADMEを確認してください。

2.2 ワークフローと調整

基本ワークフロー:

  1. SDXL checkpointを読み込む
  2. Apply InstantIDを接続し、正面向きの顔参照画像を入力する
  3. InstantIDモデルとControlNetの条件をsampling chainへ接続する
  4. 画像を生成する

参照画像の品質は類似度に直接影響します。正面向きで鮮明、遮蔽物がなく、照明が均一な画像ほど安定しやすくなります。横顔、顔が小さい画像、ぼけた画像、遮蔽が多い画像では、検出失敗や類似度低下が起こります。

症状調整方向
類似度が低い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.binip-adapter-faceid_sd15_lora.safetensorsmodels/ipadapter + models/loras
ip-adapter-faceid-plusv2_sd15.binip-adapter-faceid-plusv2_sd15_lora.safetensors同上
ip-adapter-faceid_sdxl.binip-adapter-faceid_sdxl_lora.safetensors同上
ip-adapter-faceid-plusv2_sdxl.binip-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_linswapper_128.onnxなどが残っています。インストール手順と利用権限の判断は、使用する版に合わせて確認してください。

モデル現在のREADMEにある配置先
buffalo_lComfyUI/models/insightface/models/buffalo_l
inswapper_128ComfyUI/models/insightface
reswapperComfyUI/models/reswapper
hyperswapComfyUI/models/hyperswap
Face RestoreモデルComfyUI/models/facerestore_models

古い手順ではInsightFaceとC++ Build Toolsを固定の前提とすることがあります。説明が食い違う場合はReActorの版を特定し、旧版の依存手順と混ぜず、その版のREADMEに従います。

ReActorにはnudity detectorがあります。READMEでは、実在人物の顔を使う場合は本人の同意を得て、一般公開時には合成された内容だと明示するよう求めています。buffalo_linswapper_128などの商用利用権限は別途確認が必要です。

4.2 ワークフロー

基本的な顔交換手順:

  1. 処理対象の画像をinput_image、許諾済みの参照顔をsource_imageへ接続する
  2. ReActorSetWeightを控えめな強度から試す
  3. 必要ならFace Similarityで交換後の類似度を確認する
  4. 必要ならFace Restorationで輪郭と細部を修復する
  5. 必要ならface modelを保存し、同じ顔のembeddingを後から直接読み込む
機能用途
ReActorSetWeightノードの刻み幅で0%〜100%の交換強度を調整する。強すぎるとプラスチックのような質感や不自然な輪郭が出る
Face Similarity顔交換後の類似度を確認する
Face Restoration交換後の輪郭と細部を修復する。強すぎると不自然な質感になる
Face Model顔のembeddingを保存または読み込み、同じ顔を再利用する

ReActorは元画像の構図、服装、姿勢を再生成しません。完成済み画像を保ち、顔領域だけを処理する目的ならInstantIDやFaceIDより直接的です。

5. 参照画像の品質とよくあるエラー

5.1 参照画像のチェック項目

重みを上げ続けるより、参照画像の品質を見直すほうが効果的な場合があります。正面向きで鮮明、遮蔽物がなく、照明が均一な画像は合わせやすくなります。横顔、ぼけた顔、小さな顔、強い遮蔽は、weightを上げても完全には補えません。

優先順位:

  1. 正面 > 横顔または斜め向き
  2. 鮮明 > ぼけ
  3. 遮蔽物なし > 眼鏡、マスク、前髪による遮蔽
  4. 均一な照明 > 強い影または逆光

この基準はInstantID、FaceID、ReActorのすべてに当てはまります。検出に失敗したら、すべてのweightを最大にする前に、顔を切り抜くか参照画像を変更します。

5.2 よくあるエラーの対処表

問題主な原因対処
モデルが見つからない(antelopev2 / buffalo_l / InstantID本体モデル)配置先が違う、またはモデルがない使用ノードの現行READMEと照合し、models/insightface/modelsmodels/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の人物一貫性ワークフローを選んで調整する

処理段階で方式を選び、参照画像とモデル構成を確認してから、重みを一つずつ調整します。

  1. 1

    ステップ 1: 処理する段階を決める

    顔写真から新しい画像を生成するならInstantIDかIPAdapter FaceID、既存画像の顔だけを差し替えるならReActorを選びます。
  2. 2

    ステップ 2: 適切な許諾済み参照画像を用意する

    正面向きで鮮明、遮蔽物がなく、照明が均一で、顔が十分大きい画像を選び、利用権限も確認します。
  3. 3

    ステップ 3: 方式ごとのモデルと依存関係を導入する

    InstantIDではantelopev2、InstantID本体モデル、ControlNetを確認します。FaceIDではinsightface、FaceIDモデル、対応LoRAを確認し、ReActorは使用中の版のREADMEに従います。
  4. 4

    ステップ 4: 基準になる結果を作る

    初期値または控えめな重みで基準画像を1枚生成します。姿勢、表情、髪型、ベースモデル、複数の人物重みを同時に変えないでください。
  5. 5

    ステップ 5: 原因を一つずつ調整する

    似ていなければ人物重みかモデルの組み合わせを確認し、プロンプトが効きにくければAdapter重みを下げます。顔が不自然なら交換と修復の強度を下げます。
  6. 6

    ステップ 6: 姿勢制御や長期キャラクター運用を追加する

    姿勢を厳密に指定するならControlNetを追加します。長期間使うオリジナルキャラクターでは、1枚の顔写真にすべてを任せずLoRA学習を検討します。

FAQ

ComfyUIで同じ人物を維持するならInstantIDとReActorのどちらを使いますか?
顔写真から新しい画像を生成する場合はInstantIDかIPAdapter FaceIDを優先します。画像が完成済みで顔だけを差し替える場合はReActorを使います。
IPAdapter FaceIDでLoRAも必要なのはなぜですか?
FaceIDは顔認識embeddingで人物IDの条件を与えます。多くのFaceIDモデルでは一貫性を高める対応LoRAも必要なため、ベースモデルとバージョンをそろえて組み合わせます。
ComfyUIのInstantIDはSDXL専用ですか?
現在のcubiq/ComfyUI_InstantID READMEでは、このノードはSDXL向けで、antelopev2、InstantID本体モデル、ControlNetモデルが必要とされています。別実装や将来の版はそれぞれの説明を確認してください。
ReActor 0.7でもInsightFaceとC++ Build Toolsが必要ですか?
ReActor 0.7 alphaの新しいコアは、InsightFaceとC++ Build Toolsが不要だと説明しています。一方、現行READMEのモデル一覧とライセンス節にはbuffalo_lやinswapper_128などが残っているため、インストールと商用利用の両方で最新版を確認してください。
ComfyUIの顔交換は商用利用できますか?
ノードのコードライセンスだけでは判断できません。肖像利用の許諾、用途、プラットフォーム規約、InsightFace、inswapper、FaceIDなどの学習済みモデルのライセンスを確認し、不明点がある状態では商用公開しないでください。
顔交換後の顔がプラスチックのように見えるのはなぜですか?
顔交換やface restorationの強度が高すぎる、対象の顔が小さい、参照画像と角度や照明が合わない、といった原因があります。修復強度を下げ、角度が近い鮮明な許諾済み画像を使います。

9分で読めます · 公開日: 2026年8月21日 · 更新日: 2026年8月21日

コメント

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

Easton BlogEaston Blog