【MMAction2】学习笔记(1)——训练数据读取过程pipeline

在这里插入图片描述



0. MMAction2 介绍

  MMAction2 是一款基于 PyTorch 框架的视频理解开源工具箱,是由商汤科技和港中文大学联合提出的 OpenMMLab 项目的成员之一。
  视频理解是计算机视觉中重要的研究方向,近年来逐渐成为业界和学术界的研究热点,同时也被广泛应用在智能监控/视频推荐等领域中。OpenMMLab 项目开源了 MMAction2,这是一套基于 PyTorch 实现的视频理解工具箱和 benchmark,目前包含了视频理解领域常见的任务,比如动作识别时序动作检测时空动作检测等。

  • 模块化设计: MMAction2 将统一的视频理解框架解耦成不同的模块组件,通过组合不同的模块组件,用户可以便捷地构建自定义的视频理解模型。
  • 支持多种任务和数据集: MMAction2 支持多种视频理解任务,包括动作识别,时序动作检测,时空动作检测以及基于人体姿态的动作识别,总共支持 27 种算法和 20 种数据集
  • 详尽的单元测试和文档: MMAction2 提供了详尽的说明文档,API 接口说明,全面的单元测试,以供社区参考

1. Over View of Pipeline

  类似于其他OpenMMLab项目,MMAction2 使用 Dataset 和 DataLoader 实现训练/测试阶段的数据加载。 由Dataset 返回一个字典Dict作为模型的输入。 而数据准备阶段pipeline和dataset类是相互解耦的,dataset类一般用于定义数据标注annotations,而数据pipeline用于加载数据(对于视频格式重点在于帧的采样)、预处理格式化。一个完整的数据pipeline结果如下图所示。
在这里插入图片描述
  图中下侧IDE中显示的变量transform(list)读取了由config文件设置好的pipeline流程,同时也包含了实例化所需类的具体参数设置。图上侧是一个经典的pipeline结构。蓝色块是pipeline操作。随着其的深入,每个操作都向结果字典添加新键(标记为绿色)或更新现有键(标记为橙色)。而对于其三个主要部分:

  • 在加载数据部分,以裁片完成的数据集格式为例,对应数据集格式是rawframes。具体是基于SampleFrames类和RawFrameDecoder类实现的,其功能分别是获取需要的采样帧索引index和根据传递的索引来加载数据。代码位置为 mmaction/datasets/pipelines/loading.py
  • 在数据预处理部分,mmaction2内置多种数据增强的方法,以图中为例。具体是基于RandomRescaleRandomCropFlipNormalize类实现的。其作用分别是对裁剪后的图像序列进行随机尺寸变换、随机裁剪、随机翻转以及根据均值和方差对数据进行标准化。代码位置为mmaction/datasets/pipelines/augmentations.py
  • 在数据格式化部分,需要对图像数据按照config当中的设定进行格式上的变换并最终作为后续网络模型的输入。具体是基于FormatShape类、Collect类和ToTensor类实现的。其作用分别是将时序图像序列按照规定要求划分维度、将数据信息整合生成meta键(包含原始数据的各类信息)和将图像序列转化为torch框架训练所需的tensor格式。代码的位置为mmaction/datasets/pipelines/formatting.py

config配置文件及注释如下:

dataset_type = 'RawframeDataset'  # 数据集类型,RawframeDataset对应已完成视频切片的数据集
data_root 
  • 5
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值