Your Name commited on
Commit
17a14e9
Β·
1 Parent(s): 8cd2170

instal script and workflow working

Browse files
Files changed (4) hide show
  1. .gitignore +2 -1
  2. FaceEnhancementProd.json +680 -617
  3. README.md +37 -0
  4. install.py +42 -25
.gitignore CHANGED
@@ -1,2 +1,3 @@
1
  venv
2
- .env
 
 
1
  venv
2
+ .env
3
+ ComfyUI
FaceEnhancementProd.json CHANGED
@@ -1,267 +1,9 @@
1
  {
2
- "last_node_id": 131,
3
- "last_link_id": 215,
 
 
4
  "nodes": [
5
- {
6
- "id": 93,
7
- "type": "UNETLoader",
8
- "pos": [
9
- -265.5894775390625,
10
- 1531.7340087890625
11
- ],
12
- "size": [
13
- 315,
14
- 82
15
- ],
16
- "flags": {},
17
- "order": 0,
18
- "mode": 0,
19
- "inputs": [],
20
- "outputs": [
21
- {
22
- "name": "MODEL",
23
- "type": "MODEL",
24
- "links": [
25
- 171
26
- ],
27
- "slot_index": 0
28
- }
29
- ],
30
- "properties": {
31
- "Node name for S&R": "UNETLoader"
32
- },
33
- "widgets_values": [
34
- "flux1-dev.safetensors",
35
- "default"
36
- ]
37
- },
38
- {
39
- "id": 44,
40
- "type": "PulidFluxModelLoader",
41
- "pos": [
42
- -262.90264892578125,
43
- 1662.658447265625
44
- ],
45
- "size": [
46
- 315,
47
- 58
48
- ],
49
- "flags": {},
50
- "order": 1,
51
- "mode": 0,
52
- "inputs": [],
53
- "outputs": [
54
- {
55
- "name": "PULIDFLUX",
56
- "type": "PULIDFLUX",
57
- "links": [
58
- 77
59
- ]
60
- }
61
- ],
62
- "properties": {
63
- "Node name for S&R": "PulidFluxModelLoader"
64
- },
65
- "widgets_values": [
66
- "pulid_flux_v0.9.1.safetensors"
67
- ]
68
- },
69
- {
70
- "id": 45,
71
- "type": "PulidFluxEvaClipLoader",
72
- "pos": [
73
- -294.8002624511719,
74
- 1774.585693359375
75
- ],
76
- "size": [
77
- 362.79498291015625,
78
- 38.76161575317383
79
- ],
80
- "flags": {},
81
- "order": 2,
82
- "mode": 0,
83
- "inputs": [],
84
- "outputs": [
85
- {
86
- "name": "EVA_CLIP",
87
- "type": "EVA_CLIP",
88
- "links": [
89
- 78
90
- ]
91
- }
92
- ],
93
- "properties": {
94
- "Node name for S&R": "PulidFluxEvaClipLoader"
95
- },
96
- "widgets_values": []
97
- },
98
- {
99
- "id": 46,
100
- "type": "PulidFluxInsightFaceLoader",
101
- "pos": [
102
- -300.94317626953125,
103
- 1863.1434326171875
104
- ],
105
- "size": [
106
- 365.4000244140625,
107
- 58
108
- ],
109
- "flags": {},
110
- "order": 3,
111
- "mode": 0,
112
- "inputs": [],
113
- "outputs": [
114
- {
115
- "name": "FACEANALYSIS",
116
- "type": "FACEANALYSIS",
117
- "links": [
118
- 79
119
- ]
120
- }
121
- ],
122
- "properties": {
123
- "Node name for S&R": "PulidFluxInsightFaceLoader"
124
- },
125
- "widgets_values": [
126
- "CUDA"
127
- ]
128
- },
129
- {
130
- "id": 95,
131
- "type": "VAELoader",
132
- "pos": [
133
- -265.02642822265625,
134
- 1410.9061279296875
135
- ],
136
- "size": [
137
- 315,
138
- 58
139
- ],
140
- "flags": {},
141
- "order": 4,
142
- "mode": 0,
143
- "inputs": [],
144
- "outputs": [
145
- {
146
- "name": "VAE",
147
- "type": "VAE",
148
- "links": [
149
- 160
150
- ],
151
- "slot_index": 0
152
- }
153
- ],
154
- "properties": {
155
- "Node name for S&R": "VAELoader"
156
- },
157
- "widgets_values": [
158
- "FLUX1/ae.safetensors"
159
- ]
160
- },
161
- {
162
- "id": 94,
163
- "type": "DualCLIPLoader",
164
- "pos": [
165
- -274.0904235839844,
166
- 1235.6214599609375
167
- ],
168
- "size": [
169
- 315,
170
- 122.00001525878906
171
- ],
172
- "flags": {},
173
- "order": 5,
174
- "mode": 0,
175
- "inputs": [],
176
- "outputs": [
177
- {
178
- "name": "CLIP",
179
- "type": "CLIP",
180
- "links": [
181
- 172,
182
- 173
183
- ],
184
- "slot_index": 0
185
- }
186
- ],
187
- "properties": {
188
- "Node name for S&R": "DualCLIPLoader"
189
- },
190
- "widgets_values": [
191
- "t5xxl_fp16.safetensors",
192
- "clip_l.safetensors",
193
- "flux",
194
- "default"
195
- ]
196
- },
197
- {
198
- "id": 105,
199
- "type": "Reroute",
200
- "pos": [
201
- 81.75617980957031,
202
- 771.7276611328125
203
- ],
204
- "size": [
205
- 75,
206
- 26
207
- ],
208
- "flags": {},
209
- "order": 20,
210
- "mode": 0,
211
- "inputs": [
212
- {
213
- "name": "",
214
- "type": "*",
215
- "link": 176
216
- }
217
- ],
218
- "outputs": [
219
- {
220
- "name": "",
221
- "type": "IMAGE",
222
- "links": [
223
- 175,
224
- 199
225
- ],
226
- "slot_index": 0
227
- }
228
- ],
229
- "properties": {
230
- "showOutputText": false,
231
- "horizontal": false
232
- }
233
- },
234
- {
235
- "id": 50,
236
- "type": "KSamplerSelect",
237
- "pos": [
238
- 1312.514404296875,
239
- 1212.9171142578125
240
- ],
241
- "size": [
242
- 315,
243
- 58
244
- ],
245
- "flags": {},
246
- "order": 6,
247
- "mode": 0,
248
- "inputs": [],
249
- "outputs": [
250
- {
251
- "name": "SAMPLER",
252
- "type": "SAMPLER",
253
- "links": [
254
- 70
255
- ]
256
- }
257
- ],
258
- "properties": {
259
- "Node name for S&R": "KSamplerSelect"
260
- },
261
- "widgets_values": [
262
- "euler"
263
- ]
264
- },
265
  {
266
  "id": 97,
267
  "type": "Reroute",
@@ -274,7 +16,7 @@
274
  26
275
  ],
276
  "flags": {},
277
- "order": 15,
278
  "mode": 0,
279
  "inputs": [
280
  {
@@ -287,12 +29,12 @@
287
  {
288
  "name": "",
289
  "type": "VAE",
 
290
  "links": [
291
  157,
292
  158,
293
  191
294
- ],
295
- "slot_index": 0
296
  }
297
  ],
298
  "properties": {
@@ -316,33 +58,36 @@
316
  "mode": 0,
317
  "inputs": [
318
  {
 
319
  "name": "image_a",
320
  "type": "IMAGE",
321
- "dir": 3,
322
  "link": 206
323
  },
324
  {
 
325
  "name": "image_b",
326
  "type": "IMAGE",
327
- "dir": 3,
328
  "link": 208
329
  }
330
  ],
331
  "outputs": [],
332
  "properties": {
333
- "comparer_mode": "Slide"
 
 
 
334
  },
335
  "widgets_values": [
336
  [
337
  {
338
  "name": "A",
339
  "selected": true,
340
- "url": "/api/view?filename=rgthree.compare._temp_myvmc_00007_.png&type=temp&subfolder=&rand=0.6300855264758487"
341
  },
342
  {
343
  "name": "B",
344
  "selected": true,
345
- "url": "/api/view?filename=rgthree.compare._temp_myvmc_00008_.png&type=temp&subfolder=&rand=0.46445824593894125"
346
  }
347
  ]
348
  ]
@@ -359,21 +104,24 @@
359
  82
360
  ],
361
  "flags": {},
362
- "order": 7,
363
  "mode": 0,
364
  "inputs": [],
365
  "outputs": [
366
  {
367
  "name": "ANALYSIS_MODELS",
368
  "type": "ANALYSIS_MODELS",
 
369
  "links": [
370
  196
371
- ],
372
- "slot_index": 0
373
  }
374
  ],
375
  "properties": {
376
- "Node name for S&R": "FaceAnalysisModels"
 
 
 
377
  },
378
  "widgets_values": [
379
  "insightface",
@@ -392,7 +140,7 @@
392
  26
393
  ],
394
  "flags": {},
395
- "order": 19,
396
  "mode": 0,
397
  "inputs": [
398
  {
@@ -405,12 +153,12 @@
405
  {
406
  "name": "",
407
  "type": "IMAGE",
 
408
  "links": [
409
  161,
410
  162,
411
  206
412
- ],
413
- "slot_index": 0
414
  }
415
  ],
416
  "properties": {
@@ -430,7 +178,7 @@
430
  88
431
  ],
432
  "flags": {},
433
- "order": 8,
434
  "mode": 0,
435
  "inputs": [],
436
  "outputs": [],
@@ -453,7 +201,7 @@
453
  88
454
  ],
455
  "flags": {},
456
- "order": 9,
457
  "mode": 0,
458
  "inputs": [],
459
  "outputs": [],
@@ -476,7 +224,7 @@
476
  88
477
  ],
478
  "flags": {},
479
- "order": 10,
480
  "mode": 0,
481
  "inputs": [],
482
  "outputs": [],
@@ -512,12 +260,12 @@
512
  {
513
  "name": "",
514
  "type": "IMAGE",
 
515
  "links": [
516
  208,
517
  210,
518
  211
519
- ],
520
- "slot_index": 0
521
  }
522
  ],
523
  "properties": {
@@ -537,13 +285,13 @@
537
  46
538
  ],
539
  "flags": {},
540
- "order": 24,
541
  "mode": 0,
542
  "inputs": [
543
  {
544
  "name": "model",
545
  "type": "MODEL",
546
- "link": 204
547
  },
548
  {
549
  "name": "conditioning",
@@ -555,85 +303,19 @@
555
  {
556
  "name": "GUIDER",
557
  "type": "GUIDER",
 
558
  "links": [
559
  202
560
- ],
561
- "slot_index": 0
562
  }
563
  ],
564
  "properties": {
 
 
565
  "Node name for S&R": "BasicGuider"
566
  },
567
  "widgets_values": []
568
  },
569
- {
570
- "id": 41,
571
- "type": "SetUnionControlNetType",
572
- "pos": [
573
- 200.7367706298828,
574
- 1973.8323974609375
575
- ],
576
- "size": [
577
- 315,
578
- 58
579
- ],
580
- "flags": {},
581
- "order": 18,
582
- "mode": 0,
583
- "inputs": [
584
- {
585
- "name": "control_net",
586
- "type": "CONTROL_NET",
587
- "link": 94
588
- }
589
- ],
590
- "outputs": [
591
- {
592
- "name": "CONTROL_NET",
593
- "type": "CONTROL_NET",
594
- "links": [
595
- 89
596
- ]
597
- }
598
- ],
599
- "properties": {
600
- "Node name for S&R": "SetUnionControlNetType"
601
- },
602
- "widgets_values": [
603
- "tile"
604
- ]
605
- },
606
- {
607
- "id": 49,
608
- "type": "ControlNetLoader",
609
- "pos": [
610
- -299.92938232421875,
611
- 1973.3970947265625
612
- ],
613
- "size": [
614
- 370.503173828125,
615
- 62.10068130493164
616
- ],
617
- "flags": {},
618
- "order": 11,
619
- "mode": 0,
620
- "inputs": [],
621
- "outputs": [
622
- {
623
- "name": "CONTROL_NET",
624
- "type": "CONTROL_NET",
625
- "links": [
626
- 94
627
- ]
628
- }
629
- ],
630
- "properties": {
631
- "Node name for S&R": "ControlNetLoader"
632
- },
633
- "widgets_values": [
634
- "Flux_Dev_ControlNet_Union_Pro_ShakkerLabs.safetensors"
635
- ]
636
- },
637
  {
638
  "id": 42,
639
  "type": "CLIPTextEncode",
@@ -646,7 +328,7 @@
646
  200
647
  ],
648
  "flags": {},
649
- "order": 16,
650
  "mode": 0,
651
  "inputs": [
652
  {
@@ -665,6 +347,8 @@
665
  }
666
  ],
667
  "properties": {
 
 
668
  "Node name for S&R": "CLIPTextEncode"
669
  },
670
  "widgets_values": [
@@ -683,7 +367,7 @@
683
  186
684
  ],
685
  "flags": {},
686
- "order": 22,
687
  "mode": 0,
688
  "inputs": [
689
  {
@@ -708,8 +392,8 @@
708
  },
709
  {
710
  "name": "vae",
711
- "type": "VAE",
712
  "shape": 7,
 
713
  "link": 157
714
  }
715
  ],
@@ -717,10 +401,10 @@
717
  {
718
  "name": "positive",
719
  "type": "CONDITIONING",
 
720
  "links": [
721
  203
722
- ],
723
- "slot_index": 0
724
  },
725
  {
726
  "name": "negative",
@@ -729,6 +413,8 @@
729
  }
730
  ],
