MMAction2视频理解框架训练与测试全指南

MMAction2视频理解框架训练与测试全指南

mmaction2 OpenMMLab's Next Generation Video Understanding Toolbox and Benchmark mmaction2 项目地址: https://gitcode.com/gh_mirrors/mm/mmaction2

前言

MMAction2是一个基于PyTorch的开源视频理解工具箱,支持多种视频理解任务,如动作识别、时序动作检测等。本文将详细介绍如何在MMAction2框架下进行模型的训练和测试,涵盖从单机单卡到分布式集群的各种使用场景。

训练篇

单机单卡训练

对于大多数开发者来说,单机单卡是最基础的训练环境。MMAction2提供了简单易用的训练脚本:

python tools/train.py configs/recognition/tsn/tsn_r50_1x1x3_100e_kinetics400_rgb.py

关键参数说明:

  • --work-dir: 指定工作目录,用于保存日志和模型检查点
  • --resume: 从上次的训练中恢复,支持指定检查点路径
  • --amp: 启用自动混合精度训练,可减少显存占用
  • --seed: 设置随机种子,保证实验可复现

CPU训练注意事项: 如果需要使用纯CPU训练,需要设置环境变量:

CUDA_VISIBLE_DEVICES=-1 python tools/train.py ...

多GPU分布式训练

当需要加速训练过程时,可以使用多GPU并行训练:

bash tools/dist_train.sh configs/recognition/tsn/tsn_r50_1x1x3_100e_kinetics400_rgb.py 4

其中4表示使用4块GPU。该脚本底层使用PyTorch的torch.distributed.launch实现数据并行。

端口配置技巧: 默认使用29500端口,如需修改:

PORT=29666 bash tools/dist_train.sh ... 

多任务并行技巧: 在同一台机器上启动多个训练任务时,需要指定不同的GPU和端口:

# 任务1使用GPU 0-3
CUDA_VISIBLE_DEVICES=0,1,2,3 PORT=29500 bash tools/dist_train.sh ... 4

# 任务2使用GPU 4-7 
CUDA_VISIBLE_DEVICES=4,5,6,7 PORT=29501 bash tools/dist_train.sh ... 4

多机分布式训练

同网络多机训练

对于局域网内的多台机器,需要配置以下环境变量:

主节点(第一台机器):

NNODES=2 NODE_RANK=0 PORT=29500 MASTER_ADDR=192.168.1.1 bash tools/dist_train.sh ...

从节点(第二台机器):

NNODES=2 NODE_RANK=1 PORT=29500 MASTER_ADDR=192.168.1.1 bash tools/dist_train.sh ...

关键环境变量:

  • NNODES: 总机器数
  • NODE_RANK: 当前机器序号(主节点为0)
  • PORT: 通信端口,所有机器必须相同
  • MASTER_ADDR: 主节点IP地址
Slurm集群管理训练

在高性能计算集群中,通常使用Slurm作为作业调度系统:

GPUS=8 GPUS_PER_NODE=8 bash tools/slurm_train.sh partition_name job_name config.py

Slurm特有参数:

  • PARTITION: 计算分区名称
  • JOB_NAME: 作业名称
  • GPUS_PER_NODE: 每节点GPU数
  • CPUS_PER_TASK: 每个任务分配的CPU核心数

测试篇

单机测试

模型训练完成后,可以使用测试脚本评估性能:

python tools/test.py config.py checkpoint.pth --eval top_k_accuracy

常用参数:

  • --work-dir: 结果保存目录
  • --dump: 输出模型预测结果用于离线评估
  • --show: 可视化预测结果
  • --show-dir: 保存可视化结果的目录

多GPU测试

与训练类似,测试也支持多GPU并行:

bash tools/dist_test.sh config.py checkpoint.pth 4

分布式测试

多机测试

多机测试的配置与训练完全一致,只需将dist_train.sh替换为dist_test.sh

Slurm集群测试
bash tools/slurm_test.sh partition_name job_name config.py checkpoint.pth

最佳实践建议

  1. 学习率调整:使用--auto-scale-lr参数可以根据实际batch size自动调整学习率

  2. 调试技巧:在开发阶段,可以添加--cfg-options快速修改配置参数,如:

    --cfg-options data.videos_per_gpu=2 optimizer.lr=0.01
    
  3. 可视化调试:测试时使用--show--show-dir参数可以帮助理解模型预测结果

  4. 复现性保证:通过--seed--deterministic参数可以确保实验可复现

  5. 混合精度训练:对于支持AMP的模型,使用--amp可以显著减少显存占用

通过本文的介绍,您应该已经掌握了MMAction2框架下模型训练和测试的各种方法。无论是单机开发还是分布式生产环境,都能找到适合的解决方案。

mmaction2 OpenMMLab's Next Generation Video Understanding Toolbox and Benchmark mmaction2 项目地址: https://gitcode.com/gh_mirrors/mm/mmaction2

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

嵇习柱Annabelle

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值