ppTSM(Paddle temporal-shift-module)训练部署记录

视频分类算法ppTSM使用记录

简介

  • 视频分类与图像分类相似,均属于识别任务,对于给定的输入视频,视频分类模型需要输出其预测的标签类别。如果标签都是行为类别,则该任务也常被称为行为识别。与图像分类不同的是,视频分类往往需要利用多帧图像之间的时序信息。PP-TSM是PaddleVideo自研的实用产业级视频分类模型,在实现前沿算法的基础上,考虑精度和速度的平衡,进行模型瘦身和精度优化,使其可能满足产业落地需求。

一. 资源准备

这里本人主要使用了PaddleVideo的ppTSM进行开发

二. 模型训练

  1. 数据集准备:
    按照ucf101格式做好自己的数据就行了,ucf101下载链接: https://github.com/PaddlePaddle/PaddleVideo/blob/develop/docs/zh-CN/model_zoo/recognition/pp-tsm.md
  2. 训练命令行:
    python -B -m paddle.distributed.launch --gpus="0,1,2,3" --log_dir=log_pptsm main.py --validate -c ./configs/recognition/pptsm/v2/pptsm_lcnet_ucf101_16frames_uniform.yaml --amp
  3. 模型导出:
    python tools/export_model.py -c configs/recognition/pptsm/v2/pptsm_lcnet_ucf101_16frames_uniform.yaml -p output/ppTSMv2/ppTSMv2_best.pdparams -o inference/PPTSMv2
  4. 模型预测,验证模型准确率:
    python tools/predict.py --input_file data/example.avi --config configs/recognition/pptsm/v2/pptsm_lcnet_k400_16frames_uniform.yaml --model_file weights/ppTSMv2.pdmodel --params_file weights/ppTSMv2.pdiparams --use_gpu=True
  5. paddle2onnx:
    paddle2onnx --model_dir=./weights/ucf101 --model_filename=ppTSMv2.pdmodel --params_filename=ppTSMv2.pdiparams --save_file=./weights/ucf101/ppTSMv2/pptsmv2.onnx --opset_version=11 --enable_onnx_checker=True
  • 以上5个步骤的参考链接: https://github.com/PaddlePaddle/PaddleVideo/blob/develop/docs/zh-CN/model_zoo/recognition/pp-tsm.md

三. 算法部署

方案一 paddle_inference:

这个paddle_inference后端支持tensorrt和onnx, CPU端和GPU端
https://github.com/PaddlePaddle/PaddleVideo/tree/develop/deploy/cpp_infer

方案二 tensorrt(本文重点)

本人选用的是tensorrt,因为其他算法是用tensorrt部署的,如果再加一个paddle_inference会显得太过于杂乱了,详细实现见本人GitHub:

四. 精度对齐

为了保证模型转换后精度无损,需要进行paddle, onnx, tensorrt三方推理结果比对:详细可比对predict.py, onnx_infer.py, C++输出结果,开发过程中遇到的坑主要是onnx和tensorrt的结果不一致,经过一点一点的debug终于使两者结果保持一致了,在确认部署没有问题后就是算法模型的训练调优了

五. 总结

之前一直用的是传统的图像处理算法(opencv的高斯混合模型,帧间差法)做视频分类识别,改用深度学习的方法后准确率的通用性提高了很多,但是需要更多的训练数据来增加算法的鲁棒性.

  • 2
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值