731
  "properties": {
 
 
732
  "Node name for S&R": "ControlNetApplyAdvanced"
733
  },
734
  "widgets_values": [
@@ -749,7 +435,7 @@
749
  46
750
  ],
751
  "flags": {},
752
- "order": 21,
753
  "mode": 0,
754
  "inputs": [
755
  {
@@ -773,6 +459,8 @@
773
  }
774
  ],
775
  "properties": {
 
 
776
  "Node name for S&R": "VAEEncode"
777
  },
778
  "widgets_values": []
@@ -791,7 +479,7 @@
791
  "flags": {
792
  "collapsed": true
793
  },
794
- "order": 17,
795
  "mode": 0,
796
  "inputs": [
797
  {
@@ -810,6 +498,8 @@
810
  }
811
  ],
812
  "properties": {
 
 
813
  "Node name for S&R": "CLIPTextEncode"
814
  },
815
  "widgets_values": [
@@ -839,10 +529,13 @@
839
  ],
840
  "outputs": [],
841
  "properties": {
 
 
842
  "Node name for S&R": "SaveImage"
843
  },
844
  "widgets_values": [
845
- "FaceEnhanced"
 
846
  ]
847
  },
848
  {
@@ -880,22 +573,25 @@
880
  {
881
  "name": "IMAGE",
882
  "type": "IMAGE",
 
883
  "links": [
884
  212
885
- ],
886
- "slot_index": 0
887
  },
888
  {
889
  "name": "distance",
890
  "type": "FLOAT",
 
891
  "links": [
892
  201
893
- ],
894
- "slot_index": 1
895
  }
896
  ],
897
  "properties": {
898
- "Node name for S&R": "FaceEmbedDistance"
 
 
 
899
  },
900
  "widgets_values": [
901
  "cosine",
@@ -920,15 +616,18 @@
920
  "mode": 0,
921
  "inputs": [
922
  {
 
923
  "name": "source",
924
  "type": "*",
925
- "dir": 3,
926
  "link": 201
927
  }
928
  ],
929
  "outputs": [],
930
  "properties": {
931
- "Node name for S&R": "Display Any (rgthree)"
 
 
 
932
  },
933
  "widgets_values": [
934
  ""
@@ -957,216 +656,602 @@
957
  ],
958
  "outputs": [],
959
  "properties": {
 
 
960
  "Node name for S&R": "SaveImage"
961
  },
962
  "widgets_values": [
963
- "FaceEmbedDist"
 
964
  ]
965
  },
