Commit Graph
64 Commits
Author SHA1 Message Date
Ethan Fel 15b88d1689 fix: remove redundant dependency installer 2026-08-16 00:23:15 +02:00
Ethan Fel 211481558c fix: add BIM-VFI artifact-safe mode 2026-08-16 00:20:52 +02:00
Ethan Fel 333a281eef docs: simplify demo to SPEED and BIM-VFI 2026-08-15 22:10:24 +02:00
Ethan Fel 5240e27038 fix: make cupy installation opt-in 2026-08-15 22:04:53 +02:00
Ethan Fel a4831d7b71 fix: keep LDF transformer dtypes aligned 2026-08-15 21:58:53 +02:00
Ethan Fel fa6d8a7d88 feat: expose timing on all interpolation nodes 2026-08-15 21:56:59 +02:00
Ethan Fel cb60fe2542 feat: expose LDF interpolation duration 2026-08-15 21:48:11 +02:00
Ethan Fel b2350e7f08 fix: tile LDF decode conditions for conditional VAE 2026-08-15 21:46:17 +02:00
Ethanfel 5b10a1a594 feat: add SPEED and LDF-VFI interpolation
Integrate checksum-pinned runtimes, harden interpolation and cleanup paths, and add a SPEED/LDF model-lab workflow.
2026-08-15 21:16:14 +02:00
EthanfelandClaude Opus 4.8 2d96d5aa5d fix: catch all exceptions when importing cupy, not just ImportError
An installed-but-broken cupy (e.g. incompatible with NumPy 2.5, which
removed the 'bool8' alias) raises a TypeError during its own import, not
an ImportError. The narrow `except ImportError` guard let that propagate
and crashed the entire node import chain.

