lvladikov commited on
Commit
a47293e
·
verified ·
1 Parent(s): 2ed998b

fix: VAELoader pointed at the distilled VAE; document real verification

Browse files

The shipped workflow selected ema_vae_distill_fp16.safetensors in its VAELoader. ComfyUI identifies a SeedVR2 VAE by the stock decoder key decoder.up_blocks.2.upsamplers.0.upscale_conv.weight (comfy/sd.py); the distilled decoder replaces those keys, so detection fails and load_vae raises "ERROR: VAE is invalid: None". Wrong since publication, not a ComfyUI regression.

The VAELoader now loads the stock seedvr2_ema_vae_fp16.safetensors. The distilled file is never loaded as a VAE: the node finds it on disk and patches VideoAutoencoderKL.decode_ at import time.

Also:
- resolve ../../models/vae by path so the documented location works when folder_paths is unimportable; log every path searched on failure
- drop SEEDVR2_TINYVAE_VERIFY=1 from the README - it was never implemented. Document the real check: the calibration lines printed on first decode.
- new workflow screenshot showing a verified 512->2048 run

README.md CHANGED
@@ -716,9 +716,16 @@ The transformer is not the only expensive part. On a 2K→8K job the **VAE decod
716
  204 s run** — a third of the wall clock — and it is the same 150.6M-parameter 3-D causal-conv stack
717
  whatever transformer you pair it with. So it was distilled too.
718
 
719
- `ema_vae_distill_fp16.safetensors` is a **complete VAE**: the original encoder, bit-identical, plus a
720
  **1.35M-parameter** decoder trained to reproduce the original's output. 202.8 MB against 501.3 MB.
721
 
 
 
 
 
 
 
 
722
  | | params | note |
723
  |---|---:|---|
724
  | stock decoder | 150,601,731 | 3-D causal conv, 144 tensors |
@@ -832,8 +839,35 @@ cannot mis-route the load; and if the distilled decoder fails to load, the run f
832
  stock decoder with an error rather than silently using a randomly-initialised one.
833
 
834
  For ComfyUI see [`comfyui/ComfyUI-SeedVR2-1.4B-TinyVAE/`](comfyui/ComfyUI-SeedVR2-1.4B-TinyVAE/) —