966
  {
967
- "id": 40,
968
- "type": "LoadImage",
969
  "pos": [
970
- -351.87322998046875,
971
- 188.0283966064453
972
  ],
973
  "size": [
974
- 433.580322265625,
975
- 523.640869140625
976
  ],
977
  "flags": {},
978
- "order": 12,
979
  "mode": 0,
980
- "inputs": [],
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
981
  "outputs": [
982
  {
983
- "name": "IMAGE",
984
- "type": "IMAGE",
 
985
  "links": [
986
- 163
987
- ],
988
- "slot_index": 0
989
  },
990
  {
991
- "name": "MASK",
992
- "type": "MASK",
993
  "links": null
994
  }
995
  ],
996
  "properties": {
997
- "Node name for S&R": "LoadImage"
 
 
998
  },
999
- "widgets_values": [
1000
- "chatgpt_elon.png",
1001
- "image"
1002
- ]
1003
  },
1004
  {
1005
- "id": 24,
1006
- "type": "LoadImage",
1007
  "pos": [
1008
- -352.1936340332031,
1009
- 770.800537109375
1010
  ],
1011
  "size": [
1012
- 404.0055236816406,
1013
- 404.2244567871094
1014
  ],
1015
  "flags": {},
1016
- "order": 13,
1017
  "mode": 0,
1018
- "inputs": [],
 
 
 
 
 
 
 
 
 
 
 
1019
  "outputs": [
1020
  {
1021
  "name": "IMAGE",
1022
  "type": "IMAGE",
 
1023
  "links": [
1024
- 176
1025
- ],
1026
- "slot_index": 0
1027
- },
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1028
  {
1029
- "name": "MASK",
1030
- "type": "MASK",
1031
- "links": null
 
 
1032
  }
1033
  ],
1034
  "properties": {
1035
- "Node name for S&R": "LoadImage"
 
 
1036
  },
1037
  "widgets_values": [
1038
- "elon (1).jpg",
1039
- "image"
1040
  ]
1041
  },
1042
  {
1043
- "id": 31,
1044
- "type": "ApplyPulidFlux",
1045
  "pos": [
1046
- 221.46853637695312,
1047
- 1532.384033203125
1048
  ],
1049
  "size": [
1050
  315,
1051
- 346
1052
  ],
1053
  "flags": {},
1054
- "order": 23,
1055
  "mode": 0,
1056
  "inputs": [
1057
  {
1058
  "name": "model",
1059
  "type": "MODEL",
1060
- "link": 171
1061
- },
1062
- {
1063
- "name": "pulid_flux",
1064
- "type": "PULIDFLUX",
1065
- "link": 77
1066
- },
1067
- {
1068
- "name": "eva_clip",
1069
- "type": "EVA_CLIP",
1070
- "link": 78
1071
- },
1072
- {
1073
- "name": "face_analysis",
1074
- "type": "FACEANALYSIS",
1075
- "link": 79
1076
- },
1077
- {
1078
- "name": "image",
1079
- "type": "IMAGE",
1080
- "link": 175
1081
- },
1082
  {
1083
- "name": "attn_mask",
1084
- "type": "MASK",
1085
- "shape": 7,
1086
- "link": null
1087
- },
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1088
  {
1089
- "name": "prior_image",
1090
- "type": "IMAGE",
1091
- "shape": 7,
1092
- "link": null
1093
  }
1094
  ],
1095
  "outputs": [
1096
  {
1097
- "name": "MODEL",
1098
- "type": "MODEL",
 
1099
  "links": [
1100
- 204,
1101
- 215
1102
- ],
1103
- "slot_index": 0
1104
  }
1105
  ],
1106
  "properties": {
1107
- "Node name for S&R": "ApplyPulidFlux"
1108
- },
1109
- "widgets_values": [
1110
- 0.75,
1111
- 0.1,
1112
- 1,
1113
- "mean",
1114
- 1,
1115
- 0,
1116
- 1000,
1117
- true
1118
- ]
1119
  },
1120
  {
1121
- "id": 131,
1122
- "type": "BasicScheduler",
1123
  "pos": [
1124
- 1313.8270263671875,
1125
- 1318.2603759765625
1126
  ],
1127
  "size": [
1128
  315,
1129
- 106
1130
  ],
1131
  "flags": {},
1132
- "order": 25,
1133
  "mode": 0,
1134
  "inputs": [
1135
  {
1136
- "name": "model",
1137
- "type": "MODEL",
1138
- "link": 215
1139
  }
1140
  ],
1141
  "outputs": [
1142
  {
1143
- "name": "SIGMAS",
1144
- "type": "SIGMAS",
1145
  "links": [
1146
- 214
1147
- ],
1148
- "slot_index": 0
1149
  }
1150
  ],
1151
  "properties": {
1152
- "Node name for S&R": "BasicScheduler"
 
 
1153
  },
1154
  "widgets_values": [
1155
- "beta",
1156
- 28,
1157
- 0.75
1158
  ]
1159
  },
1160
  {
1161
- "id": 39,
1162
- "type": "RandomNoise",
1163
  "pos": [
1164
- 1311.832763671875,
1165
- 1088.896728515625
1166
  ],
1167
  "size": [
1168
- 315,
1169
- 82
1170
  ],
1171
  "flags": {},
1172
  "order": 14,
@@ -1174,122 +1259,100 @@
1174
  "inputs": [],
1175
  "outputs": [
1176
  {
1177
- "name": "NOISE",
1178
- "type": "NOISE",
1179
  "links": [
1180
- 68
1181
  ]
1182
  }
1183
  ],
1184
  "properties": {
1185
- "Node name for S&R": "RandomNoise"
 
 
1186
  },
1187
  "widgets_values": [
1188
- 1,
1189
- "fixed"
1190
  ]
1191
  },
1192
  {
1193
- "id": 1,
1194
- "type": "SamplerCustomAdvanced",
1195
  "pos": [
1196
- 1767.5123291015625,
1197
- 874.9805908203125
1198
  ],
1199
  "size": [
1200
- 355.20001220703125,
1201
- 106
1202
  ],
1203
  "flags": {},
1204
- "order": 26,
1205
  "mode": 0,
1206
  "inputs": [
1207
  {
1208
- "name": "noise",
1209
- "type": "NOISE",
1210
- "link": 68
1211
  },
1212
  {
1213
- "name": "guider",
1214
- "type": "GUIDER",
1215
- "link": 202
1216
  },
1217
  {
1218
- "name": "sampler",
1219
- "type": "SAMPLER",
1220
- "link": 70
1221
  },
1222
  {
1223
- "name": "sigmas",
1224
- "type": "SIGMAS",
1225
- "link": 214
1226
  },
1227
  {
1228
- "name": "latent_image",
1229
- "type": "LATENT",
1230
- "link": 72
1231
- }
1232
- ],
1233
- "outputs": [
1234
- {
1235
- "name": "output",
1236
- "type": "LATENT",
1237
- "links": [
1238
- 190
1239
- ],
1240
- "slot_index": 0
1241
  },
1242
  {
1243
- "name": "denoised_output",
1244
- "type": "LATENT",
1245
- "links": null
1246
- }
1247
- ],
1248
- "properties": {
1249
- "Node name for S&R": "SamplerCustomAdvanced"
1250
- },
1251
- "widgets_values": []
1252
- },
1253
- {
1254
- "id": 114,
1255
- "type": "VAEDecode",
1256
- "pos": [
1257
- 1771.2335205078125,
1258
- 1040.572021484375
1259
- ],
1260
- "size": [
1261
- 210,
1262
- 46
1263
- ],
1264
- "flags": {},
1265
- "order": 27,
1266
- "mode": 0,
1267
- "inputs": [
1268
- {
1269
- "name": "samples",
1270
- "type": "LATENT",
1271
- "link": 190
1272
  },
1273
  {
1274
- "name": "vae",
1275
- "type": "VAE",
1276
- "link": 191
 
1277
  }
1278
  ],
1279
  "outputs": [
1280
  {
1281
- "name": "IMAGE",
1282
- "type": "IMAGE",
1283
  "links": [
1284
- 207
1285
- ],
1286
- "slot_index": 0
1287
  }
1288
  ],
1289
  "properties": {
1290
- "Node name for S&R": "VAEDecode"
 
 
1291
  },
1292
- "widgets_values": []
 
 
 
 
 
 
 
 
 
1293
  }
1294
  ],
