基于 PaddleVideo 的 YOWO 复现
转自AI Studio,原文链接:基于 PaddleVideo 的 YOWO 复现 - 飞桨AI Studio【论文复现赛】You Only Watch Once: A Unified CNN Architecture for Real-Time Spatiotemporal Action Localization前言本项目为飞桨论文复现挑战赛(第六期)的 You Only Watch Once:
转自AI Studio,原文链接:基于 PaddleVideo 的 YOWO 复现 - 飞桨AI Studio
【论文复现赛】You Only Watch Once: A Unified CNN Architecture for Real-Time Spatiotemporal Action Localization
前言
本项目为飞桨论文复现挑战赛(第六期)的 You Only Watch Once: A Unified CNN Architecture for Real-Time Spatiotemporal Action Localization 冠军复现代码,已收录于Paddle Video视频模型开发套件。
1 简介
YOWO架构是一个具有两个分支的单阶段网络。一个分支通过2D-CNN提取关键帧(即当前帧)的空间特征,而另一个分支则通过3D-CNN获取由先前帧组成的剪辑的时空特征。为准确汇总这些特征,YOWO使用了一种通道融合和关注机制,最大程度地利用了通道间的依赖性。最后将融合后的特征进行帧级检测。[可视化结果如上图]
Paper: Köpüklü O, Wei X, Rigoll G. You only watch once: A unified cnn architecture for real-time spatiotemporal action localization[J]. arXiv preprint arXiv:1911.06644, 2019.
Code Reference:https://github.com/wei-tim/YOWO
复现目标:UCF101-24数据集,YOWO (16-frame)模型,frame-mAP under IoU threshold of 0.5=80.4
2 复现精度
Model | 3D-CNN backbone | 2D-CNN backbone | Dataset | Input | Target Frame-mAP (@ IoU 0.5) |
Our Frame-mAP (@ IoU 0.5) |
---|---|---|---|---|---|---|
YOWO | 3D-ResNext-101 | Darknet-19 | UCF101-24 | 16-frames, d=1 | 80.40 | 80.83 |
3 数据集和预训练权重
3.1 下载数据集
In [ ]
%cd ~
!tar -zxf data/data36600/ucf24.tar.gz
!mv ucf24/* PaddleVideo-develop/data/ucf24
%cd PaddleVideo-develop/data/ucf24/
!unzip -q groundtruths_ucf.zip
3.2 生成所需格式的 annotations
In [ ]
%cd /home/aistudio/PaddleVideo-develop/data/ucf24/
!python build_split.py
3.3 下载预训练权重
In [ ]
%cd ~
!mv data/data145592/* PaddleVideo-develop/data/ucf24/
4 环境依赖
In [ ]
# pip install requirements
%cd /home/aistudio/PaddleVideo-develop/
!pip install -r requirements.txt
5 快速开始
5.1 模型训练
-
参数配置文件在
configs/localization
,训练完成后,模型参数保存至output/
-
由于模型参数量和数据集较大,在单张
32G V100
下train
单个epoch需要约8.5h,完成5个epoch训练且中途不进行验证下共需2天时间 -
如果想在训练期间验证模型的性能,可在运行命令中添加
--validate
,验证时评价指标为fscore
,与测试模式不同,仅作为参考 -
Test
数据集约130k个instances,validate
一次需要4h,时间较长,建议调整val_interval
或不进行中途验证
In [ ]
%cd /home/aistudio/PaddleVideo-develop/
!python3 main.py -c configs/localization/yowo.yaml --seed=1
5.2 模型评估
-
训练日志中记录的验证指标
fscore
不代表最终的测试分数,因此在训练完成之后可以用测试模式对最好的模型进行测试获取最终的指标。评估时评价指标为Frame-mAP (@ IoU 0.5)
-
-w
指定评估的模型路径
In [ ]
%cd /home/aistudio/PaddleVideo-develop/
!python3 main.py -c configs/localization/yowo.yaml --test --seed=1 -w 'output/YOWO/YOWO_epoch_00005.pdparams'
5.3 模型推理
导出inference模型
- 该命令将在默认路径
inference/
下生成预测所需的模型结构文件YOWO.pdmodel
和模型权重文件YOWO.pdiparams
In [ ]
%cd /home/aistudio/PaddleVideo-develop/
!python3 tools/export_model.py -c configs/localization/yowo.yaml -p 'output/YOWO/YOWO_epoch_00005.pdparams'
使用预测引擎推理
-i
指定输入视频,--model_file
指定模型结构文件, --params_file
指定模型权重文件。逐帧检测结果将保存至inference/YOWO_infer/video_name
In [ ]
%cd /home/aistudio/PaddleVideo-develop/
!python3 tools/predict.py -c configs/localization/yowo.yaml -i 'data/ucf24/HorseRiding.avi' --model_file ./inference/YOWO.pdmodel --params_file ./inference/YOWO.pdiparams
6.TIPC
- 安装日志工具
In [ ]
!pip install https://paddleocr.bj.bcebos.com/libs/auto_log-1.2.0-py3-none-any.whl
- 运行
prepare.sh
,准备 ucf-24-lite 数据集
In [ ]
%cd /home/aistudio/PaddleVideo-develop/
!bash test_tipc/prepare.sh test_tipc/configs/YOWO/train_infer_python.txt 'lite_train_lite_infer'
- 运行
test_train_inference_python.sh
, 具体参数设置修改于test_tipc/configs/YOWO/train_infer_python.txt
In [ ]
%cd /home/aistudio/PaddleVideo-develop/
!bash test_tipc/test_train_inference_python.sh test_tipc/configs/YOWO/train_infer_python.txt 'lite_train_lite_infer'
7. 代码结构
|-- PaddleVideo-develop
|-- configs
|-- localization
|-- yowo.yaml # 模型训练所需的yaml
|-- data # 数据集
|-- ucf24
|-- splitfiles # 原始 annotations
|-- build_split.py # 生成所需 train/val list
|-- UCF-24-lite # 用于TIPC的小数据集
|-- output # 输出
|-- paddlevideo
|-- loader # 数据集和数据增强
|-- metrics # 评价指标
|-- modeling # 模型定义
|-- solver # 优化器
|-- task # train/test 入口
|-- utils # 工具
|-- test_tipc # TIPC训推一体化认证
|-- tools
|-- export_model.py # 导出静态模型
|-- predict.py # 预测
|-- main.py # 主程序
|-- README.md
|-- requirements.txt # 环境配置文件
总结与致谢
- 在复现过程中,使用Paddle Video视频模型开发套件可以加快复现效率;
- 出现精度低于原论文指标时,进行预训练加载对齐、数据对齐、模型对齐等操作排查问题;
- 最后非常感谢 百度 PaddlePaddle AI Studio 提供的算力支持!
更多推荐
所有评论(0)