ID転送とFaceSwapとは?
ID転送は、Subject転送の中でも人物に特化したものです。特に顔の一貫性にこだわったものが多いです(個人的には、髪や体まで含めてIDとして扱ってほしいですが)。
FaceSwapは、生成AI登場以前からあったタスクです。古典的な方法は参照人物の顔の「仮面」を対象の人物の顔に被せるというものですが、ID転送の技術を使って、対象の顔の部分のみinpaintingすれば、より柔軟性のあるFaceSwapができます。
LoRA
LoRAは「モデルが描けないものを後から描けるようにする」仕組みで、人物の画像を学習させることもできます。
学習が必要というデメリットさえ克服できれば、柔軟性と安定性は一級です。
IP-Adapter系
Subject転送で扱ったIP-Adapterの技術を、IDに特化させた系譜がいくつかあります。
IP-Adapter(無印)
IP-Adapterは、既存のtext2imageモデルに「画像からの条件入力」を追加するためのアダプタです。
画像から特徴ベクトルを取り出し、それをUNet内部に注入することで、生成結果に反映させます。人物の転送もできますが、Subjectやスタイルをざっくり反映させるほうがメインです。
IP-Adapter-plus-face
公式の顔に特化したIP-Adapterモデルです。

{
"last_node_id": 26,
"last_link_id": 33,
"nodes": [
{
"id": 7,
"type": "CLIPTextEncode",
"pos": [
416,
412
],
"size": {
"0": 421.32025146484375,
"1": 99.7456283569336
},
"flags": {},
"order": 8,
"mode": 0,
"inputs": [
{
"name": "clip",
"type": "CLIP",
"link": 5
}
],
"outputs": [
{
"name": "CONDITIONING",
"type": "CONDITIONING",
"links": [
6
],
"slot_index": 0
}
],
"properties": {
"Node name for S&R": "CLIPTextEncode"
},
"widgets_values": [
"text, watermark"
]
},
{
"id": 5,
"type": "EmptyLatentImage",
"pos": [
512,
573
],
"size": {
"0": 315,
"1": 106
},
"flags": {},
"order": 0,
"mode": 0,
"outputs": [
{
"name": "LATENT",
"type": "LATENT",
"links": [
2
],
"slot_index": 0
}
],
"properties": {
"Node name for S&R": "EmptyLatentImage"
},
"widgets_values": [
512,
512,
1
]
},
{
"id": 3,
"type": "KSampler",
"pos": [
1330,
180
],
"size": {
"0": 315,
"1": 262
},
"flags": {},
"order": 11,
"mode": 0,
"inputs": [
{
"name": "model",
"type": "MODEL",
"link": 33
},
{
"name": "positive",
"type": "CONDITIONING",
"link": 4
},
{
"name": "negative",
"type": "CONDITIONING",
"link": 6
},
{
"name": "latent_image",
"type": "LATENT",
"link": 2
}
],
"outputs": [
{
"name": "LATENT",
"type": "LATENT",
"links": [
7
],
"slot_index": 0
}
],
"properties": {
"Node name for S&R": "KSampler"
},
"widgets_values": [
1,
"fixed",
20,
8,
"dpmpp_2m",
"karras",
1
]
},
{
"id": 16,
"type": "VAELoader",
"pos": [
1686,
278
],
"size": {
"0": 315,
"1": 58
},
"flags": {
"collapsed": true
},
"order": 1,
"mode": 0,
"outputs": [
{
"name": "VAE",
"type": "VAE",
"links": [
18
],
"shape": 3
}
],
"properties": {
"Node name for S&R": "VAELoader"
},
"widgets_values": [
"vae-ft-mse-840000-ema-pruned.safetensors"
]
},
{
"id": 8,
"type": "VAEDecode",
"pos": [
1680,
180
],
"size": {
"0": 210,
"1": 46
},
"flags": {},
"order": 12,
"mode": 0,
"inputs": [
{
"name": "samples",
"type": "LATENT",
"link": 7
},
{
"name": "vae",
"type": "VAE",
"link": 18
}
],
"outputs": [
{
"name": "IMAGE",
"type": "IMAGE",
"links": [
19
],
"slot_index": 0
}
],
"properties": {
"Node name for S&R": "VAEDecode"
}
},
{
"id": 17,
"type": "PreviewImage",
"pos": [
1928,
183
],
"size": {
"0": 514.4468383789062,
"1": 542.0400390625
},
"flags": {},
"order": 13,
"mode": 0,
"inputs": [
{
"name": "images",
"type": "IMAGE",
"link": 19
}
],
"properties": {
"Node name for S&R": "PreviewImage"
}
},
{
"id": 6,
"type": "CLIPTextEncode",
"pos": [
415,
186
],
"size": {
"0": 422.84503173828125,
"1": 164.31304931640625
},
"flags": {},
"order": 7,
"mode": 0,
"inputs": [
{
"name": "clip",
"type": "CLIP",
"link": 3
}
],
"outputs": [
{
"name": "CONDITIONING",
"type": "CONDITIONING",
"links": [
4
],
"slot_index": 0
}
],
"properties": {
"Node name for S&R": "CLIPTextEncode"
},
"widgets_values": [
"RAW photo, portrait of a lady,white short hair"
]
},
{
"id": 4,
"type": "CheckpointLoaderSimple",
"pos": [
26,
474
],
"size": {
"0": 315,
"1": 98
},
"flags": {},
"order": 2,
"mode": 0,
"outputs": [
{
"name": "MODEL",
"type": "MODEL",
"links": [
26
],
"slot_index": 0
},
{
"name": "CLIP",
"type": "CLIP",
"links": [
3,
5
],
"slot_index": 1
},
{
"name": "VAE",
"type": "VAE",
"links": [],
"slot_index": 2
}
],
"properties": {
"Node name for S&R": "CheckpointLoaderSimple"
},
"widgets_values": [
"📷-v1.x\\epicphotogasm_z.safetensors"
]
},
{
"id": 22,
"type": "InsightFaceLoader",
"pos": [
540,
-240
],
"size": {
"0": 315,
"1": 58
},
"flags": {},
"order": 3,
"mode": 0,
"outputs": [
{
"name": "INSIGHTFACE",
"type": "INSIGHTFACE",
"links": [
22
],
"shape": 3
}
],
"properties": {
"Node name for S&R": "InsightFaceLoader"
},
"widgets_values": [
"CUDA"
],
"color": "#323",
"bgcolor": "#535"
},
{
"id": 13,
"type": "LoadImage",
"pos": [
53,
-273
],
"size": {
"0": 422.5300598144531,
"1": 375.8209533691406
},
"flags": {},
"order": 4,
"mode": 0,
"outputs": [
{
"name": "IMAGE",
"type": "IMAGE",
"links": [
15
],
"shape": 3,
"slot_index": 0
},
{
"name": "MASK",
"type": "MASK",
"links": null,
"shape": 3
}
],
"properties": {
"Node name for S&R": "LoadImage"
},
"widgets_values": [
"pexels-photo-1520760 (1).jpg",
"image"
],
"color": "#323",
"bgcolor": "#535"
},
{
"id": 14,
"type": "PrepImageForClipVision",
"pos": [
540,
-110
],
"size": {
"0": 315,
"1": 106
},
"flags": {},
"order": 9,
"mode": 0,
"inputs": [
{
"name": "image",
"type": "IMAGE",
"link": 15
}
],
"outputs": [
{
"name": "IMAGE",
"type": "IMAGE",
"links": [
20
],
"shape": 3,
"slot_index": 0
}
],
"properties": {
"Node name for S&R": "PrepImageForClipVision"
},
"widgets_values": [
"LANCZOS",
"right",
0
],
"color": "#223",
"bgcolor": "#335"
},
{
"id": 12,
"type": "CLIPVisionLoader",
"pos": [
540,
-360
],
"size": {
"0": 315,
"1": 58
},
"flags": {},
"order": 5,
"mode": 0,
"outputs": [
{
"name": "CLIP_VISION",
"type": "CLIP_VISION",
"links": [
21
],
"shape": 3,
"slot_index": 0
}
],
"properties": {
"Node name for S&R": "CLIPVisionLoader"
},
"widgets_values": [
"OpenCLIP-ViT-H-14.safetensors"
],
"color": "#323",
"bgcolor": "#535"
},
{
"id": 23,
"type": "IPAdapterModelLoader",
"pos": [
540,
-490
],
"size": {
"0": 315,
"1": 58
},
"flags": {},
"order": 6,
"mode": 0,
"outputs": [
{
"name": "IPADAPTER",
"type": "IPADAPTER",
"links": [
24
],
"shape": 3,
"slot_index": 0
}
],
"properties": {
"Node name for S&R": "IPAdapterModelLoader"
},
"widgets_values": [
"ip-adapter-faceid-plusv2_sd15.bin"
],
"color": "#323",
"bgcolor": "#535"
},
{
"id": 21,
"type": "IPAdapterApplyFaceID",
"pos": [
925,
-159
],
"size": {
"0": 315,
"1": 326
},
"flags": {},
"order": 10,
"mode": 0,
"inputs": [
{
"name": "ipadapter",
"type": "IPADAPTER",
"link": 24
},
{
"name": "clip_vision",
"type": "CLIP_VISION",
"link": 21
},
{
"name": "insightface",
"type": "INSIGHTFACE",
"link": 22,
"slot_index": 2
},
{
"name": "image",
"type": "IMAGE",
"link": 20
},
{
"name": "model",
"type": "MODEL",
"link": 26
},
{
"name": "attn_mask",
"type": "MASK",
"link": null
}
],
"outputs": [
{
"name": "MODEL",
"type": "MODEL",
"links": [
33
],
"shape": 3,
"slot_index": 0
}
],
"properties": {
"Node name for S&R": "IPAdapterApplyFaceID"
},
"widgets_values": [
0.8,
0.01,
"original",
0,
1,
true,
1,
false
],
"color": "#323",
"bgcolor": "#535"
}
],
"links": [
[
2,
5,
0,
3,
3,
"LATENT"
],
[
3,
4,
1,
6,
0,
"CLIP"
],
[
4,
6,
0,
3,
1,
"CONDITIONING"
],
[
5,
4,
1,
7,
0,
"CLIP"
],
[
6,
7,
0,
3,
2,
"CONDITIONING"
],
[
7,
3,
0,
8,
0,
"LATENT"
],
[
15,
13,
0,
14,
0,
"IMAGE"
],
[
18,
16,
0,
8,
1,
"VAE"
],
[
19,
8,
0,
17,
0,
"IMAGE"
],
[
20,
14,
0,
21,
3,
"IMAGE"
],
[
21,
12,
0,
21,
1,
"CLIP_VISION"
],
[
22,
22,
0,
21,
2,
"INSIGHTFACE"
],
[
24,
23,
0,
21,
0,
"IPADAPTER"
],
[
26,
4,
0,
21,
4,
"MODEL"
],
[
33,
21,
0,
3,
0,
"MODEL"
]
],
"groups": [],
"config": {},
"extra": {},
"version": 0.4
}
IP-Adapter-FaceID
IP-Adapter-FaceID系は、顔認識モデル(InsightFace)と組み合わせてIDを強く固定するためのモデル群です。
FaceIDでは、CLIP画像埋め込みの代わりに「顔認識モデルからのFace ID埋め込み」を使い、さらにLoRAでID一貫性を高めています。
改良版のFaceID-Plusでは、「ID用のFace ID埋め込み」と「顔構造用のCLIP画像埋め込み」を両方使うことで、顔の似せ方と顔の形・構造の安定性を両立させています。
InstantID
厳密にはIP-Adapterの系譜ではないですが、同じく追加のアダプタを指すだけで使えるID転送に特化した手法です。

