VELVET VICE LTX — Temporal Anti-Ghost
When fast motion leaves ghosts in your video frames
- images
- ghost_analysis
- corrected_images
- repair_report
LTX is the speed tier of local video generation, and speed has a price: fast motion comes out glitchy, and one of the classic glitches is ghosting - a trailing smear or duplicated edge that follows a moving subject, like an afterimage that wasn't exposed long enough. It's bad enough that the LTX community literally shifts to 48 FPS for image-to-video to reduce glitchy fast motion. VelvetViceLTXTemporalAntiGhost is the pack's surgical fix: it replaces only the ghosted regions with what the neighboring frames actually show, instead of blurring your whole clip.
How it works
The honest trick is that this node doesn't detect anything itself. It consumes a VELVET_VICE_GHOST_ANALYSIS package produced by the pack's companion Ghost Analyzer (VelvetViceLTXGhostAnalyzer), which runs a motion-compensated detector on a low-resolution copy of the clip - it never changes your input frames, and it protects the first/last frames and scene cuts.
Anti-Ghost then does the repair pass:
- For every frame the Analyzer approved, it takes the previous and next frames.
- It warps each neighbor along the Analyzer's dense motion vectors (
flow_prev_dx/dy,flow_next_dx/dy) so they align with the current frame's motion. - It averages the two warped neighbors into a "temporal consensus" - effectively, what that region should look like given the motion on both sides.
- It blends that consensus into the ghost-masked regions only, at your chosen strength.
Original endpoints, protected scene cuts, and RIFE anchor frames are left untouched, so you don't get weird smearing at cuts or motion-boundary repairs that make things worse.
The inputs that matter
- images - your
[frames, height, width, channels]image batch, straight from the sampler or VAE decode. - ghost_analysis - the package from the Ghost Analyzer. It's wired
lazy, so if you disable the node it won't force the Analyzer to run. - enabled -
trueby default; flip it off and the node returns your frames untouched with a "bypassed" note. - strength (0.55) - how aggressively the temporal consensus replaces the ghosted pixels. Start here before touching anything else; 0.55 is a reasonable middle.
- maximum_pixel_change (0.2) - a guard rail: it caps how far any pixel can move, so the fix can't introduce its own artifacts on already-messed-up frames.
- minimum_frame_score (1.0) - only frames the Analyzer scored at or above this get repaired. Raise it to be more conservative.
- memory_mode -
AUTO/GPU/CPU. AUTO picks the device; if you're VRAM-starved,CPUtrades time for memory.
It outputs corrected_images and a repair_report string - worth reading the first time to see how many frames were eligible and why.
Installing it
Part of the Velvet Vice LTX pack, shared by the LTX 2.3 and 2.5 workflows. ComfyUI Manager → search "VELVET VICE - LTX" (registry velvet-vice-ltx), or:
cd ComfyUI/custom_nodes
git clone https://github.com/Velvet-Vice/velvet-vice-ltx
Restart, then Ctrl+F5 to hard-refresh the browser. No extra Python dependencies - the pack is stdlib plus PyTorch. The node itself ships in the pack; the heavy model files (LTX base, Gemma text encoder, VAEs) are what the rest of the workflow needs.
Common issues
- It returns your frames unchanged with a "bypassed" message -
enabledis off orstrengthis 0. That's the intended escape hatch, not a bug. - It can't run without the Ghost Analyzer - if the
ghost_analysisinput isn't connected to the pack's Analyzer, the node has nothing to work from. Reconnect it (don't feed it a mask from somewhere else; it validates the package schema). - It's slow on long clips - the warp pass runs per eligible frame.
AUTOmode is fine on 24GB+; for 12GB-ish cards,CPUmode keeps VRAM free for the rest of the workflow at the cost of wall time.
It's marked Experimental for a reason - motion analysis is fiddly and no fix is free. But for the fast-motion ghosting that plagues LTX, it's the one tool in the pack that actually removes the artifact instead of just softening it.
Inputs (7)
| Name | Type | Default | Description |
|---|---|---|---|
| images | IMAGE | — | |
| ghost_analysis | VELVET_VICE_GHOST_ANALYSIS | — | |
| enabled | BOOLEAN | true | — |
| strength | FLOAT | 0.550–1 | — |
| maximum_pixel_change | FLOAT | 0.200.02–1 | — |
| minimum_frame_score | FLOAT | 1.00–100 | — |
| memory_mode | COMBO | AUTO | 3 options: AUTO, GPU, CPU |
Outputs (2)
| Name | Type | Description |
|---|---|---|
| corrected_images | IMAGE | — |
| repair_report | STRING | — |