Broaden the guard to `except Exception` in all three CUDA-kernel modules
so any import-time failure disables cupy and falls back to the
pure-PyTorch implementations.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-27 19:51:28 +02:00
EthanfelandClaude Opus 4.6 0c62c6eef4 docs: add cupy-fallback implementation plan
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-04-11 10:27:52 +02:00
EthanfelandClaude Opus 4.6 83e4b5dd98 perf: add torch.compile to PyTorch fallback kernels
Wraps _pytorch_softsplat and _pytorch_costvol with torch.compile
for ~6x speedup on ROCm/non-cupy setups. Falls back to eager
execution gracefully if compilation fails.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-04-11 10:13:30 +02:00
EthanfelandClaude Opus 4.6 2e75e2d076 fix: handle None from cupy.cuda.get_cuda_path() in cuda_launch
cupy.cuda.get_cuda_path() can return None when CUDA_HOME is not set
and cupy can't auto-detect it. Fall back to /usr/local/cuda.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-04-11 02:20:20 +02:00
EthanfelandClaude Opus 4.6 c08fe58fe7 feat: make cupy optional in install.py
cupy is now a best-effort install for NVIDIA users. Non-CUDA setups
(ROCm, CPU) skip cupy and use PyTorch fallback kernels instead.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-04-11 02:12:03 +02:00
EthanfelandClaude Opus 4.6 9e84890877 feat: remove cupy requirement gate from model loading
Models now fall back to pure-PyTorch implementations when cupy is unavailable.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-04-11 02:11:30 +02:00
EthanfelandClaude Opus 4.6 2e98e453a4 Add pure-PyTorch fallback for BIM-VFI cost volume kernel
When cupy is unavailable, the costvol_func.forward() now falls back to a
pure-PyTorch implementation using unfold + dot product instead of raising
a RuntimeError. The CUDA/cupy kernel path is preserved unchanged for when
cupy is available. This allows BIM-VFI to run on systems without cupy
(including CPU-only setups), matching the pattern used for the softsplat
fallbacks in SGM-VFI and GIMM-VFI.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-04-11 02:09:56 +02:00
EthanfelandClaude Opus 4.6 daf0304243 Add pure-PyTorch fallback for GIMM-VFI softsplat forward warp
Make cupy import optional (try/except), replace @cupy.memoize with a
dict cache, add _pytorch_softsplat() using scatter_add for bilinear
splatting, and update forward() dispatch to fall back to PyTorch when
cupy is unavailable or tensor is on CPU.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-04-11 02:07:08 +02:00
EthanfelandClaude Opus 4.6 5ce7b0edcb fix: use dtype-preserving cast in SGM-VFI softsplat fallback
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-04-11 02:05:24 +02:00
EthanfelandClaude Opus 4.6 8d8407ec9d Add pure-PyTorch fallback for SGM-VFI softsplat forward warp
Make cupy import optional so the module loads without cupy installed.
Replace @cupy.memoize decorator with a simple dict cache to avoid
crash at import time. Add _pytorch_softsplat() using scatter_add_
as a fallback when cupy is unavailable or tensors are on CPU.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-04-11 01:59:23 +02:00
EthanfelandClaude Opus 4.6 91947c0b8c Use actual input frame count for all_on_gpu and chunk_size estimates
Replace hardcoded 199-frame assumption with 2*N-1 from the actual
images input, giving accurate VRAM/RAM estimates for any batch size.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-28 18:56:57 +01:00
EthanfelandClaude Opus 4.6 c4b69321bb Reorder VFI Optimizer outputs: images first, settings second
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-28 18:54:00 +01:00
EthanfelandClaude Opus 4.6 f1da0f7876 Add images passthrough output to VFI Optimizer
Avoids needing a dual link from the image source — the optimizer
passes images through so they can be connected directly to the
Interpolate node.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-28 18:53:28 +01:00
EthanfelandClaude Opus 4.6 27c5bcf362 Fix total_mem → total_memory attribute on CudaDeviceProperties
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-28 18:33:45 +01:00
EthanfelandClaude Opus 4.6 d2e7db49c7 Bump version to 1.1.0
Publish to Comfy registry / Publish Custom Node to registry (push) Has been cancelled
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-27 22:16:11 +01:00
EthanfelandClaude Opus 4.6 9f66233b53 Add VFI Optimizer node for auto-tuning hardware settings
Benchmarks the user's GPU with the actual model and resolution via a
single calibration frame pair, then outputs optimal batch_size,
chunk_size, keep_device, all_on_gpu, and clear_cache_after_n_frames
as a connectable VFI_SETTINGS type. All 8 Interpolate/SegmentInterpolate
nodes accept the new optional settings input — existing workflows
without the optimizer work unchanged.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-27 22:15:48 +01:00
EthanfelandClaude Opus 4.6 7257c1aa4d Fix SVG license labels not rendering in GitHub README
Remove text-anchor="end" (likely stripped by GitHub's SVG sanitizer,
pushing text off-screen). Use left-aligned positioning instead, increase
font size and color brightness for visibility.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-27 13:44:47 +01:00
EthanfelandClaude Opus 4.6 ebece55ed7 Add license labels to model comparison SVG
BIM-VFI shows "Research only" in amber, others show "Apache 2.0".

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-27 13:39:42 +01:00
EthanfelandClaude Opus 4.6 a60fb2a25e Redesign README: add SVG model comparison, reorganize by priority
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>
2026-02-27 13:37:50 +01:00
EthanfelandClaude Opus 4.6 c178f756da Expand cupy install guide in README
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>
2026-02-27 13:25:36 +01:00
EthanfelandClaude Opus 4.6 fb921ae620 Remove cupy auto-install from __init__.py
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>
2026-02-27 13:24:06 +01:00
EthanfelandClaude Opus 4.6 4723dc329d Add cupy check to Load nodes with install instructions
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>
2026-02-27 13:15:44 +01:00
EthanfelandClaude Opus 4.6 8fe382e5ec Remove auto-install of all deps except cupy
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>
2026-02-27 13:13:01 +01:00
EthanfelandClaude Opus 4.6 8311fd0261 Add ComfyUI registry publishing workflow and pyproject.toml
Publish to Comfy registry / Publish Custom Node to registry (push) Has been cancelled
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-22 23:28:21 +01:00
EthanfelandClaude Opus 4.6 396dafeefc Fix warp cache buildup when all_on_gpu is enabled
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>
2026-02-18 21:27:47 +01:00
EthanfelandClaude Opus 4.6 13a89c5831 Add console logging to all VFI interpolation nodes
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>
2026-02-14 21:14:11 +01:00
EthanfelandClaude Opus 4.6 2f1cc17f5c Add oversampled image output to all VFI Interpolate nodes
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>
2026-02-14 17:39:58 +01:00
EthanfelandClaude Opus 4.6 b2d7d3b634 Update README: document target FPS mode, fix repo URL, update concat description
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-14 17:06:55 +01:00
Ethanfel adc4451716 wf update 2026-02-13 22:55:30 +01:00
EthanfelandClaude Opus 4.6 6dd579dcc7 Add target FPS mode to all VFI models and remove concat preview
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>
2026-02-13 22:51:04 +01:00
EthanfelandClaude Opus 4.6 e253cb244e Add GIMM-VFI to README: comparison table, nodes, acknowledgements, license
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-13 13:13:48 +01:00
EthanfelandClaude Opus 4.6 d642255e70 Add GIMM-VFI support (NeurIPS 2024) with single-pass arbitrary-timestep interpolation
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>
2026-02-13 13:11:45 +01:00
EthanfelandClaude Opus 4.6 3c3d4b2537 Fix typo in example workflow filename (lopp → loop)
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-13 00:03:12 +01:00
EthanfelandClaude Opus 4.6 e43a499ba0 Add example workflow
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-13 00:02:47 +01:00
EthanfelandClaude Opus 4.6 a67b5b62ae Add frontend JS for TweenConcatVideos video preview
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>
2026-02-12 23:54:29 +01:00
EthanfelandClaude Opus 4.6 769da2586e Fix SGM-VFI auto-download: correct file extension .pth → .pkl
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>
2026-02-12 23:45:13 +01:00
EthanfelandClaude Opus 4.6 d935462e24 Support relative paths and robust preview in TweenConcatVideos
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>
2026-02-12 23:30:48 +01:00
EthanfelandClaude Opus 4.6 aa85f523f2 Add optional video preview to TweenConcatVideos
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>
2026-02-12 23:16:01 +01:00
EthanfelandClaude Opus 4.6 fc4efb8b17 Rename BIMVFIConcatVideos to TweenConcatVideos
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>
2026-02-12 23:12:16 +01:00
EthanfelandClaude Opus 4.6 e37cc3dd2e Rename project to ComfyUI-Tween
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>
2026-02-12 23:08:54 +01:00
EthanfelandClaude Opus 4.6 42ebdd8b96 Add SGM-VFI (CVPR 2024) frame interpolation support
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>
2026-02-12 23:02:48 +01:00