1295
  "links": [
@@ -1317,30 +1380,6 @@
1317
  4,
1318
  "LATENT"
1319
  ],
1320
- [
1321
- 77,
1322
- 44,
1323
- 0,
1324
- 31,
1325
- 1,
1326
- "PULIDFLUX"
1327
- ],
1328
- [
1329
- 78,
1330
- 45,
1331
- 0,
1332
- 31,
1333
- 2,
1334
- "EVA_CLIP"
1335
- ],
1336
- [
1337
- 79,
1338
- 46,
1339
- 0,
1340
- 31,
1341
- 3,
1342
- "FACEANALYSIS"
1343
- ],
1344
  [
1345
  87,
1346
  42,
@@ -1421,14 +1460,6 @@
1421
  0,
1422
  "*"
1423
  ],
1424
- [
1425
- 171,
1426
- 93,
1427
- 0,
1428
- 31,
1429
- 0,
1430
- "MODEL"
1431
- ],
1432
  [
1433
  172,
1434
  94,
@@ -1445,14 +1476,6 @@
1445
  0,
1446
  "CLIP"
1447
  ],
1448
- [
1449
- 175,
1450
- 105,
1451
- 0,
1452
- 31,
1453
- 4,
1454
- "IMAGE"
1455
- ],
1456
  [
1457
  176,
1458
  24,
@@ -1517,14 +1540,6 @@
1517
  1,
1518
  "CONDITIONING"
1519
  ],
1520
- [
1521
- 204,
1522
- 31,
1523
- 0,
1524
- 122,
1525
- 0,
1526
- "MODEL"
1527
- ],
1528
  [
1529
  206,
1530
  98,
@@ -1582,22 +1597,70 @@
1582
  "SIGMAS"
1583
  ],
1584
  [
1585
- 215,
1586
- 31,
1587
  0,
1588
  131,
1589
  0,
1590
  "MODEL"
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1591
  ]
1592
  ],
1593
  "groups": [],
1594
  "config": {},
