PaddleVideo:PP-TSM 视频分类

2024-04-13 10:52

本文主要是介绍PaddleVideo:PP-TSM 视频分类,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

本文记录:使用Paddle框架训练TSM(Temporal Shift Module

前提条件:已经安装Paddle和PadleVideo,具体可参考前一篇文章。

1-数据准备:

以UCF101为例:内含13320 个短视频,视频类别:101 种

UCF101 – Action Recognition Data Set – Center for Research in Computer Vision

1. 主要包括5类动作 :人和物体交互,只有肢体动作,人与人交互,玩音乐器材,各类运动

2. 每类视频被分为25组,每组包含4-7个视频,同组视频具有一些相似的特征,比如背景、人物等

3. 视频来自YouTube,25FPS码率,320x240分辨率,avi格式,DivX编码方式,平均时长7.21秒

4. 视频按照 v_X_gY_cZ.avi的格式命名,其中X表示类别、Y表示组、Z表示视频编号,例如:v_ApplyEyeMakeup_g03 c04.avi表示ApplyEyeMakeup类别下,第03组的第04个视频

标签下载、数据下载:

# 切换到ucf101目录
cd PaddleVideo/data/ucf101# 下载annotations文件
sh download_annotations.sh# 下载UCF101的视频文件,视频会自动解压移动到videos文件夹
sh download_videos.sh

视频抽帧:自动存储到rawframes文件夹

# 提取视频文件的frames
python extract_rawframes.py ./videos/ ./rawframes/ --level 2 --ext avi

生成list文件

# 生成视频文件的路径list
python build_ucf101_file_list.py videos/ --level 2 --format videos --out_list_path ./# 生成frames文件的路径list
python build_ucf101_file_list.py rawframes/ --level 2 --format rawframes --out_list_path ./

参数说明:

videos/ 或者 rawframes/ : 表示视频或者frames文件的存储路径--level 2 : 表示文件的存储结构--format: 表示是针对视频还是frames生成路径list--out_list_path : 表示生成的路径list文件存储位置

最终文件目录结构

├── data
|   ├── dataset
|   │   ├── ucf101
|   │   │   ├── ucf101_{train,val}.txt
|   │   │   ├── ucf101_{train,val}_split_{1,2,3}_rawframes.txt
|   │   │   ├── ucf101_{train,val}_split_{1,2,3}_videos.txt
|   │   │   ├── annotations
|   │   │   ├── videos
|   │   │   │   ├── ApplyEyeMakeup
|   │   │   │   │   ├── v_ApplyEyeMakeup_g01_c01.avi
|   │   │   │   │   └── ...
|   │   │   │   ├── YoYo
|   │   │   │   │   ├── v_YoYo_g25_c05.avi
|   │   │   │   │   └── ...
|   │   │   │   └── ...
|   │   │   ├── rawframes
|   │   │   │   ├── ApplyEyeMakeup
|   │   │   │   │   ├── v_ApplyEyeMakeup_g01_c01
|   │   │   │   │   │   ├── img_00001.jpg
|   │   │   │   │   │   ├── img_00002.jpg
|   │   │   │   │   │   ├── ...
|   │   │   │   │   │   ├── flow_x_00001.jpg
|   │   │   │   │   │   ├── flow_x_00002.jpg
|   │   │   │   │   │   ├── ...
|   │   │   │   │   │   ├── flow_y_00001.jpg
|   │   │   │   │   │   ├── flow_y_00002.jpg
|   │   │   │   ├── ...
|   │   │   │   ├── YoYo
|   │   │   │   │   ├── v_YoYo_g01_c01
|   │   │   │   │   ├── ...
|   │   │   │   │   ├── v_YoYo_g25_c05

说明事项:

1: 官方提供三种划分方式,自己选择使用

 

2-模型训练

PaddleVideo/docs/zh-CN/benchmark.md at develop · PaddlePaddle/PaddleVideo · GitHub

根据benchmark性能指标选择所需模型:初步看8帧配置下,PP-TSMv2性价比不错

预训练模型下载

根据上面的选型,到 paddlevideo/modeling/backbones 目录下打开自己选择的模型

文件中 MODEL_URLS 就是预训练模型的下载路径,手动下载

放到 PaddleVideo/data 目录 

修改训练配置文件

进入PaddleVideo/configs/recognition/pptsm/v2 目录,

因为我们使用的是ucf101数据集训练,所以复制 pptsm_lcnet_k400_8frames_uniform.yaml 一份,并重命名为:pptsm_lcnet_ucf101_8frames_uniform.yaml 来进行修改

修改pretrained、num_seg、class_num、data_prefix、file_path 

开启训练

单卡训练

# 单卡训练
export CUDA_VISIBLE_DEVICES=0         #指定使用的GPU显卡id
python main.py  --validate -c configs/recognition/pptsm/v2/pptsm_lcnet_ucf101_8frames_uniform.yaml

多卡训练 

# 多卡训练
export CUDA_VISIBLE_DEVICES=0,1,2,3,4,5,6,7
python -B -m paddle.distributed.launch --gpus="0,1,2,3,4,5,6,7"  --log_dir=log_pptsm  main.py  --validate -c configs/recognition/pptsm/v2/pptsm_lcnet_ucf101_8frames_uniform.yaml

参数说明:

-c 必选参数,指定运行的配置文件路径,具体配置参数含义参考配置文档
--validate 可选参数,指定训练时是否评估
-o: 可选参数,指定重写参数,例如: -o DATASET.batch_size=16 用于重写train时batch size大小
--gpus参数指定使用的GPU显卡id
--log_dir参数指定日志保存目录 多卡训练详细说明可以参考单机多卡训练

输出日志

运行日志,并默认保存在./log目录下

3-模型测试(可选-因为训练的时候已经测试了,没必要再去测试一次)

对于视频分类任务,模型测试时有两种不同的方式,中心采样(Uniform)和密集采样(Dense)

中心采样:速度快,适合产业应用,但精度稍低。

密集采样:精度高,但由于测试要对多个clip进行预测,比较耗时。

轻量化模型PP-TSMv2统一使用中心采样方式进行评估。PP-TSM则提供两种不同的评估方式。

3.1-中心采样测试

中心采样测试,1个视频共采样1个clips。

时序上:等分成num_seg段,每段中间位置采样1帧

空间上:中心位置采样。

也可以使用如下命令对训练好的模型进行测试:

python3 main.py --test -c configs/recognition/pptsm/v2/pptsm_lcnet_ucf101_8frames_uniform.yaml -w output/ppTSMv2/ppTSMv2_best.pdparams

3.2-中心采样测试

密集采样测试,1个视频共采样10*3=30个clips。

时序上:先等分10个片段,每段从起始位置开始,以64//num_seg为间隔连续采样num_seg帧;

空间上:左中,中心,右中3个位置采样。

python3 main.py --test -c configs/recognition/pptsm/v2/pptsm_lcnet_ucf101_8frames_uniform.yaml -w output/ppTSMv2/ppTSMv2_best.pdparams

4-导出推理模型

# 切换到output目录
cd output# 创建inference目录存储推理模型
mkdir ppTSMv2_inference

python tools/export_model.py -c configs/recognition/pptsm/v2/pptsm_lcnet_ucf101_8frames_uniform.yaml \-p output/ppTSMv2/ppTSMv2_best.pdparams \-o output/ppTSMv2_inference
├── output/ppTSMv2_inference
│   ├── ppTSMv2.pdiparams       # 模型权重文件
│   ├── ppTSMv2.pdiparams.info  # 模型信息文件
│   └── ppTSMv2.pdmodel         # 模型结构文件

5-基于python进行模型推理

python tools/predict.py --input_file data/example.avi \--config configs/recognition/pptsm/v2/pptsm_lcnet_ucf101_8frames_uniform.yaml \--model_file output/ppTSMv2_inference/ppTSMv2.pdmodel \--params_file output/ppTSMv2_inference/ppTSMv2.pdiparams \--use_gpu=True \--use_tensorrt=False

6-基于onnx进行模型推理

详见下一篇博文。

参考链接

1:PP-TSM视频分类模型PaddleVideo/docs/zh-CN/model_zoo/recognition/pp-tsm.md at develop · PaddlePaddle/PaddleVideo · GitHubAwesome video understanding toolkits based on PaddlePaddle. It supports video data annotation tools, lightweight RGB and skeleton based action recognition model, practical applications for video tagging and sport action detection. - PaddleVideo/docs/zh-CN/model_zoo/recognition/pp-tsm.md at develop · PaddlePaddle/PaddleVideoicon-default.png?t=N7T8https://github.com/PaddlePaddle/PaddleVideo/blob/develop/docs/zh-CN/model_zoo/recognition/pp-tsm.md

2: PP-TSMv2PaddleVideo/docs/zh-CN/model_zoo/recognition/pp-tsm_v2.md at develop · PaddlePaddle/PaddleVideo · GitHubAwesome video understanding toolkits based on PaddlePaddle. It supports video data annotation tools, lightweight RGB and skeleton based action recognition model, practical applications for video tagging and sport action detection. - PaddleVideo/docs/zh-CN/model_zoo/recognition/pp-tsm_v2.md at develop · PaddlePaddle/PaddleVideoicon-default.png?t=N7T8https://github.com/PaddlePaddle/PaddleVideo/blob/develop/docs/zh-CN/model_zoo/recognition/pp-tsm_v2.md

3: ucf101数据处理

PaddleVideo/docs/zh-CN/dataset/ucf101.md at develop · PaddlePaddle/PaddleVideo · GitHubAwesome video understanding toolkits based on PaddlePaddle. It supports video data annotation tools, lightweight RGB and skeleton based action recognition model, practical applications for video tagging and sport action detection. - PaddleVideo/docs/zh-CN/dataset/ucf101.md at develop · PaddlePaddle/PaddleVideoicon-default.png?t=N7T8https://github.com/PaddlePaddle/PaddleVideo/blob/develop/docs/zh-CN/dataset/ucf101.md

这篇关于PaddleVideo:PP-TSM 视频分类的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/899942

相关文章

PP强酸强碱氮气柜和普通氮气柜的区别及共同点

PP强酸强碱氮气柜通常采用聚丙烯(PP)材料制成,聚丙烯是一种耐腐蚀性强的塑料材质,能有效抵抗强酸、强碱、盐溶液等腐蚀性物质的侵蚀,不易老化,使用寿命长。因其优秀的化学稳定性和耐腐蚀性,特别适合存储那些需要避免与外界湿气或氧气接触,并且本身可能产生或已处于强酸强碱环境中的物品。 PP强酸强碱氮气柜,柜体采用瓷白色PP板材,一体成型,经过无缝焊接处理,坚固耐用。层板同样采用PP板材,整块加强焊接,主

I3D视频分类论文梗概及代码解读Quo Vadis, Action Recognition? A New Model and the Kinetics Dataset

论文https://arxiv.org/pdf/1705.07750.pdf,from DeepMind ,CVPR2017 代码https://github.com/LossNAN/I3D-Tensorflow 2017年视频分类最好的网络,同时提供了VGG的预训练模型,网络端到端,简单易懂,便于部署及工程化。只是跑一下基本有个Tensorflow,单显卡就能训练和测试,效果还好,一绝。本文

基于Python引擎的PP-OCR模型库推理

基于Python引擎的PP-OCR模型库推理 1. 文本检测模型推理 # 下载超轻量中文检测模型:wget https://paddleocr.bj.bcebos.com/PP-OCRv3/chinese/ch_PP-OCRv3_det_infer.tartar xf ch_PP-OCRv3_det_infer.tarpython3 tools/infer/predict_det.

【办公类-04-03】华为助手导出照片视频分类(根据图片、视频的文件名日期分类导出)

背景需求: 用华为手机助手导出的照片视频,只能将jpg照片(exifread读取图片的exif拍摄日期,Png、JPEG、mp4都无法识别到exif信息) 【办公类-04-02】华为助手导出照片(jpg)读取拍摄时间分类导出,JPEG、png、MP4不行)-CSDN博客文章浏览阅读750次,点赞10次,收藏10次。【办公类-04-02】华为助手导出照片(jpg)读取拍摄时间分类