835
- install it alongside the base node (the encoder still needs the base node's fast path) and run once
836
- with `SEEDVR2_TINYVAE_VERIFY=1` to confirm the swap is valid on your ComfyUI build.
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
837
 
838
  <a href="assets/comfyui/comfyui_tinyvae_workflow.jpg"><img src="assets/comfyui/comfyui_tinyvae_workflow_thumb.jpg" width="720"></a>
839
 
 
716
  204 s run** — a third of the wall clock — and it is the same 150.6M-parameter 3-D causal-conv stack
717
  whatever transformer you pair it with. So it was distilled too.
718
 
719
+ `ema_vae_distill_fp16.safetensors` holds the original encoder, bit-identical, plus a
720
  **1.35M-parameter** decoder trained to reproduce the original's output. 202.8 MB against 501.3 MB.
721
 
722
+ > **In ComfyUI this file is not a `VAELoader` input.** Keep the VAELoader on the stock
723
+ > `seedvr2_ema_vae_fp16.safetensors`; the TinyVAE custom node finds the distilled file on disk and
724
+ > patches the decode path at import time. Selecting it in a VAELoader raises
725
+ > `RuntimeError: ERROR: VAE is invalid: None`, because ComfyUI recognises a SeedVR2 VAE by a stock
726
+ > decoder key (`decoder.up_blocks.2.upsamplers.0.upscale_conv.weight`) that the distilled decoder
727
+ > replaces. Loading it directly — as `ai-image` does — is unaffected.
728
+
729
  | | params | note |
730
  |---|---:|---|
731
  | stock decoder | 150,601,731 | 3-D causal conv, 144 tensors |
 
839
  stock decoder with an error rather than silently using a randomly-initialised one.
840
 
841
  For ComfyUI see [`comfyui/ComfyUI-SeedVR2-1.4B-TinyVAE/`](comfyui/ComfyUI-SeedVR2-1.4B-TinyVAE/) —
842
+ install it alongside the base node (the encoder still needs the base node's fast path), keep the
843
+ `VAELoader` on the **stock** `seedvr2_ema_vae_fp16.safetensors`, and drop
844
+ `ema_vae_distill_fp16.safetensors` anywhere the node looks (`models/vae/`, beside the node folder,
845
+ or `SEEDVR2_TINYVAE_PATH`). Then load
846
+ [`comfyui/seedvr2_1.4b_tinyvae_upscale_image.json`](comfyui/seedvr2_1.4b_tinyvae_upscale_image.json)
847
+ and run it once.
848
+
849
+ #### Verifying the swap actually happened
850
+
851
+ Nothing in the graph changes, so the console is the proof. On the first decode the node measures
852
+ the latent convention against the stock decoder instead of assuming it, and prints what it chose:
853
+
854
+ ```
855
+ SeedVR2 TinyVAE: patched VideoAutoencoderKL.decode_
856
+ SeedVR2 TinyVAE: distilled decoder active (.../models/vae/ema_vae_distill_fp16.safetensors)
857
+ SeedVR2 TinyVAE: loaded ema_vae_distill_fp16.safetensors (1.35M params)
858
+ SeedVR2 TinyVAE calibrate: pre-scaled by ComfyUI -> 30.29 dB
859
+ SeedVR2 TinyVAE calibrate: raw latent -> 28.07 dB
860
+ SeedVR2 TinyVAE: calibrated — pre-scaled by ComfyUI, 30.29 dB vs the stock decoder.
861
+ ```
862
+
863
+ The dB figure is measured on **your** first tile, so it moves with content — the run below scores
864
+ 30.3 dB on a kingfisher, which is near worst case for a mild low-pass (water droplets, fine feather
865
+ detail), against ~34.9 dB averaged over the test set. Anything clearing 28 dB means the swap is
866
+ numerically sound; below that the node disables itself and falls back to the stock decoder rather
867
+ than emit a fast-but-wrong image. Seeing no `TinyVAE` lines at all means the node never imported.
868
+
869
+ Verified on ComfyUI **0.30.0**: 512×512 → 2048×2048 at 4×, first run 16.6 s including a one-time
870
+ ~2.1 s calibration and model load.
871
 
872
  <a href="assets/comfyui/comfyui_tinyvae_workflow.jpg"><img src="assets/comfyui/comfyui_tinyvae_workflow_thumb.jpg" width="720"></a>
873
 
assets/comfyui/comfyui_tinyvae_workflow.jpg CHANGED

Git LFS Details

  • SHA256: 2a50aba5e882f98dbf780f5874c7b6377421ac6fd9a221fe83b5086059263e17
  • Pointer size: 131 Bytes
  • Size of remote file: 105 kB

Git LFS Details

  • SHA256: 658bf4a2807cd15cdc5b5420cd7ba860693ed703c630eb3142d39939aad1ab18
  • Pointer size: 131 Bytes
  • Size of remote file: 399 kB
assets/comfyui/comfyui_tinyvae_workflow_thumb.jpg CHANGED
comfyui/ComfyUI-SeedVR2-1.4B-TinyVAE/README.md CHANGED
@@ -15,12 +15,33 @@ Copy **both** folders into `ComfyUI/custom_nodes/` and restart:
15
  Then put `ema_vae_distill_fp16.safetensors` where the node can find it — next to this folder, or in
16
  `ComfyUI/models/vae/`, or set `SEEDVR2_TINYVAE_PATH=/abs/path/to/it`.
17
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
18
  The node registers nothing and changes no wiring: use the same workflow as before
19
  (`seedvr2_1.4b_tinyvae_upscale_image.json` is the base workflow with updated notes).
20
 
 
 
 
 
21
  ## The weights
22
 
23
- `ema_vae_distill_fp16.safetensors` is a **complete VAE**, not a fragment:
 
24
 
25
  | | tensors | params | size |
26
  |---|---|---|---|
 
15
  Then put `ema_vae_distill_fp16.safetensors` where the node can find it — next to this folder, or in
16
  `ComfyUI/models/vae/`, or set `SEEDVR2_TINYVAE_PATH=/abs/path/to/it`.
17
 
18
+ > ### ⚠️ Do not load this file with a `VAELoader`
19
+ >
20
+ > It is **not** a VAELoader input. Selecting it there fails with:
21
+ >
22
+ > ```
23
+ > RuntimeError: ERROR: VAE is invalid: None
24
+ > ```
25
+ >
26
+ > ComfyUI recognises a SeedVR2 VAE by the presence of one stock decoder key
27
+ > (`decoder.up_blocks.2.upsamplers.0.upscale_conv.weight`, `comfy/sd.py`). The distilled decoder
28
+ > replaces exactly those keys, so detection fails and no VAE object is built.
29
+ >
30
+ > Your `VAELoader` should keep loading the **stock** `ema_vae_fp16.safetensors`. This node patches
31
+ > `VideoAutoencoderKL.decode_` at import time and loads the distilled weights itself — the file only
32
+ > has to be findable on disk, never wired into the graph.
33
+
34
  The node registers nothing and changes no wiring: use the same workflow as before
35
  (`seedvr2_1.4b_tinyvae_upscale_image.json` is the base workflow with updated notes).
36
 
37
+ Confirm it took effect from the console on first run — `SeedVR2 TinyVAE: distilled decoder active`
38
+ followed by the calibration lines. If you see `not found. Searched: ...` instead, the file is not in
39
+ any of the locations above.
40
+
41
  ## The weights
42
 
43
+ `ema_vae_distill_fp16.safetensors` carries a full encoder plus the distilled decoder — but it is a
44
+ **drop-in for the decode path only**, not a substitute for the stock VAE object:
45
 
46
  | | tensors | params | size |
47
  |---|---|---|---|
comfyui/seedvr2_1.4b_tinyvae_upscale_image.json CHANGED
@@ -1,1245 +1,1245 @@
1
  {
2
- "id": "seedvr2-1.4b-tinyvae-upscale",
3
- "revision": 0,
4
- "last_node_id": 75,
5
- "last_link_id": 66,
6
- "nodes": [
7
- {
8
- "id": 1,
9
- "type": "LoadImage",
10
- "pos": [
11
- 180,
12
- -20
13
- ],
14
- "size": [
15
- 360,
16
- 400
17
- ],
18
- "flags": {},
19
- "order": 0,
20
- "mode": 0,
21
- "inputs": [],
22
- "outputs": [
23
  {
24
- "name": "IMAGE",
25
- "type": "IMAGE",
26
- "links": [
27
- 46,
28
- 59
29
- ]
30
- },
31
- {
32
- "name": "MASK",
33
- "type": "MASK",
34
- "links": [
35
- 47
36
- ]
37
- }
38
- ],
39
- "properties": {
40
- "Node name for S&R": "LoadImage",
41
- "cnr_id": "comfy-core",
42
- "ver": "0.27.0"
43
- },
44
- "widgets_values": [
45
- "indoor_portrait.png",
46
- "image"
47
- ]
48
- },
49
- {
50
- "id": 9,
51
- "type": "SaveImage",
52
- "pos": [
53
- 1030,
54
- -20
55
- ],
56
- "size": [
57
- 380,
58
- 430
59
- ],
60
- "flags": {},
61
- "order": 3,
62
- "mode": 0,
63
- "inputs": [
64
- {
65
- "name": "images",
66
- "type": "IMAGE",
67
- "link": 49
68
- }
69
- ],
70
- "outputs": [
71
- {
72
- "name": "images",
73
- "type": "IMAGE",
74
- "links": [
75
- 37
76
- ]
77
- }
78
- ],
79
- "properties": {
80
- "cnr_id": "comfy-core",
81
- "ver": "0.27.0",
82
- "Node name for S&R": "SaveImage"
83
- },
84
- "widgets_values": [
85
- "seedvr2_after/image"
86
- ]
87
- },
88
- {
89
- "id": 65,
90
- "type": "ImageCompare",
91
- "pos": [
92
- 1460,
93
- -20
94
- ],
95
- "size": [
96
- 450,
97
- 430
98
- ],
99
- "flags": {},
100
- "order": 4,
101
- "mode": 0,
102
- "inputs": [
103
- {
104
- "name": "image_a",
105
- "shape": 7,
106
- "type": "IMAGE",
107
- "link": 59
108
- },
109
- {
110
- "name": "image_b",
111
- "shape": 7,
112
- "type": "IMAGE",
113
- "link": 37
114
- }
115
- ],
116
- "outputs": [],
117
- "properties": {
118
- "Node name for S&R": "ImageCompare",
119
- "cnr_id": "comfy-core",
120
- "ver": "0.27.0"
121
- },
122
- "widgets_values": []
123
- },
124
- {
125
- "id": 66,
126
- "type": "1970dcb4-982a-4c01-a373-4d239a3041e4",
127
- "pos": [
128
- 580,
129
- -20
130
- ],
131
- "size": [
132
- 410,
133
- 450
134
- ],
135
- "flags": {},
136
- "order": 2,
137
- "mode": 0,
138
- "inputs": [
139
- {
140
- "name": "image",
141
- "type": "IMAGE",
142
- "link": 46
143
- },
144
- {
145
- "name": "alpha",
146
- "type": "MASK",
147
- "link": 47
148
- },
149
- {
150
- "label": "scale_multiplier",
151
- "name": "resize_type.multiplier",
152
- "type": "FLOAT",
153
- "widget": {
154
- "name": "resize_type.multiplier"
155
- },
156
- "link": null
157
- }
158
- ],
159
- "outputs": [
160
- {
161
- "name": "images",
162
- "type": "IMAGE",
163
- "links": [
164
- 49
165
- ]
166
- }
167
- ],
168
- "properties": {
169
- "proxyWidgets": [
170
- [
171
- "57",
172
- "resize_type.multiplier"
173
- ],
174
- [
175
- "54",
176
- "seed"
177
- ],
178
- [
179
- "54",
180
- "sampler_name"
181
- ],
182
- [
183
- "54",
184
- "scheduler"
185
- ],
186
- [
187
- "54",
188
- "denoise"
189
- ],
190
- [
191
- "52",
192
- "unet_name"
193
- ],
194
- [
195
- "51",
196
- "vae_name"
197
- ],
198
- [
199
- "59",
200
- "color_correction_method"
201
- ]
202
- ],
203
- "cnr_id": "comfy-core",
204
- "ver": "0.27.0"
205
- },
206
- "widgets_values": [],
207
- "title": "Upscale Image (SeedVR2 1.4B + distilled VAE)"
208
- },
209
- {
210
- "id": 72,
211
- "type": "MarkdownNote",
212
- "pos": [
213
- -360,
214
- -20
215
- ],
216
- "size": [
217
- 500,
218
- 760
219
- ],
220
- "flags": {},
221
- "order": 1,
222
- "mode": 0,
223
- "inputs": [],
224
- "outputs": [],
225
- "title": "Note: Model Links",
226
- "properties": {},
227
- "widgets_values": [
228
- "## SeedVR2-1.4B + distilled VAE decoder\n\nSame graph as `seedvr2_1.4b_upscale_image.json`. Two differences: the VAELoader points at the\ndistilled VAE, and a second custom node swaps the decoder implementation at import time.\n\n**Install BOTH custom nodes** into `ComfyUI/custom_nodes/`, then restart:\n- `ComfyUI-SeedVR2-1.4B` \u2014 6-block detection + single-frame VAE fast path. **Still required**: the\n ENCODER is untouched and is still a 3-D causal-conv stack.\n- `ComfyUI-SeedVR2-1.4B-TinyVAE` \u2014 replaces the 150.6M-param decoder with a 1.35M-param one.\n\n### Files\n- `comfyui/seedvr2_distill_6L_1.4B_sharp_fp16_comfyui.safetensors` -> `models/diffusion_models/`\n- `comfyui/ema_vae_distill_fp16.safetensors` -> `models/vae/` \u2014 **keep this exact filename**, the\n VAELoader in this workflow asks for it by name. No renaming needed.\n A COMPLETE VAE: original encoder bit-identical + distilled decoder. 202.8 MB vs 501.3 MB.\n\n### FIRST RUN \u2014 check the calibration line\nThe node measures the latent convention on its first tile instead of assuming it. In the log:\n\n SeedVR2 TinyVAE: patched VideoAutoencoderKL.decode_\n SeedVR2 TinyVAE calibrate: pre-scaled by ComfyUI -> 34.92 dB\n SeedVR2 TinyVAE calibrate: raw latent -> 33.25 dB\n SeedVR2 TinyVAE: calibrated \u2014 pre-scaled by ComfyUI, 34.92 dB vs the stock decoder.\n\nThat is the confirmation it is working. If neither option clears 28 dB the node disables itself and\nyou get the stock decoder plus a warning \u2014 never a fast-but-wrong image. If you see no TinyVAE lines\nat all, the node did not load and you are on the stock decoder.\n\n### What it buys (M2 Ultra, 6L transformer fixed)\n| job | VAE decode | whole run | peak RAM |\n|---|---|---|---|\n| 512 -> 2048 | 4.12s -> 0.34s (12.1x) | 17.6 -> 13.9s | 7.49 -> 4.74 GB |\n| 512 -> 4096 | 15.55s -> 1.10s (14.2x) | 52.0 -> 37.9s | 7.70 -> 4.95 GB |\n| 2048 -> 8192 | 68.35s -> 5.00s (13.7x) | 203.7 -> 140.3s | 7.76 -> 5.02 GB |\n\n### What it costs\nA mild low-pass: ~84-97% of mid-band energy, ~61-68% of fine, ~21-26% of the top edge band.\nSome material shows it, some does not \u2014 check your own images at 1:1.\n`SEEDVR2_TINYVAE_OFF=1` gives a clean A/B against the stock decoder with everything else identical.\n\n### Notes (unchanged from the base workflow)\n- Upscale factor = `scale_multiplier`. 4x recommended.\n- One-step by design: steps 1, cfg 1, euler, simple, denoise 1.\n- **Do NOT raise the VAE `tile_size` above 512** \u2014 attention is quadratic in tile tokens.\n"
229
- ],
230
- "color": "#222",
231
- "bgcolor": "#000"
232
- }
233
- ],
234
- "links": [
235
- [
236
- 37,
237
- 9,
238
- 0,
239
- 65,
240
- 1,
241
- "IMAGE"
242
- ],
243
- [
244
- 46,
245
- 1,
246
- 0,
247
- 66,
248
- 0,
249
- "IMAGE"
250
- ],
251
- [
252
- 47,
253
- 1,
254
- 1,
255
- 66,
256
- 1,
257
- "MASK"
258
- ],
259
- [
260
- 49,
261
- 66,
262
- 0,
263
- 9,
264
- 0,
265
- "IMAGE"
266
- ],
267
- [
268
- 59,
269
- 1,
270
- 0,
271
- 65,
272
- 0,
273
- "IMAGE"
274
- ]
275
- ],
276
- "groups": [],
277
- "definitions": {
278
- "subgraphs": [
279
- {
280
- "id": "1970dcb4-982a-4c01-a373-4d239a3041e4",
281
- "version": 1,
282
- "state": {
283
- "lastGroupId": 1,
284
- "lastNodeId": 75,
285
- "lastLinkId": 66,
286
- "lastRerouteId": 0
287
- },
288
- "revision": 0,
289
- "config": {},
290
- "name": "Upscale Image (SeedVR2 1.4B + distilled VAE)",
291
- "inputNode": {
292
- "id": -10,
293
- "bounding": [
294
- 470,
295
- 59.901214308973096,
296
- 189.134765625,
297
- 247.99999999999997
298
- ]
299
- },
300
- "outputNode": {
301
- "id": -20,
302
- "bounding": [
303
- 2480,
304
- 201,
305
- 128,
306
- 68
307
- ]
308
- },
309
- "inputs": [
310
- {
311
- "id": "e981cdcd-e740-4932-91e0-06392d5ac526",
312
- "name": "image",
313
- "type": "IMAGE",
314
- "linkIds": [
315
- 41
316
- ],
317
- "localized_name": "image",
318
- "pos": [
319
- 635.134765625,
320
- 83.9012143089731
321
- ]
322
- },
323
- {
324
- "id": "bd600399-ea77-48ba-91f6-cf83c95051c8",
325
- "name": "alpha",
326
- "type": "MASK",
327
- "linkIds": [
328
- 40
329
- ],
330
- "localized_name": "alpha",
331
- "pos": [
332
- 635.134765625,
333
- 103.9012143089731
334
- ]
335
- },
336
- {
337
- "id": "df3b8dbd-5649-4dbd-8551-c5cb254eafc5",
338
- "name": "resize_type.multiplier",
339
- "type": "FLOAT",
340
- "linkIds": [
341
- 50
342
- ],
343
- "label": "scale_multiplier",
344
- "pos": [
345
- 635.134765625,
346
- 123.9012143089731
347
- ]
348
- },
349
- {
350
- "id": "9bf1e154-0009-45fb-a43c-ae3fc9361b37",
351
- "name": "seed",
352
- "type": "INT",
353
- "linkIds": [
354
- 51
355
- ],
356
- "pos": [
357
- 635.134765625,
358
- 143.9012143089731
359
- ]
360
- },
361
- {
362
- "id": "408ed65b-0681-4ffc-93dd-cab04ffabe06",
363
- "name": "sampler_name",
364
- "type": "COMBO",
365
- "linkIds": [
366
- 54
367
- ],
368
- "pos": [
369
- 635.134765625,
370
- 163.9012143089731
371
- ]
372
- },
373
- {
374
- "id": "dbd3e56e-9696-41fa-8549-9f65dcf34b8e",
375
- "name": "scheduler",
376
- "type": "COMBO",
377
- "linkIds": [
378
- 55
379
- ],
380
- "pos": [
381
- 635.134765625,
382
- 183.9012143089731
383
- ]
384
- },
385
- {
386
- "id": "fe2df403-641b-4d01-87a7-0f730febd917",
387
- "name": "denoise",
388
- "type": "FLOAT",
389
- "linkIds": [
390
- 56
391
- ],
392
- "pos": [
393
- 635.134765625,
394
- 203.9012143089731
395
- ]
396
- },
397
- {
398
- "id": "7739a0b8-6e3a-4788-a671-dadd904c2d87",
399
- "name": "unet_name",
400
- "type": "COMBO",
401
- "linkIds": [
402
- 57
403
- ],
404
- "pos": [
405
- 635.134765625,
406
- 223.9012143089731
407
- ]
408
- },
409
- {
410
- "id": "2de2f222-32fd-402f-98da-73cf111b2f37",
411
- "name": "vae_name",
412
- "type": "COMBO",
413
- "linkIds": [
414
- 58
415
- ],
416
- "pos": [
417
- 635.134765625,
418
- 243.9012143089731
419
- ]
420
- },
421
- {
422
- "id": "6b8a6fef-e542-4fb4-9a4e-a3c0d46cd6b7",
423
- "name": "color_correction_method",
424
- "type": "COMBO",
425
- "linkIds": [
426
- 64
427
- ],
428
- "pos": [
429
- 635.134765625,
430
- 263.90121430897307
431
- ]
432
- }
433
- ],
434
- "outputs": [
435
- {
436
- "id": "517ebe35-9129-4f66-a88e-2fdca4c417cf",
437
- "name": "images",
438
- "type": "IMAGE",
439
- "linkIds": [
440
- 15
441
- ],
442
- "localized_name": "images",
443
- "pos": [
444
- 2504,
445
- 225
446
- ]
447
- }
448
- ],
449
- "widgets": [],
450
- "nodes": [
451
- {
452
- "id": 48,
453
- "type": "VAEEncodeTiled",
454
  "pos": [
455
- 1360,
456
- 110
457
  ],
458
  "size": [
459
- 270,
460
- 230
461
  ],
462
  "flags": {},
463
  "order": 0,
464
  "mode": 0,
465
- "showAdvanced": true,
466
- "inputs": [
467
- {
468
- "localized_name": "pixels",
469
- "name": "pixels",
470
- "type": "IMAGE",
471
- "link": 16
472
- },
473
- {
474
- "localized_name": "vae",
475
- "name": "vae",
476
- "type": "VAE",
477
- "link": 17
478
- }
479
- ],
480
  "outputs": [
481
- {
482
- "localized_name": "LATENT",
483
- "name": "LATENT",
484
- "type": "LATENT",
485
- "links": [
486
- 28,
487
- 36
488
- ]
489
- }
490
- ],
491
- "properties": {
492
- "Node name for S&R": "VAEEncodeTiled",
493
- "cnr_id": "comfy-core",
494
- "ver": "0.27.0"
495
- },
496
- "widgets_values": [
497
- 512,
498
- 128,
499
- 4096,
500
- 8
501
- ]
502
- },
503
- {
504
- "id": 50,
505
- "type": "JoinImageWithAlpha",
506
- "pos": [
507
- 930,
508
- 240
509
- ],
510
- "size": [
511
- 280,
512
- 80
513
- ],
514
- "flags": {},
515
- "order": 1,
516
- "mode": 0,
517
- "inputs": [
518
- {
519
- "localized_name": "image",
520
- "name": "image",
521
- "type": "IMAGE",
522
- "link": 41
523
- },
524
- {
525
- "localized_name": "alpha",
526
- "name": "alpha",
527
- "type": "MASK",
528
- "link": 40
529
- }
530
- ],
531
- "outputs": [
532
- {
533
- "localized_name": "IMAGE",
534
- "name": "IMAGE",
535
- "type": "IMAGE",
536
- "links": [
537
- 45
538
- ]
539
- }
540
- ],
541
- "properties": {
542
- "Node name for S&R": "JoinImageWithAlpha",
543
- "cnr_id": "comfy-core",
544
- "ver": "0.27.0"
545
- },
546
- "widgets_values": []
547
- },
548
- {
549
- "id": 51,
550
- "type": "VAELoader",
551
- "pos": [
552
- 940,
553
- 100
554
- ],
555
- "size": [
556
- 270,
557
- 80
558
- ],
559
- "flags": {},
560
- "order": 2,
561
- "mode": 0,
562
- "inputs": [
563
- {
564
- "localized_name": "vae_name",
565
- "name": "vae_name",
566
- "type": "COMBO",
567
- "widget": {
568
- "name": "vae_name"
569
- },
570
- "link": 58
571
- }
572
- ],
573
- "outputs": [
574
- {
575
- "localized_name": "VAE",
576
- "name": "VAE",
577
- "type": "VAE",
578
- "links": [
579
- 17,
580
- 22
581
- ]
582
- }
583
- ],
584
- "properties": {
585
- "Node name for S&R": "VAELoader",
586
- "cnr_id": "comfy-core",
587
- "ver": "0.27.0",
588
- "models": [
589
  {
590
- "name": "ema_vae_distill_fp16.safetensors",
591
- "url": "https://huggingface.co/lvladikov/SeedVR2-1.4B/resolve/main/comfyui/ema_vae_distill_fp16.safetensors",
592
- "directory": "vae"
593
- }
594
- ]
595
- },
596
- "widgets_values": [
597
- "ema_vae_distill_fp16.safetensors"
598
- ]
599
- },
600
- {
601
- "id": 52,
602
- "type": "UNETLoader",
603
- "pos": [
604
- 940,
605
- -70
606
- ],
607
- "size": [
608
- 270,
609
- 110
610
- ],
611
- "flags": {},
612
- "order": 3,
613
- "mode": 0,
614
- "showAdvanced": false,
615
- "inputs": [
616
- {
617
- "localized_name": "unet_name",
618
- "name": "unet_name",
619
- "type": "COMBO",
620
- "widget": {
621
- "name": "unet_name"
622
  },
623
- "link": 57
624
- }
625
- ],
626
- "outputs": [
627
- {
628
- "localized_name": "MODEL",
629
- "name": "MODEL",
630
- "type": "MODEL",
631
- "links": [
632
- 27,
633
- 31
634
- ]
635
- }
636
- ],
637
- "properties": {
638
- "Node name for S&R": "UNETLoader",
639
- "cnr_id": "comfy-core",
640
- "ver": "0.27.0",
641
- "models": [
642
  {
643
- "name": "seedvr2_distill_6L_1.4B_sharp_fp16_comfyui.safetensors",
644
- "url": "https://huggingface.co/lvladikov/SeedVR2-1.4B/resolve/main/comfyui/seedvr2_distill_6L_1.4B_sharp_fp16_comfyui.safetensors",
645
- "directory": "diffusion_models"
 
 
646
  }
647
- ]
648
- },
649
- "widgets_values": [
650
- "seedvr2_distill_6L_1.4B_sharp_fp16_comfyui.safetensors",
651
- "default"
652
- ]
653
- },
654
- {
655
- "id": 54,
656
- "type": "KSampler",
657
- "pos": [
658
- 1740,
659
- -40
660
- ],
661
- "size": [
662
- 270,
663
- 320
664
- ],
665
- "flags": {},
666
- "order": 4,
667
- "mode": 0,
668
- "inputs": [
669
- {
670
- "localized_name": "model",
671
- "name": "model",
672
- "type": "MODEL",
673
- "link": 31
674
- },
675
- {
676
- "localized_name": "positive",
677
- "name": "positive",
678
- "type": "CONDITIONING",
679
- "link": 29
680
- },
681
- {
682
- "localized_name": "negative",
683
- "name": "negative",
684
- "type": "CONDITIONING",
685
- "link": 30
686
- },
687
- {
688
- "localized_name": "latent_image",
689
- "name": "latent_image",
690
- "type": "LATENT",
691
- "link": 36
692
- },
693
- {
694
- "localized_name": "seed",
695
- "name": "seed",
696
- "type": "INT",
697
- "widget": {
698
- "name": "seed"
699
- },
700
- "link": 51
701
- },
702
- {
703
- "localized_name": "sampler_name",
704
- "name": "sampler_name",
705
- "type": "COMBO",
706
- "widget": {
707
- "name": "sampler_name"
708
- },
709
- "link": 54
710
- },
711
- {
712
- "localized_name": "scheduler",
713
- "name": "scheduler",
714
- "type": "COMBO",
715
- "widget": {
716
- "name": "scheduler"
717
- },
718
- "link": 55
719
- },
720
- {
721
- "localized_name": "denoise",
722
- "name": "denoise",
723
- "type": "FLOAT",
724
- "widget": {
725
- "name": "denoise"
726
- },
727
- "link": 56
728
- }
729
- ],
730
- "outputs": [
731
- {
732
- "localized_name": "LATENT",
733
- "name": "LATENT",
734
- "type": "LATENT",
735
- "links": [
736
- 21
737
- ]
738
- }
739
  ],
740
  "properties": {
741
- "Node name for S&R": "KSampler",
742
- "cnr_id": "comfy-core",
743
- "ver": "0.27.0"
744
  },
745
  "widgets_values": [
746
- 959948902156062,
747
- "fixed",
748
- 1,
749
- 1,
750
- "euler",
751
- "simple",
752
- 1
753
  ]
754
- },
755
- {
756
- "id": 55,
757
- "type": "VAEDecodeTiled",
758
  "pos": [
759
- 2110,
760
- -40
761
  ],
762
  "size": [
763
- 270,
764
- 230
765
  ],
766
  "flags": {},
767
- "order": 5,
768
  "mode": 0,
769
- "showAdvanced": true,
770
  "inputs": [
771
- {
772
- "localized_name": "samples",
773
- "name": "samples",
774
- "type": "LATENT",
775
- "link": 21
776
- },
777
- {
778
- "localized_name": "vae",
779
- "name": "vae",
780
- "type": "VAE",
781
- "link": 22
782
- }
783
  ],
784
  "outputs": [
785
- {
786
- "localized_name": "IMAGE",
787
- "name": "IMAGE",
788
- "type": "IMAGE",
789
- "links": [
790
- 25
791
- ]
792
- }
793
  ],
794
  "properties": {
795
- "Node name for S&R": "VAEDecodeTiled",
796
- "cnr_id": "comfy-core",
797
- "ver": "0.27.0"
798
  },
799
  "widgets_values": [
800
- 512,
801
- 128,
802
- 4096,
803
- 8
804
  ]
805
- },
806
- {
807
- "id": 57,
808
- "type": "ResizeImageMaskNode",
809
  "pos": [
810
- 930,
811
- 370
812
  ],
813
  "size": [
814
- 270,
815
- 110
816
  ],
817
  "flags": {},
818
- "order": 6,
819
  "mode": 0,
820
  "inputs": [
821
- {
822
- "localized_name": "input",
823
- "name": "input",
824
- "type": "IMAGE,MASK",
825
- "link": 45
826
- },
827
- {
828
- "localized_name": "resize_type.multiplier",
829
- "name": "resize_type.multiplier",
830
- "type": "FLOAT",
831
- "widget": {
832
- "name": "resize_type.multiplier"
833
  },
834
- "link": 50
835
- }
836
- ],
837
- "outputs": [
838
- {
839
- "localized_name": "resized",
840
- "name": "resized",
841
- "type": "IMAGE",
842
- "links": [
843
- 24,
844
- 26
845
- ]
846
- }
847
- ],
848
- "properties": {
849
- "Node name for S&R": "ResizeImageMaskNode",
850
- "cnr_id": "comfy-core",
851
- "ver": "0.27.0"
852
- },
853
- "widgets_values": [
854
- "scale by multiplier",
855
- 4,
856
- "lanczos"
857
- ]
858
- },
859
- {
860
- "id": 58,
861
- "type": "SeedVR2Preprocess",
862
- "pos": [
863
- 930,
864
- 570
865
- ],
866
- "size": [
867
- 270,
868
- 60
869
- ],
870
- "flags": {},
871
- "order": 7,
872
- "mode": 0,
873
- "inputs": [
874
- {
875
- "localized_name": "resized_images",
876
- "name": "resized_images",
877
- "type": "IMAGE",
878
- "link": 24
879
- }
880
- ],
881
- "outputs": [
882
- {
883
- "localized_name": "images",
884
- "name": "images",
885
- "type": "IMAGE",
886
- "links": [
887
- 16
888
- ]
889
- }
890
  ],
 
891
  "properties": {
892
- "Node name for S&R": "SeedVR2Preprocess",
893
- "cnr_id": "comfy-core",
894
- "ver": "0.27.0"
895
  },
896
  "widgets_values": []
897
- },
898
- {
899
- "id": 59,
900
- "type": "SeedVR2PostProcessing",
901
  "pos": [
902
- 2110,
903
- 350
904
  ],
905
  "size": [
906
- 310,
907
- 110
908
  ],
909
  "flags": {},
910
- "order": 8,
911
  "mode": 0,
912
  "inputs": [
913
- {
914
- "localized_name": "images",
915
- "name": "images",
916
- "type": "IMAGE",
917
- "link": 25
918
- },
919
- {
920
- "localized_name": "original_resized_images",
921
- "name": "original_resized_images",
922
- "type": "IMAGE",
923
- "link": 26
924
- },
925
- {
926
- "localized_name": "color_correction_method",
927
- "name": "color_correction_method",
928
- "type": "COMBO",
929
- "widget": {
930
- "name": "color_correction_method"
931
  },
932
- "link": 64
933
- }
 
 
 
 
 
 
 
 
 
 
 
 
934
  ],
935
  "outputs": [
936
- {
937
- "localized_name": "images",
938
- "name": "images",
939
- "type": "IMAGE",
940
- "links": [
941
- 15
942
- ]
943
- }
944
  ],
945
  "properties": {
946
- "Node name for S&R": "SeedVR2PostProcessing",
947
- "cnr_id": "comfy-core",
948
- "ver": "0.27.0"
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
949
  },
950
- "widgets_values": [
951
- "none"
952
- ]
953
- },
954
- {
955
- "id": 61,
956
- "type": "SeedVR2Conditioning",
957
  "pos": [
958
- 1330,
959
- -40
960
  ],
961
  "size": [
962
- 270,
963
- 80
964
  ],
965
  "flags": {},
966
- "order": 9,
967
  "mode": 0,
968
- "inputs": [
969
- {
970
- "localized_name": "model",
971
- "name": "model",
972
- "type": "MODEL",
973
- "link": 27
974
- },
975
- {
976
- "label": "latent",
977
- "localized_name": "vae_conditioning",
978
- "name": "vae_conditioning",
979
- "type": "LATENT",
980
- "link": 28
981
- }
982
- ],
983
- "outputs": [
984
- {
985
- "localized_name": "positive",
986
- "name": "positive",
987
- "type": "CONDITIONING",
988
- "links": [
989
- 29
990
- ]
991
- },
992
- {
993
- "localized_name": "negative",
994
- "name": "negative",
995
- "type": "CONDITIONING",
996
- "links": [
997
- 30
998
- ]
999
- }
1000
  ],
1001
- "properties": {
1002
- "Node name for S&R": "SeedVR2Conditioning",
1003
- "cnr_id": "comfy-core",
1004
- "ver": "0.27.0"
1005
- },
1006
- "widgets_values": []
1007
- }
 
 
 
 
 
1008
  ],
1009
- "groups": [
1010
- {
1011
- "id": 1,
1012
- "title": "Models",
1013
- "bounding": [
1014
- 930,
1015
- -140,
1016
- 290,
1017
- 330.15625
1018
- ],
1019
- "color": "#3f789e",
1020
- "flags": {}
1021
- }
1022
  ],
1023
- "links": [
1024
- {
1025
- "id": 16,
1026
- "origin_id": 58,
1027
- "origin_slot": 0,
1028
- "target_id": 48,
1029
- "target_slot": 0,
1030
- "type": "IMAGE"
1031
- },
1032
- {
1033
- "id": 17,
1034
- "origin_id": 51,
1035
- "origin_slot": 0,
1036
- "target_id": 48,
1037
- "target_slot": 1,
1038
- "type": "VAE"
1039
- },
1040
- {
1041
- "id": 31,
1042
- "origin_id": 52,
1043
- "origin_slot": 0,
1044
- "target_id": 54,
1045
- "target_slot": 0,
1046
- "type": "MODEL"
1047
- },
1048
- {
1049
- "id": 29,
1050
- "origin_id": 61,
1051
- "origin_slot": 0,
1052
- "target_id": 54,
1053
- "target_slot": 1,
1054
- "type": "CONDITIONING"
1055
- },
1056
- {
1057
- "id": 30,
1058
- "origin_id": 61,
1059
- "origin_slot": 1,
1060
- "target_id": 54,
1061
- "target_slot": 2,
1062
- "type": "CONDITIONING"
1063
- },
1064
- {
1065
- "id": 36,
1066
- "origin_id": 48,
1067
- "origin_slot": 0,
1068
- "target_id": 54,
1069
- "target_slot": 3,
1070
- "type": "LATENT"
1071
- },
1072
- {
1073
- "id": 21,
1074
- "origin_id": 54,
1075
- "origin_slot": 0,
1076
- "target_id": 55,
1077
- "target_slot": 0,
1078
- "type": "LATENT"
1079
- },
1080
- {
1081
- "id": 22,
1082
- "origin_id": 51,
1083
- "origin_slot": 0,
1084
- "target_id": 55,
1085
- "target_slot": 1,
1086
- "type": "VAE"
1087
- },
1088
- {
1089
- "id": 45,
1090
- "origin_id": 50,
1091
- "origin_slot": 0,
1092
- "target_id": 57,
1093
- "target_slot": 0,
1094
- "type": "IMAGE"
1095
- },
1096
- {
1097
- "id": 24,
1098
- "origin_id": 57,
1099
- "origin_slot": 0,
1100
- "target_id": 58,
1101
- "target_slot": 0,
1102
- "type": "IMAGE"
1103
- },
1104
- {
1105
- "id": 25,
1106
- "origin_id": 55,
1107
- "origin_slot": 0,
1108
- "target_id": 59,
1109
- "target_slot": 0,
1110
- "type": "IMAGE"
1111
- },
1112
- {
1113
- "id": 26,
1114
- "origin_id": 57,
1115
- "origin_slot": 0,
1116
- "target_id": 59,
1117
- "target_slot": 1,
1118
- "type": "IMAGE"
1119
- },
1120
- {
1121
- "id": 27,
1122
- "origin_id": 52,
1123
- "origin_slot": 0,
1124
- "target_id": 61,
1125
- "target_slot": 0,
1126
- "type": "MODEL"
1127
- },
1128
- {
1129
- "id": 28,
1130
- "origin_id": 48,
1131
- "origin_slot": 0,
1132
- "target_id": 61,
1133
- "target_slot": 1,
1134
- "type": "LATENT"
1135
- },
1136
- {
1137
- "id": 41,
1138
- "origin_id": -10,
1139
- "origin_slot": 0,
1140
- "target_id": 50,
1141
- "target_slot": 0,
1142
- "type": "IMAGE"
1143
- },
1144
- {
1145
- "id": 40,
1146
- "origin_id": -10,
1147
- "origin_slot": 1,
1148
- "target_id": 50,
1149
- "target_slot": 1,
1150
- "type": "MASK"
1151
- },
1152
- {
1153
- "id": 15,
1154
- "origin_id": 59,
1155
- "origin_slot": 0,
1156
- "target_id": -20,
1157
- "target_slot": 0,
1158
- "type": "IMAGE"
1159
- },
1160
- {
1161
- "id": 50,
1162
- "origin_id": -10,
1163
- "origin_slot": 2,
1164
- "target_id": 57,
1165
- "target_slot": 1,
1166
- "type": "FLOAT"
1167
- },
1168
- {
1169
- "id": 51,
1170
- "origin_id": -10,
1171
- "origin_slot": 3,
1172
- "target_id": 54,
1173
- "target_slot": 4,
1174
- "type": "INT"
1175
- },
1176
- {
1177
- "id": 54,
1178
- "origin_id": -10,
1179
- "origin_slot": 4,
1180
- "target_id": 54,
1181
- "target_slot": 5,
1182
- "type": "COMBO"
1183
- },
1184
- {
1185
- "id": 55,
1186
- "origin_id": -10,
1187
- "origin_slot": 5,
1188
- "target_id": 54,
1189
- "target_slot": 6,
1190
- "type": "COMBO"
1191
- },
1192
- {
1193
- "id": 56,
1194
- "origin_id": -10,
1195
- "origin_slot": 6,
1196
- "target_id": 54,
1197
- "target_slot": 7,
1198
- "type": "FLOAT"
1199
- },
1200
- {
1201
- "id": 57,
1202
- "origin_id": -10,
1203
- "origin_slot": 7,
1204
- "target_id": 52,
1205
- "target_slot": 0,
1206
- "type": "COMBO"
1207
- },
1208
- {
1209
- "id": 58,
1210
- "origin_id": -10,
1211
- "origin_slot": 8,
1212
- "target_id": 51,
1213
- "target_slot": 0,
1214
- "type": "COMBO"
1215
- },
1216
- {
1217
- "id": 64,
1218
- "origin_id": -10,
1219
- "origin_slot": 9,
1220
- "target_id": 59,
1221
- "target_slot": 2,
1222
- "type": "COMBO"
1223
- }
1224
  ],
1225
- "extra": {}
1226
- }
1227
- ]
1228
- },
1229
- "config": {},
1230
- "extra": {
1231
- "ds": {
1232
- "scale": 0.8369606986899568,
1233
- "offset": [
1234
- 729.0799452315996,
1235
- 332.21687102746415
1236
- ]
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1237
  },
1238
- "frontendVersion": "1.45.15",
1239
- "VHS_latentpreview": false,
1240
- "VHS_latentpreviewrate": 0,
1241
- "VHS_MetadataImage": true,
1242
- "VHS_KeepIntermediate": true
1243
- },
1244
- "version": 0.4
1245
  }
 
1
  {
2
+ "id": "seedvr2-1.4b-tinyvae-upscale",
3
+ "revision": 0,
4
+ "last_node_id": 75,
5
+ "last_link_id": 66,
6
+ "nodes": [
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
7
  {
8
+ "id": 1,
9
+ "type": "LoadImage",
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
10
  "pos": [
11
+ 180,
12
+ -20
13
  ],
14
  "size": [
15
+ 360,
16
+ 400
17
  ],
18
  "flags": {},
19
  "order": 0,
20
  "mode": 0,
21
+ "inputs": [],
 
 
 
 
 
 
 
 
 
 
 
 
 
 
22
  "outputs": [
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
23
  {
24
+ "name": "IMAGE",
25
+ "type": "IMAGE",
26
+ "links": [
27
+ 46,
28
+ 59
29
+ ]
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
30
  },
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
31
  {
32
+ "name": "MASK",
33
+ "type": "MASK",
34
+ "links": [
35
+ 47
36
+ ]
37
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
38
  ],
39
  "properties": {
40
+ "Node name for S&R": "LoadImage",
41
+ "cnr_id": "comfy-core",
42
+ "ver": "0.27.0"
43
  },
44
  "widgets_values": [
45
+ "indoor_portrait.png",
46
+ "image"
 
 
 
 
 
47
  ]
48
+ },
49
+ {
50
+ "id": 9,
51
+ "type": "SaveImage",
52
  "pos": [
53
+ 1030,
54
+ -20
55
  ],
56
  "size": [
57
+ 380,
58
+ 430
59
  ],
60
  "flags": {},
61
+ "order": 3,
62
  "mode": 0,
 
63
  "inputs": [
64
+ {
65
+ "name": "images",
66
+ "type": "IMAGE",
67
+ "link": 49
68
+ }
 
 
 
 
 
 
 
69
  ],
70
  "outputs": [
71
+ {
72
+ "name": "images",
73
+ "type": "IMAGE",
74
+ "links": [
75
+ 37
76
+ ]
77
+ }
 
78
  ],
79
  "properties": {
80
+ "cnr_id": "comfy-core",
81
+ "ver": "0.27.0",
82
+ "Node name for S&R": "SaveImage"
83
  },
84
  "widgets_values": [
85
+ "seedvr2_after/image"
 
 
 
86
  ]
87
+ },
88
+ {
89
+ "id": 65,
90
+ "type": "ImageCompare",
91
  "pos": [
92
+ 1460,
93
+ -20
94
  ],
95
  "size": [
96
+ 450,
97
+ 430
98
  ],
99
  "flags": {},
100
+ "order": 4,
101
  "mode": 0,
102
  "inputs": [
103
+ {
104
+ "name": "image_a",
105
+ "shape": 7,
106
+ "type": "IMAGE",
107
+ "link": 59
 
 
 
 
 
 
 
108
  },
109
+ {
110
+ "name": "image_b",
111
+ "shape": 7,
112
+ "type": "IMAGE",
113
+ "link": 37
114
+ }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
115
  ],
116
+ "outputs": [],
117
  "properties": {
118
+ "Node name for S&R": "ImageCompare",
119
+ "cnr_id": "comfy-core",
120
+ "ver": "0.27.0"
121
  },
122
  "widgets_values": []
123
+ },
124
+ {
125
+ "id": 66,
126
+ "type": "1970dcb4-982a-4c01-a373-4d239a3041e4",
127
  "pos": [
128
+ 580,
129
+ -20
130
  ],
131
  "size": [
132
+ 410,
133
+ 450
134
  ],
135
  "flags": {},
136
+ "order": 2,
137
  "mode": 0,
138
  "inputs": [
139
+ {
140
+ "name": "image",
141
+ "type": "IMAGE",
142
+ "link": 46
 
 
 
 
 
 
 
 
 
 
 
 
 
 
143
  },
144
+ {
145
+ "name": "alpha",
146
+ "type": "MASK",
147
+ "link": 47
148
+ },
149
+ {
150
+ "label": "scale_multiplier",
151
+ "name": "resize_type.multiplier",
152
+ "type": "FLOAT",
153
+ "widget": {
154
+ "name": "resize_type.multiplier"
155
+ },
156
+ "link": null
157
+ }
158
  ],
159
  "outputs": [
160
+ {
161
+ "name": "images",
162
+ "type": "IMAGE",
163
+ "links": [
164
+ 49
165
+ ]
166
+ }
 
167
  ],
168
  "properties": {
169
+ "proxyWidgets": [
170
+ [
171
+ "57",
172
+ "resize_type.multiplier"
173
+ ],
174
+ [
175
+ "54",
176
+ "seed"
177
+ ],
178
+ [
179
+ "54",
180
+ "sampler_name"
181
+ ],
182
+ [
183
+ "54",
184
+ "scheduler"
185
+ ],
186
+ [
187
+ "54",
188
+ "denoise"
189
+ ],
190
+ [
191
+ "52",
192
+ "unet_name"
193
+ ],
194
+ [
195
+ "51",
196
+ "vae_name"
197
+ ],
198
+ [
199
+ "59",
200
+ "color_correction_method"
201
+ ]
202
+ ],
203
+ "cnr_id": "comfy-core",
204
+ "ver": "0.27.0"
205
  },
206
+ "widgets_values": [],
207
+ "title": "Upscale Image (SeedVR2 1.4B + distilled VAE)"
208
+ },
209
+ {
210
+ "id": 72,
211
+ "type": "MarkdownNote",
 
212
  "pos": [
213
+ -360,
214
+ -20
215
  ],
216
  "size": [
217
+ 500,
218
+ 760
219
  ],
220
  "flags": {},
221
+ "order": 1,
222
  "mode": 0,
223
+ "inputs": [],
224
+ "outputs": [],
225
+ "title": "Note: Model Links",
226
+ "properties": {},
227
+ "widgets_values": [
228
+ "## SeedVR2-1.4B + distilled VAE decoder\n\nSame graph as `seedvr2_1.4b_upscale_image.json`. One difference: a second custom node swaps the\ndecoder implementation at import time. The VAELoader still loads the STOCK VAE.\n\n**Install BOTH custom nodes** into `ComfyUI/custom_nodes/`, then restart:\n- `ComfyUI-SeedVR2-1.4B` — 6-block detection + single-frame VAE fast path. **Still required**: the\n ENCODER is untouched and is still a 3-D causal-conv stack.\n- `ComfyUI-SeedVR2-1.4B-TinyVAE` — replaces the 150.6M-param decoder with a 1.35M-param one.\n\n### Files\n- `comfyui/seedvr2_distill_6L_1.4B_sharp_fp16_comfyui.safetensors` -> `models/diffusion_models/`\n- `ema_vae_fp16.safetensors` -> `models/vae/seedvr2_ema_vae_fp16.safetensors` — the **stock** SeedVR2 VAE (rename on copy). This is what the\n VAELoader in this workflow loads. ComfyUI identifies a SeedVR2 VAE by a stock decoder key,\n so only this file is selectable there.\n- `comfyui/ema_vae_distill_fp16.safetensors` -> `models/vae/` (or beside the custom-node folder,\n or `SEEDVR2_TINYVAE_PATH`). **Do NOT select this one in the VAELoader** — it will fail with\n `VAE is invalid: None`, because the distilled decoder replaces the very keys ComfyUI uses to\n recognise a SeedVR2 VAE. It is never loaded as a VAE: the TinyVAE node finds it on disk and\n patches the decoder at import time. 202.8 MB, encoder bit-identical + distilled decoder.\n\n### FIRST RUN — check the calibration line\nThe node measures the latent convention on its first tile instead of assuming it. In the log:\n\n SeedVR2 TinyVAE: patched VideoAutoencoderKL.decode_\n SeedVR2 TinyVAE calibrate: pre-scaled by ComfyUI -> 34.92 dB\n SeedVR2 TinyVAE calibrate: raw latent -> 33.25 dB\n SeedVR2 TinyVAE: calibrated — pre-scaled by ComfyUI, 34.92 dB vs the stock decoder.\n\nThat is the confirmation it is working. If neither option clears 28 dB the node disables itself and\nyou get the stock decoder plus a warning — never a fast-but-wrong image. If you see no TinyVAE lines\nat all, the node did not load and you are on the stock decoder.\n\n### What it buys (M2 Ultra, 6L transformer fixed)\n| job | VAE decode | whole run | peak RAM |\n|---|---|---|---|\n| 512 -> 2048 | 4.12s -> 0.34s (12.1x) | 17.6 -> 13.9s | 7.49 -> 4.74 GB |\n| 512 -> 4096 | 15.55s -> 1.10s (14.2x) | 52.0 -> 37.9s | 7.70 -> 4.95 GB |\n| 2048 -> 8192 | 68.35s -> 5.00s (13.7x) | 203.7 -> 140.3s | 7.76 -> 5.02 GB |\n\n### What it costs\nA mild low-pass: ~84-97% of mid-band energy, ~61-68% of fine, ~21-26% of the top edge band.\nSome material shows it, some does not — check your own images at 1:1.\n`SEEDVR2_TINYVAE_OFF=1` gives a clean A/B against the stock decoder with everything else identical.\n\n### Notes (unchanged from the base workflow)\n- Upscale factor = `scale_multiplier`. 4x recommended.\n- One-step by design: steps 1, cfg 1, euler, simple, denoise 1.\n- **Do NOT raise the VAE `tile_size` above 512** — attention is quadratic in tile tokens.\n"
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
229
  ],
230
+ "color": "#222",
231
+ "bgcolor": "#000"
232
+ }
233
+ ],
234
+ "links": [
235
+ [
236
+ 37,
237
+ 9,
238
+ 0,
239
+ 65,
240
+ 1,
241
+ "IMAGE"
242
  ],
243
+ [
244
+ 46,
245
+ 1,
246
+ 0,
247
+ 66,
248
+ 0,
249
+ "IMAGE"
 
 
 
 
 
 
250
  ],
251
+ [
252
+ 47,
253
+ 1,
254
+ 1,
255
+ 66,
256
+ 1,
257
+ "MASK"
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
258
  ],
259
+ [
260
+ 49,
261
+ 66,
262
+ 0,
263
+ 9,
264
+ 0,
265
+ "IMAGE"
266
+ ],
267
+ [
268
+ 59,
269
+ 1,
270
+ 0,
271
+ 65,
272
+ 0,
273
+ "IMAGE"
274
+ ]
275
+ ],
276
+ "groups": [],
277
+ "definitions": {
278
+ "subgraphs": [
279
+ {
280
+ "id": "1970dcb4-982a-4c01-a373-4d239a3041e4",
281
+ "version": 1,
282
+ "state": {
283
+ "lastGroupId": 1,
284
+ "lastNodeId": 75,
285
+ "lastLinkId": 66,
286
+ "lastRerouteId": 0
287
+ },
288
+ "revision": 0,
289
+ "config": {},
290
+ "name": "Upscale Image (SeedVR2 1.4B + distilled VAE)",
291
+ "inputNode": {
292
+ "id": -10,
293
+ "bounding": [
294
+ 470,
295
+ 59.901214308973096,
296
+ 189.134765625,
297
+ 247.99999999999997
298
+ ]
299
+ },
300
+ "outputNode": {
301
+ "id": -20,
302
+ "bounding": [
303
+ 2480,
304
+ 201,
305
+ 128,
306
+ 68
307
+ ]
308
+ },
309
+ "inputs": [
310
+ {
311
+ "id": "e981cdcd-e740-4932-91e0-06392d5ac526",
312
+ "name": "image",
313
+ "type": "IMAGE",
314
+ "linkIds": [
315
+ 41
316
+ ],
317
+ "localized_name": "image",
318
+ "pos": [
319
+ 635.134765625,
320
+ 83.9012143089731
321
+ ]
322
+ },
323
+ {
324
+ "id": "bd600399-ea77-48ba-91f6-cf83c95051c8",
325
+ "name": "alpha",
326
+ "type": "MASK",
327
+ "linkIds": [
328
+ 40
329
+ ],
330
+ "localized_name": "alpha",
331
+ "pos": [
332
+ 635.134765625,
333
+ 103.9012143089731
334
+ ]
335
+ },
336
+ {
337
+ "id": "df3b8dbd-5649-4dbd-8551-c5cb254eafc5",
338
+ "name": "resize_type.multiplier",
339
+ "type": "FLOAT",
340
+ "linkIds": [
341
+ 50
342
+ ],
343
+ "label": "scale_multiplier",
344
+ "pos": [
345
+ 635.134765625,
346
+ 123.9012143089731
347
+ ]
348
+ },
349
+ {
350
+ "id": "9bf1e154-0009-45fb-a43c-ae3fc9361b37",
351
+ "name": "seed",
352
+ "type": "INT",
353
+ "linkIds": [
354
+ 51
355
+ ],
356
+ "pos": [
357
+ 635.134765625,
358
+ 143.9012143089731
359
+ ]
360
+ },
361
+ {
362
+ "id": "408ed65b-0681-4ffc-93dd-cab04ffabe06",
363
+ "name": "sampler_name",
364
+ "type": "COMBO",
365
+ "linkIds": [
366
+ 54
367
+ ],
368
+ "pos": [
369
+ 635.134765625,
370
+ 163.9012143089731
371
+ ]
372
+ },
373
+ {
374
+ "id": "dbd3e56e-9696-41fa-8549-9f65dcf34b8e",
375
+ "name": "scheduler",
376
+ "type": "COMBO",
377
+ "linkIds": [
378
+ 55
379
+ ],
380
+ "pos": [
381
+ 635.134765625,
382
+ 183.9012143089731
383
+ ]
384
+ },
385
+ {
386
+ "id": "fe2df403-641b-4d01-87a7-0f730febd917",
387
+ "name": "denoise",
388
+ "type": "FLOAT",
389
+ "linkIds": [
390
+ 56
391
+ ],
392
+ "pos": [
393
+ 635.134765625,
394
+ 203.9012143089731
395
+ ]
396
+ },
397
+ {
398
+ "id": "7739a0b8-6e3a-4788-a671-dadd904c2d87",
399
+ "name": "unet_name",
400
+ "type": "COMBO",
401
+ "linkIds": [
402
+ 57
403
+ ],
404
+ "pos": [
405
+ 635.134765625,
406
+ 223.9012143089731
407
+ ]
408
+ },
409
+ {
410
+ "id": "2de2f222-32fd-402f-98da-73cf111b2f37",
411
+ "name": "vae_name",
412
+ "type": "COMBO",
413
+ "linkIds": [
414
+ 58
415
+ ],
416
+ "pos": [
417
+ 635.134765625,
418
+ 243.9012143089731
419
+ ]
420
+ },
421
+ {
422
+ "id": "6b8a6fef-e542-4fb4-9a4e-a3c0d46cd6b7",
423
+ "name": "color_correction_method",
424
+ "type": "COMBO",
425
+ "linkIds": [
426
+ 64
427
+ ],
428
+ "pos": [
429
+ 635.134765625,
430
+ 263.90121430897307
431
+ ]
432
+ }
433
+ ],
434
+ "outputs": [
435
+ {
436
+ "id": "517ebe35-9129-4f66-a88e-2fdca4c417cf",
437
+ "name": "images",
438
+ "type": "IMAGE",
439
+ "linkIds": [
440
+ 15
441
+ ],
442
+ "localized_name": "images",
443
+ "pos": [
444
+ 2504,
445
+ 225
446
+ ]
447
+ }
448
+ ],
449
+ "widgets": [],
450
+ "nodes": [
451
+ {
452
+ "id": 48,
453
+ "type": "VAEEncodeTiled",
454
+ "pos": [
455
+ 1360,
456
+ 110
457
+ ],
458
+ "size": [
459
+ 270,
460
+ 230
461
+ ],
462
+ "flags": {},
463
+ "order": 0,
464
+ "mode": 0,
465
+ "showAdvanced": true,
466
+ "inputs": [
467
+ {
468
+ "localized_name": "pixels",
469
+ "name": "pixels",
470
+ "type": "IMAGE",
471
+ "link": 16
472
+ },
473
+ {
474
+ "localized_name": "vae",
475
+ "name": "vae",
476
+ "type": "VAE",
477
+ "link": 17
478
+ }
479
+ ],
480
+ "outputs": [
481
+ {
482
+ "localized_name": "LATENT",
483
+ "name": "LATENT",
484
+ "type": "LATENT",
485
+ "links": [
486
+ 28,
487
+ 36
488
+ ]
489
+ }
490
+ ],
491
+ "properties": {
492
+ "Node name for S&R": "VAEEncodeTiled",
493
+ "cnr_id": "comfy-core",
494
+ "ver": "0.27.0"
495
+ },
496
+ "widgets_values": [
497
+ 512,
498
+ 128,
499
+ 4096,
500
+ 8
501
+ ]
502
+ },
503
+ {
504
+ "id": 50,
505
+ "type": "JoinImageWithAlpha",
506
+ "pos": [
507
+ 930,
508
+ 240
509
+ ],
510
+ "size": [
511
+ 280,
512
+ 80
513
+ ],
514
+ "flags": {},
515
+ "order": 1,
516
+ "mode": 0,
517
+ "inputs": [
518
+ {
519
+ "localized_name": "image",
520
+ "name": "image",
521
+ "type": "IMAGE",
522
+ "link": 41
523
+ },
524
+ {
525
+ "localized_name": "alpha",
526
+ "name": "alpha",
527
+ "type": "MASK",
528
+ "link": 40
529
+ }
530
+ ],
531
+ "outputs": [
532
+ {
533
+ "localized_name": "IMAGE",
534
+ "name": "IMAGE",
535
+ "type": "IMAGE",
536
+ "links": [
537
+ 45
538
+ ]
539
+ }
540
+ ],
541
+ "properties": {
542
+ "Node name for S&R": "JoinImageWithAlpha",
543
+ "cnr_id": "comfy-core",
544
+ "ver": "0.27.0"
545
+ },
546
+ "widgets_values": []
547
+ },
548
+ {
549
+ "id": 51,
550
+ "type": "VAELoader",
551
+ "pos": [
552
+ 940,
553
+ 100
554
+ ],
555
+ "size": [
556
+ 270,
557
+ 80
558
+ ],
559
+ "flags": {},
560
+ "order": 2,
561
+ "mode": 0,
562
+ "inputs": [
563
+ {
564
+ "localized_name": "vae_name",
565
+ "name": "vae_name",
566
+ "type": "COMBO",
567
+ "widget": {
568
+ "name": "vae_name"
569
+ },
570
+ "link": 58
571
+ }
572
+ ],
573
+ "outputs": [
574
+ {
575
+ "localized_name": "VAE",
576
+ "name": "VAE",
577
+ "type": "VAE",
578
+ "links": [
579
+ 17,
580
+ 22
581
+ ]
582
+ }
583
+ ],
584
+ "properties": {
585
+ "Node name for S&R": "VAELoader",
586
+ "cnr_id": "comfy-core",
587
+ "ver": "0.27.0",
588
+ "models": [
589
+ {
590
+ "name": "seedvr2_ema_vae_fp16.safetensors",
591
+ "url": "https://huggingface.co/lvladikov/SeedVR2-1.4B/resolve/main/ema_vae_fp16.safetensors",
592
+ "directory": "vae"
593
+ }
594
+ ]
595
+ },
596
+ "widgets_values": [
597
+ "seedvr2_ema_vae_fp16.safetensors"
598
+ ]
599
+ },
600
+ {
601
+ "id": 52,
602
+ "type": "UNETLoader",
603
+ "pos": [
604
+ 940,
605
+ -70
606
+ ],
607
+ "size": [
608
+ 270,
609
+ 110
610
+ ],
611
+ "flags": {},
612
+ "order": 3,
613
+ "mode": 0,
614
+ "showAdvanced": false,
615
+ "inputs": [
616
+ {
617
+ "localized_name": "unet_name",
618
+ "name": "unet_name",
619
+ "type": "COMBO",
620
+ "widget": {
621
+ "name": "unet_name"
622
+ },
623
+ "link": 57
624
+ }
625
+ ],
626
+ "outputs": [
627
+ {
628
+ "localized_name": "MODEL",
629
+ "name": "MODEL",
630
+ "type": "MODEL",
631
+ "links": [
632
+ 27,
633
+ 31
634
+ ]
635
+ }
636
+ ],
637
+ "properties": {
638
+ "Node name for S&R": "UNETLoader",
639
+ "cnr_id": "comfy-core",
640
+ "ver": "0.27.0",
641
+ "models": [
642
+ {
643
+ "name": "seedvr2_distill_6L_1.4B_sharp_fp16_comfyui.safetensors",
644
+ "url": "https://huggingface.co/lvladikov/SeedVR2-1.4B/resolve/main/comfyui/seedvr2_distill_6L_1.4B_sharp_fp16_comfyui.safetensors",
645
+ "directory": "diffusion_models"
646
+ }
647
+ ]
648
+ },
649
+ "widgets_values": [
650
+ "seedvr2_distill_6L_1.4B_sharp_fp16_comfyui.safetensors",
651
+ "default"
652
+ ]
653
+ },
654
+ {
655
+ "id": 54,
656
+ "type": "KSampler",
657
+ "pos": [
658
+ 1740,
659
+ -40
660
+ ],
661
+ "size": [
662
+ 270,
663
+ 320
664
+ ],
665
+ "flags": {},
666
+ "order": 4,
667
+ "mode": 0,
668
+ "inputs": [
669
+ {
670
+ "localized_name": "model",
671
+ "name": "model",
672
+ "type": "MODEL",
673
+ "link": 31
674
+ },
675
+ {
676
+ "localized_name": "positive",
677
+ "name": "positive",
678
+ "type": "CONDITIONING",
679
+ "link": 29
680
+ },
681
+ {
682
+ "localized_name": "negative",
683
+ "name": "negative",
684
+ "type": "CONDITIONING",
685
+ "link": 30
686
+ },
687
+ {
688
+ "localized_name": "latent_image",
689
+ "name": "latent_image",
690
+ "type": "LATENT",
691
+ "link": 36
692
+ },
693
+ {
694
+ "localized_name": "seed",
695
+ "name": "seed",
696
+ "type": "INT",
697
+ "widget": {
698
+ "name": "seed"
699
+ },
700
+ "link": 51
701
+ },
702
+ {
703
+ "localized_name": "sampler_name",
704
+ "name": "sampler_name",
705
+ "type": "COMBO",
706
+ "widget": {
707
+ "name": "sampler_name"
708
+ },
709
+ "link": 54
710
+ },
711
+ {
712
+ "localized_name": "scheduler",
713
+ "name": "scheduler",
714
+ "type": "COMBO",
715
+ "widget": {
716
+ "name": "scheduler"
717
+ },
718
+ "link": 55
719
+ },
720
+ {
721
+ "localized_name": "denoise",
722
+ "name": "denoise",
723
+ "type": "FLOAT",
724
+ "widget": {
725
+ "name": "denoise"
726
+ },
727
+ "link": 56
728
+ }
729
+ ],
730
+ "outputs": [
731
+ {
732
+ "localized_name": "LATENT",
733
+ "name": "LATENT",
734
+ "type": "LATENT",
735
+ "links": [
736
+ 21
737
+ ]
738
+ }
739
+ ],
740
+ "properties": {
741
+ "Node name for S&R": "KSampler",
742
+ "cnr_id": "comfy-core",
743
+ "ver": "0.27.0"
744
+ },
745
+ "widgets_values": [
746
+ 959948902156062,
747
+ "fixed",
748
+ 1,
749
+ 1,
750
+ "euler",
751
+ "simple",
752
+ 1
753
+ ]
754
+ },
755
+ {
756
+ "id": 55,
757
+ "type": "VAEDecodeTiled",
758
+ "pos": [
759
+ 2110,
760
+ -40
761
+ ],
762
+ "size": [
763
+ 270,
764
+ 230
765
+ ],
766
+ "flags": {},
767
+ "order": 5,
768
+ "mode": 0,
769
+ "showAdvanced": true,
770
+ "inputs": [
771
+ {
772
+ "localized_name": "samples",
773
+ "name": "samples",
774
+ "type": "LATENT",
775
+ "link": 21
776
+ },
777
+ {
778
+ "localized_name": "vae",
779
+ "name": "vae",
780
+ "type": "VAE",
781
+ "link": 22
782
+ }
783
+ ],
784
+ "outputs": [
785
+ {
786
+ "localized_name": "IMAGE",
787
+ "name": "IMAGE",
788
+ "type": "IMAGE",
789
+ "links": [
790
+ 25
791
+ ]
792
+ }
793
+ ],
794
+ "properties": {
795
+ "Node name for S&R": "VAEDecodeTiled",
796
+ "cnr_id": "comfy-core",
797
+ "ver": "0.27.0"
798
+ },
799
+ "widgets_values": [
800
+ 512,
801
+ 128,
802
+ 4096,
803
+ 8
804
+ ]
805
+ },
806
+ {
807
+ "id": 57,
808
+ "type": "ResizeImageMaskNode",
809
+ "pos": [
810
+ 930,
811
+ 370
812
+ ],
813
+ "size": [
814
+ 270,
815
+ 110
816
+ ],
817
+ "flags": {},
818
+ "order": 6,
819
+ "mode": 0,
820
+ "inputs": [
821
+ {
822
+ "localized_name": "input",
823
+ "name": "input",
824
+ "type": "IMAGE,MASK",
825
+ "link": 45
826
+ },
827
+ {
828
+ "localized_name": "resize_type.multiplier",
829
+ "name": "resize_type.multiplier",
830
+ "type": "FLOAT",
831
+ "widget": {
832
+ "name": "resize_type.multiplier"
833
+ },
834
+ "link": 50
835
+ }
836
+ ],
837
+ "outputs": [
838
+ {
839
+ "localized_name": "resized",
840
+ "name": "resized",
841
+ "type": "IMAGE",
842
+ "links": [
843
+ 24,
844
+ 26
845
+ ]
846
+ }
847
+ ],
848
+ "properties": {
849
+ "Node name for S&R": "ResizeImageMaskNode",
850
+ "cnr_id": "comfy-core",
851
+ "ver": "0.27.0"
852
+ },
853
+ "widgets_values": [
854
+ "scale by multiplier",
855
+ 4,
856
+ "lanczos"
857
+ ]
858
+ },
859
+ {
860
+ "id": 58,
861
+ "type": "SeedVR2Preprocess",
862
+ "pos": [
863
+ 930,
864
+ 570
865
+ ],
866
+ "size": [
867
+ 270,
868
+ 60
869
+ ],
870
+ "flags": {},
871
+ "order": 7,
872
+ "mode": 0,
873
+ "inputs": [
874
+ {
875
+ "localized_name": "resized_images",
876
+ "name": "resized_images",
877
+ "type": "IMAGE",
878
+ "link": 24
879
+ }
880
+ ],
881
+ "outputs": [
882
+ {
883
+ "localized_name": "images",
884
+ "name": "images",
885
+ "type": "IMAGE",
886
+ "links": [
887
+ 16
888
+ ]
889
+ }
890
+ ],
891
+ "properties": {
892
+ "Node name for S&R": "SeedVR2Preprocess",
893
+ "cnr_id": "comfy-core",
894
+ "ver": "0.27.0"
895
+ },
896
+ "widgets_values": []
897
+ },
898
+ {
899
+ "id": 59,
900
+ "type": "SeedVR2PostProcessing",
901
+ "pos": [
902
+ 2110,
903
+ 350
904
+ ],
905
+ "size": [
906
+ 310,
907
+ 110
908
+ ],
909
+ "flags": {},
910
+ "order": 8,
911
+ "mode": 0,
912
+ "inputs": [
913
+ {
914
+ "localized_name": "images",
915
+ "name": "images",
916
+ "type": "IMAGE",
917
+ "link": 25
918
+ },
919
+ {
920
+ "localized_name": "original_resized_images",
921
+ "name": "original_resized_images",
922
+ "type": "IMAGE",
923
+ "link": 26
924
+ },
925
+ {
926
+ "localized_name": "color_correction_method",
927
+ "name": "color_correction_method",
928
+ "type": "COMBO",
929
+ "widget": {
930
+ "name": "color_correction_method"
931
+ },
932
+ "link": 64
933
+ }
934
+ ],
935
+ "outputs": [
936
+ {
937
+ "localized_name": "images",
938
+ "name": "images",
939
+ "type": "IMAGE",
940
+ "links": [
941
+ 15
942
+ ]
943
+ }
944
+ ],
945
+ "properties": {
946
+ "Node name for S&R": "SeedVR2PostProcessing",
947
+ "cnr_id": "comfy-core",
948
+ "ver": "0.27.0"
949
+ },
950
+ "widgets_values": [
951
+ "none"
952
+ ]
953
+ },
954
+ {
955
+ "id": 61,
956
+ "type": "SeedVR2Conditioning",
957
+ "pos": [
958
+ 1330,
959
+ -40
960
+ ],
961
+ "size": [
962
+ 270,
963
+ 80
964
+ ],
965
+ "flags": {},
966
+ "order": 9,
967
+ "mode": 0,
968
+ "inputs": [
969
+ {
970
+ "localized_name": "model",
971
+ "name": "model",
972
+ "type": "MODEL",
973
+ "link": 27
974
+ },
975
+ {
976
+ "label": "latent",
977
+ "localized_name": "vae_conditioning",
978
+ "name": "vae_conditioning",
979
+ "type": "LATENT",
980
+ "link": 28
981
+ }
982
+ ],
983
+ "outputs": [
984
+ {
985
+ "localized_name": "positive",
986
+ "name": "positive",
987
+ "type": "CONDITIONING",
988
+ "links": [
989
+ 29
990
+ ]
991
+ },
992
+ {
993
+ "localized_name": "negative",
994
+ "name": "negative",
995
+ "type": "CONDITIONING",
996
+ "links": [
997
+ 30
998
+ ]
999
+ }
1000
+ ],
1001
+ "properties": {
1002
+ "Node name for S&R": "SeedVR2Conditioning",
1003
+ "cnr_id": "comfy-core",
1004
+ "ver": "0.27.0"
1005
+ },
1006
+ "widgets_values": []
1007
+ }
1008
+ ],
1009
+ "groups": [
1010
+ {
1011
+ "id": 1,
1012
+ "title": "Models",
1013
+ "bounding": [
1014
+ 930,
1015
+ -140,
1016
+ 290,
1017
+ 330.15625
1018
+ ],
1019
+ "color": "#3f789e",
1020
+ "flags": {}
1021
+ }
1022
+ ],
1023
+ "links": [
1024
+ {
1025
+ "id": 16,
1026
+ "origin_id": 58,
1027
+ "origin_slot": 0,
1028
+ "target_id": 48,
1029
+ "target_slot": 0,
1030
+ "type": "IMAGE"
1031
+ },
1032
+ {
1033
+ "id": 17,
1034
+ "origin_id": 51,
1035
+ "origin_slot": 0,
1036
+ "target_id": 48,
1037
+ "target_slot": 1,
1038
+ "type": "VAE"
1039
+ },
1040
+ {
1041
+ "id": 31,
1042
+ "origin_id": 52,
1043
+ "origin_slot": 0,
1044
+ "target_id": 54,
1045
+ "target_slot": 0,
1046
+ "type": "MODEL"
1047
+ },
1048
+ {
1049
+ "id": 29,
1050
+ "origin_id": 61,
1051
+ "origin_slot": 0,
1052
+ "target_id": 54,
1053
+ "target_slot": 1,
1054
+ "type": "CONDITIONING"
1055
+ },
1056
+ {
1057
+ "id": 30,
1058
+ "origin_id": 61,
1059
+ "origin_slot": 1,
1060
+ "target_id": 54,
1061
+ "target_slot": 2,
1062
+ "type": "CONDITIONING"
1063
+ },
1064
+ {
1065
+ "id": 36,
1066
+ "origin_id": 48,
1067
+ "origin_slot": 0,
1068
+ "target_id": 54,
1069
+ "target_slot": 3,
1070
+ "type": "LATENT"
1071
+ },
1072
+ {
1073
+ "id": 21,
1074
+ "origin_id": 54,
1075
+ "origin_slot": 0,
1076
+ "target_id": 55,
1077
+ "target_slot": 0,
1078
+ "type": "LATENT"
1079
+ },
1080
+ {
1081
+ "id": 22,
1082
+ "origin_id": 51,
1083
+ "origin_slot": 0,
1084
+ "target_id": 55,
1085
+ "target_slot": 1,
1086
+ "type": "VAE"
1087
+ },
1088
+ {
1089
+ "id": 45,
1090
+ "origin_id": 50,
1091
+ "origin_slot": 0,
1092
+ "target_id": 57,
1093
+ "target_slot": 0,
1094
+ "type": "IMAGE"
1095
+ },
1096
+ {
1097
+ "id": 24,
1098
+ "origin_id": 57,
1099
+ "origin_slot": 0,
1100
+ "target_id": 58,
1101
+ "target_slot": 0,
1102
+ "type": "IMAGE"
1103
+ },
1104
+ {
1105
+ "id": 25,
1106
+ "origin_id": 55,
1107
+ "origin_slot": 0,
1108
+ "target_id": 59,
1109
+ "target_slot": 0,
1110
+ "type": "IMAGE"
1111
+ },
1112
+ {
1113
+ "id": 26,
1114
+ "origin_id": 57,
1115
+ "origin_slot": 0,
1116
+ "target_id": 59,
1117
+ "target_slot": 1,
1118
+ "type": "IMAGE"
1119
+ },
1120
+ {
1121
+ "id": 27,
1122
+ "origin_id": 52,
1123
+ "origin_slot": 0,
1124
+ "target_id": 61,
1125
+ "target_slot": 0,
1126
+ "type": "MODEL"
1127
+ },
1128
+ {
1129
+ "id": 28,
1130
+ "origin_id": 48,
1131
+ "origin_slot": 0,
1132
+ "target_id": 61,
1133
+ "target_slot": 1,
1134
+ "type": "LATENT"
1135
+ },
1136
+ {
1137
+ "id": 41,
1138
+ "origin_id": -10,
1139
+ "origin_slot": 0,
1140
+ "target_id": 50,
1141
+ "target_slot": 0,
1142
+ "type": "IMAGE"
1143
+ },
1144
+ {
1145
+ "id": 40,
1146
+ "origin_id": -10,
1147
+ "origin_slot": 1,
1148
+ "target_id": 50,
1149
+ "target_slot": 1,
1150
+ "type": "MASK"
1151
+ },
1152
+ {
1153
+ "id": 15,
1154
+ "origin_id": 59,
1155
+ "origin_slot": 0,
1156
+ "target_id": -20,
1157
+ "target_slot": 0,
1158
+ "type": "IMAGE"
1159
+ },
1160
+ {
1161
+ "id": 50,
1162
+ "origin_id": -10,
1163
+ "origin_slot": 2,
1164
+ "target_id": 57,
1165
+ "target_slot": 1,
1166
+ "type": "FLOAT"
1167
+ },
1168
+ {
1169
+ "id": 51,
1170
+ "origin_id": -10,
1171
+ "origin_slot": 3,
1172
+ "target_id": 54,
1173
+ "target_slot": 4,
1174
+ "type": "INT"
1175
+ },
1176
+ {
1177
+ "id": 54,
1178
+ "origin_id": -10,
1179
+ "origin_slot": 4,
1180
+ "target_id": 54,
1181
+ "target_slot": 5,
1182
+ "type": "COMBO"
1183
+ },
1184
+ {
1185
+ "id": 55,
1186
+ "origin_id": -10,
1187
+ "origin_slot": 5,
1188
+ "target_id": 54,
1189
+ "target_slot": 6,
1190
+ "type": "COMBO"
1191
+ },
1192
+ {
1193
+ "id": 56,
1194
+ "origin_id": -10,
1195
+ "origin_slot": 6,
1196
+ "target_id": 54,
1197
+ "target_slot": 7,
1198
+ "type": "FLOAT"
1199
+ },
1200
+ {
1201
+ "id": 57,
1202
+ "origin_id": -10,
1203
+ "origin_slot": 7,
1204
+ "target_id": 52,
1205
+ "target_slot": 0,
1206
+ "type": "COMBO"
1207
+ },
1208
+ {
1209
+ "id": 58,
1210
+ "origin_id": -10,
1211
+ "origin_slot": 8,
1212
+ "target_id": 51,
1213
+ "target_slot": 0,
1214
+ "type": "COMBO"
1215
+ },
1216
+ {
1217
+ "id": 64,
1218
+ "origin_id": -10,
1219
+ "origin_slot": 9,
1220
+ "target_id": 59,
1221
+ "target_slot": 2,
1222
+ "type": "COMBO"
1223
+ }
1224
+ ],
1225
+ "extra": {}
1226
+ }
1227
+ ]
1228
+ },
1229
+ "config": {},
1230
+ "extra": {
1231
+ "ds": {
1232
+ "scale": 0.8369606986899568,
1233
+ "offset": [
1234
+ 729.0799452315996,
1235
+ 332.21687102746415
1236
+ ]
1237
+ },
1238
+ "frontendVersion": "1.45.15",
1239
+ "VHS_latentpreview": false,
1240
+ "VHS_latentpreviewrate": 0,
1241
+ "VHS_MetadataImage": true,
1242
+ "VHS_KeepIntermediate": true
1243
  },
1244
+ "version": 0.4
 
 
 
 
 
 
1245
  }