1595
  "extra": {
1596
  "ds": {
1597
- "scale": 0.4594972986357322,
1598
  "offset": [
1599
- 946.7575830609429,
1600
- -566.8107983375609
1601
  ]
1602
  },
1603
  "node_versions": {
 
1
  {
2
+ "id": "ec1f729c-d164-435a-adb9-3a8e8f24a1e3",
3
+ "revision": 0,
4
+ "last_node_id": 134,
5
+ "last_link_id": 222,
6
  "nodes": [
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
7
  {
8
  "id": 97,
9
  "type": "Reroute",
 
16
  26
17
  ],
18
  "flags": {},
19
+ "order": 17,
20
  "mode": 0,
21
  "inputs": [
22
  {
 
29
  {
30
  "name": "",
31
  "type": "VAE",
32
+ "slot_index": 0,
33
  "links": [
34
  157,
35
  158,
36
  191
37
+ ]
 
38
  }
39
  ],
40
  "properties": {
 
58
  "mode": 0,
59
  "inputs": [
60
  {
61
+ "dir": 3,
62
  "name": "image_a",
63
  "type": "IMAGE",
 
64
  "link": 206
65
  },
66
  {
67
+ "dir": 3,
68
  "name": "image_b",
69
  "type": "IMAGE",
 
70
  "link": 208
71
  }
72
  ],
73
  "outputs": [],
74
  "properties": {
75
+ "cnr_id": "rgthree-comfy",
76
+ "ver": "b84f39c7c224de765de0b54c55b967329011819d",
77
+ "comparer_mode": "Slide",
78
+ "aux_id": "rgthree/rgthree-comfy"
79
  },
80
  "widgets_values": [
81
  [
82
  {
83
  "name": "A",
84
  "selected": true,
85
+ "url": "/api/view?filename=rgthree.compare._temp_bikvi_00001_.png&type=temp&subfolder=&rand=0.3573763312590408"
86
  },
87
  {
88
  "name": "B",
89
  "selected": true,
90
+ "url": "/api/view?filename=rgthree.compare._temp_bikvi_00002_.png&type=temp&subfolder=&rand=0.1379430430729296"
91
  }
92
  ]
93
  ]
 
104
  82
105
  ],
106
  "flags": {},
107
+ "order": 0,
108
  "mode": 0,
109
  "inputs": [],
110
  "outputs": [
111
  {
112
  "name": "ANALYSIS_MODELS",
113
  "type": "ANALYSIS_MODELS",
114
+ "slot_index": 0,
115
  "links": [
116
  196
117
+ ]
 
118
  }
119
  ],
120
  "properties": {
121
+ "cnr_id": "comfyui_faceanalysis",
122
+ "ver": "8251fab13bf339eb389b1691153755118fd7a026",
123
+ "Node name for S&R": "FaceAnalysisModels",
124
+ "aux_id": "cubiq/ComfyUI_FaceAnalysis"
125
  },
126
  "widgets_values": [
127
  "insightface",
 
140
  26
141
  ],
142
  "flags": {},
143
+ "order": 16,
144
  "mode": 0,
145
  "inputs": [
146
  {
 
153
  {
154
  "name": "",
155
  "type": "IMAGE",
156
+ "slot_index": 0,
157
  "links": [
158
  161,
159
  162,
160
  206
161
+ ]
 
162
  }
163
  ],
164
  "properties": {
 
178
  88
179
  ],
180
  "flags": {},
181
+ "order": 1,
182
  "mode": 0,
183
  "inputs": [],
184
  "outputs": [],
 
201
  88
202
  ],
203
  "flags": {},
204
+ "order": 2,
205
  "mode": 0,
206
  "inputs": [],
207
  "outputs": [],
 
224
  88
225
  ],
226
  "flags": {},
227
+ "order": 3,
228
  "mode": 0,
229
  "inputs": [],
230
  "outputs": [],
 
260
  {
261
  "name": "",
262
  "type": "IMAGE",
263
+ "slot_index": 0,
264
  "links": [
265
  208,
266
  210,
267
  211
268
+ ]
 
269
  }
270
  ],
271
  "properties": {
 
285
  46
286
  ],
287
  "flags": {},
288
+ "order": 25,
289
  "mode": 0,
290
  "inputs": [
291
  {
292
  "name": "model",
293
  "type": "MODEL",
294
+ "link": 217
295
  },
296
  {
297
  "name": "conditioning",
 
303
  {
304
  "name": "GUIDER",
305
  "type": "GUIDER",
306
+ "slot_index": 0,
307
  "links": [
308
  202
309
+ ]
 
310
  }
311
  ],
312
  "properties": {
313
+ "cnr_id": "comfy-core",
314
+ "ver": "0.3.28",
315
  "Node name for S&R": "BasicGuider"
316
  },
317
  "widgets_values": []
318
  },
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
319
  {
320
  "id": 42,
321
  "type": "CLIPTextEncode",
 
328
  200
329
  ],
330
  "flags": {},
331
+ "order": 18,
332
  "mode": 0,
333
  "inputs": [
334
  {
 
347
  }
348
  ],
349
  "properties": {
350
+ "cnr_id": "comfy-core",
351
+ "ver": "0.3.28",
352
  "Node name for S&R": "CLIPTextEncode"
353
  },
354
  "widgets_values": [
 
367
  186
368
  ],
369
  "flags": {},
370
+ "order": 23,
371
  "mode": 0,
372
  "inputs": [
373
  {
 
392
  },
393
  {
394
  "name": "vae",
 
395
  "shape": 7,
396
+ "type": "VAE",
397
  "link": 157
398
  }
399
  ],
 
401
  {
402
  "name": "positive",
403
  "type": "CONDITIONING",
404
+ "slot_index": 0,
405
  "links": [
406
  203
407
+ ]
 
408
  },
409
  {
410
  "name": "negative",
 
413
  }
414
  ],
415
  "properties": {
416
+ "cnr_id": "comfy-core",
417
+ "ver": "0.3.28",
418
  "Node name for S&R": "ControlNetApplyAdvanced"
419
  },
420
  "widgets_values": [
 
435
  46
436
  ],
437
  "flags": {},
438
+ "order": 22,
439
  "mode": 0,
440
  "inputs": [
441
  {
 
459
  }
460
  ],
461
  "properties": {
462
+ "cnr_id": "comfy-core",
463
+ "ver": "0.3.28",
464
  "Node name for S&R": "VAEEncode"
465
  },
466
  "widgets_values": []
 
479
  "flags": {
480
  "collapsed": true
481
  },
482
+ "order": 19,
483
  "mode": 0,
484
  "inputs": [
485
  {
 
498
  }
499
  ],
500
  "properties": {
501
+ "cnr_id": "comfy-core",
502
+ "ver": "0.3.28",
503
  "Node name for S&R": "CLIPTextEncode"
504
  },
505
  "widgets_values": [
 
529
  ],
530
  "outputs": [],
531
  "properties": {
532
+ "cnr_id": "comfy-core",
533
+ "ver": "0.3.28",
534
  "Node name for S&R": "SaveImage"
535
  },
536
  "widgets_values": [
537
+ "FaceEnhanced",
538
+ ""
539
  ]
540
  },
541
  {
 
573
  {
574
  "name": "IMAGE",
575
  "type": "IMAGE",
576
+ "slot_index": 0,
577
  "links": [
578
  212
579
+ ]
 
580
  },
581
  {
582
  "name": "distance",
583
  "type": "FLOAT",
584
+ "slot_index": 1,
585
  "links": [
586
  201
587
+ ]
 
588
  }
589
  ],
590
  "properties": {
591
+ "cnr_id": "comfyui_faceanalysis",
592
+ "ver": "8251fab13bf339eb389b1691153755118fd7a026",
593
+ "Node name for S&R": "FaceEmbedDistance",
594
+ "aux_id": "cubiq/ComfyUI_FaceAnalysis"
595
  },
596
  "widgets_values": [
597
  "cosine",
 
616
  "mode": 0,
617
  "inputs": [
618
  {
619
+ "dir": 3,
620
  "name": "source",
621
  "type": "*",
 
622
  "link": 201
623
  }
624
  ],
625
  "outputs": [],
626
  "properties": {
627
+ "cnr_id": "rgthree-comfy",
628
+ "ver": "b84f39c7c224de765de0b54c55b967329011819d",
629
+ "Node name for S&R": "Display Any (rgthree)",
630
+ "aux_id": "rgthree/rgthree-comfy"
631
  },
632
  "widgets_values": [
633
  ""
 
656
  ],
657
  "outputs": [],
658
  "properties": {
659
+ "cnr_id": "comfy-core",
660
+ "ver": "0.3.28",
661
  "Node name for S&R": "SaveImage"
662
  },
663
  "widgets_values": [
664
+ "FaceEmbedDist",
665
+ ""
666
  ]
667
  },
668
  {
669
+ "id": 1,
670
+ "type": "SamplerCustomAdvanced",
671
  "pos": [
672
+ 1767.5123291015625,
673
+ 874.9805908203125
674
  ],
675
  "size": [
676
+ 355.20001220703125,
677
+ 106
678
  ],
679
  "flags": {},
680
+ "order": 26,
681
  "mode": 0,
682
+ "inputs": [
683
+ {
684
+ "name": "noise",
685
+ "type": "NOISE",
686
+ "link": 68
687
+ },
688
+ {
689
+ "name": "guider",
690
+ "type": "GUIDER",
691
+ "link": 202
692
+ },
693
+ {
694
+ "name": "sampler",
695
+ "type": "SAMPLER",
696
+ "link": 70
697
+ },
698
+ {
699
+ "name": "sigmas",
700
+ "type": "SIGMAS",
701
+ "link": 214
702
+ },
703
+ {
704
+ "name": "latent_image",
705
+ "type": "LATENT",
706
+ "link": 72
707
+ }
708
+ ],
709
  "outputs": [
710
  {
711
+ "name": "output",
712
+ "type": "LATENT",
713
+ "slot_index": 0,
714
  "links": [
715
+ 190
716
+ ]
 
717
  },
718
  {
719
+ "name": "denoised_output",
720
+ "type": "LATENT",
721
  "links": null
722
  }
723
  ],
724
  "properties": {
725
+ "cnr_id": "comfy-core",
726
+ "ver": "0.3.28",
727
+ "Node name for S&R": "SamplerCustomAdvanced"
728
  },
729
+ "widgets_values": []
 
 
 
730
  },
731
  {
732
+ "id": 114,
733
+ "type": "VAEDecode",
734
  "pos": [
735
+ 1771.2335205078125,
736
+ 1040.572021484375
737
  ],
738
  "size": [
739
+ 210,
740
+ 46
741
  ],
742
  "flags": {},
743
+ "order": 27,
744
  "mode": 0,
745
+ "inputs": [
746
+ {
747
+ "name": "samples",
748
+ "type": "LATENT",
749
+ "link": 190
750
+ },
751
+ {
752
+ "name": "vae",
753
+ "type": "VAE",
754
+ "link": 191
755
+ }
756
+ ],
757
  "outputs": [
758
  {
759
  "name": "IMAGE",
760
  "type": "IMAGE",
761
+ "slot_index": 0,
762
  "links": [
763
+ 207
764
+ ]
765
+ }
766
+ ],
767
+ "properties": {
768
+ "cnr_id": "comfy-core",
769
+ "ver": "0.3.28",
770
+ "Node name for S&R": "VAEDecode"
771
+ },
772
+ "widgets_values": []
773
+ },
774
+ {
775
+ "id": 50,
776
+ "type": "KSamplerSelect",
777
+ "pos": [
778
+ 1312.514404296875,
779
+ 1212.9171142578125
780
+ ],
781
+ "size": [
782
+ 315,
783
+ 58
784
+ ],
785
+ "flags": {},
786
+ "order": 4,
787
+ "mode": 0,
788
+ "inputs": [],
789
+ "outputs": [
790
  {
791
+ "name": "SAMPLER",
792
+ "type": "SAMPLER",
793
+ "links": [
794
+ 70
795
+ ]
796
  }
797
  ],
798
  "properties": {
799
+ "cnr_id": "comfy-core",
800
+ "ver": "0.3.28",
801
+ "Node name for S&R": "KSamplerSelect"
802
  },
803
  "widgets_values": [
804
+ "euler"
 
805
  ]
806
  },
807
  {
808
+ "id": 131,
809
+ "type": "BasicScheduler",
810
  "pos": [
811
+ 1313.8270263671875,
812
+ 1318.2603759765625
813
  ],
814
  "size": [
815
  315,
816
+ 106
817
  ],
818
  "flags": {},
819
+ "order": 24,
820
  "mode": 0,
821
  "inputs": [
822
  {
823
  "name": "model",
824
  "type": "MODEL",
825
+ "link": 216
826
+ }
827
+ ],
828
+ "outputs": [
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
829
  {
830
+ "name": "SIGMAS",
831
+ "type": "SIGMAS",
832
+ "slot_index": 0,
833
+ "links": [
834
+ 214
835
+ ]
836
+ }
837
+ ],
838
+ "properties": {
839
+ "cnr_id": "comfy-core",
840
+ "ver": "0.3.28",
841
+ "Node name for S&R": "BasicScheduler"
842
+ },
843
+ "widgets_values": [
844
+ "beta",
845
+ 28,
846
+ 0.75
847
+ ]
848
+ },
849
+ {
850
+ "id": 39,
851
+ "type": "RandomNoise",
852
+ "pos": [
853
+ 1311.832763671875,
854
+ 1088.896728515625
855
+ ],
856
+ "size": [
857
+ 315,
858
+ 82
859
+ ],
860
+ "flags": {},
861
+ "order": 5,
862
+ "mode": 0,
863
+ "inputs": [],
864
+ "outputs": [
865
+ {
866
+ "name": "NOISE",
867
+ "type": "NOISE",
868
+ "links": [
869
+ 68
870
+ ]
871
+ }
872
+ ],
873
+ "properties": {
874
+ "cnr_id": "comfy-core",
875
+ "ver": "0.3.28",
876
+ "Node name for S&R": "RandomNoise"
877
+ },
878
+ "widgets_values": [
879
+ 1,
880
+ "fixed"
881
+ ]
882
+ },
883
+ {
884
+ "id": 24,
885
+ "type": "LoadImage",
886
+ "pos": [
887
+ -352.1936340332031,
888
+ 770.800537109375
889
+ ],
890
+ "size": [
891
+ 404.0055236816406,
892
+ 404.2244567871094
893
+ ],
894
+ "flags": {},
895
+ "order": 6,
896
+ "mode": 0,
897
+ "inputs": [],
898
+ "outputs": [
899
+ {
900
+ "name": "IMAGE",
901
+ "type": "IMAGE",
902
+ "slot_index": 0,
903
+ "links": [
904
+ 176
905
+ ]
906
+ },
907
+ {
908
+ "name": "MASK",
909
+ "type": "MASK",
910
+ "links": null
911
+ }
912
+ ],
913
+ "properties": {
914
+ "cnr_id": "comfy-core",
915
+ "ver": "0.3.28",
916
+ "Node name for S&R": "LoadImage"
917
+ },
918
+ "widgets_values": [
919
+ "woman_face.jpg",
920
+ "image",
921
+ ""
922
+ ]
923
+ },
924
+ {
925
+ "id": 40,
926
+ "type": "LoadImage",
927
+ "pos": [
928
+ -351.87322998046875,
929
+ 188.0283966064453
930
+ ],
931
+ "size": [
932
+ 433.580322265625,
933
+ 523.640869140625
934
+ ],
935
+ "flags": {},
936
+ "order": 7,
937
+ "mode": 0,
938
+ "inputs": [],
939
+ "outputs": [
940
+ {
941
+ "name": "IMAGE",
942
+ "type": "IMAGE",
943
+ "slot_index": 0,
944
+ "links": [
945
+ 163
946
+ ]
947
+ },
948
+ {
949
+ "name": "MASK",
950
+ "type": "MASK",
951
+ "links": null
952
+ }
953
+ ],
954
+ "properties": {
955
+ "cnr_id": "comfy-core",
956
+ "ver": "0.3.28",
957
+ "Node name for S&R": "LoadImage"
958
+ },
959
+ "widgets_values": [
960
+ "woman1_gpt_2.png",
961
+ "image",
962
+ ""
963
+ ]
964
+ },
965
+ {
966
+ "id": 95,
967
+ "type": "VAELoader",
968
+ "pos": [
969
+ -265.02642822265625,
970
+ 1410.9061279296875
971
+ ],
972
+ "size": [
973
+ 315,
974
+ 58
975
+ ],
976
+ "flags": {},
977
+ "order": 8,
978
+ "mode": 0,
979
+ "inputs": [],
980
+ "outputs": [
981
+ {
982
+ "name": "VAE",
983
+ "type": "VAE",
984
+ "slot_index": 0,
985
+ "links": [
986
+ 160
987
+ ]
988
+ }
989
+ ],
990
+ "properties": {
991
+ "cnr_id": "comfy-core",
992
+ "ver": "0.3.28",
993
+ "Node name for S&R": "VAELoader"
994
+ },
995
+ "widgets_values": [
996
+ "ae.safetensors"
997
+ ]
998
+ },
999
+ {
1000
+ "id": 94,
1001
+ "type": "DualCLIPLoader",
1002
+ "pos": [
1003
+ -274.0904235839844,
1004
+ 1235.6214599609375
1005
+ ],
1006
+ "size": [
1007
+ 315,
1008
+ 130
1009
+ ],
1010
+ "flags": {},
1011
+ "order": 9,
1012
+ "mode": 0,
1013
+ "inputs": [],
1014
+ "outputs": [
1015
+ {
1016
+ "name": "CLIP",
1017
+ "type": "CLIP",
1018
+ "slot_index": 0,
1019
+ "links": [
1020
+ 172,
1021
+ 173
1022
+ ]
1023
+ }
1024
+ ],
1025
+ "properties": {
1026
+ "cnr_id": "comfy-core",
1027
+ "ver": "0.3.28",
1028
+ "Node name for S&R": "DualCLIPLoader"
1029
+ },
1030
+ "widgets_values": [
1031
+ "t5xxl_fp16.safetensors",
1032
+ "clip_l.safetensors",
1033
+ "flux",
1034
+ "default"
1035
+ ]
1036
+ },
1037
+ {
1038
+ "id": 46,
1039
+ "type": "PulidFluxInsightFaceLoader",
1040
+ "pos": [
1041
+ -300.94317626953125,
1042
+ 1863.1434326171875
1043
+ ],
1044
+ "size": [
1045
+ 365.4000244140625,
1046
+ 58
1047
+ ],
1048
+ "flags": {},
1049
+ "order": 10,
1050
+ "mode": 0,
1051
+ "inputs": [],
1052
+ "outputs": [
1053
+ {
1054
+ "name": "FACEANALYSIS",
1055
+ "type": "FACEANALYSIS",
1056
+ "links": [
1057
+ 218
1058
+ ]
1059
+ }
1060
+ ],
1061
+ "properties": {
1062
+ "aux_id": "balazik/ComfyUI-PuLID-Flux",
1063
+ "ver": "a80912fc3435c358607bf4b43a58dbcbebdb09ff",
1064
+ "Node name for S&R": "PulidFluxInsightFaceLoader"
1065
+ },
1066
+ "widgets_values": [
1067
+ "CUDA"
1068
+ ]
1069
+ },
1070
+ {
1071
+ "id": 45,
1072
+ "type": "PulidFluxEvaClipLoader",
1073
+ "pos": [
1074
+ -294.8002624511719,
1075
+ 1774.585693359375
1076
+ ],
1077
+ "size": [
1078
+ 362.79498291015625,
1079
+ 38.76161575317383
1080
+ ],
1081
+ "flags": {},
1082
+ "order": 11,
1083
+ "mode": 0,
1084
+ "inputs": [],
1085
+ "outputs": [
1086
+ {
1087
+ "name": "EVA_CLIP",
1088
+ "type": "EVA_CLIP",
1089
+ "links": [
1090
+ 219
1091
+ ]
1092
+ }
1093
+ ],
1094
+ "properties": {
1095
+ "aux_id": "balazik/ComfyUI-PuLID-Flux",
1096
+ "ver": "a80912fc3435c358607bf4b43a58dbcbebdb09ff",
1097
+ "Node name for S&R": "PulidFluxEvaClipLoader"
1098
+ },
1099
+ "widgets_values": []
1100
+ },
1101
+ {
1102
+ "id": 44,
1103
+ "type": "PulidFluxModelLoader",
1104
+ "pos": [
1105
+ -262.90264892578125,
1106
+ 1662.658447265625
1107
+ ],
1108
+ "size": [
1109
+ 315,
1110
+ 58
1111
+ ],
1112
+ "flags": {},
1113
+ "order": 12,
1114
+ "mode": 0,
1115
+ "inputs": [],
1116
+ "outputs": [
1117
+ {
1118
+ "name": "PULIDFLUX",
1119
+ "type": "PULIDFLUX",
1120
+ "links": [
1121
+ 220
1122
+ ]
1123
+ }
1124
+ ],
1125
+ "properties": {
1126
+ "aux_id": "balazik/ComfyUI-PuLID-Flux",
1127
+ "ver": "a80912fc3435c358607bf4b43a58dbcbebdb09ff",
1128
+ "Node name for S&R": "PulidFluxModelLoader"
1129
+ },
1130
+ "widgets_values": [
1131
+ "pulid_flux_v0.9.1.safetensors"
1132
+ ]
1133
+ },
1134
+ {
1135
+ "id": 93,
1136
+ "type": "UNETLoader",
1137
+ "pos": [
1138
+ -265.5894775390625,
1139
+ 1531.7340087890625
1140
+ ],
1141
+ "size": [
1142
+ 315,
1143
+ 82
1144
+ ],
1145
+ "flags": {},
1146
+ "order": 13,
1147
+ "mode": 0,
1148
+ "inputs": [],
1149
+ "outputs": [
1150
+ {
1151
+ "name": "MODEL",
1152
+ "type": "MODEL",
1153
+ "slot_index": 0,
1154
+ "links": [
1155
+ 221
1156
+ ]
1157
+ }
1158
+ ],
1159
+ "properties": {
1160
+ "cnr_id": "comfy-core",
1161
+ "ver": "0.3.28",
1162
+ "Node name for S&R": "UNETLoader"
1163
+ },
1164
+ "widgets_values": [
1165
+ "flux1-dev.safetensors",
1166
+ "default"
1167
+ ]
1168
+ },
1169
+ {
1170
+ "id": 105,
1171
+ "type": "Reroute",
1172
+ "pos": [
1173
+ 81.75617980957031,
1174
+ 771.7276611328125
1175
+ ],
1176
+ "size": [
1177
+ 75,
1178
+ 26
1179
+ ],
1180
+ "flags": {},
1181
+ "order": 15,
1182
+ "mode": 0,
1183
+ "inputs": [
1184
  {
1185
+ "name": "",
1186
+ "type": "*",
1187
+ "link": 176
 
1188
  }
1189
  ],
1190
  "outputs": [
1191
  {
1192
+ "name": "",
1193
+ "type": "IMAGE",
1194
+ "slot_index": 0,
1195
  "links": [
1196
+ 199,
1197
+ 222
1198
+ ]
 
1199
  }
1200
  ],
1201
  "properties": {
1202
+ "showOutputText": false,
1203
+ "horizontal": false
1204
+ }
 
 
 
 
 
 
 
 
 
1205
  },
1206
  {
1207
+ "id": 41,
1208
+ "type": "SetUnionControlNetType",
1209
  "pos": [
1210
+ 200.7367706298828,
1211
+ 1973.8323974609375
1212
  ],
1213
  "size": [
1214
  315,
1215
+ 58
1216
  ],
1217
  "flags": {},
1218
+ "order": 20,
1219
  "mode": 0,
1220
  "inputs": [
1221
  {
1222
+ "name": "control_net",
1223
+ "type": "CONTROL_NET",
1224
+ "link": 94
1225
  }
1226
  ],
1227
  "outputs": [
1228
  {
1229
+ "name": "CONTROL_NET",
1230
+ "type": "CONTROL_NET",
1231
  "links": [
1232
+ 89
1233
+ ]
 
1234
  }
1235
  ],
1236
  "properties": {
1237
+ "cnr_id": "comfy-core",
1238
+ "ver": "0.3.28",
1239
+ "Node name for S&R": "SetUnionControlNetType"
1240
  },
1241
  "widgets_values": [
1242
+ "tile"
 
 
1243
  ]
1244
  },
1245
  {
1246
+ "id": 49,
1247
+ "type": "ControlNetLoader",
1248
  "pos": [
1249
+ -299.92938232421875,
1250
+ 1973.3970947265625
1251
  ],
1252
  "size": [
1253
+ 370.503173828125,
1254
+ 62.10068130493164
1255
  ],
1256
  "flags": {},
1257
  "order": 14,
 
1259
  "inputs": [],
1260
  "outputs": [
1261
  {
1262
+ "name": "CONTROL_NET",
1263
+ "type": "CONTROL_NET",
1264
  "links": [
1265
+ 94
1266
  ]
1267
  }
1268
  ],
1269
  "properties": {
1270
+ "cnr_id": "comfy-core",
1271
+ "ver": "0.3.28",
1272
+ "Node name for S&R": "ControlNetLoader"
1273
  },
1274
  "widgets_values": [
1275
+ "Flux_Dev_ControlNet_Union_Pro_ShakkerLabs.safetensors"
 
1276
  ]
1277
  },
1278
  {
1279
+ "id": 133,
1280
+ "type": "ApplyPulidFlux",
1281
  "pos": [
1282
+ 205.47418212890625,
1283
+ 1556.73681640625
1284
  ],
1285
  "size": [
1286
+ 315,
1287
+ 346
1288
  ],
1289
  "flags": {},
1290
+ "order": 21,
1291
  "mode": 0,
1292
  "inputs": [
1293
  {
1294
+ "name": "model",
1295
+ "type": "MODEL",
1296
+ "link": 221
1297
  },
1298
  {
1299
+ "name": "pulid_flux",
1300
+ "type": "PULIDFLUX",
1301
+ "link": 220
1302
  },
1303
  {
1304
+ "name": "eva_clip",
1305
+ "type": "EVA_CLIP",
1306
+ "link": 219
1307
  },
1308
  {
1309
+ "name": "face_analysis",
1310
+ "type": "FACEANALYSIS",
1311
+ "link": 218
1312
  },
1313
  {
1314
+ "name": "image",
1315
+ "type": "IMAGE",
1316
+ "link": 222
 
 
 
 
 
 
 
 
 
 
1317
  },
1318
  {
1319
+ "name": "attn_mask",
1320
+ "shape": 7,
1321
+ "type": "MASK",
1322
+ "link": null
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1323
  },
1324
  {
1325
+ "name": "prior_image",
1326
+ "shape": 7,
1327
+ "type": "IMAGE",
1328
+ "link": null
1329
  }
1330
  ],
1331
  "outputs": [
1332
  {
1333
+ "name": "MODEL",
1334
+ "type": "MODEL",
1335
  "links": [
1336
+ 216,
1337
+ 217
1338
+ ]
1339
  }
1340
  ],
1341
  "properties": {
1342
+ "aux_id": "balazik/ComfyUI-PuLID-Flux",
1343
+ "ver": "a80912fc3435c358607bf4b43a58dbcbebdb09ff",
1344
+ "Node name for S&R": "ApplyPulidFlux"
1345
  },
1346
+ "widgets_values": [
1347
+ 0.7500000000000001,
1348
+ 0.10000000000000002,
1349
+ 1,
1350
+ "mean",
1351
+ 1,
1352
+ 0,
1353
+ 1000,
1354
+ true
1355
+ ]
1356
  }
1357
  ],
