ComfyUI的视频抠像能力,来自它把视频解码、深度学习分割、遮罩后处理和透明视频编码拆成了可自由连接的节点。相比传统AE或剪映的抠像功能,ComfyUI更适合批量处理、自定义模型和需要精细控制遮罩的场景。下面围绕视频抠像的时序难题、常用节点模型和完整工作流展开。

一、视频抠像与图片抠像的关键差异
单张图片抠像只关心当前帧的空间分割是否准确,模型可以对边缘精修、对半透明区域反复迭代,最终输出一张高质量Alpha遮罩。视频抠像则不同,它要求在连续帧之间保持分割结果稳定。如果每一帧独立推理,哪怕单帧准确率很高,逐帧播放时也会出现明显闪烁。原因在于深度学习模型对相邻帧的细微变化非常敏感,输入画面中人物轻微移动、光照变化或自动曝光调整,都可能导致前景边缘像素被重新分类,产生跳变。
另一个容易被忽略的问题是半透明区域。发丝、玻璃杯边缘、烟雾和运动模糊区域在单帧中可能被判定为前景或背景,但这种判定在相邻帧可能反转。人眼对动态画面中的局部闪烁非常敏感,因此视频抠像不能只追求单帧IoU指标,还要引入时序平滑策略。
ComfyUI的节点式工作流让这类处理变得直观。你可以把视频帧序列送入同一个分割模型,再通过遮罩后处理节点做时序稳定、羽化和腐蚀膨胀。相比自己写OpenCV循环,ComfyUI能直接在图形界面中调整参数并实时预览,适合快速验证模型效果。
二、ComfyUI中常用的深度学习抠像节点与模型
ComfyUI生态里目前主流的视频抠像方案包括BiRefNet、RVM和SAM2。BiRefNet专注于高分辨率显著性目标检测,对前景与背景分离干脆,适合人物、产品等主体突出场景。RVM专门为视频设计,内置循环神经网络结构,能够利用前一帧的隐藏状态平滑当前帧结果,在时序一致性方面表现很好。SAM2则提供通用分割能力,可以通过点或框提示锁定目标,再对整段视频进行跟踪分割。
在节点层面,通常使用Load Video节点读取视频文件,再通过Inpaint或Mask相关节点把RGB帧送入抠像模型。BiRefNet有对应的ComfyUI自定义节点,RVM也有专门节点包。输出通常是一张二值遮罩或灰度Alpha图。之后可以用Feathered Mask节点进行羽化,用Morphology节点做膨胀收缩,最后通过Save Images或者Save Video节点输出。
模型选择需要看场景。如果视频主体稳定、背景不复杂,BiRefNet能给出非常锐利的边缘;如果背景复杂、存在运动模糊或头发细节,RVM的时序建模更有优势;如果需要精细抠出某个特定物体而不是整幅前景,SAM2的提示式分割更灵活。
{
"nodes": [
{
"id": 1,
"type": "LoadVideo",
"inputs": {},
"widgets_values": ["input.mp4", "video"]
},
{
"id": 2,
"type": "BiRefNet",
"inputs": {"images": [1, 0]},
"widgets_values": ["General", 1024]
},
{
"id": 3,
"type": "FeatheredMask",
"inputs": {"mask": [2, 0]},
"widgets_values": [3, 3, 0]
},
{
"id": 4,
"type": "SaveVideo",
"inputs": {"images": [1, 0], "mask": [3, 0]},
"widgets_values": ["output.webm", "webm", 30, 18]
}
]
}
三、实战:从MP4视频到透明通道输出
下面以一个人像视频为例,演示如何在ComfyUI中搭建完整流程。第一步是加载视频文件。ComfyUI的视频加载节点通常会把视频拆成帧,并保留帧率信息。建议先将视频转为固定帧率的MP4,例如30fps,避免变帧率视频在抽取帧时出现时间戳错位。
第二步是送入抠像模型。以BiRefNet为例,输入尺寸一般设为1024或更高,但显存有限时可以降到768。模型输出的Alpha遮罩需要与原始帧尺寸对齐。如果输入帧为1920乘1080,而模型输出为1024乘1024,需要接一个Resize节点把遮罩缩回原始分辨率,再进行合成。
第三步是遮罩后处理。原始遮罩边缘可能有锯齿,直接合成会显得不自然。可以使用羽化节点,让边缘产生1到3像素的过渡;对于头发等细节,使用形态学开运算去掉孤立噪点;如果人物有快速运动,还可以接入一个时域平滑节点,对连续3到5帧的遮罩做高斯加权平均,减少闪烁。
第四步是输出带Alpha通道的视频。WebM格式支持VP9编码和Alpha通道,体积小,适合网页播放;MOV格式支持ProRes 4444,适合后期合成。在Save Video节点中选择对应容器和编码器即可。输出后可以用剪辑软件叠加到新背景上检查边缘质量。
import json
import requests
SERVER_URL = "http://127.0.0.1:8188/prompt"
workflow = {
"1": {
"class_type": "LoadVideo",
"inputs": {
"video": "input.mp4",
"frame_rate": 30
}
},
"2": {
"class_type": "BiRefNet",
"inputs": {
"images": ["1", 0]
}
},
"3": {
"class_type": "FeatheredMask",
"inputs": {
"mask": ["2", 0],
"feather": 2
}
},
"4": {
"class_type": "SaveVideo",
"inputs": {
"images": ["1", 0],
"mask": ["3", 0],
"filename_prefix": "output",
"format": "webm"
}
}
}
response = requests.post(SERVER_URL, json={"prompt": workflow})
print(response.status_code)
print(response.json())
四、提升时序稳定性与边缘细节的方法
时序稳定是视频抠像的核心难点。如果使用的模型本身不具备时序建模能力,可以在后处理阶段加入时域滤波。常见做法是维护一个长度为5的遮罩队列,对当前帧与前后两帧的遮罩做加权平均,权重可以设为0.2、0.2、0.2、0.2、0.2,也可以根据运动幅度动态调整。运动越大,时域平滑窗口越小,避免拖影。
边缘细节方面,羽化半径不宜过大,否则前景边缘会出现半透明光晕。对于发丝级别细节,单纯羽化无法解决,需要模型输出高质量Alpha。可以尝试提高推理分辨率,或使用BiRefNet的精细化模型变体。另一种技巧是将遮罩与原始图像做边缘引导滤波,让遮罩边缘贴合图像中的高频纹理。
性能优化同样重要。视频通常有数百帧,逐帧在高分辨率下推理会消耗大量显存。可以使用帧采样策略,先生成关键帧遮罩,再利用光流或视频分割模型插值中间帧。也可以把模型转为FP16或INT8量化,推理速度提升明显。ComfyUI的批处理节点支持一次处理多帧,充分利用GPU并行能力。
如果输出结果仍有局部闪烁,可以尝试在遮罩上应用中值滤波,核大小3到5。中值滤波能够去除孤立的前景或背景像素,对细小噪点有很好抑制作用。对于大范围错误,则需要回到模型选择或提示设置,调整分割目标。
五、总结
ComfyUI让视频抠像不再是专业后期软件的专属功能。通过节点式界面,可以灵活组合视频加载、深度学习分割、遮罩后处理与透明通道输出,快速验证不同模型在具体素材上的表现。实际使用时,要优先根据视频主体和背景复杂度选择BiRefNet、RVM或SAM2,并在后处理阶段重视时序平滑与边缘精修。只有把单帧分割精度和连续帧稳定性结合起来,才能得到可直接用于直播、短视频和影视后期的干净前景。
视频抠像没有一套参数通吃所有素材,面对不同场景需要调节羽化、腐蚀膨胀、时域窗口和推理分辨率。建议从短片段开始测试,逐步扩展参数,并保持节点参数记录,方便复现效果。
ComfyUI视频抠像深度学习智能抠像视频人像分割修改时间:2026-08-23 11:43:46