{
"last_node_id": 80,
"last_link_id": 246,
"nodes": [
{
"id": 15,
"type": "PreviewImage",
"pos": [
2095,
155
],
"size": {
"0": 823.6408081054688,
"1": 772.2030639648438
},
"flags": {},
"order": 11,
"mode": 0,
"inputs": [
{
"name": "images",
"type": "IMAGE",
"link": 19
}
],
"properties": {
"Node name for S&R": "PreviewImage"
}
},
{
"id": 13,
"type": "LoadImage",
"pos": [
101,
-91
],
"size": {
"0": 343.0831604003906,
"1": 596.3971557617188
},
"flags": {},
"order": 0,
"mode": 0,
"outputs": [
{
"name": "IMAGE",
"type": "IMAGE",
"links": [
241
],
"shape": 3,
"slot_index": 0
},
{
"name": "MASK",
"type": "MASK",
"links": null,
"shape": 3
}
],
"properties": {
"Node name for S&R": "LoadImage"
},
"widgets_values": [
"pexels-photo-20080104.jpg",
"image"
]
},
{
"id": 16,
"type": "ControlNetLoader",
"pos": [
680,
250
],
"size": {
"0": 250.07241821289062,
"1": 58
},
"flags": {},
"order": 1,
"mode": 0,
"outputs": [
{
"name": "CONTROL_NET",
"type": "CONTROL_NET",
"links": [
242
],
"shape": 3
}
],
"properties": {
"Node name for S&R": "ControlNetLoader"
},
"widgets_values": [
"InstantID\\diffusion_pytorch_model.safetensors"
],
"color": "#2a363b",
"bgcolor": "#3f5159"
},
{
"id": 80,
"type": "ApplyInstantID",
"pos": [
1110,
155
],
"size": {
"0": 315,
"1": 266
},
"flags": {},
"order": 8,
"mode": 0,
"inputs": [
{
"name": "instantid",
"type": "INSTANTID",
"link": 235
},
{
"name": "insightface",
"type": "FACEANALYSIS",
"link": 236
},
{
"name": "control_net",
"type": "CONTROL_NET",
"link": 242,
"slot_index": 2
},
{
"name": "image",
"type": "IMAGE",
"link": 241
},
{
"name": "model",
"type": "MODEL",
"link": 246
},
{
"name": "positive",
"type": "CONDITIONING",
"link": 239
},
{
"name": "negative",
"type": "CONDITIONING",
"link": 240
},
{
"name": "image_kps",
"type": "IMAGE",
"link": null
},
{
"name": "mask",
"type": "MASK",
"link": null
}
],
"outputs": [
{
"name": "MODEL",
"type": "MODEL",
"links": [
243
],
"shape": 3,
"slot_index": 0
},
{
"name": "POSITIVE",
"type": "CONDITIONING",
"links": [
244
],
"shape": 3,
"slot_index": 1
},
{
"name": "NEGATIVE",
"type": "CONDITIONING",
"links": [
245
],
"shape": 3,
"slot_index": 2
}
],
"properties": {
"Node name for S&R": "ApplyInstantID"
},
"widgets_values": [
0.8,
0,
1
],
"color": "#232",
"bgcolor": "#353"
},
{
"id": 5,
"type": "EmptyLatentImage",
"pos": [
1115,
495
],
"size": {
"0": 315,
"1": 106
},
"flags": {},
"order": 2,
"mode": 0,
"outputs": [
{
"name": "LATENT",
"type": "LATENT",
"links": [
2
],
"slot_index": 0
}
],
"properties": {
"Node name for S&R": "EmptyLatentImage"
},
"widgets_values": [
1016,
1016,
1
]
},
{
"id": 4,
"type": "CheckpointLoaderSimple",
"pos": [
95,
590
],
"size": {
"0": 414.3570251464844,
"1": 98
},
"flags": {},
"order": 3,
"mode": 0,
"outputs": [
{
"name": "MODEL",
"type": "MODEL",
"links": [
246
],
"slot_index": 0
},
{
"name": "CLIP",
"type": "CLIP",
"links": [
231,
232
],
"slot_index": 1
},
{
"name": "VAE",
"type": "VAE",
"links": [
8
],
"slot_index": 2
}
],
"properties": {
"Node name for S&R": "CheckpointLoaderSimple"
},
"widgets_values": [
"📷-XL\\RealismEngineSDXL_V2.0_FP16_VAE.safetensors"
]
},
{
"id": 38,
"type": "InstantIDFaceAnalysis",
"pos": [
690,
130
],
"size": {
"0": 239.4437713623047,
"1": 58
},
"flags": {},
"order": 4,
"mode": 0,
"outputs": [
{
"name": "FACEANALYSIS",
"type": "FACEANALYSIS",
"links": [
236
],
"shape": 3,
"slot_index": 0
}
],
"properties": {
"Node name for S&R": "InstantIDFaceAnalysis"
},
"widgets_values": [
"CUDA"
],
"color": "#232",
"bgcolor": "#353"
},
{
"id": 11,
"type": "InstantIDModelLoader",
"pos": [
680,
10
],
"size": {
"0": 258.2437744140625,
"1": 58.62757110595703
},
"flags": {},
"order": 5,
"mode": 0,
"outputs": [
{
"name": "INSTANTID",
"type": "INSTANTID",
"links": [
235
],
"shape": 3,
"slot_index": 0
}
],
"properties": {
"Node name for S&R": "InstantIDModelLoader"
},
"widgets_values": [
"ip-adapter.bin"
],
"color": "#232",
"bgcolor": "#353"
},
{
"id": 39,
"type": "CLIPTextEncode",
"pos": [
624,
395
],
"size": {
"0": 318.3697814941406,
"1": 111.91729736328125
},
"flags": {},
"order": 6,
"mode": 0,
"inputs": [
{
"name": "clip",
"type": "CLIP",
"link": 231
}
],
"outputs": [
{
"name": "CONDITIONING",
"type": "CONDITIONING",
"links": [
239
],
"shape": 3,
"slot_index": 0
}
],
"properties": {
"Node name for S&R": "CLIPTextEncode"
},
"widgets_values": [
"RAW photo of a man,upper body,cinematic,shirt,outdoors, coat, open clothes, open coat"
]
},
{
"id": 40,
"type": "CLIPTextEncode",
"pos": [
628,
561
],
"size": {
"0": 309.3837585449219,
"1": 88.66529846191406
},
"flags": {},
"order": 7,
"mode": 0,
"inputs": [
{
"name": "clip",
"type": "CLIP",
"link": 232
}
],
"outputs": [
{
"name": "CONDITIONING",
"type": "CONDITIONING",
"links": [
240
],
"shape": 3,
"slot_index": 0
}
],
"properties": {
"Node name for S&R": "CLIPTextEncode"
},
"widgets_values": [
"low quality, blurry"
]
},
{
"id": 8,
"type": "VAEDecode",
"pos": [
1868,
155
],
"size": {
"0": 186.48898315429688,
"1": 46
},
"flags": {},
"order": 10,
"mode": 0,
"inputs": [
{
"name": "samples",
"type": "LATENT",
"link": 7
},
{
"name": "vae",
"type": "VAE",
"link": 8
}
],
"outputs": [
{
"name": "IMAGE",
"type": "IMAGE",
"links": [
19
],
"slot_index": 0
}
],
"properties": {
"Node name for S&R": "VAEDecode"
}
},
{
"id": 3,
"type": "KSampler",
"pos": [
1515,
155
],
"size": {
"0": 315,
"1": 262
},
"flags": {},
"order": 9,
"mode": 0,
"inputs": [
{
"name": "model",
"type": "MODEL",
"link": 243
},
{
"name": "positive",
"type": "CONDITIONING",
"link": 244
},
{
"name": "negative",
"type": "CONDITIONING",
"link": 245
},
{
"name": "latent_image",
"type": "LATENT",
"link": 2
}
],
"outputs": [
{
"name": "LATENT",
"type": "LATENT",
"links": [
7
],
"slot_index": 0
}
],
"properties": {
"Node name for S&R": "KSampler"
},
"widgets_values": [
12345,
"fixed",
20,
3,
"dpmpp_2m",
"karras",
1
]
}
],
"links": [
[
2,
5,
0,
3,
3,
"LATENT"
],
[
7,
3,
0,
8,
0,
"LATENT"
],
[
8,
4,
2,
8,
1,
"VAE"
],
[
19,
8,
0,
15,
0,
"IMAGE"
],
[
231,
4,
1,
39,
0,
"CLIP"
],
[
232,
4,
1,
40,
0,
"CLIP"
],
[
235,
11,
0,
80,
0,
"INSTANTID"
],
[
236,
38,
0,
80,
1,
"FACEANALYSIS"
],
[
239,
39,
0,
80,
5,
"CONDITIONING"
],
[
240,
40,
0,
80,
6,
"CONDITIONING"
],
[
241,
13,
0,
80,
3,
"IMAGE"
],
[
242,
16,
0,
80,
2,
"CONTROL_NET"
],
[
243,
80,
0,
3,
0,
"MODEL"
],
[
244,
80,
1,
3,
1,
"CONDITIONING"
],
[
245,
80,
2,
3,
2,
"CONDITIONING"
],
[
246,
4,
0,
80,
4,
"MODEL"
]
],
"groups": [],
"config": {},
"extra": {
"0246.VERSION": [
0,
0,
4
]
},
"version": 0.4
}
IP-Adapter型の画像アダプタに加えて、顔認識モデルから得たID埋め込みと顔ランドマークを使う追加ネットワーク(IdentityNet)を組み合わせることで、一枚の顔写真からのID保持とテキスト編集のバランスを高めています。
個人的には、SDXLで使うならInstantIDが最強だと思います。
PuLID-FLUX / InfiniteYou
時代が進み、ベースモデルの主戦場もSDXLからDiffusion Transformer系(FLUX系)に移ってきました。それに合わせて、Flux.1を前提としたID転送手法も登場しています。
PuLID-FLUXは、FLUX1-devをベースにした、ID特化のカスタマイズ手法です。Lightning T2Iなどの工夫により、追加の学習なしで「参照顔+テキスト」でIDを保ったまま絵柄を変えることができます。
-