1358
  "links": [
 
1380
  4,
1381
  "LATENT"
1382
  ],
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1383
  [
1384
  87,
1385
  42,
 
1460
  0,
1461
  "*"
1462
  ],
 
 
 
 
 
 
 
 
1463
  [
1464
  172,
1465
  94,
 
1476
  0,
1477
  "CLIP"
1478
  ],
 
 
 
 
 
 
 
 
1479
  [
1480
  176,
1481
  24,
 
1540
  1,
1541
  "CONDITIONING"
1542
  ],
 
 
 
 
 
 
 
 
1543
  [
1544
  206,
1545
  98,
 
1597
  "SIGMAS"
1598
  ],
1599
  [
1600
+ 216,
1601
+ 133,
1602
  0,
1603
  131,
1604
  0,
1605
  "MODEL"
1606
+ ],
1607
+ [
1608
+ 217,
1609
+ 133,
1610
+ 0,
1611
+ 122,
1612
+ 0,
1613
+ "MODEL"
1614
+ ],
1615
+ [
1616
+ 218,
1617
+ 46,
1618
+ 0,
1619
+ 133,
1620
+ 3,
1621
+ "FACEANALYSIS"
1622
+ ],
1623
+ [
1624
+ 219,
1625
+ 45,
1626
+ 0,
1627
+ 133,
1628
+ 2,
1629
+ "EVA_CLIP"
1630
+ ],
1631
+ [
1632
+ 220,
1633
+ 44,
1634
+ 0,
1635
+ 133,
1636
+ 1,
1637
+ "PULIDFLUX"
1638
+ ],
1639
+ [
1640
+ 221,
1641
+ 93,
1642
+ 0,
1643
+ 133,
1644
+ 0,
1645
+ "MODEL"
1646
+ ],
1647
+ [
1648
+ 222,
1649
+ 105,
1650
+ 0,
1651
+ 133,
1652
+ 4,
1653
+ "IMAGE"
1654
  ]
