Skip to content

zengwb-lx/ppTSM-TensorRT

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

2 Commits
 
 
 
 
 
 
 
 

Repository files navigation

视频分类算法ppTSM使用记录

[TOC]

简介

  • 视频分类与图像分类相似,均属于识别任务,对于给定的输入视频,视频分类模型需要输出其预测的标签类别。如果标签都是行为类别,则该任务也常被称为行为识别。与图像分类不同的是,视频分类往往需要利用多帧图像之间的时序信息。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

三. 算法部署

方案一 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的高斯混合模型,帧间差法)做视频分类识别,改用深度学习的方法后准确率的通用性提高了很多,但是需要更多的训练数据来增加算法的鲁棒性.

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published