-
{ "last_node_id": 36, "last_link_id": 43, "nodes": [ { "id": 8, "type": "VAEDecode", "pos": [ 1209.3575439453125, 186 ], "size": [ 181.34352111816406, 46 ], "flags": {}, "order": 14, "mode": 0, "inputs": [ { "name": "samples", "type": "LATENT", "link": 7 }, { "name": "vae", "type": "VAE", "link": 33 } ], "outputs": [ { "name": "IMAGE", "type": "IMAGE", "links": [ 23 ], "slot_index": 0 } ], "properties": { "Node name for S&R": "VAEDecode" }, "widgets_values": [] }, { "id": 21, "type": "PreviewImage", "pos": [ 1429.19921875, 186 ], "size": [ 571.3301391601562, 619.499267578125 ], "flags": {}, "order": 15, "mode": 0, "inputs": [ { "name": "images", "type": "IMAGE", "link": 23 } ], "outputs": [], "properties": { "Node name for S&R": "PreviewImage" }, "widgets_values": [] }, { "id": 24, "type": "PulidFluxModelLoader", "pos": [ 30, -520 ], "size": [ 315, 58 ], "flags": {}, "order": 0, "mode": 0, "inputs": [], "outputs": [ { "name": "PULIDFLUX", "type": "PULIDFLUX", "links": [ 34 ], "slot_index": 0 } ], "properties": { "Node name for S&R": "PulidFluxModelLoader" }, "widgets_values": [ "pulid_flux_v0.9.1.safetensors" ], "color": "#232", "bgcolor": "#353" }, { "id": 3, "type": "KSampler", "pos": [ 866.101318359375, 186 ], "size": [ 315, 262 ], "flags": {}, "order": 13, "mode": 0, "inputs": [ { "name": "model", "type": "MODEL", "link": 28 }, { "name": "positive", "type": "CONDITIONING", "link": 41 }, { "name": "negative", "type": "CONDITIONING", "link": 6 }, { "name": "latent_image", "type": "LATENT", "link": 2 } ], "outputs": [ { "name": "LATENT", "type": "LATENT", "links": [ 7 ], "slot_index": 0 } ], "properties": { "Node name for S&R": "KSampler" }, "widgets_values": [ 1234, "fixed", 20, 1, "euler", "normal", 1 ] }, { "id": 30, "type": "FluxGuidance", "pos": [ 430, 250 ], "size": [ 211.60000610351562, 58 ], "flags": {}, "order": 12, "mode": 0, "inputs": [ { "name": "conditioning", "type": "CONDITIONING", "link": 40 } ], "outputs": [ { "name": "CONDITIONING", "type": "CONDITIONING", "links": [ 41 ], "slot_index": 0, "shape": 3 } ], "properties": { "Node name for S&R": "FluxGuidance" }, "widgets_values": [ 3 ] }, { "id": 26, "type": "PulidFluxInsightFaceLoader", "pos": [ 30, -280 ], "size": [ 315, 58 ], "flags": {}, "order": 1, "mode": 0, "inputs": [], "outputs": [ { "name": "FACEANALYSIS", "type": "FACEANALYSIS", "links": [ 31 ] } ], "properties": { "Node name for S&R": "PulidFluxInsightFaceLoader" }, "widgets_values": [ "CPU" ], "color": "#232", "bgcolor": "#353" }, { "id": 25, "type": "PulidFluxEvaClipLoader", "pos": [ 30, -380 ], "size": [ 315, 26 ], "flags": {}, "order": 2, "mode": 0, "inputs": [], "outputs": [ { "name": "EVA_CLIP", "type": "EVA_CLIP", "links": [ 30 ] } ], "properties": { "Node name for S&R": "PulidFluxEvaClipLoader" }, "widgets_values": [], "color": "#232", "bgcolor": "#353" }, { "id": 27, "type": "LoadImage", "pos": [ 30.456762313842773, -160.2384033203125 ], "size": [ 315, 314 ], "flags": {}, "order": 3, "mode": 0, "inputs": [], "outputs": [ { "name": "IMAGE", "type": "IMAGE", "links": [ 32 ] }, { "name": "MASK", "type": "MASK", "links": null } ], "properties": { "Node name for S&R": "LoadImage" }, "widgets_values": [ "pexels-photo-28252721.jpg", "image" ] }, { "id": 5, "type": "EmptyLatentImage", "pos": [ 499.3537902832031, 517.5509033203125 ], "size": [ 315, 106 ], "flags": {}, "order": 4, "mode": 0, "inputs": [], "outputs": [ { "name": "LATENT", "type": "LATENT", "links": [ 2 ], "slot_index": 0 } ], "properties": { "Node name for S&R": "EmptyLatentImage" }, "widgets_values": [ 1024, 1024, 1 ] }, { "id": 7, "type": "CLIPTextEncode", "pos": [ -21.81440544128418, 467.05328369140625 ], "size": [ 429.0223693847656, 139.41818237304688 ], "flags": {}, "order": 10, "mode": 0, "inputs": [ { "name": "clip", "type": "CLIP", "link": 36 } ], "outputs": [ { "name": "CONDITIONING", "type": "CONDITIONING", "links": [ 6 ], "slot_index": 0 } ], "properties": { "Node name for S&R": "CLIPTextEncode" }, "widgets_values": [ "text, watermark" ] }, { "id": 28, "type": "VAELoader", "pos": [ 1208.9296875, 297.4112548828125 ], "size": [ 210, 58 ], "flags": { "collapsed": true }, "order": 5, "mode": 0, "inputs": [], "outputs": [ { "name": "VAE", "type": "VAE", "links": [ 33 ] } ], "properties": { "Node name for S&R": "VAELoader" }, "widgets_values": [ "FLUXvae.safetensors" ] }, { "id": 36, "type": "LoraLoaderModelOnly", "pos": [ 17.71822166442871, -674.8831176757812 ], "size": [ 315, 82 ], "flags": {}, "order": 8, "mode": 0, "inputs": [ { "name": "model", "type": "MODEL", "link": 42 } ], "outputs": [ { "name": "MODEL", "type": "MODEL", "links": [ 43 ], "slot_index": 0 } ], "properties": { "Node name for S&R": "LoraLoaderModelOnly" }, "widgets_values": [ "Flux\\AntiBlur.safetensors", 2 ] }, { "id": 32, "type": "UnetLoaderGGUF", "pos": [ -329.1488952636719, -674.8831176757812 ], "size": [ 315, 58 ], "flags": {}, "order": 6, "mode": 0, "inputs": [], "outputs": [ { "name": "MODEL", "type": "MODEL", "links": [ 42 ], "slot_index": 0 } ], "properties": { "Node name for S&R": "UnetLoaderGGUF" }, "widgets_values": [ "FLUX_gguf\\flux1-dev-Q4_0.gguf" ] }, { "id": 31, "type": "DualCLIPLoader", "pos": [ -402.289306640625, 392.2030334472656 ], "size": [ 315, 106 ], "flags": {}, "order": 7, "mode": 0, "inputs": [], "outputs": [ { "name": "CLIP", "type": "CLIP", "links": [ 35, 36 ], "slot_index": 0, "shape": 3 } ], "properties": { "Node name for S&R": "DualCLIPLoader" }, "widgets_values": [ "t5xxl_fp16.safetensors", "clip_l.safetensors", "flux", "default" ] }, { "id": 6, "type": "CLIPTextEncode", "pos": [ -20, 250 ], "size": [ 422.84503173828125, 164.31304931640625 ], "flags": {}, "order": 9, "mode": 0, "inputs": [ { "name": "clip", "type": "CLIP", "link": 35 } ], "outputs": [ { "name": "CONDITIONING", "type": "CONDITIONING", "links": [ 40 ], "slot_index": 0 } ], "properties": { "Node name for S&R": "CLIPTextEncode" }, "widgets_values": [ "RAW photo of a lady sitting on the bench, wearing red jacket,shot from side,late night,neon light" ] }, { "id": 23, "type": "ApplyPulidFlux", "pos": [ 459.103271484375, -392.2486267089844 ], "size": [ 315, 206 ], "flags": {}, "order": 11, "mode": 0, "inputs": [ { "name": "model", "type": "MODEL", "link": 43 }, { "name": "pulid_flux", "type": "PULIDFLUX", "link": 34 }, { "name": "eva_clip", "type": "EVA_CLIP", "link": 30 }, { "name": "face_analysis", "type": "FACEANALYSIS", "link": 31 }, { "name": "image", "type": "IMAGE", "link": 32 }, { "name": "attn_mask", "type": "MASK", "link": null, "shape": 7 } ], "outputs": [ { "name": "MODEL", "type": "MODEL", "links": [ 28 ], "slot_index": 0 } ], "properties": { "Node name for S&R": "ApplyPulidFlux" }, "widgets_values": [ 0.8, 0.2, 1 ], "color": "#232", "bgcolor": "#353" } ], "links": [ [ 2, 5, 0, 3, 3, "LATENT" ], [ 6, 7, 0, 3, 2, "CONDITIONING" ], [ 7, 3, 0, 8, 0, "LATENT" ], [ 23, 8, 0, 21, 0, "IMAGE" ], [ 28, 23, 0, 3, 0, "MODEL" ], [ 30, 25, 0, 23, 2, "EVA_CLIP" ], [ 31, 26, 0, 23, 3, "FACEANALYSIS" ], [ 32, 27, 0, 23, 4, "IMAGE" ], [ 33, 28, 0, 8, 1, "VAE" ], [ 34, 24, 0, 23, 1, "PULIDFLUX" ], [ 35, 31, 0, 6, 0, "CLIP" ], [ 36, 31, 0, 7, 0, "CLIP" ], [ 40, 6, 0, 30, 0, "CONDITIONING" ], [ 41, 30, 0, 3, 1, "CONDITIONING" ], [ 42, 32, 0, 36, 0, "MODEL" ], [ 43, 36, 0, 23, 0, "MODEL" ] ], "groups": [], "config": {}, "extra": { "ds": { "scale": 0.7114780112755382, "offset": [ 320.2294089754662, 767.2625711069621 ] }, "node_versions": { "comfy-core": "0.3.10", "comfyui_pulid_flux_ll": "1.0.2", "ComfyUI-GGUF": "5875c52f59baca3a9372d68c43a3775e21846fe0" }, "VHS_latentpreview": false, "VHS_latentpreviewrate": 0 }, "version": 0.4 }
InfiniteYouは、FLUX系のDiffusion TransformerをベースにしたID保持フレームワークです。Identity特徴をDiT本体に注入するモジュール(InfuseNet)と多段階の学習戦略により、IDの似せ方、テキスト整合性、画質を同時に高めることを目指しています。
指示ベース画像編集とID転送
Subject転送ができるので言わずもがなですが、「指示ベース画像編集モデル」も、ID転送に使えます。
FaceSwap
FaceSwapは、ターゲットの人物の顔を参照人物の顔と入れ替える技術です。
古典的なFaceSwap(ReActor / InsightFace系)
ID転送というより、「仮面を作って被せる」に近い発想です。
顔検出とランドマーク検出で、顔の位置・向き・輪郭を推定し、ソース顔とターゲット顔をアフィン変換などで位置合わせして、マスクとブレンディングでターゲット側の顔部分をソース顔に置き換えます。

