Nodes/WAS Node Suite v3/EMA-VFI Frame Interpolation
ComfyUI Node Runs on cloud

EMA-VFI Frame Interpolation

Invent frames between frames with motion, not crossfades

By WASasquatch·Created 3 years ago·Updated 4 days ago· 1,844
EMA-VFI Frame Interpolation
  • images
  • ema_vfi_model
  • images
  • frame_count
multiplier2

Frame interpolation is how you raise a sequence's frame rate without re-rendering it: instead of crossfading one frame into the next (which smears anything that moves), a motion-based interpolator works out where things actually moved between the two frames and draws the in-between frame with that motion accounted for. That's what this node does, using the EMA-VFI network - a well-trodden video-interpolation architecture that WAS Suite v3 vendors and runs on torch, on ComfyUI's own device.

Reach for it when you generated a video at a low frame rate and want it smooth, when you want a convincing slow-mo by interpolating up before dropping the playback rate, or when you need to double a sequence before feeding a downstream stage. It's the same class of tool the community uses to push short model outputs up toward cinematic frame rates, and WAS ships it so you don't need a separate EMA-VFI pack to do it.

How it works

You feed it an ordered batch of frames - at least two, all the same size - plus an ema_vfi_model from EMA-VFI Model Loader (the loader is where the checkpoint is chosen), and a multiplier: 2 puts one new frame in every gap, 4 puts three. The maths is simple: a run of n frames at multiplier m comes back as (n - 1) * m + 1 frames, originals included.

Here's the checkpoint gotcha, and it's the one that will bite you: a multiplier above 2 needs one of the ours_t checkpoints. The plain ours weights were trained to land a new frame exactly halfway between two inputs; the _t variants were trained to land anywhere between them, which is what multiplying by 4 or 8 actually asks of the network. Pick ours and ask for 4 and you're going to get told no - either cap the multiplier at 2 or switch to an ours_t model in the loader.

The inputs and outputs that matter

  • images - the sequence in order, minimum two frames, all the same size.
  • ema_vfi_model - from the loader. One loader can feed several interpolation nodes, because the loader builds the network once and keeps it for the life of the process.
  • multiplier - 2 to 8. Above 2, see above.

Outputs: images, the longer sequence; and frame_count, how many frames came back counting the originals - handy for driving a Save Video node or checking the arithmetic before you hand the batch onward.

Installing it - the weights are the whole install

The pack itself is the usual WAS Node Suite v3 story: ComfyUI Manager → search WAS Node Suite v3, or clone into custom_nodes. The network architecture ships inside the pack, but the weights do not, and nothing downloads unless you let it. Two routes:

  1. Turn on auto-download - set network: true under features: in the pack's config.yaml (written on first start at <ComfyUI user dir>/was-node-suite/config.yaml). The checkpoint is then fetched on the first run that needs it from the pack's own mirror of the EMA-VFI release weights.
  2. Or place a checkpoint in ComfyUI/models/EMA-VFI/ yourself and restart so it appears in the loader's list. The four released files are ours, ours_small, and their _t variants - the small ones are faster and less accurate, the _t ones are the any-timestep models a high multiplier needs.

If a run stops with a message naming a missing checkpoint, that's not a broken install - that's the network toggle being off and the file not being where the pack looks. Fix one of those two things and it just runs.

CategoryWAS Suite/Animation

Inputs (3)

NameTypeDefaultDescription
imagesIMAGEThe sequence to interpolate, in order. Needs at least two frames, all the same size.
ema_vfi_modelEMA_VFI_MODELThe interpolation network, from EMA-VFI Model Loader, which is where the checkpoint is chosen. One loader can feed several nodes so the network is built once.
multiplierINT22–8How many times the frame rate goes up. 2 puts one new frame in each gap, 4 puts three. Above 2 needs an 'ours_t' checkpoint.

Outputs (2)

NameTypeDescription
imagesIMAGEThe longer sequence, originals included. A run of n frames at multiplier m answers (n - 1) * m + 1 frames.
frame_countINTHow many frames came back, counting the originals.