IFRNet VFI
The lightweight, efficient frame interpolator
- frames
- optional_interpolation_states
- IMAGE
IFRNet is the efficiency pick in the ComfyUI Frame Interpolation pack. When you want smoother video without a huge time or VRAM hit, this is a sensible default - it was designed to be fast and light while still producing clean in-betweens. If you're on modest hardware or interpolating long clips where a heavyweight model would time out, start here.
The job, if this is new to you: frame interpolation invents new frames between your existing ones so a choppy low-fps clip plays back smooth. You generate video cheaply at a low frame count (AnimateDiff, Wan) and then interpolate 2x or 4x to hit a watchable frame rate, instead of paying the diffusion cost of every real frame. IFRNet does that last step quickly.
How it works
IFRNet - "Intermediate Feature Refine Network," from CVPR 2022 - folds motion estimation and frame synthesis into a single efficient encoder-decoder. Rather than run a separate heavy optical-flow network and then a synthesis network, it progressively refines intermediate features to produce the middle frame in one pass. That single-network design is the reason it's fast. You don't touch the internals; you pick which trained weights to load and, optionally, a processing scale.
The inputs that matter
- frames (IMAGE) - the clip you're smoothing, at least 2 frames, from your VAE decode or a Load Images node.
- ckpt_name - four weights, split two ways: size (
Ssmall vsLlarge) and training set (Vimeo90KvsGoPro). So you getIFRNet_S_Vimeo90K.pth,IFRNet_L_Vimeo90K.pth,IFRNet_S_GoPro.pth,IFRNet_L_GoPro.pth. TheSbuilds are faster and lighter; theLbuilds are higher quality. TheGoPro-trained ones lean toward fast real-world camera motion,Vimeo90Ktoward general content. Start withIFRNet_S_Vimeo90K.pthand step up if you need more. All download on first run. - multiplier (INT, default 2) - output frames per gap. 2 doubles the frame count, 4 quadruples it.
- scale_factor (default 1) - a resolution knob for the internal flow computation, with choices
0.25, 0.5, 1, 2, 4. Values below 1 process motion at a lower internal resolution, which saves memory and time on high-res clips (handy when you'd otherwise OOM); 1 is the standard. Leave it at 1 unless you're fighting VRAM or artifacts. - clear_cache_after_n_frames (INT, default 10) - lower it on long clips if memory gets tight.
An optional optional_interpolation_states input takes a Make Interpolation State List for skipping specific frame pairs. Usually left unwired.
Output is a single IMAGE batch - pipe it into a Video Combine node (VideoHelperSuite) to encode.
Installing it
It ships in the whole ComfyUI Frame Interpolation pack:
- ComfyUI Manager - search ComfyUI Frame Interpolation, install, restart.
- Manual -
cd ComfyUI/custom_nodes && git clone https://github.com/Fannovel16/ComfyUI-Frame-Interpolation, thenpython install.py(Linux, in your ComfyUI venv) orinstall.bat(Windows). Restart.
The IFRNet weights download on first use.
Common issues
If you're on a high-resolution clip and hitting out-of-memory, IFRNet gives you two levers most nodes don't: drop scale_factor to 0.5 or 0.25 to process motion at a lower internal resolution, and/or lower clear_cache_after_n_frames. That combination is why IFRNet is the one people reach for on tight VRAM.
The pack-wide dependency issues still apply: the cupy backend is the usual install snag, so run install.bat on Windows instead of install.py. If the GPU is idle and interpolation crawls, the backend probably fell back to CPU - check that cupy installed against your CUDA version. And interpolation smooths existing motion; it won't fix source frames that were already inconsistent.
Inputs (6)
| Name | Type | Default | Description |
|---|---|---|---|
| ckpt_name | COMBO | 4 options: IFRNet_S_Vimeo90K.pth, IFRNet_L_Vimeo90K.pth, IFRNet_S_GoPro.pth, IFRNet_L_GoPro.pth | |
| frames | IMAGE | — | |
| clear_cache_after_n_frames | INT | 101–1000 | — |
| multiplier | INT | 22–1000 | — |
| scale_factor | COMBO | 1 | 5 options: 0.25, 0.5, 1, 2, 4 |
| optional_interpolation_statesopt | INTERPOLATION_STATES | — |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| IMAGE | IMAGE | — |