Nodes/ComfyUI_DiffuEraser/Propainter_Loader
ComfyUI Node

Propainter_Loader

The ProPainter stack that pre-fills your masked video

By smthemex·Created 2 years ago·Updated 5 months ago· 279
Propainter_Loader
    • model
    propainter
    flow
    fix_raft
    device

    Video inpainting has a trick that image inpainting doesn't need: before you regenerate anything, you can propagate the visible pixels along the motion of the video to fill in behind the removed object. That's the whole job of ProPainter, the non-diffusion half of this pack - and Propainter_Loader is the node that gets its three pieces onto the GPU. If DiffuEraser_Loader is the diffusion side's assembly line, this is the optical-flow side's.

    Three checkpoints, all pulled from the same dropdown source (ComfyUI/models/DiffuEraser), all .pth files downloaded from the ProPainter v0.1.0 release:

    • fix_raft - raft-things.pth. RAFT-opt, the optical flow network that estimates how pixels move between frames.
    • flow - recurrent_flow_completion.pth. The recurrent network that completes the flow fields inside the masked region, which is what lets it infer "these pixels were moving like this, so fill them like this."
    • propainter - ProPainter.pth. The actual transformer-based inpainting generator that produces the filled frames.
    • device - a plain dropdown (cpu/cuda/mps). On a machine with a GPU this should already default sensibly; set it to cuda if you're on Linux or Windows and it isn't picking it up.

    The dropdowns list every file in models/DiffuEraser, so you don't need a special subfolder - but the README's convention is to drop all three .pth files in a propainter subfolder so the diffusion weights don't get mixed in with the flow weights. Either way, the node insists you pick all three: the code literally raises "need load all models" if any of them is left on "none". No guessing, no silent half-loaded state.

    Output: a single model output of the custom Propainter_Loader type, wired into exactly one place - the model input of Propainter_Sampler.

    Why this exists at all: diffusion is good at inventing plausible pixels but slow and prone to temporal flicker, so you don't want it doing the whole job from noise. ProPainter gives it a strong, temporally-consistent first guess - the "priori" - and the diffusion pass only needs to refine the edges and details it can't get right. The README even says outright that for many jobs ProPainter's output alone is enough (at a max edge of 960px, upscale afterwards), which is why the pack ships both paths. This loader is the cheap, deterministic, reliable half - worth internalizing if you want to skip the diffusion step entirely.

    CategoryDiffuEraser

    Inputs (4)

    NameTypeDefaultDescription
    propainterCOMBO1 options: none
    flowCOMBO1 options: none
    fix_raftCOMBO1 options: none
    deviceCOMBO3 options: cpu, cuda, mps

    Outputs (1)

    NameTypeDescription
    modelPropainter_Loader