1655
  ],
1656
  "groups": [],
1657
  "config": {},
1658
  "extra": {
1659
  "ds": {
1660
+ "scale": 0.7400249944258384,
1661
  "offset": [
1662
+ 594.5480724259465,
1663
+ -120.04367935349859
1664
  ]
1665
  },
1666
  "node_versions": {
README.md CHANGED
@@ -1,2 +1,39 @@
1
  # FaceEnhance
2
  Enhancing faces in AI generated images.
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
  # FaceEnhance
2
  Enhancing faces in AI generated images.
3
+
4
+ ## Installation
5
+
6
+ ### Prerequisites
7
+ - Python 3.8 or higher
8
+ - At least 50GB of free disk space for models and dependencies
9
+
10
+ ### Setup
11
+
12
+ 1. Set up your Hugging Face token:
13
+ - Create a token at [Hugging Face](https://huggingface.co/settings/tokens) if you don't have one
14
+ - Set the token as an environment variable:
15
+ ```
16
+ export HUGGINGFACE_TOKEN=your_token_here
17
+ ```
18
+
19
+ 2. Set the Hugging Face cache directory:
20
+ ```
21
+ export HF_HOME=/path/to/your/huggingface_cache
22
+ ```
23
+ This defines where models will be downloaded and later symlinked to the ComfyUI folder.
24
+
25
+ 3. Create and activate a virtual environment:
26
+ ```
27
+ python -m venv venv
28
+ source venv/bin/activate # On Windows: venv\Scripts\activate
29
+ ```
30
+
31
+ 4. Run the installation script:
32
+ ```
33
+ python install.py
34
+ ```
35
+
36
+ This script will:
37
+ - Install all required dependencies to your virtual environment
38
+ - Set up ComfyUI and necessary components
39
+ - Download and install all required models (FLUX, ControlNet, text encoders, and more)
install.py CHANGED
@@ -20,17 +20,6 @@ def run_command(command):
20
  exit(1) # Exit on failure
21
 
22
 
23
- # def install_dependencies():
24
- # """Install system dependencies and Python packages."""
25
- # print("πŸ“¦ Installing dependencies...")
26
- # # run_command("apt-get update && apt-get install -y git wget curl libgl1-mesa-glx libglib2.0-0 tmux emacs git-lfs")
27
- # run_command("pip install --upgrade pip")
28
- # run_command("pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu124")
29
- # run_command("pip install xformers --index-url https://download.pytorch.org/whl/cu124")
30
- # # run_command("pip install -r requirements.txt")
31
- # print("βœ… Dependencies installed.")
32
-
33
-
34
  def manage_git_repo(repo_url, install_path, requirements=False, submodules=False):
35
  """Clone or update a git repository and handle its dependencies.
36
 
@@ -75,7 +64,7 @@ def install_comfyui():
75
  )
76
 
77
  def download_huggingface_models():
78
- """Download required models from Hugging Face."""
79
  from huggingface_hub import hf_hub_download
80
  hf_models = [
81
  {"repo_id": "black-forest-labs/FLUX.1-dev", "filename": "flux1-dev.safetensors", "folder": "unet"},
@@ -118,15 +107,21 @@ def download_huggingface_models():
118
 
119
  def download_and_extract_antelopev2():
120
  """Download and extract AntelopeV2 model for insightface."""
121
- import zipfile, requests
122
- base_path = os.path.join(BASE_PATH, "models/insightface/models")
 
 
123
  download_url = "https://huggingface.co/MonsterMMORPG/tools/resolve/main/antelopev2.zip"
124
  zip_path = os.path.join(base_path, "antelopev2.zip")
125
- extract_path = os.path.join(base_path, "antelopev2")
126
-
127
  os.makedirs(base_path, exist_ok=True)
128
 
129
- if not os.path.exists(extract_path):
 
 
 
 
130
  print(f"πŸ“₯ Downloading AntelopeV2 model...")
131
  try:
132
  response = requests.get(download_url, stream=True)
@@ -136,13 +131,35 @@ def download_and_extract_antelopev2():
136
  file.write(chunk)
137
  print("βœ… Download complete.")
138
 
 
 
 
139
  print("πŸ“‚ Extracting AntelopeV2 model...")
140
  with zipfile.ZipFile(zip_path, "r") as zip_ref:
141
- zip_ref.extractall(base_path)
142
  print("βœ… Extraction complete.")
143
-
144
- os.remove(zip_path)
145
- print("πŸ—‘οΈ Cleaned up ZIP file.")
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
146
  except Exception as e:
147
  print(f"❌ Failed to download/extract AntelopeV2: {e}")
148
  else:
@@ -159,8 +176,8 @@ def install_custom_nodes():
159
  "requirements": True
160
  },
161
  {
162
- "repo": "https://github.com/balazik/ComfyUI-PuLID-Flux",
163
- "name": "ComfyUI-PuLID-Flux",
164
  "requirements": True
165
  },
166
  {
@@ -190,8 +207,8 @@ def install_custom_nodes():
190
 
191
 
192
  if __name__ == "__main__":
193
- # install_dependencies()
194
  # install_comfyui()
 
195
  # download_huggingface_models()
196
- install_custom_nodes()
197
  print("πŸŽ‰ Setup Complete! Run `run.py` to start ComfyUI.")
 
20
  exit(1) # Exit on failure
21
 
22
 
 
 
 
 
 
 
 
 
 
 
 
23
  def manage_git_repo(repo_url, install_path, requirements=False, submodules=False):
24
  """Clone or update a git repository and handle its dependencies.
25
 
 
64
  )
65
 
66
  def download_huggingface_models():
67
+ """Download required models from Hugging Face and symlink to ComfyUI models directory."""
68
  from huggingface_hub import hf_hub_download
69
  hf_models = [
70
  {"repo_id": "black-forest-labs/FLUX.1-dev", "filename": "flux1-dev.safetensors", "folder": "unet"},
 
107
 
108
  def download_and_extract_antelopev2():
109
  """Download and extract AntelopeV2 model for insightface."""
110
+ import zipfile, requests, shutil
111
+
112
+ base_path = os.path.join(MODEL_PATH, "insightface/models")
113
+ model_target_path = os.path.join(base_path, "antelopev2")
114
  download_url = "https://huggingface.co/MonsterMMORPG/tools/resolve/main/antelopev2.zip"
115
  zip_path = os.path.join(base_path, "antelopev2.zip")
116
+ temp_extract_path = os.path.join(base_path, "temp_antelopev2")
117
+
118
  os.makedirs(base_path, exist_ok=True)
119
 
120
+ if not os.path.exists(model_target_path) or not os.listdir(model_target_path):
121
+ # First, remove any existing problematic directories
122
+ if os.path.exists(model_target_path):
123
+ shutil.rmtree(model_target_path)
124
+
125
  print(f"πŸ“₯ Downloading AntelopeV2 model...")
126
  try:
127
  response = requests.get(download_url, stream=True)
 
131
  file.write(chunk)
132
  print("βœ… Download complete.")
133
 
134
+ # Create a temporary extraction directory
135
+ os.makedirs(temp_extract_path, exist_ok=True)
136
+
137
  print("πŸ“‚ Extracting AntelopeV2 model...")
138
  with zipfile.ZipFile(zip_path, "r") as zip_ref:
139
+ zip_ref.extractall(temp_extract_path)
140
  print("βœ… Extraction complete.")
141
+
142
+ # Create the target directory
143
+ os.makedirs(model_target_path, exist_ok=True)
144
+
145
+ # Move the model files to the correct location
146
+ # The ZIP contains a nested antelopev2 directory we need to move files from
147
+ nested_model_dir = os.path.join(temp_extract_path, "antelopev2")
148
+ if os.path.exists(nested_model_dir):
149
+ for item in os.listdir(nested_model_dir):
150
+ source = os.path.join(nested_model_dir, item)
151
+ target = os.path.join(model_target_path, item)
152
+ shutil.move(source, target)
153
+
154
+ # Clean up
155
+ if os.path.exists(temp_extract_path):
156
+ shutil.rmtree(temp_extract_path)
157
+ if os.path.exists(zip_path):
158
+ os.remove(zip_path)
159
+
160
+ print("πŸ—‘οΈ Cleaned up temporary files.")
161
+ print("βœ… AntelopeV2 model installed correctly.")
162
+
163
  except Exception as e:
164
  print(f"❌ Failed to download/extract AntelopeV2: {e}")
165
  else:
 
176
  "requirements": True
177
  },
178
  {
179
+ "repo": "https://github.com/sipie800/ComfyUI-PuLID-Flux-Enhanced",
180
+ "name": "ComfyUI-PuLID-Flux-Enhanced",
181
  "requirements": True
182
  },
183
  {
 
207
 
208
 
209
  if __name__ == "__main__":
 
210
  # install_comfyui()
211
+ # install_custom_nodes()
212
  # download_huggingface_models()
213
+ # download_and_extract_antelopev2()
214
  print("πŸŽ‰ Setup Complete! Run `run.py` to start ComfyUI.")