Nodes/ComfyUI-SplatKit/Load Dataset Images (Ordered)
ComfyUI Node

Load Dataset Images (Ordered)

A ComfyUI node in SplatKit with 9 inputs and 7 outputs.

By mickmumpitz·Created 19 days ago·Updated a day ago· 0
Load Dataset Images (Ordered)
  • meta_batch
  • images
  • order_names
  • canonical_dir
  • group_sizes
  • batch_size
  • passthrough_json
  • job
dataset_namemy_scene
dataset_path
lowres_suffix_lowres
camera_index-1
on_size_mismatcherror
prepare_in_placefalse
select_every_nth1
drop_partial_stridefalse
CategorySplatKit

Inputs (9)

NameTypeDefaultDescription
dataset_nameSTRINGmy_sceneName of the SphereSfM dataset folder under ComfyUI/output.
dataset_pathoptSTRINGOptional explicit path to the dataset root or images folder. Overrides dataset_name.
lowres_suffixoptSTRING_lowresOriginals-folder suffix; must match the Save node's suffix.
camera_indexoptINT-1-1–4096-1 = load all cameras. 0..N-1 = load only that camera's sub-video (one coherent view/trajectory). The console lists the available cameras on each run.
meta_batchoptVHS_BatchManagerOptional VHS Meta Batch Manager. When wired, the camera-major sequence is STREAMED frames_per_batch frames at a time instead of loaded whole -- the fix for 'the upscaled result does not fit in RAM'. Set frames_per_batch to a divisor of the per-view length (81 -> 81, 27, 9, 3, 1) so no chunk straddles a view boundary. The order_names / canonical_dir outputs stay whole-dataset.
on_size_mismatchoptCOMBOerrorWhat to do when the folder holds more than one image size. error: refuse (a batch needs one size). resize_and_passthrough: resize the odd images DOWN to the majority size so they still give the temporal model its context, and list them on the passthrough_json output. Frame 00000 is normally the ORIGINAL panorama (a separate, larger COLMAP camera) -- wire passthrough_json into Save Upscaled Frames (Streaming) and its untouched original is copied to the output instead of the generated upscale.
prepare_in_placeoptBOOLEANfalseDo the originals-preserving swap here, before the first read: images/ -> images_lowres/ (once, atomically) and a fresh empty images/ for the saver to fill. Idempotent, so a re-run renames nothing. Turn this ON for an in-place COLMAP dataset upscale and you do not need a separate Prepare node.
select_every_nthoptINT11–1000Thin the sequence: keep every Nth frame. Applied INSIDE each view group, never across the flat list -- 24 views of 81 at N=3 become 24 views of 27, so no chunk ever straddles a view boundary and the loop still sees coherent sub-videos. Counting starts at each view's first frame, so frame 00000 (the real panorama) is always kept. group_sizes and suggested_batch_size are recomputed for you. WARNING: the skipped frames are then NOT written by the saver, while sparse/0/images.bin still registers them. Reconcile the dataset afterwards with tools/stride_dataset.py (--mode prune or --mode keep-lowres) before training on it.
drop_partial_strideoptBOOLEANfalseWhat to do with the frame that falls out of the stride. 81 frames at N=5 is 16 complete 5-frame windows plus 1 leftover: off keeps it (17 per view), on omits it (16 per view). CAUTION: 17 is 4n+1 so it can be one clean SeedVR2 batch, while 16's only 4n+1 divisor is 1 -- turning this on can collapse suggested_batch_size to 1 and cost you all temporal context. Check the printed suggested_batch_size after changing it, and match tools/stride_dataset.py --drop-partial.

Outputs (7)

NameTypeDescription
imagesIMAGE
order_namesSTRING
canonical_dirSTRING
group_sizesSTRING
batch_sizeINT
passthrough_jsonSTRING
jobSTRING