尧图网络科技YAOTU DIGITAL 获取报价
获取报价
首页 / 资讯中心 / 文章详情

RobustVideoMatting 完整训练指南:四阶段流水线、数据集构建与评测复现

发布时间:2026/9/25 1:50:14

资讯中心
01
ARTICLE

RobustVideoMatting 完整训练指南:四阶段流水线、数据集构建与评测复现

RobustVideoMatting 完整训练指南:四阶段流水线、数据集构建与评测复现
人工智能深度学习计算机视觉视频处理【免费下载链接】RobustVideoMattingRobust Video Matting in PyTorch, TensorFlow, TensorFlow.js, ONNX, CoreML!项目地址https://gitcode.com/gh_mirrors/ro/RobustVideoMatting点击查看免费下载本文以 RobustVideoMatting 官方训练文档为主体结合仓库中的 train.py、train_config.py 与 dataset/ 源码完整讲解从数据集准备、四阶段渐进式训练到合成评测样本与指标评估的端到端复现流程。读完本文你将掌握如何配置train_config.py、运行 Stage 1–4 的全部训练命令、理解每个超参数的底层作用并学会用/evaluation下的脚本评估模型输出。说明官方训练文档面向“复现论文结果”这一目标编写本文同样以其为边界。若你想在训练流程中增删数据集需要自行适配训练代码。另外仓库中发布的训练脚本已针对通用环境做了清理官方训练时使用的部分基础设施自定义逻辑并不在代码中如有 bug 请到仓库提交 issue。一、训练流水线总览RobustVideoMatting 的训练采用四阶段渐进式策略每一阶段在前一阶段基础上逐步提高输入分辨率、拉长时序长度并切换训练数据源从而让网络先学会低分辨率下的基本抠图能力再逐步精化到高分辨率细节阶段数据集分辨率时序长度关键目标Stage 1VideoMatte240K512低分辨率15 帧训练全网络backbone/aspp/decoderrefiner 冻结Stage 2VideoMatte240K51250 帧拉长时序学习更长时间依赖Stage 3VideoMatte240K512 2048双分辨率40 6引入高分辨率训练启用 refinerStage 4ImageMatte512 204840 6用静态图像精修细节微调阶段从 train.py 中的参数定义 可以看到--train-hr开启高分辨率训练Stage 3/4此时每个训练步包含一次低分辨率 pass 和一次高分辨率 pass--downsample-ratio默认 0.25控制高分辨率 pass 中输入网络的降采样比例。每个 epoch 内还会交替执行抠图 pass与分割 pass详见下文多任务协同训练。训练环境参考官方在数据中心机器上完成训练硬件为 48 核 CPU、300G 内存、4 块 NVIDIA V100 32G。你需要根据自身显存调整分辨率与--num-workerstrain.py 顶部注释明确提示默认num-workers8在内存不足时可能导致 dataloader 意外退出。二、数据集准备训练涉及三类数据抠图数据集提供前景 alpha、背景数据集提供合成背景与分割数据集辅助多任务训练。2.1 抠图数据集VideoMatte240KStage 1/2/3 使用从 BGMv2 项目页面下载Stage 1、2 使用 JPEG SD 版约 6GStage 3、4 使用 JPEG HD 版约 60G。需手动把训练集中的0000、0100、0200、0300四个 clip 移到验证集。ImageMatteStage 4 使用由 Distinctions-646 与 Adobe Image Matting 两个数据集合并而成需联系原作者获取。合并时只保留含人像的样本。仓库提供官方使用的完整图片清单imagematte_train.txt 与 imagematte_valid.txt评估清单见 aim_test.txt 与 d646_test.txt。从 dataset/imagematte.py 可看到ImageMatteDataset 从fgr/、pha/两个目录读取同名图片将单张图片复制为seq_length帧序列参与训练——这就是静态图像也能训练出视频模型的机制。2.2 背景数据集视频背景官方从 DVM Background Set 中筛选出无人像的 clip仅提取前 100 帧存为 JPEG 序列。官方使用的 clip 清单见 dvm_background_train_clips.txt 与 dvm_background_test_clips.txt。官方也提供预处理版本Train 约 14.6G、Test 约 936M测试集仅用于合成评测样本不参与训练。文档特别强调如使用官方预处理版本请务必缓存到本地避免重复下载造成流量浪费。图像背景训练集为官方从 Google 与 Flickr 抓取的约 8000 张图片未公开发布测试集可直接复用 BGMv2 项目的验证背景集约 200 张它不参与训练仅用于合成评测样本——文档提示若只想快速试跑训练可临时用它顶替训练集。2.3 分割数据集分割数据用于多任务辅助训练详见下文官方使用了三个数据集COCO下载train2017.zip18G与panoptic_annotations_trainval2017.zip821M。注意训练脚本需要的是panoptic 版本。从 dataset/coco.py 可以看到CocoPanopticDataset会解析 panoptic 标注 JSON只保留含category_id 1person的图片并将 person/backpack/tie 三类区域渲染成 255 的前景掩码。YouTubeVIS 2021直接下载 train 集即可无需预处理。加载逻辑见 dataset/youtubevis.py其中对 RLE 掩码解码只取category_id 26person。Supervisely Person Dataset官方先用 supervisely 库把原始编码转成 bitmap 掩码并将大图缩小以避免磁盘读取瓶颈。仓库提供了转换脚本 documentation/misc/spd_preprocess.py其流程为读取项目 → 按标签几何绘制掩码 → 超过 2048 时等比缩放 → 输出train/src、train/msk、valid/src、valid/msk四目录 → 最后把前 100 个样本移到验证集。也可以直接下载官方预处理版本约 800M。⚠️ 数据集下载量巨大SD 6G HD 60G 背景 15G 等建议提前规划磁盘空间并核对train_config.py中的路径约定见下节。三、配置 train_config.py目录结构约定与路径填写dataset 目录格式约定 定义了各数据集期望的目录结构DATA_PATHS字典则提供路径入口。以默认配置为例VideoMattefgr/clip/frame.jpg与pha/clip/frame.jpg并列存放train/valid 分开。ImageMattefgr/sample.jpg与pha/sample.jpg并列不再有 clip 层。背景图片train/valid 目录下平铺图片文件。背景视频clip/frame.jpg的层级结构。COCO panoptic分别提供train2017/图片目录、panoptic_train2017/标注目录与panoptic_train2017.json标注文件。SPDimg/与seg/两个目录且文件数必须一致dataset/spd.py 中有assert校验。YouTubeVISJPEGImages帧目录 instances.json标注文件。# train_config.py 中的默认配置注意均为相对路径按需修改 DATA_PATHS { videomatte: { train: ../matting-data/VideoMatte240K_JPEG_SD/train, valid: ../matting-data/VideoMatte240K_JPEG_SD/valid, }, imagematte: { train: ../matting-data/ImageMatte/train, valid: ../matting-data/ImageMatte/valid, }, background_images: { train: ../matting-data/Backgrounds/train, valid: ../matting-data/Backgrounds/valid, }, background_videos: { train: ../matting-data/BackgroundVideos/train, valid: ../matting-data/BackgroundVideos/valid, }, coco_panoptic: { imgdir: ../matting-data/coco/train2017/, anndir: ../matting-data/coco/panoptic_train2017/, annfile: ../matting-data/coco/annotations/panoptic_train2017.json, }, spd: { imgdir: ../matting-data/SuperviselyPersonDataset/img, segdir: ../matting-data/SuperviselyPersonDataset/seg, }, youtubevis: { videodir: ../matting-data/YouTubeVIS/train/JPEGImages, annfile: ../matting-data/YouTubeVIS/train/instances.json, } }这些键会在 train.py 的 init_datasets 中被逐一读取。注意coco_panoptic下目录与标注文件三者缺一不可而spd只需 img/seg 两目录。四、四阶段训练命令详解训练入口为 train.py它通过torch.multiprocessing.spawn按 GPU 数量自动拉起多进程分布式训练world_size torch.cuda.device_count()。模型默认使用预训练 backbone并会转换为 SyncBatchNorm 后用 DDP 包装train.py。以下四个命令与官方文档完全一致可直接复制运行。Stage 1低分辨率基线python train.py \ --model-variant mobilenetv3 \ --dataset videomatte \ --resolution-lr 512 \ --seq-length-lr 15 \ --learning-rate-backbone 0.0001 \ --learning-rate-aspp 0.0002 \ --learning-rate-decoder 0.0002 \ --learning-rate-refiner 0 \ --checkpoint-dir checkpoint/stage1 \ --log-dir log/stage1 \ --epoch-start 0 \ --epoch-end 20此阶段不开启--train-hrrefiner 学习率设为 0即冻结backbone/aspp/decoder 按不同学习率联合训练。Stage 2拉长时序python train.py \ --model-variant mobilenetv3 \ --dataset videomatte \ --resolution-lr 512 \ --seq-length-lr 50 \ --learning-rate-backbone 0.00005 \ --learning-rate-aspp 0.0001 \ --learning-rate-decoder 0.0001 \ --learning-rate-refiner 0 \ --checkpoint checkpoint/stage1/epoch-19.pth \ --checkpoint-dir checkpoint/stage2 \ --log-dir log/stage2 \ --epoch-start 20 \ --epoch-end 22关键变化时序长度从 15 拉长到 50 帧各模块学习率减半并通过--checkpoint从 Stage 1 的epoch-19.pth续训。注意--checkpoint与--checkpoint-dir的区别前者是加载的初始权重文件后者是每--checkpoint-save-interval默认 500 步保存新权重的目录文件命名为epoch-epoch.pth见 train.py 的 save 方法。Stage 3引入高分辨率python train.py \ --model-variant mobilenetv3 \ --dataset videomatte \ --train-hr \ --resolution-lr 512 \ --resolution-hr 2048 \ --seq-length-lr 40 \ --seq-length-hr 6 \ --learning-rate-backbone 0.00001 \ --learning-rate-aspp 0.00001 \ --learning-rate-decoder 0.00001 \ --learning-rate-refiner 0.0002 \ --checkpoint checkpoint/stage2/epoch-21.pth \ --checkpoint-dir checkpoint/stage3 \ --log-dir log/stage3 \ --epoch-start 22 \ --epoch-end 23--train-hr开启双分辨率训练低分辨率 pass 用 512 分辨率、40 帧高分辨率 pass 用 2048 分辨率、6 帧高分辨率输入进入网络前按--downsample-ratio默认 0.25降采样。refiner 学习率从 0 恢复为 0.0002开始训练细节精化模块。Stage 4ImageMatte 精修python train.py \ --model-variant mobilenetv3 \ --dataset imagematte \ --train-hr \ --resolution-lr 512 \ --resolution-hr 2048 \ --seq-length-lr 40 \ --seq-length-hr 6 \ --learning-rate-backbone 0.00001 \ --learning-rate-aspp 0.00001 \ --learning-rate-decoder 0.00005 \ --learning-rate-refiner 0.0002 \ --checkpoint checkpoint/stage3/epoch-22.pth \ --checkpoint-dir checkpoint/stage4 \ --log-dir log/stage4 \ --epoch-start 23 \ --epoch-end 28最后阶段切换为 ImageMatte 数据集decoder 学习率进一步降为 0.00005。此阶段 epoch 跨度最长23–28用于最终精化。常用可选参数速查除上面命令用到的参数外train.py 的参数表 还提供以下常用选项参数默认值说明--downsample-ratio0.25高分辨率 pass 的网络输入降采样比例--batch-size-per-gpu1每卡批量大小视频样本本身已含多帧--num-workers8DataLoader 进程数内存不足时建议调低--checkpoint-save-interval500每 N 步保存一次 checkpoint--log-train-loss-interval20TensorBoard 记录 loss 的步数间隔--log-train-images-interval500TensorBoard 记录训练图像的步数间隔--distributed-addr/--distributed-portlocalhost / 12355分布式训练的 MASTER_ADDR / MASTER_PORT--disable-progress-barFalse关闭 tqdm 进度条--disable-validationFalse跳过每个 epoch 开头的验证--disable-mixed-precisionFalse关闭 AMP 混合精度默认开启GradScaler管理--model-variant可选mobilenetv3或resnet50--dataset可选videomatte或imagematte。多任务协同训练抠图 分割从 train.py 的主训练循环 可以看到每个训练步实际包含三类 pass低分辨率抠图 pass以downsample_ratio1输入用matting_loss计算损失高分辨率抠图 pass仅--train-hr时以downsample_ratio0.25输入从高分辨率 dataloader 取下一批样本分割 pass偶数步取视频分割样本YouTubeVIS奇数步取图像分割样本COCO SPD 拼接的ConcatDataset用segmentation_lossBCE训练。在进入网络前样本还会经过 random_crop随机裁剪缩放与数据增强。其中MotionAugmentation见 dataset/augmentation.py是视频类数据增强的核心包括前景/背景的缓动easing插值仿射变换、时域噪声、色彩抖动、锐化、模糊、暂停帧等并通过TrainFrameSampler对帧做加速/平移/倒放采样不同数据集的增强概率各不相同——VideoMatte 训练增强的prob_fgr_affine0.3而 ImageMatte 高达0.95因为静态图需要更强的几何扰动来模拟运动。每个 epoch 开始前还会先跑一次验证集记录平均valid_loss到 TensorBoardtrain.py。损失函数构成matting_losstrain_loss.py由五部分加权求和pha_l1alpha 的 L1 损失pha_laplacianalpha 的拉普拉斯金字塔损失5 层逐层带权重pha_coherence相邻帧 alpha 差分的一致性 MSE 损失权重 5fgr_l1前景仅在 alpha0 掩码内的 L1 损失fgr_coherence相邻帧前景差分的一致性 MSE 损失权重 5。这种像素级 金字塔结构级 时序一致级的组合正是模型能输出时序稳定、边缘锐利 alpha 的损失层面保证。分割分支则使用binary_cross_entropy_with_logitstrain_loss.py。五、评测合成测试样本与指标计算官方评测采用合成测试样本方式把抠图数据合成到图像/视频背景上其中图像样本来自 D646、AIM会附加合成运动增强。VideoMatte240K 的合成测试集官方已直接提供512×288 的 PNG 约 1.8G、1920×1080 的 JPG 约 2.2GD646 与 AIM 需要自行从原作者处获取数据并按 evaluation/ 下的脚本合成。evaluation/ 目录包含两类脚本合成脚本generate_videomatte_with_background_image.py、generate_videomatte_with_background_video.py、generate_imagematte_with_background_image.py、generate_imagematte_with_background_video.py负责把 fgr/pha 合成到背景上官方仅作参考备份需按你的目录结构调整。评估脚本evaluate_hr.py、evaluate_lr.py只做指标计算不负责推理——你需要先自行推理并把结果按与 ground-truth 完全相同的目录结构、文件格式保存到磁盘然后再运行评估。例如低分辨率评估evaluate_lr.pypython evaluate.py \ --pred-dir PATH_TO_PREDICTIONS/videomatte_512x288 \ --true-dir PATH_TO_GROUNDTRUTH/videomatte_512x288评估脚本会在预测目录下生成一个.xlsx汇总表格。可选的指标包括pha_mad、pha_mse、pha_grad、pha_dtssd、fgr_mse等evaluate_hr.py高分辨率版本因 numpy 太慢而改用 PyTorch CUDA 实现。六、复现路线图小结按第二节下载并整理三类数据集抠图、背景、分割建议直接使用官方预处理版本并本地缓存按第三节修改train_config.py中的DATA_PATHS依次运行第四节的 Stage 1–4 命令每阶段从上一阶段 checkpoint 续训下载或合成测试样本先用推理脚本产出预测结果目录结构需与真值一致再用evaluation/下的脚本计算指标并导出 Excel。训练过程中可用 TensorBoard--log-dir实时观察各损失分量、验证 loss 与训练图像pred_fgr/pred_pha/true_src等见 train.py。官方训练环境为 4×V100 32G若显存不足可优先调低--resolution-hr、--seq-length-hr与--num-workers。赞分享人工智能深度学习计算机视觉视频处理【免费下载链接】RobustVideoMattingRobust Video Matting in PyTorch, TensorFlow, TensorFlow.js, ONNX, CoreML!项目地址https://gitcode.com/gh_mirrors/ro/RobustVideoMatting点击查看免费下载相关推荐Lizzy 7B 训练与评估全解析四阶段训练管线、数据混合与安全评测方法Lizzy 7B 训练与评估全解析四阶段训练管线、数据混合与安全评测方法 Lizzy 7B 是 Flower Labs 发布的首个开源权重语言模型面向通用助人工智能联邦学习机器学习深度学习构建AI训练数据流水线Deep Lake与数据预处理工具集成完整指南构建AI训练数据流水线Deep Lake与数据预处理工具集成完整指南 Deep Lake作为专为AI设计的多模态数据库为机器学习项目提供了完整的数据管理解决数据库向量数据库数据湖人工智能RAGSoundCloud音乐下载终极指南如何用scdl轻松收藏高品质音乐SoundCloud音乐下载终极指南如何用scdl轻松收藏高品质音乐 你是否在SoundCloud上发现了一首惊艳的独立音乐却苦于无法下载保存作为全球最大音视频创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
02
RELATED NEWS

相关资讯

更多网站建设与数字化升级内容

03
WHY YAOTU

想打造同款高转化官网?

懂行业、懂生意,从建站到增长一站式陪跑

◈

场景化定制

不做模板站,围绕你的业务场景量身设计,小众不撞款。

◐

营销型架构

以转化目标组织内容与路径,让官网真正带来询盘。

▲

全周期服务

设计、开发、运营、运维一体,上线只是开始。

免费获取你的建站方案

留下需求,专属顾问 24 小时内为你输出方案建议。