この記事について(広告・アフィリエイトリンクはありません)
使ったソフトとモデルは、すべて無料で入手できます。ただし IP-Adapter FaceID は研究目的のみで、商用利用は想定されていません(後述)。試した環境の一覧は検証の記録にあります。
IPAdapter FaceID で顔が似ないときは、weight を上げる前に、付属の LoRA・モデルの系統(SD1.5 用か SDXL 用か)・参照画像の顔の大きさの3つを確かめてください。 今回の試験では、LoRA を外すと顔の近さが大きく下がり、顔が小さく写った参照画像と、SDXL に SD1.5 用のモデルをつないだ場合は、エラーなしでまったく似ませんでした。
所要時間は30分ほど、難しさは初心者〜中級です。
先に結論(今回のテスト条件で)
| 条件 | 顔の近さ(平均) | エラー |
|---|---|---|
| LoRA 0.6(基準、SD1.5・FaceID Plus V2) | 0.33 | なし |
| LoRA なし(lora_strength 0) | 0.14 | なし |
| 参照画像の顔が小さい・横向き | -0.03 | なし |
| SDXL に SD1.5 用の FaceID を手でつなぐ | 0.12 | なし |
| SDXL+SDXL 用の FaceID(Unified Loader) | 0.63 | なし |
| 参照画像に顔がない | — | InsightFace: No face detected. |
| weight 1.5 | 0.57 | なし |
「顔の近さ」は、参照の顔と生成した顔の特徴量(InsightFace)のコサイン類似度で、1に近いほど同じ人です。シード6つの平均(手でつないだ条件など一部は2つ)。今回の画像では、0.4 を超えると同じ人に見えるものが多くなりました。
FaceID とは?
IP-Adapter-FaceID は、参照画像の顔の特徴を使って、同じ人の顔で画像を作るためのモデルです。公式のモデルカードによると、顔の特徴を InsightFace で取り出し、「顔の特徴量」と「顔を似せるための LoRA」の2つを組み合わせて使います。SD1.5 用と SDXL 用は別のファイルです。
ComfyUI では ComfyUI_IPAdapter_plus(カスタムノード)で使います。このノードは2025年4月から更新が止まっていますが、ComfyUI 0.43.0 で動きました。
ワークフロー

基本の形は、チェックポイントを「IPAdapter Unified Loader FaceID」に通し、「IPAdapter FaceID」で参照画像を渡して、KSampler につなぐだけです。
- SD1.5+FaceID Plus V2 のワークフロー(JSON)ComfyUI_IPAdapter_plus と insightface が必要です
1. 付属の LoRA が効いているか
FaceID には、顔を似せるための LoRA が付いています。Unified Loader FaceID は、プリセットに合う LoRA を loras フォルダーから探して自動で当てます(強さは lora_strength、既定 0.6)。ファイルが見つからないと「LoRA model not found.」で止まるので、入れ忘れには気づけます。
気づきにくいのは、lora_strength を 0 にした場合と、ローダーを自分で組んで LoRA を付け忘れた場合です。どちらもエラーは出ず、ただ似なくなりました。

| 条件 | 顔の近さ(シード1・2) |
|---|---|
| Unified Loader、lora_strength 0 | 0.02・0.04 |
| 自分でローダーを組み、LoRA なし | 0.02・0.04(上と同じ画像) |
| Unified Loader、lora_strength 0.6 | 0.43・0.71 |
| 自分でローダーを組み、LoRA ローダーで 0.6 | 0.43・0.71(上と同じ画像) |
自分でローダーを組むなら、「LoRA ローダー(モデルのみ)」で ip-adapter-faceid-plusv2_sd15_lora を当ててから、IPAdapter FaceID につなぎます。
2. SD1.5 用と SDXL 用を取り違えていないか
Unified Loader は、チェックポイントが SDXL なら SDXL 用の FaceID を自動で選びます。手で「IPAdapter Model Loader」を使う場合は、自分で選ぶので取り違えが起きます。
SDXL のチェックポイントに SD1.5 用の FaceID をつなぐと、エラーも警告も出ずに生成が終わり、別人の顔になりました(顔の近さ 0.12)。同じ SDXL で、SDXL 用を Unified Loader で使うと 0.63 で、今回いちばん安定していました。

3. 参照画像の顔が検出されているか
FaceID は、参照画像の顔を InsightFace で見つけて使います。顔がまったくない画像では「InsightFace: No face detected.」で止まりました。

困るのは、顔が小さい・横向きの画像です。今回、全身が小さく写った横向きの写真を参照にすると、エラーは出ませんでしたが、まったく似ませんでした(顔の近さ -0.03)。顔は見つかっても、小さすぎて特徴がうまく取れていないと考えられます。

