VELVET VICE KREA — SeedVR2 Router
The on/off switch for your SeedVR2 upscale pass
- original_image
- seedvr2_image
- final_image
- upscale_status
The last stage of the Velvet Vice Krea workflow is an optional SeedVR2 upscale, and "VELVET VICE KREA - SeedVR2 Router" is the toggle that decides whether it happens. Flip the seedvr2_enabled switch and the final output is the upscaled image; flip it back and you get the raw render instead. Because the input is lazy, only the branch you pick ever runs - so turning SeedVR2 off genuinely saves you a heavy upscale pass, not just a routing decision.
Why you want a toggle here at all
SeedVR2 is ByteDance's video-restoration model that the community adopted as the default single-image upscaler - the KB panel on it is blunt that it took over from SUPIR because it adds detail without re-inventing your subject. But "default best" doesn't mean "always want it in the output." It runs on a model that's separate from your Krea render, it raises contrast enough that some people find outputs read as more AI-generated than the input, and it had a well-earned reputation for OOM errors before tiling options settled things down. Being able to produce both the straight render and the upscaled version from one graph, without editing wires, is exactly what iteration wants.
How it works
Two lazy image inputs, one boolean, and a router that's too simple to argue with:
- seedvr2_enabled - boolean, default on, labeled "ON · USE SEEDVR2" / "OFF · USE ORIGINAL" in the UI.
- original_image - the render before upscaling.
- seedvr2_image - the SeedVR2 output (wired from your SeedVR2 node).
Outputs:
- final_image - the chosen
IMAGE. - upscale_status - a
STRING, "SEEDVR2 ON · upscaled output" or "SEEDVR2 OFF · original output". Handy for confirming which path actually ran.
The lazy marking is the important bit: ComfyUI only evaluates the image you select. If SeedVR2 is off, the SeedVR2 node upstream doesn't even run - that's the whole point of having a router here instead of a plain conditional that still renders both.
The honest caveat
This node routes; it doesn't upscale. SeedVR2 itself is a separate install (the community standard is numz/ComfyUI-SeedVR2_VideoUpscaler), and if you want the quality everyone raves about, run its FP16 weights - the community's consensus, from the thread that made SeedVR2 famous, is that GGUF quant messes with skin and FP8 adds tiling artifacts. FP16 is the clean pick. If your upscaled result looks bad, blame the model card math, not this router.
Installing and using
Same pack install as the rest of the Velvet Vice nodes:
cd ComfyUI/custom_nodes
git clone https://github.com/Velvet-Vice/velvet-vice-krea
Restart ComfyUI, or search "VELVET VICE - KREA" in ComfyUI Manager. No extra dependencies.
If the toggle is on but you're getting the original image, check that seedvr2_image is actually connected - the router will only tell you it's missing when that branch is active, so an unplugged SeedVR2 wire is the classic silent failure here. And if you're running low on VRAM, turn the toggle off and let the router skip the whole upscale path; that's the feature working as intended.
Inputs (3)
| Name | Type | Default | Description |
|---|---|---|---|
| seedvr2_enabled | BOOLEAN | true | — |
| original_image | IMAGE | — | |
| seedvr2_image | IMAGE | — |
Outputs (2)
| Name | Type | Description |
|---|---|---|
| final_image | IMAGE | — |
| upscale_status | STRING | — |