(deforum) FILM Interpolation
Turn 30 sparse frames into 120 smooth ones with Google's FILM
- image
- IMAGE
Frame interpolation is how you turn a cheap, choppy animation into a smooth one without rendering more frames. (deforum) FILM Interpolation bundles Google's FILM (Frame Interpolation for Large Motion) model to do exactly that: feed it a stream of rendered frames and it manufactures the frames in between, so your 30-frame render becomes 60 or 120 frames of video. It's the standard post-process for "I want Deforum's look but my GPU can only render every Nth frame."
How it works
The node keeps a one-frame memory. Each time an image arrives it stashes it; when a second image is in hand, it runs FILM inference between the pair, producing inter_amount frames interpolated along the motion. Then it keeps the second image and waits for the next one - a streaming pairwise process, not a batch one. The model is loaded lazily on first use (FILM needs CUDA, and the node pushes the model to GPU on init), so the very first call is slow and the rest are fast.
This is the same role Fannovel16's Frame-Interpolation pack plays in the wider ecosystem, just wired into the Deforum family and hardcoded to FILM. If you already run that pack, you don't need this node - but if you're all-in on the "(deforum)" graph, it's one less dependency.
The inputs and outputs that matter
- image - your stream of frames. Batch them and the node processes each image individually, keeping the pairwise memory across the whole batch.
- inter_amount (INT, 1–10000, default 2) - how many frames to generate between each input pair. 2 doubles the frame count; higher gives you slower, smoother motion at the cost of runtime. You'll rarely need more than 3–4.
- skip_first (BOOLEAN, default true) - drop the first generated frame. Since FILM's outputs typically include the boundary frames, keeping this on avoids duplicating the input frame.
- skip_last (BOOLEAN, default false) - drop the last generated frame. Turn on only if you're seeing a duplicated tail frame in your output.
Output:
- IMAGE - the interpolated frame batch. Wire it to a video save node or your encoder.
Installing this pack
Part of Deforum Nodes by XmYx. ComfyUI Manager: search Deforum Nodes, or:
cd ComfyUI/custom_nodes
git clone https://github.com/XmYx/deforum-comfy-nodes
Restart and let install.py pull the deforum-studio backend from GitHub plus the scientific-Python stack (numpy pinned below 2.0; Python 3.10 required). The FILM weights are fetched by the backend on first use, so the first run downloads a model file.
Common issues
- First run downloads a model and stalls. Expected - FILM's weights come down on first invocation.
- Duplicate frames at the join. Classic skip_first/skip_last problem. If you see the same frame twice in a row, flip
skip_firstto on (orskip_laston for a tail duplicate). These toggles exist precisely because the boundary frames get repeated. - "No frames returned" on a single image. The node needs a pair to interpolate - one image in a batch produces nothing, by design. Give it at least two.
- Interpolation smears on fast motion. FILM is good, but nothing beats garbage in / garbage out. If your source frames move wildly between renders, the in-betweens will ghost. Interpolate from a denser render.
Inputs (4)
| Name | Type | Default | Description |
|---|---|---|---|
| image | IMAGE | — | |
| inter_amount | INT | 21–10000 | — |
| skip_first | BOOLEAN | true | — |
| skip_last | BOOLEAN | false | — |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| IMAGE | IMAGE | — |