PaddleOCR学习——PP-OCR系列

相关知识前置: PP-LCNet PP-LCNetV3 PP-LCNetV3系列模型是PP-LCNet系列模型的延续,覆盖了更大的精度范围,能够适应不同下游任务的需要。PP-LCNetV3系列模型从多个方面进行了优化,提出了可学习仿射变换模块,对重参数化策略、激活函数进行了改进,同时调整了网络深度与宽度。最终,PP-LCNetV3系列模型能够在性能与效率之间达到最佳的平衡,在不同精度范围

SAP PP学习笔记20 - 复习总结一下MTS,MTO,ATO的各种生产策略

上面几章详细讲了MTS,MTO,ATO的各种生产策略。 内容太多了,本章咱们就简单回顾,复习一下。 计划策略(Planning Strategies) 的种类 - MTS(Make-to-Stock):按库存生产(見込生産) - MTO(Makte-to-Order):按订单生产(受注生産) - ATO(Assemble-to-Order)/ ETO(Engineer-to-Orde

SAP PP学习笔记17 - MTS(Make-to-Stock) 按库存生产(策略70)

上几章讲了几种策略,策略10,11,30,40。 SAP PP学习笔记14 - MTS(Make-to-Stock) 按库存生产(策略10),以及生产计划的概要-CSDN博客 SAP PP学习笔记15 - MTS(Make-to-Stock) 按库存生产(策略11,策略30)-CSDN博客 SAP PP学习笔记16 - MTS(Make-to-Stock) 按库存生产(策略40),以及其冲销

SAP PP学习笔记16 - MTS(Make-to-Stock) 按库存生产(策略40),以及其冲销模式(Consumption Mode)

上一章讲了 MTS(Make-to-Stock)按库存生产(测录11,策略30)。 SAP PP学习笔记15 - MTS(Make-to-Stock) 按库存生产(策略11,策略30)-CSDN博客 本章继续来讲其他的策略。 1,MTS(Make-to-Stock)策略40 Planning with Final Assembly (40)。 通过跟策略10的对比,来说一下策略40的

SAP PP学习笔记15 - MTS(Make-to-Stock) 按库存生产(策略11,策略30)

上一章学习了MTS(Make-to-Stock)按库存生产(策略10)。 SAP PP学习笔记14 - MTS(Make-to-Stock) 按库存生产(策略10),以及生产计划的概要-CSDN博客 本章继续讲MTS(Make-to-Stock)的其他策略。 1,MTS(Make-to-Stock)策略10 先来复习一下策略10(Make-to-stock production(ano

SAP PP学习笔记14 - MTS(Make-to-Stock) 按库存生产(策略10),以及生产计划的概要

上面讲了SAP里面的基础知识,BOM,作业手顺(工艺路线),作业区(工作中心),MRP,MPS等概念,现在该到用的时候了。 SAP PP学习笔记07 - 简单BOM,派生BOM,多重BOM,批量修改工具 CEWB_sap cewb-CSDN博客 SAP PP学习笔记07 - 作业手顺(工艺路线Routing)_sap routing挂在物料下面-CSDN博客 SAP PP学习笔记08 - 作