Detailer For Video (SEGS/pipe)
Run the detail pass across every frame
- image_frames
- segs
- basic_pipe
- detailer_hook
- refiner_basic_pipe_opt
- scheduler_func_opt
- image
- segs
- basic_pipe
- cnet_images
Detailer For Video (SEGS/pipe) is the detailer built for moving pictures. It takes the same detect-crop-refine loop that fixes faces in a still image and applies it across a whole batch of frames - the kind AnimateDiff or a video model produces. Instead of one image with one mask, it handles SEGS whose masks span many frames, refining the detected region in each one. Its class name still says "AnimateDiff" (a fossil from when that was the video workflow), but the job is general: re-detail a region, frame by frame, at proper resolution.
Video makes the small-face problem worse, not better. A face that's tiny in one frame is tiny in all of them, and now the mangling flickers. This node exists so you can run a face/hand detail pass over the sequence the same way you would over a single render. It's the same core idea Impact Pack is famous for - crop the region, sample it at full resolution, paste it back - extended to a stack of frames so the refined detail is consistent shot to shot.
The inputs that matter
It's a big node because it's a full sampler plus a detailer plus frame handling, but the ones you actually set:
- image_frames - your batch of frames (IMAGE).
- segs - the detected regions, as batch masks spanning the frames. This is the video-specific bit: the SEGS carry per-frame masks.
- basic_pipe - the bundle with your model/clip/vae/prompts.
- guide_size (default 512) and max_size (default 1024) - the resolution the cropped region gets upscaled to for its detail pass. Bigger guide_size means more detail and more compute per frame.
- denoise (default 0.5) - how hard the refine pass hits. Keep it moderate; on video, too high means each frame drifts differently and you reintroduce the flicker you were trying to kill.
- steps / cfg / sampler_name / scheduler / seed - standard sampling controls.
There's also an optional refiner_basic_pipe_opt with a refiner_ratio for SDXL-style refiner passes, and a detailer_hook slot for the pack's noise-injection and scheduling hooks.
Outputs: the detailed image (your frames, refined), the segs passed through, the basic_pipe passed through for chaining, and cnet_images (the per-region control images, a list, mostly for debugging).
Getting good results
Consistency is the whole game with video, and the enemy is per-frame divergence. Two practical levers: keep denoise restrained so the pass sharpens rather than reinvents, and be deliberate about seed so frames don't each wander somewhere different. The community reality check is worth carrying - a per-frame detail pass helps most where the flaw is genuinely visible (small, mangled faces and eyes); on a face that's already adequately sized, the "improvement" is often invisible at normal viewing size and just costs you time. Reach for this when the faces are actually broken, not reflexively.
The honest constraints
Video detailing is expensive. You're running a sampling pass per frame, so a clip is N times the cost of a single image - plan for it. And there's a memory quirk worth flagging from how this pattern is used in the wild: the video detailing workflows built on Impact Pack are often RAM-hungry rather than VRAM-hungry, because they hold many frames at once - one well-known WanFaceDetailer workflow warns people off attempting it under 64GB of system RAM. If your machine chokes, it may be system memory, not the GPU. Work in shorter frame windows if so.
Also mind the ComfyUI-native gotcha: keep your batch/list handling straight, because a detail pass over frames only makes sense if the frames and their masks line up. Bad or empty SEGS means nothing gets detailed.
Installing it
The node comes with ComfyUI Impact Pack. Install via ComfyUI-Manager (search ComfyUI Impact Pack, Install, restart), or manually: cd ComfyUI/custom_nodes && git clone https://github.com/ltdrdata/ComfyUI-Impact-Pack, install its requirements.txt in ComfyUI's Python environment (portable: ..\..\..\python_embeded\python.exe -m pip install -r requirements.txt), restart. First run auto-downloads a SAM model to ComfyUI/models/sams. To detect the regions this node refines you'll also want a detector - the YOLO provider now lives in the separate ComfyUI-Impact-Subpack since v8.0 - and, obviously, a video/AnimateDiff pipeline upstream to produce the frames. Impact Pack is ltdrdata's, maintained alongside ComfyUI-Manager, so it's solid and current.
Inputs (18)
| Name | Type | Default | Description |
|---|---|---|---|
| image_frames | IMAGE | — | |
| segs | SEGS | — | |
| guide_size | FLOAT | 51264–16384 | — |
| guide_size_for | BOOLEAN | true | — |
| max_size | FLOAT | 102464–16384 | — |
| seed | INT | 00–18446744073709550000 | — |
| steps | INT | 201–10000 | — |
| cfg | FLOAT | 8.000–100 | — |
| sampler_name | COMBO | 44 options: euler, euler_cfg_pp, euler_ancestral, euler_ancestral_cfg_pp, heun, heunpp2, +38 | |
| scheduler | COMBO | 17 options: simple, sgm_uniform, karras, exponential, ddim_uniform, beta, +11 | |
| denoise | FLOAT | 0.500.0001–1 | — |
| feather | INT | 50–100 | — |
| basic_pipe | BASIC_PIPE | If the `ImpactDummyInput` is connected to the model in the basic_pipe, the inference stage is skipped. | |
| refiner_ratio | FLOAT | 0.200–1 | — |
| detailer_hookopt | DETAILER_HOOK | — | |
| refiner_basic_pipe_optopt | BASIC_PIPE | — | |
| noise_mask_featheropt | INT | 200–100 | — |
| scheduler_func_optopt | SCHEDULER_FUNC | — |
Outputs (4)
| Name | Type | Description |
|---|---|---|
| image | IMAGE | — |
| segs | SEGS | — |
| basic_pipe | BASIC_PIPE | — |
| cnet_images | IMAGE | — |