Comfy-Org/ComfyUI · error · ValueError

Unrecognized frame interpolation model format

Error message

Unrecognized frame interpolation model format

What it means

Frame-interpolation model loader raises this when detect_rife_config cannot recover the RIFE IFNet architecture (head channels, channel widths) from the state dict. Before this, keys are remapped (blockN.* -> blocks.N.*) and teacher/caltime keys are stripped, so failure means the checkpoint matches no known RIFE layout — wrong model file, unsupported variant, or corrupted download.

Source

Thrown at comfy_extras/nodes_frame_interpolation.py:69

            model = FILMNet()
            model.load_state_dict(sd)
            return model

        # Try RIFE (needs key remapping for raw checkpoints)
        sd = comfy.utils.state_dict_prefix_replace(sd, {"module.": "", "flownet.": ""})
        key_map = {}
        for k in sd:
            for i in range(5):
                if k.startswith(f"block{i}."):
                    key_map[k] = f"blocks.{i}.{k[len(f'block{i}.'):]}"
        if key_map:
            sd = {key_map.get(k, k): v for k, v in sd.items()}
        sd = {k: v for k, v in sd.items() if not k.startswith(("teacher.", "caltime."))}

        try:
            head_ch, channels = detect_rife_config(sd)
        except (KeyError, ValueError):
            raise ValueError("Unrecognized frame interpolation model format")
        model = IFNet(head_ch=head_ch, channels=channels)
        model.load_state_dict(sd)
        return model


class FrameInterpolate(io.ComfyNode):
    @classmethod
    def define_schema(cls):
        return io.Schema(
            node_id="FrameInterpolate",
            display_name="Run Frame Interpolation Model",
            category="video",
            search_aliases=["rife", "film", "frame interpolation", "slow motion", "interpolate frames", "vfi"],
            inputs=[
                FrameInterpolationModel.Input("interp_model"),
                io.Image.Input("images"),
                io.Int.Input("multiplier", default=2, min=2, max=16),
            ],

View on GitHub (pinned to 1c6d8d45b3)

Solutions

  1. Verify you are loading a supported RIFE checkpoint (the model the node documents); re-download if the file is smaller than expected.
  2. Inspect the state dict keys yourself (torch.load then list(k for k in sd)[:20]) and compare against a known-good RIFE checkpoint.
  3. If it is a fork with renamed keys, remap the keys to the expected layout before loading, or use a stock RIFE release.

Example fix

# before
model = load_rife('GMFSS_model.pth')  # wrong family
# after
model = load_rife('rife-v4.25.pth')     # supported RIFE checkpoint
Defensive patterns

Strategy: validation

Validate before calling

sd = torch.load(path, map_location='cpu')
probe = [k for k in sd if not k.startswith(('teacher.', 'caltime.'))]
if not any(k.startswith(('blocks.', 'block')) for k in probe):
    raise ValueError(f'{path} does not look like a RIFE IFNet checkpoint (first keys: {probe[:5]})')

Try / catch

try:
    model = load_rife(path)
except ValueError as e:
    if 'Unrecognized frame interpolation model format' in str(e):
        raise ValueError(f'{path} is not a supported RIFE checkpoint; download a stock RIFE release') from e
    raise

Prevention

When it happens

Trigger: Loading a non-RIFE checkpoint (or a RIFE variant whose key layout detect_rife_config doesn't recognize) via the frame-interpolation loader; also truncated/corrupted .pth downloads where the probe keys are missing.

Common situations: Pointing the loader at FILM/GMFSS/other interpolator weights by mistake; community RIFE forks (RIFE v4 HD, realpath variants) with renamed keys; interrupted downloads (KeyError inside detect_rife_config is caught and re-raised as this generic message).

Related errors


AI-assisted analysis of Comfy-Org/ComfyUI@1c6d8d45b3 (2026-08-14). Data as JSON: /api/errors/c1148e9393140242. Report an issue: GitHub.