{
"last_node_id": 15,
"last_link_id": 20,
"nodes": [
{
"id": 4,
"type": "LoadImage",
"pos": {
"0": 140,
"1": 150
},
"size": {
"0": 291.144287109375,
"1": 458.9242858886719
},
"flags": {},
"order": 0,
"mode": 0,
"inputs": [],
"outputs": [
{
"name": "IMAGE",
"type": "IMAGE",
"links": [
5
],
"slot_index": 0,
"shape": 3
},
{
"name": "MASK",
"type": "MASK",
"links": null,
"shape": 3
}
],
"properties": {
"Node name for S&R": "LoadImage"
},
"widgets_values": [
"free-photo-of-mahdi-dyn-mahla-3.jpg",
"image"
]
},
{
"id": 1,
"type": "ReActorFaceSwap",
"pos": {
"0": 750,
"1": 150
},
"size": {
"0": 315,
"1": 358
},
"flags": {},
"order": 2,
"mode": 0,
"inputs": [
{
"name": "input_image",
"type": "IMAGE",
"link": 5
},
{
"name": "source_image",
"type": "IMAGE",
"link": 4
},
{
"name": "face_model",
"type": "FACE_MODEL",
"link": null
},
{
"name": "face_boost",
"type": "FACE_BOOST",
"link": null
}
],
"outputs": [
{
"name": "IMAGE",
"type": "IMAGE",
"links": [
20
],
"slot_index": 0,
"shape": 3
},
{
"name": "FACE_MODEL",
"type": "FACE_MODEL",
"links": null,
"shape": 3
}
],
"properties": {
"Node name for S&R": "ReActorFaceSwap"
},
"widgets_values": [
true,
"inswapper_128.onnx",
"retinaface_resnet50",
"GPEN-BFR-2048.onnx",
0.6,
0.5,
"no",
"no",
"0",
"0",
1
],
"color": "#232",
"bgcolor": "#353"
},
{
"id": 15,
"type": "PreviewImage",
"pos": {
"0": 1110,
"1": 150
},
"size": [
418.7972197509421,
553.3854994326059
],
"flags": {},
"order": 3,
"mode": 0,
"inputs": [
{
"name": "images",
"type": "IMAGE",
"link": 20
}
],
"outputs": [],
"properties": {
"Node name for S&R": "PreviewImage"
}
},
{
"id": 3,
"type": "LoadImage",
"pos": {
"0": 470,
"1": 230
},
"size": {
"0": 234.9705352783203,
"1": 380.551513671875
},
"flags": {},
"order": 1,
"mode": 0,
"inputs": [],
"outputs": [
{
"name": "IMAGE",
"type": "IMAGE",
"links": [
4
],
"slot_index": 0,
"shape": 3
},
{
"name": "MASK",
"type": "MASK",
"links": null,
"shape": 3
}
],
"properties": {
"Node name for S&R": "LoadImage"
},
"widgets_values": [
"pexels-photo-28266414.jpg",
"image"
]
}
],
"links": [
[
4,
3,
0,
1,
1,
"IMAGE"
],
[
5,
4,
0,
1,
0,
"IMAGE"
],
[
20,
1,
0,
15,
0,
"IMAGE"
]
],
"groups": [],
"config": {},
"extra": {
"ds": {
"scale": 0.9229599817706441,
"offset": [
74.20408825056866,
220.12861021397595
]
}
},
"version": 0.4
}
ComfyUIで使用できる代表的なものは、ReActor(InsightFaceベースのFaceSwap)ですが、倫理的観点からリポジトリが削除されたりと、不安要素が強い技術でもあります。
ID転送を使った顔inpainting
ターゲットの人物の顔をマスクにしてinpaintingする際、ID転送の技術を使ってターゲットの顔を描き直す方法です。
ID転送の技術が未熟だったころは、ReActorでFaceSwapしてから、ID転送を使ったinpaintingでリファインする、という手法もありました(私が作ったworkflowの中でも、かなり人気のあるものです)。
ReActorでFace SwapしたあとにInstantIDを使ってリファインする