参照画像は、顔を中心に切り抜いて、顔が画面の大部分を占めるようにします。
4. それから weight を調整する
3つを確かめてから、weight と weight_faceidv2 を調整します。
| 設定 | 顔の近さ(平均) | 見た目 |
|---|---|---|
| weight 0.5 | 0.14 | 似ない回が多い |
| weight 1.0(既定) | 0.33 | シードによってばらつく |
| weight 1.5 | 0.57 | 似る回が増える。構図が顔のアップに寄りやすい |
| weight_faceidv2 0.5 | 0.33 | 1.0 とあまり変わらない |
| weight_faceidv2 2.0 | 0.38 | 少し似る |

weight を上げると似やすくなりましたが、画面が顔のアップになりやすく、プロンプトの「上半身」などの指示が弱くなります。生成した画像の顔が小さいと似にくいので、構図も一緒に見ます。数値は今回の画像での目安で、モデルや参照画像で変わります。
必要なもの
| ファイル | 大きさ | 置き場所 |
|---|---|---|
| ip-adapter-faceid-plusv2_sd15.bin | 149MB | models\ipadapter |
| ip-adapter-faceid-plusv2_sd15_lora.safetensors | 49MB | models\loras |
| ip-adapter-faceid-plusv2_sdxl.bin(SDXL 用) | 1.4GB | models\ipadapter |
| ip-adapter-faceid-plusv2_sdxl_lora.safetensors(SDXL 用) | 355MB | models\loras |
| image_encoder/model.safetensors | 2.4GB | models\clip_vision に CLIP-ViT-H-14-laion2B-s32B-b79K.safetensors という名前で |
| v1-5-pruned-emaonly.safetensors | 4.1GB | models\checkpoints |
Unified Loader はファイル名で探すので、CLIP Vision のファイルは名前を変えないと「ClipVision model not found.」になります。InsightFace の顔検出モデル(buffalo_l)は、初回の実行時に自動でダウンロードされ、models\insightface に入りました。
insightface は ComfyUI の Python に別に入れます。今回のポータブル版(Python 3.13)では、python_embeded\python.exe -m pip install insightface でビルドなしの insightface 2.1 が入りました。
商用で使える?
使えないと考えてください。公式のモデルカードには、InsightFace の学習済みモデルが非商用の研究目的に限られるため、FaceID のモデルも研究目的のみで、商用利用は想定していない、と書かれています。
参照画像には、使ってよい画像だけを使います。この記事の参照画像は、SDXL で作った架空の人物です。
RTX 5090 以外の人へ
SD1.5 の 512×512 は1枚 1.5秒ほどで、SD1.5 自体が軽いので、VRAM 8GB 程度の GPU でも試しやすい組み合わせです。顔の検出は CPU で動かしました。--reserve-vram での簡易テストはしていません。
よくある質問(FAQ)
Q. IPAdapter FaceID で顔が似ないのはなぜ?
付属の LoRA が効いていない、SD1.5 用と SDXL 用の取り違え、参照画像の顔が小さい、のどれかが多い原因です。今回の試験では、どれもエラーは出ずに、ただ似なくなりました。weight を上げる前にこの3つを確かめます。
Q. 「InsightFace: No face detected.」と出たら?
参照画像から顔が見つかっていません。顔が大きく写った正面の画像にするか、顔を中心に切り抜きます。
Q. FaceID は商用で使える?
公式のモデルカードでは、研究目的のみで商用利用は想定していないとされています。InsightFace の学習済みモデルが非商用の研究目的に限られるためです。
まとめ
FaceID で似ないときは、エラーが出ていなくても、LoRA・系統・参照画像の3つを先に見ます。
Unified Loader FaceID で LoRA 0.6、参照画像は顔の大きな正面写真。そのうえで weight を上げる。
検証メモ
- 参照画像:SDXL Base で作った架空の女性(正面の顔のアップと、遠くから写した横向きの全身)。
- 生成:SD1.5 は 512×512、SDXL は 1024×1024、30ステップ、CFG 6、dpmpp_2m・karras。プロンプトは「黄色いレインコートで夜の街に立つ女性、上半身」。
- 顔の近さ:InsightFace(buffalo_l)で参照と生成画像のいちばん大きい顔の特徴量を取り、コサイン類似度を計算しました。FaceID を使わない画像は、6枚中4枚で顔が検出されませんでした(後ろ姿など)。
- ばらつき:SD1.5 の LoRA 0.6 でも、シードによって -0.11〜0.71 と大きく違いました。全身が小さく写った回ほど低くなっています。
- 未確認のこと:FaceID の無印・Plus・Portrait、weight_type の違い、GPU(CUDA)での顔検出、ComfyUI 0.44 以降。

