转自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 复现精度

Model3D-CNN backbone2D-CNN backboneDatasetInputTarget
Frame-mAP
(@ IoU 0.5)
Our
Frame-mAP
(@ IoU 0.5)
YOWO3D-ResNext-101Darknet-19UCF101-2416-frames, d=180.4080.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                    # 环境配置文件

总结与致谢

  1. 在复现过程中,使用Paddle Video视频模型开发套件可以加快复现效率;
  2. 出现精度低于原论文指标时,进行预训练加载对齐、数据对齐、模型对齐等操作排查问题;
  3. 最后非常感谢 百度 PaddlePaddle AI Studio 提供的算力支持!
Logo

学大模型,用大模型上飞桨星河社区!每天8点V100G算力免费领!免费领取ERNIE 4.0 100w Token >>>

更多推荐