Move installation to top, add shields.io badges, create visual model
comparison chart, use collapsible sections for node reference, condense
acknowledgments into a table with citations in a collapsible block.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Add step-by-step instructions, CUDA version table, troubleshooting
section, and note that EMA-VFI works without cupy.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
No more pip calls at import time. Users get a clear error with
install instructions from the Load node if cupy is missing.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
BIM-VFI, SGM-VFI, and GIMM-VFI Load nodes now check for cupy at
load time and raise a clear error with the user's CUDA version and
the exact pip install command. Updated README with step-by-step
cupy install instructions.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Dependencies are now handled by pyproject.toml / requirements.txt
via ComfyUI Manager or pip. Only cupy is auto-installed at load time
since it requires matching the PyTorch CUDA version; failures produce
a warning instead of crashing. Also added timm to requirements.txt.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
The all_on_gpu guard was preventing warp cache clearing and
torch.cuda.empty_cache() from ever running, causing unbounded
VRAM growth during long interpolation runs. Cache clearing now
runs on the clear_cache_after_n_frames interval regardless of
the all_on_gpu setting.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Log mode/params, pass progress, chunk count, and output frame count
for BIM-VFI, EMA-VFI, SGM-VFI, and GIMM-VFI interpolation nodes.
Segment nodes also log their input frame range and target fps output range.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Second IMAGE output exposes the full power-of-2 oversampled frames
before target FPS selection. Identical to the first output when
target_fps=0. Document the new output in README.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Add source_fps/target_fps inputs to all 4 Interpolate and Segment nodes
(BIM, EMA, SGM, GIMM). When target_fps > 0, auto-computes optimal
power-of-2 oversample, runs existing recursive t=0.5 interpolation,
then selects frames at target timestamps. Handles downsampling (no
model calls), same-fps passthrough, and high ratios (e.g. 3→30fps).
Segment boundary logic uses global index computation for gap-free
stitching. When target_fps=0, existing multiplier behavior is preserved.
Remove video preview from TweenConcatVideos: drop preview input,
delete web/js/tween_preview.js, remove WEB_DIRECTORY from __init__.py.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Integrates GIMM-VFI alongside existing BIM/EMA/SGM models. Key feature: generates
all intermediate frames in one forward pass (no recursive 2x passes needed for 4x/8x).
- Vendor gimm_vfi_arch/ from kijai/ComfyUI-GIMM-VFI with device fixes
- Two variants: RAFT-based (~80MB) and FlowFormer-based (~123MB)
- Auto-download checkpoints from HuggingFace (Kijai/GIMM-VFI_safetensors)
- Three new nodes: Load GIMM-VFI Model, GIMM-VFI Interpolate, GIMM-VFI Segment Interpolate
- single_pass toggle: True=arbitrary timestep (default), False=recursive like other models
- ds_factor parameter for high-res input downscaling
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
The gifs ui dict requires custom JS to render — ComfyUI doesn't
handle it natively. Adds a minimal video preview widget that uses
ComfyUI's /view endpoint to play the concatenated video on the node.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
The Google Drive folder contains .pkl files but the default model
name used .pth, causing the post-download existence check to fail.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Relative output_directory values are now resolved against ComfyUI's
output directory. Video preview is skipped with a warning when the
output path is outside the output tree (frontend can't serve it).
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Uses ComfyUI's ui/gifs return dict to show the concatenated video
directly on the node, matching the VHS Video Combine pattern.
Togglable via a preview boolean input (default True).
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
The concat node is model-agnostic (just joins video segments via
ffmpeg), so it shouldn't be under BIM-VFI. Now accepts any model type
as the dependency input and lives under the video/Tween category.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Update logger names, install prefixes, README clone instructions, and
error messages to reflect the new repo name. Model-specific node names
and categories (BIM-VFI, EMA-VFI, SGM-VFI) are unchanged.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
SGM-VFI combines local flow estimation with sparse global matching
(GMFlow) to handle large motion and occlusion-heavy scenes. Adds 3 new
nodes: Load SGM-VFI Model, SGM-VFI Interpolate, SGM-VFI Segment
Interpolate. Architecture files vendored from MCG-NJU/SGM-VFI with
device-awareness fixes (no hardcoded .cuda()), relative imports, and
debug code removed. README updated with model comparison table.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Integrate EMA-VFI alongside existing BIM-VFI with three new ComfyUI nodes:
Load EMA-VFI Model, EMA-VFI Interpolate, and EMA-VFI Segment Interpolate.
Architecture files vendored from MCG-NJU/EMA-VFI with device-awareness
fixes (removed hardcoded .cuda() calls), warp cache management, and
relative imports. InputPadder extended to support EMA-VFI's replicate
center-symmetric padding. Auto-installs timm dependency on first load.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Cleans up individual segment files after successful concatenation,
preventing leftover files from polluting subsequent runs.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Adds a new node that concatenates segment video files (produced by
VHS Video Combine) into a single video using ffmpeg's concat demuxer
with -c copy (no re-encoding). The model input acts as a sequencing
signal to ensure all segments finish before concatenation begins.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Processes numbered segments of the input batch so users can chain
multiple instances with Save nodes between them, freeing each segment's
output before the next starts. Model pass-through output forces
sequential execution via ComfyUI's dependency graph.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
First startup may appear to hang while cupy (~800MB) installs.
Document manual fallback for environments where auto-install fails.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- chunk_size input splits input into overlapping segments processed
independently then stitched, bounding memory for 1000+ frame videos
while producing identical results to processing all at once
- Fix cache clearing logic: use counter instead of modulo so it triggers
regardless of batch_size value
- Replace inefficient torch.cat gather with direct tensor slicing
- Add README with usage guide, VRAM recommendations, and full
attribution to BiM-VFI (Seo, Oh, Kim — CVPR 2025, KAIST VIC Lab)
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Processes multiple frame pairs simultaneously instead of one-by-one.
New batch_size input (1-64) lets users trade VRAM for speed.
Refactored pyr_level logic into shared _get_pyr_level() helper.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
When enabled (default), automatically picks the optimal pyr_level
based on input height: <540p=3, 540p=5, 1080p=6, 4K=7.
When disabled, uses the manual pyr_level value.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Previously the user's pyr_level was overridden for >=540p content.
Now the setting is always used, with the tooltip recommending values
per resolution instead.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Detects missing deps when ComfyUI imports the node and installs
them automatically via pip. No manual steps needed in Docker.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
install.py now updates requirements.txt with the correct cupy-cuda
package matching PyTorch's CUDA version before running pip install.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
cupy was imported at module level, causing ComfyUI to fail loading
the node entirely if cupy wasn't installed yet. Now deferred to
first actual CUDA kernel call, with a clear error message.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Wraps BiM-VFI (CVPR 2025) as a ComfyUI custom node for long video
frame interpolation with memory-safe sequential processing.
- LoadBIMVFIModel: checkpoint loader with auto-download from Google Drive
- BIMVFIInterpolate: 2x/4x/8x recursive interpolation with per-pair
GPU processing, configurable VRAM management (all_on_gpu for high-VRAM
setups), progress bar, and backwarp cache clearing
- Vendored inference-only architecture from KAIST-VICLab/BiM-VFI
- Auto-detection of CUDA version for cupy installation
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>