π BV Conditional ImagePipe Splitter
Split your dataset into 'needs upscaling' and 'fine as-is'
- image_pipe
- opt_caption_config_pipe
- TO_UPSCALE
- HIGH_RES_IMAGES
A real dataset is never uniform. You scrape together 800 images and a third of them are 512Γ768 while the rest are 2048px monsters. Running every one of them through an upscaler is a waste of GPU time and VRAM - and honestly, the community is split on whether a generative upscaler even should touch the big ones. The BV Conditional ImagePipe Splitter exists to make that decision automatic: it reads the pipe from a BV ImagePipe Loader and sorts every image by its smaller dimension.
Images whose smaller side is below the threshold go out the TO_UPSCALE output (a list pipe). Everything at or above it leaves through HIGH_RES_IMAGES. Wire the two branches into separate upscale paths, merge them later, done.
The inputs that matter
- image_pipe (required) - the
BV_IMAGE_PIPEfrom the Loader. - lowres_limit (default 768, stepped 256β2048) - the cutoff. Below this on the short side = needs upscaling. 768 is a sensible default because it's the sweet spot for SDXL-era training; raise it if your pipeline feeds a model that wants bigger natives.
- upscale_lowres (default true) - whether the lowres branch should bother going to TO_UPSCALE at all. Flip it off and everything just flows to HIGH_RES_IMAGES; useful when you're re-batching an already-clean set.
- opt_caption_config_pipe - optional. Feed it the
CAPTION_CONFIG_PIPEfrom a BV Upscale Config node and the threshold and toggle come from there instead of being hardcoded here.
Two outputs, one decision
- TO_UPSCALE (list pipe) - feed this into your upscale branch, or straight to a BV ImagePipe Merger if you're skipping upscaling.
- HIGH_RES_IMAGES (list pipe) - these are done; route them around the upscaler.
The whole point is that you stop hand-sorting folders before every training run. It's the kind of unglamorous automation nobody posts about, but once you've used it, going back to manual triage feels silly.
Install
Manager, or by hand:
cd ComfyUI/custom_nodes
git clone https://github.com/BlackVortexAI/ComfyUI-BVortexNodes.git
Restart ComfyUI. No extra pip packages, no models to fetch.
Gotchas
If you're feeding it from a BV Upscale Config node, pick one place to set the threshold - the node's own lowres_limit and the config pipe will both be there, and fighting them against each other is the only way to get a confusing result. Also remember lowres_limit moves in steps of 256, so you can't dial in 777 as the cutoff even if the dataset demands it. Fine in practice, worth knowing.
Inputs (4)
| Name | Type | Default | Description |
|---|---|---|---|
| image_pipe | BV_IMAGE_PIPE | β | |
| opt_caption_config_pipeopt | BV_UPSCALE_CONFIG_PIPE | β | |
| upscale_lowresopt | BOOLEAN | true | β |
| lowres_limitopt | INT | 768256β2048 | β |
Outputs (2)
| Name | Type | Description |
|---|---|---|
| TO_UPSCALE | BV_IMAGE_PIPE | β |
| HIGH_RES_IMAGES | BV_IMAGE_PIPE | β |