{
"last_node_id": 210,
"last_link_id": 385,
"nodes": [
{
"id": 27,
"type": "Automatic CFG",
"pos": [
920,
1310
],
"size": {
"0": 140,
"1": 26
},
"flags": {},
"order": 25,
"mode": 0,
"inputs": [
{
"name": "model",
"type": "MODEL",
"link": 41
}
],
"outputs": [
{
"name": "MODEL",
"type": "MODEL",
"links": [
284
],
"shape": 3,
"slot_index": 0
}
],
"properties": {
"Node name for S&R": "Automatic CFG"
}
},
{
"id": 28,
"type": "SelfAttentionGuidance",
"pos": [
575,
1310
],
"size": {
"0": 315,
"1": 82
},
"flags": {},
"order": 21,
"mode": 0,
"inputs": [
{
"name": "model",
"type": "MODEL",
"link": 119
}
],
"outputs": [
{
"name": "MODEL",
"type": "MODEL",
"links": [
41
],
"shape": 3,
"slot_index": 0
}
],
"properties": {
"Node name for S&R": "SelfAttentionGuidance"
},
"widgets_values": [
0.5,
2
]
},
{
"id": 112,
"type": "CLIPTextEncode",
"pos": [
1120,
1152
],
"size": {
"0": 353.9808654785156,
"1": 63.40380096435547
},
"flags": {},
"order": 33,
"mode": 0,
"inputs": [
{
"name": "clip",
"type": "CLIP",
"link": 237
},
{
"name": "text",
"type": "STRING",
"link": 296,
"widget": {
"name": "text"
}
}
],
"outputs": [
{
"name": "CONDITIONING",
"type": "CONDITIONING",
"links": [
189
],
"shape": 3,
"slot_index": 0
}
],
"properties": {
"Node name for S&R": "CLIPTextEncode"
},
"widgets_values": [
""
]
},
{
"id": 130,
"type": "Reroute",
"pos": [
983,
1509
],
"size": [
75,
26
],
"flags": {},
"order": 22,
"mode": 0,
"inputs": [
{
"name": "",
"type": "*",
"link": 236
}
],
"outputs": [
{
"name": "",
"type": "CLIP",
"links": [
237,
238,
239,
240
],
"slot_index": 0
}
],
"properties": {
"showOutputText": false,
"horizontal": false
}
},
{
"id": 19,
"type": "CLIPTextEncode",
"pos": [
1113,
1269
],
"size": {
"0": 360.9808654785156,
"1": 76
},
"flags": {},
"order": 26,
"mode": 0,
"inputs": [
{
"name": "clip",
"type": "CLIP",
"link": 238
}
],
"outputs": [
{
"name": "CONDITIONING",
"type": "CONDITIONING",
"links": [
190
],
"shape": 3,
"slot_index": 0
}
],
"properties": {
"Node name for S&R": "CLIPTextEncode"
},
"widgets_values": [
"High detail RAW Photo,4ng3l face,realistic skin texture,unretouched,detailed skin"
]
},
{
"id": 131,
"type": "SEGSPaste",
"pos": [
3930,
845
],
"size": {
"0": 315,
"1": 122
},
"flags": {},
"order": 39,
"mode": 0,
"inputs": [
{
"name": "image",
"type": "IMAGE",
"link": 272
},
{
"name": "segs",
"type": "SEGS",
"link": 242
},
{
"name": "ref_image_opt",
"type": "IMAGE",
"link": null
}
],
"outputs": [
{
"name": "IMAGE",
"type": "IMAGE",
"links": [
244
],
"shape": 3,
"slot_index": 0
}
],
"properties": {
"Node name for S&R": "SEGSPaste"
},
"widgets_values": [
5,
255
]
},
{
"id": 152,
"type": "Reroute",
"pos": [
-220,
-765
],
"size": [
75,
26
],
"flags": {},
"order": 14,
"mode": 0,
"inputs": [
{
"name": "",
"type": "*",
"link": 270
}
],
"outputs": [
{
"name": "",
"type": "IMAGE",
"links": [
271
],
"slot_index": 0
}
],
"properties": {
"showOutputText": false,
"horizontal": false
}
},
{
"id": 153,
"type": "Reroute",
"pos": [
3115,
-765
],
"size": [
75,
26
],
"flags": {},
"order": 19,
"mode": 0,
"inputs": [
{
"name": "",
"type": "*",
"link": 271
}
],
"outputs": [
{
"name": "",
"type": "IMAGE",
"links": [
272
],
"slot_index": 0
}
],
"properties": {
"showOutputText": false,
"horizontal": false
}
},
{
"id": 151,
"type": "Reroute",
"pos": [
2565,
-685
],
"size": [
75,
26
],
"flags": {},
"order": 18,
"mode": 0,
"inputs": [
{
"name": "",
"type": "*",
"link": 317
}
],
"outputs": [
{
"name": "",
"type": "IMAGE",
"links": [
269
],
"slot_index": 0
}
],
"properties": {
"showOutputText": false,
"horizontal": false
}
},
{
"id": 1,
"type": "ImpactSimpleDetectorSEGS",
"pos": [
950,
-545
],
"size": {
"0": 315,
"1": 310
},
"flags": {},
"order": 23,
"mode": 0,
"inputs": [
{
"name": "bbox_detector",
"type": "BBOX_DETECTOR",
"link": 209,
"slot_index": 0
},
{
"name": "image",
"type": "IMAGE",
"link": 305,
"slot_index": 1
},
{
"name": "sam_model_opt",
"type": "SAM_MODEL",
"link": 210,
"slot_index": 2
},
{
"name": "segm_detector_opt",
"type": "SEGM_DETECTOR",
"link": null
}
],
"outputs": [
{
"name": "SEGS",
"type": "SEGS",
"links": [
163
],
"shape": 3,
"slot_index": 0
}
],
"properties": {
"Node name for S&R": "ImpactSimpleDetectorSEGS"
},
"widgets_values": [
0.5,
0,
1.5,
10,
0.5,
0,
0,
0.5,
20
],
"color": "#432",
"bgcolor": "#653"
},
{
"id": 67,
"type": "LoraLoader",
"pos": [
-125,
1490
],
"size": {
"0": 315,
"1": 126
},
"flags": {},
"order": 11,
"mode": 0,
"inputs": [
{
"name": "model",
"type": "MODEL",
"link": 123
},
{
"name": "clip",
"type": "CLIP",
"link": 124
}
],
"outputs": [
{
"name": "MODEL",
"type": "MODEL",
"links": [
125
],
"shape": 3
},
{
"name": "CLIP",
"type": "CLIP",
"links": [
126
],
"shape": 3
}
],
"properties": {
"Node name for S&R": "LoraLoader"
},
"widgets_values": [
"XL\\👩\\epiCPhotoXL.safetensors",
0.6,
0.6
]
},
{
"id": 66,
"type": "LoraLoader",
"pos": [
232,
1490
],
"size": {
"0": 315,
"1": 126
},
"flags": {},
"order": 16,
"mode": 0,
"inputs": [
{
"name": "model",
"type": "MODEL",
"link": 125
},
{
"name": "clip",
"type": "CLIP",
"link": 126
}
],
"outputs": [
{
"name": "MODEL",
"type": "MODEL",
"links": [
119
],
"shape": 3
},
{
"name": "CLIP",
"type": "CLIP",
"links": [
236
],
"shape": 3,
"slot_index": 1
}
],
"properties": {
"Node name for S&R": "LoraLoader"
},
"widgets_values": [
"XL\\👩\\SDXL_BetterFaces-LoRA_v1.safetensors",
0.8,
0.8
]
},
{
"id": 21,
"type": "CheckpointLoaderSimple",
"pos": [
-479,
1490
],
"size": {
"0": 315,
"1": 98
},
"flags": {},
"order": 0,
"mode": 0,
"outputs": [
{
"name": "MODEL",
"type": "MODEL",
"links": [
123
],
"shape": 3,
"slot_index": 0
},
{
"name": "CLIP",
"type": "CLIP",
"links": [
124
],
"shape": 3,
"slot_index": 1
},
{
"name": "VAE",
"type": "VAE",
"links": [
52
],
"shape": 3,
"slot_index": 2
}
],
"properties": {
"Node name for S&R": "CheckpointLoaderSimple"
},
"widgets_values": [
"📷-XL\\epicrealismXL_v2Wip.safetensors"
]
},
{
"id": 69,
"type": "ImpactSEGSOrderedFilter",
"pos": [
1290,
-545
],
"size": {
"0": 315,
"1": 150
},
"flags": {},
"order": 28,
"mode": 0,
"inputs": [
{
"name": "segs",
"type": "SEGS",
"link": 163
}
],
"outputs": [
{
"name": "filtered_SEGS",
"type": "SEGS",
"links": [
129,
287
],
"shape": 3,
"slot_index": 0
},
{
"name": "remained_SEGS",
"type": "SEGS",
"links": [],
"shape": 3,
"slot_index": 1
}
],
"properties": {
"Node name for S&R": "ImpactSEGSOrderedFilter"
},
"widgets_values": [
"area(=w*h)",
true,
0,
1
]
},
{
"id": 8,
"type": "ControlNetLoader",
"pos": [
2180,
680
],
"size": {
"0": 252.1982879638672,
"1": 58
},
"flags": {},
"order": 1,
"mode": 0,
"outputs": [
{
"name": "CONTROL_NET",
"type": "CONTROL_NET",
"links": [
288
],
"shape": 3,
"slot_index": 0
}
],
"properties": {
"Node name for S&R": "ControlNetLoader"
},
"widgets_values": [
"InstantID\\diffusion_pytorch_model.safetensors"
],
"color": "#2a363b",
"bgcolor": "#3f5159"
},
{
"id": 166,
"type": "LLava Loader Simple",
"pos": [
380,
910
],
"size": {
"0": 315,
"1": 130
},
"flags": {},
"order": 12,
"mode": 0,
"inputs": [
{
"name": "clip",
"type": "CUSTOM",
"link": 294,
"slot_index": 0
}
],
"outputs": [
{
"name": "model",
"type": "CUSTOM",
"links": [
292
],
"shape": 3
}
],
"properties": {
"Node name for S&R": "LLava Loader Simple"
},
"widgets_values": [
"llava-v1.6-mistral-7b.Q4_K_M.gguf",
2048,
27,
8
],
"color": "#322",
"bgcolor": "#533"
},
{
"id": 167,
"type": "LlavaClipLoader",
"pos": [
45,
910
],
"size": {
"0": 315,
"1": 58
},
"flags": {},
"order": 2,
"mode": 0,
"outputs": [
{
"name": "clip",
"type": "CUSTOM",
"links": [
294
],
"shape": 3
}
],
"properties": {
"Node name for S&R": "LlavaClipLoader"
},
"widgets_values": [
"mmproj-model-f16.gguf"
],
"color": "#322",
"bgcolor": "#533"
},
{
"id": 12,
"type": "InstantIDFaceAnalysis",
"pos": [
2185,
560
],
"size": {
"0": 232.38363647460938,
"1": 58
},
"flags": {},
"order": 3,
"mode": 0,
"outputs": [
{
"name": "FACEANALYSIS",
"type": "FACEANALYSIS",
"links": [
15,
279
],
"shape": 3,
"slot_index": 0
}
],
"properties": {
"Node name for S&R": "InstantIDFaceAnalysis"
},
"widgets_values": [
"CUDA"
],
"color": "#232",
"bgcolor": "#353"
},
{
"id": 154,
"type": "PreviewImage",
"pos": [
2620,
635
],
"size": {
"0": 210,
"1": 246
},
"flags": {},
"order": 34,
"mode": 0,
"inputs": [
{
"name": "images",
"type": "IMAGE",
"link": 274
}
],
"properties": {
"Node name for S&R": "PreviewImage"
}
},
{
"id": 132,
"type": "PreviewImage",
"pos": [
4285,
845
],
"size": {
"0": 1066.457763671875,
"1": 1072.204833984375
},
"flags": {},
"order": 40,
"mode": 0,
"inputs": [
{
"name": "images",
"type": "IMAGE",
"link": 244
}
],
"properties": {
"Node name for S&R": "PreviewImage"
},
"color": "#223",
"bgcolor": "#335"
},
{
"id": 165,
"type": "LLavaSamplerSimple",
"pos": [
737,
882
],
"size": [
315,
102
],
"flags": {},
"order": 30,
"mode": 0,
"inputs": [
{
"name": "image",
"type": "IMAGE",
"link": 300
},
{
"name": "model",
"type": "CUSTOM",
"link": 292,
"slot_index": 1
},
{
"name": "prompt",
"type": "STRING",
"link": 293,
"widget": {
"name": "prompt"
},
"slot_index": 2
}
],
"outputs": [
{
"name": "STRING",
"type": "STRING",
"links": [
295,
296
],
"shape": 3,
"slot_index": 0
}
],
"properties": {
"Node name for S&R": "LLavaSamplerSimple"
},
"widgets_values": [
"",
0.1
],
"color": "#322",
"bgcolor": "#533"
},
{
"id": 173,
"type": "ImpactSEGSOrderedFilter",
"pos": [
1295,
75
],
"size": {
"0": 315,
"1": 150
},
"flags": {},
"order": 20,
"mode": 0,
"inputs": [
{
"name": "segs",
"type": "SEGS",
"link": 306
}
],
"outputs": [
{
"name": "filtered_SEGS",
"type": "SEGS",
"links": [
308
],
"shape": 3,
"slot_index": 0
},
{
"name": "remained_SEGS",
"type": "SEGS",
"links": null,
"shape": 3
}
],
"properties": {
"Node name for S&R": "ImpactSEGSOrderedFilter"
},
"widgets_values": [
"area(=w*h)",
true,
0,
1
]
},
{
"id": 172,
"type": "ImpactSimpleDetectorSEGS",
"pos": [
960,
75
],
"size": {
"0": 315,
"1": 310
},
"flags": {},
"order": 15,
"mode": 0,
"inputs": [
{
"name": "bbox_detector",
"type": "BBOX_DETECTOR",
"link": 309
},
{
"name": "image",
"type": "IMAGE",
"link": 383
},
{
"name": "sam_model_opt",
"type": "SAM_MODEL",
"link": 310,
"slot_index": 2
},
{
"name": "segm_detector_opt",
"type": "SEGM_DETECTOR",
"link": null
}
],
"outputs": [
{
"name": "SEGS",
"type": "SEGS",
"links": [
306
],
"shape": 3,
"slot_index": 0
}
],
"properties": {
"Node name for S&R": "ImpactSimpleDetectorSEGS"
},
"widgets_values": [
0.5,
0,
1.5,
10,
0.5,
0,
0,
0.7,
0
],
"color": "#432",
"bgcolor": "#653"
},
{
"id": 3,
"type": "UltralyticsDetectorProvider",
"pos": [
565,
-555
],
"size": {
"0": 315,
"1": 78
},
"flags": {},
"order": 4,
"mode": 0,
"outputs": [
{
"name": "BBOX_DETECTOR",
"type": "BBOX_DETECTOR",
"links": [
209,
309
],
"shape": 3,
"slot_index": 0
},
{
"name": "SEGM_DETECTOR",
"type": "SEGM_DETECTOR",
"links": null,
"shape": 3
}
],
"properties": {
"Node name for S&R": "UltralyticsDetectorProvider"
},
"widgets_values": [
"bbox/face_yolov8m.pt"
],
"color": "#432",
"bgcolor": "#653"
},
{
"id": 4,
"type": "SAMLoader",
"pos": [
570,
-420
],
"size": {
"0": 315,
"1": 82
},
"flags": {},
"order": 5,
"mode": 0,
"outputs": [
{
"name": "SAM_MODEL",
"type": "SAM_MODEL",
"links": [
210,
310
],
"shape": 3,
"slot_index": 0
}
],
"properties": {
"Node name for S&R": "SAMLoader"
},
"widgets_values": [
"sam_vit_h_4b8939.pth",
"AUTO"
],
"color": "#432",
"bgcolor": "#653"
},
{
"id": 9,
"type": "InstantIDModelLoader",
"pos": [
2180,
440
],
"size": {
"0": 238.72393798828125,
"1": 58
},
"flags": {},
"order": 6,
"mode": 0,
"outputs": [
{
"name": "INSTANTID",
"type": "INSTANTID",
"links": [
280
],
"shape": 3,
"slot_index": 0
}
],
"properties": {
"Node name for S&R": "InstantIDModelLoader"
},
"widgets_values": [
"ip-adapter.bin"
],
"color": "#232",
"bgcolor": "#353"
},
{
"id": 162,
"type": "ApplyInstantID",
"pos": [
2680,
1150
],
"size": {
"0": 315,
"1": 266
},
"flags": {},
"order": 36,
"mode": 0,
"inputs": [
{
"name": "instantid",
"type": "INSTANTID",
"link": 280
},
{
"name": "insightface",
"type": "FACEANALYSIS",
"link": 279
},
{
"name": "control_net",
"type": "CONTROL_NET",
"link": 288
},
{
"name": "image",
"type": "IMAGE",
"link": 385
},
{
"name": "model",
"type": "MODEL",
"link": 284
},
{
"name": "positive",
"type": "CONDITIONING",
"link": 277
},
{
"name": "negative",
"type": "CONDITIONING",
"link": 278
},
{
"name": "image_kps",
"type": "IMAGE",
"link": 358
},
{
"name": "mask",
"type": "MASK",
"link": null
}
],
"outputs": [
{
"name": "MODEL",
"type": "MODEL",
"links": [
283
],
"shape": 3,
"slot_index": 0
},
{
"name": "POSITIVE",
"type": "CONDITIONING",
"links": [
281
],
"shape": 3,
"slot_index": 1
},
{
"name": "NEGATIVE",
"type": "CONDITIONING",
"links": [
282
],
"shape": 3,
"slot_index": 2
}
],
"properties": {
"Node name for S&R": "ApplyInstantID"
},
"widgets_values": [
0.8,
0,
1
]
},
{
"id": 32,
"type": "ToBasicPipe",
"pos": [
3110,
1480
],
"size": {
"0": 241.79998779296875,
"1": 106
},
"flags": {},
"order": 37,
"mode": 0,
"inputs": [
{
"name": "model",
"type": "MODEL",
"link": 283
},
{
"name": "clip",
"type": "CLIP",
"link": 240
},
{
"name": "vae",
"type": "VAE",
"link": 52
},
{
"name": "positive",
"type": "CONDITIONING",
"link": 281
},
{
"name": "negative",
"type": "CONDITIONING",
"link": 282
}
],
"outputs": [
{
"name": "basic_pipe",
"type": "BASIC_PIPE",
"links": [
221
],
"shape": 3,
"slot_index": 0
}
],
"properties": {
"Node name for S&R": "ToBasicPipe"
}
},
{
"id": 42,
"type": "DenoiseSchedulerDetailerHookProvider",
"pos": [
3050,
1645
],
"size": {
"0": 302.3999938964844,
"1": 82
},
"flags": {},
"order": 7,
"mode": 0,
"outputs": [
{
"name": "DETAILER_HOOK",
"type": "DETAILER_HOOK",
"links": [
223
],
"shape": 3,
"slot_index": 0
}
],
"properties": {
"Node name for S&R": "DenoiseSchedulerDetailerHookProvider"
},
"widgets_values": [
"simple",
0.3
]
},
{
"id": 113,
"type": "ConditioningCombine",
"pos": [
1544,
1263
],
"size": {
"0": 228.39999389648438,
"1": 46
},
"flags": {},
"order": 35,
"mode": 0,
"inputs": [
{
"name": "conditioning_1",
"type": "CONDITIONING",
"link": 189
},
{
"name": "conditioning_2",
"type": "CONDITIONING",
"link": 190
}
],
"outputs": [
{
"name": "CONDITIONING",
"type": "CONDITIONING",
"links": [
277
],
"shape": 3,
"slot_index": 0
}
],
"properties": {
"Node name for S&R": "ConditioningCombine"
}
},
{
"id": 5,
"type": "SEGSPreview",
"pos": [
1640,
-547
],
"size": {
"0": 315,
"1": 314
},
"flags": {},
"order": 29,
"mode": 0,
"inputs": [
{
"name": "segs",
"type": "SEGS",
"link": 129
},
{
"name": "fallback_image_opt",
"type": "IMAGE",
"link": null
}
],
"outputs": [
{
"name": "IMAGE",
"type": "IMAGE",
"links": [
300,
321
],
"shape": 6,
"slot_index": 0
}
],
"properties": {
"Node name for S&R": "SEGSPreview"
},
"widgets_values": [
true,
0.2
]
},
{
"id": 168,
"type": "SimpleText",
"pos": [
360,
1090
],
"size": {
"0": 335.7423095703125,
"1": 123.99213409423828
},
"flags": {},
"order": 8,
"mode": 0,
"outputs": [
{
"name": "STRING",
"type": "STRING",
"links": [
293
],
"shape": 3,
"slot_index": 0
}
],
"properties": {
"Node name for S&R": "SimpleText"
},
"widgets_values": [
"This is a chat between an inquisitive human and an AI assistant. Assume the role of the AI assistant. Read all the images carefully, and respond to the human's questions with informative, helpful, detailed and polite answers.\nPlease rationally and concisely create a detailed caption of the face in these images.Please do not mention the hair or background."
],
"color": "#322",
"bgcolor": "#533"
},
{
"id": 107,
"type": "ShowText|pysssss",
"pos": [
1118,
939
],
"size": [
349.5565904703037,
133.01403520673148
],
"flags": {},
"order": 32,
"mode": 0,
"inputs": [
{
"name": "text",
"type": "STRING",
"link": 295,
"widget": {
"name": "text"
}
}
],
"outputs": [
{
"name": "STRING",
"type": "STRING",
"links": null,
"shape": 6
}
],
"properties": {
"Node name for S&R": "ShowText|pysssss"
},
"widgets_values": [
"",
" The image shows a woman with a neutral expression. She has fair skin and her facial features include a straight nose, full lips, and a small chin. Her eyes are open and she appears to be looking directly at the camera. There is no visible text on the image. The style of the image seems to be a standard portrait with a focus on the person's face. "
],
"color": "#222",
"bgcolor": "#000"
},
{
"id": 2,
"type": "LoadImage",
"pos": [
-895,
-685
],
"size": [
626.4258473168752,
562.8134897981251
],
"flags": {},
"order": 9,
"mode": 0,
"outputs": [
{
"name": "IMAGE",
"type": "IMAGE",
"links": [
34,
270
],
"shape": 3,
"slot_index": 0
},
{
"name": "MASK",
"type": "MASK",
"links": null,
"shape": 3,
"slot_index": 1
}
],
"properties": {
"Node name for S&R": "LoadImage"
},
"widgets_values": [
"pexels-photo-2762110.jpg",
"image"
],
"color": "#8bd2ff",
"bgcolor": "#77befb"
},
{
"id": 14,
"type": "FaceKeypointsPreprocessor",
"pos": [
2180,
800
],
"size": {
"0": 246.69776916503906,
"1": 46
},
"flags": {},
"order": 31,
"mode": 0,
"inputs": [
{
"name": "faceanalysis",
"type": "FACEANALYSIS",
"link": 15
},
{
"name": "image",
"type": "IMAGE",
"link": 321
}
],
"outputs": [
{
"name": "IMAGE",
"type": "IMAGE",
"links": [
274,
358
],
"shape": 3,
"slot_index": 0
}
],
"properties": {
"Node name for S&R": "FaceKeypointsPreprocessor"
},
"color": "#2a363b",
"bgcolor": "#3f5159"
},
{
"id": 56,
"type": "ReActorFaceSwap",
"pos": [
574,
-273
],
"size": {
"0": 315,
"1": 338
},
"flags": {},
"order": 17,
"mode": 0,
"inputs": [
{
"name": "input_image",
"type": "IMAGE",
"link": 133
},
{
"name": "source_image",
"type": "IMAGE",
"link": 94
},
{
"name": "face_model",
"type": "FACE_MODEL",
"link": null
}
],
"outputs": [
{
"name": "IMAGE",
"type": "IMAGE",
"links": [
305
],
"shape": 3,
"slot_index": 0
},
{
"name": "FACE_MODEL",
"type": "FACE_MODEL",
"links": null,
"shape": 3
}
],
"properties": {
"Node name for S&R": "ReActorFaceSwap"
},
"widgets_values": [
true,
"inswapper_128.onnx",
"retinaface_resnet50",
"GFPGANv1.4.pth",
1,
1,
"no",
"no",
"0",
"0",
1
],
"color": "#323",
"bgcolor": "#535"
},
{
"id": 22,
"type": "LoadImage",
"pos": [
-177,
96
],
"size": [
390.4337867346808,
664.3246348042101
],
"flags": {},
"order": 10,
"mode": 0,
"outputs": [
{
"name": "IMAGE",
"type": "IMAGE",
"links": [
94,
383
],
"shape": 3,
"slot_index": 0
},
{
"name": "MASK",
"type": "MASK",
"links": [],
"shape": 3,
"slot_index": 1
}
],
"properties": {
"Node name for S&R": "LoadImage"
},
"widgets_values": [
"pexels-photo-2467389.jpg",
"image"
],
"color": "#ff6a14",
"bgcolor": "#f55600"
},
{
"id": 175,
"type": "SEGSPreview",
"pos": [
1630,
75
],
"size": {
"0": 315,
"1": 314
},
"flags": {},
"order": 24,
"mode": 0,
"inputs": [
{
"name": "segs",
"type": "SEGS",
"link": 308
},
{
"name": "fallback_image_opt",
"type": "IMAGE",
"link": null
}
],
"outputs": [
{
"name": "IMAGE",
"type": "IMAGE",
"links": [
385
],
"shape": 6,
"slot_index": 0
}
],
"properties": {
"Node name for S&R": "SEGSPreview"
},
"widgets_values": [
true,
0.2
]
},
{
"id": 24,
"type": "ImageResize",
"pos": [
-210,
-680
],
"size": {
"0": 315,
"1": 246
},
"flags": {},
"order": 13,
"mode": 0,
"inputs": [
{
"name": "pixels",
"type": "IMAGE",
"link": 34
},
{
"name": "mask_optional",
"type": "MASK",
"link": null
}
],
"outputs": [
{
"name": "IMAGE",
"type": "IMAGE",
"links": [
133,
317
],
"shape": 3,
"slot_index": 0
},
{
"name": "MASK",
"type": "MASK",
"links": null,
"shape": 3
}
],
"properties": {
"Node name for S&R": "ImageResize"
},
"widgets_values": [
"resize only",
2000,
0,
0,
"reduce size only",
"4:3",
0.5,
20
]
},
{
"id": 124,
"type": "DetailerForEachDebugPipe",
"pos": [
3450,
850
],
"size": {
"0": 434.7952575683594,
"1": 604.6138305664062
},
"flags": {},
"order": 38,
"mode": 0,
"inputs": [
{
"name": "image",
"type": "IMAGE",
"link": 269
},
{
"name": "segs",
"type": "SEGS",
"link": 287
},
{
"name": "basic_pipe",
"type": "BASIC_PIPE",
"link": 221
},
{
"name": "detailer_hook",
"type": "DETAILER_HOOK",
"link": 223
},
{
"name": "refiner_basic_pipe_opt",
"type": "BASIC_PIPE",
"link": null
}
],
"outputs": [
{
"name": "image",
"type": "IMAGE",
"links": [],
"shape": 3,
"slot_index": 0
},
{
"name": "segs",
"type": "SEGS",
"links": [
242
],
"shape": 3,
"slot_index": 1
},
{
"name": "basic_pipe",
"type": "BASIC_PIPE",
"links": null,
"shape": 3
},
{
"name": "cropped",
"type": "IMAGE",
"links": [],
"shape": 6,
"slot_index": 3
},
{
"name": "cropped_refined",
"type": "IMAGE",
"links": [],
"shape": 6,
"slot_index": 4
},
{
"name": "cropped_refined_alpha",
"type": "IMAGE",
"links": [],
"shape": 6,
"slot_index": 5
},
{
"name": "cnet_images",
"type": "IMAGE",
"links": null,
"shape": 6
}
],
"properties": {
"Node name for S&R": "DetailerForEachDebugPipe"
},
"widgets_values": [
1024,
false,
1504,
337482200991748,
"fixed",
20,
8,
"dpmpp_2m",
"karras",
0.4,
20,
true,
true,
"",
0.2,
1,
false,
0
]
},
{
"id": 20,
"type": "CLIPTextEncode",
"pos": [
1108,
1393
],
"size": {
"0": 366.96685791015625,
"1": 76
},
"flags": {},
"order": 27,
"mode": 0,
"inputs": [
{
"name": "clip",
"type": "CLIP",
"link": 239
}
],
"outputs": [
{
"name": "CONDITIONING",
"type": "CONDITIONING",
"links": [
278
],
"shape": 3,
"slot_index": 0
}
],
"properties": {
"Node name for S&R": "CLIPTextEncode"
},
"widgets_values": [
"worst quality,airbrushed, (glossy, photoshop,plastic,3d:1.15)"
]
}
],
"links": [
[
15,
12,
0,
14,
0,
"FACEANALYSIS"
],
[
34,
2,
0,
24,
0,
"IMAGE"
],
[
41,
28,
0,
27,
0,
"MODEL"
],
[
52,
21,
2,
32,
2,
"VAE"
],
[
94,
22,
0,
56,
1,
"IMAGE"
],
[
119,
66,
0,
28,
0,
"MODEL"
],
[
123,
21,
0,
67,
0,
"MODEL"
],
[
124,
21,
1,
67,
1,
"CLIP"
],
[
125,
67,
0,
66,
0,
"MODEL"
],
[
126,
67,
1,
66,
1,
"CLIP"
],
[
129,
69,
0,
5,
0,
"SEGS"
],
[
133,
24,
0,
56,
0,
"IMAGE"
],
[
163,
1,
0,
69,
0,
"SEGS"
],
[
189,
112,
0,
113,
0,
"CONDITIONING"
],
[
190,
19,
0,
113,
1,
"CONDITIONING"
],
[
209,
3,
0,
1,
0,
"BBOX_DETECTOR"
],
[
210,
4,
0,
1,
2,
"SAM_MODEL"
],
[
221,
32,
0,
124,
2,
"BASIC_PIPE"
],
[
223,
42,
0,
124,
3,
"DETAILER_HOOK"
],
[
236,
66,
1,
130,
0,
"*"
],
[
237,
130,
0,
112,
0,
"CLIP"
],
[
238,
130,
0,
19,
0,
"CLIP"
],
[
239,
130,
0,
20,
0,
"CLIP"
],
[
240,
130,
0,
32,
1,
"CLIP"
],
[
242,
124,
1,
131,
1,
"SEGS"
],
[
244,
131,
0,
132,
0,
"IMAGE"
],
[
269,
151,
0,
124,
0,
"IMAGE"
],
[
270,
2,
0,
152,
0,
"*"
],
[
271,
152,
0,
153,
0,
"*"
],
[
272,
153,
0,
131,
0,
"IMAGE"
],
[
274,
14,
0,
154,
0,
"IMAGE"
],
[
277,
113,
0,
162,
5,
"CONDITIONING"
],
[
278,
20,
0,
162,
6,
"CONDITIONING"
],
[
279,
12,
0,
162,
1,
"FACEANALYSIS"
],
[
280,
9,
0,
162,
0,
"INSTANTID"
],
[
281,
162,
1,
32,
3,
"CONDITIONING"
],
[
282,
162,
2,
32,
4,
"CONDITIONING"
],
[
283,
162,
0,
32,
0,
"MODEL"
],
[
284,
27,
0,
162,
4,
"MODEL"
],
[
287,
69,
0,
124,
1,
"SEGS"
],
[
288,
8,
0,
162,
2,
"CONTROL_NET"
],
[
292,
166,
0,
165,
1,
"CUSTOM"
],
[
293,
168,
0,
165,
2,
"STRING"
],
[
294,
167,
0,
166,
0,
"CUSTOM"
],
[
295,
165,
0,
107,
0,
"STRING"
],
[
296,
165,
0,
112,
1,
"STRING"
],
[
300,
5,
0,
165,
0,
"IMAGE"
],
[
305,
56,
0,
1,
1,
"IMAGE"
],
[
306,
172,
0,
173,
0,
"SEGS"
],
[
308,
173,
0,
175,
0,
"SEGS"
],
[
309,
3,
0,
172,
0,
"BBOX_DETECTOR"
],
[
310,
4,
0,
172,
2,
"SAM_MODEL"
],
[
317,
24,
0,
151,
0,
"*"
],
[
321,
5,
0,
14,
1,
"IMAGE"
],
[
358,
14,
0,
162,
7,
"IMAGE"
],
[
383,
22,
0,
172,
1,
"IMAGE"
],
[
385,
175,
0,
162,
3,
"IMAGE"
]
],
"groups": [],
"config": {},
"extra": {
"0246.VERSION": [
0,
0,
4
]
},
"version": 0.4
}