MMAction2: 新一代视频理解工具箱

本文转载自知乎,已获作者授权转载。

链接:https://zhuanlan.zhihu.com/p/347705276

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


太长不看版:

  • 统一的框架:MMAction2 作为 OpenMMLab 的新一代视频理解工具箱,同时支持了动作识别、时序动作检测、时空动作检测等多种任务和算法。用户可以在一个框架中方便地调用不同的算法和模型。

  • 灵活的模块化设计:MMAction2 延续了 OpenMMLab 系列的模块化风格,用户能够基于这套框架灵活地增加新的功能和算法。

  • 丰富的模型和 benchmark:MMAction2 高精度地复现了多种视频理解算法,包括 TSN, TSM, I3D, SlowFast, X3D 等动作识别算法,BMN, BSN 等时序动作检测算法,AVA 数据集相关的时空动作检测算法等;提供了丰富的 130+ 个预训练模型;并且针对不同的数据处理方式做了详尽的 benchmark 以供社区参考~

  • 高速且多样的训练 pipeline:MMAction2 对 Video 的训练速度做了大幅的优化,采用分布式的训练框架,支持多种 IO 后端文件读取(Disk, Ceph, Memcached 等),多种 Video 的解码方式(OpenCV, PyAV, Decord 等),TurboJPEG 解码视频帧等。同时设计 lazy operation 技巧来加速数据 pipeline 的处理,在训练速度上优于主流的代码实现。此外,MMAction2 也提供多种模态数据的处理步骤,包括 Video, RGB, Flow, Audio, Compressed Video 等。

  • 完善详尽的文档教程:MMAction2 目前支持主流的 15 种学术数据集的准备脚本,用户可以很简单地按照文档说明键入指令,完成数据集准备;撰写了详细的教程文档,帮助新手用户使用 repo,并且在 Colab 上布置了在线使用的 Tutorial,以供用户进行体验。

  • 丰富的 Demo:MMAction2 基于代码库实现了一系列丰富的 Demo 以供用户使用,包括 时空动作检测 demo, 摄像头动作识别 demo, GradCAM demo等。

MMAction2 将会长期维护和更新,我们非常欢迎社区贡献与建议。同时,我们也非常非常欢迎大家点赞、试用、反馈、PR:

https://github.com/open-mmlab/mmaction2

同时,我们非常欢迎对 OpenMMLab 项目有兴趣的同学以全职/实习的身份加入我们,海量 HC 等待你的到来。如果你有兴趣,欢迎联系小编~

作为 MM 系列的成员,MMAction2 保持了 MM 系列框架的一贯风格,拥有灵活的模块化设计和全面的高性能 model zoo。

目前我们支持3种视频理解领域里的主流方向,其中大部分算法都提供了多种 setting 以及在 Kinetics, Something-Something, ActivityNet 等数据集上的训练结果,之后会有其他的数据集以及更多的预训练模型陆续放出(也欢迎大家贡献更多的方法)。

目前支持的模型有:

  • Action Recognition:

    • TSN

    • TSM

    • R(2+1)D

    • I3D

    • SlowOnly

    • SlowFast

    • CSN

    • TIN

    • TPN

    • C3D

    • X3D

    • NonLocal

    • OminiSource

    • MultiModality: Audio

  • Action Localization:

    • BMN

    • BSN

    • SSN

  • Spatial Temporal Action Detection:

    • SlowOnly + Fast R-CNN

    • SlowFast + Fast R-CNN

MMAction2 作为新一代的视频理解框架,提供了更快更强的主流算法,多种 setting 下的结果比较,附带丰富的配置文件以及高速有效的 tricks,且采用易于拓展的模块化的设计,减轻了不少 codebase 迁移和文章复现等带来的负担。

此外,MMAction2 不仅仅是研究导向的框架,还是一个可以用于入门和教学的框架,在这里你可以看到 Video Understanding 中常用的模型和基础的任务,每个模型也都被很好地拆解,方便大家上手探索其中的奥秘。


丰富的算法实现和配置文件

MMAction2 目前发布的 0.10.0 版本复现了视频理解领域中不少 baseline 和 SOTA 模型,如 TSN, TSM, I3D, SlowFast 等经典算法,并且精度更高,比如我们的 CSN 在 Kinetics400 的验证集上的 Top-1 精度可达到 82.76。

支持的数据集,算法和预训练模型

此外,MMAction2 提供非常丰富的配置文件,这些配置文件整合了各种比较常见的训练 setting 以及数据集,以 TSN 在 Kinetics400 数据集为例,我们提供了多种不同配置的 TSN,报告了速度,显存占用,模型精度等指标;

并且提供不同 segment ,不同分辨率数据读取,不同源数据类型等情况下的结果,并提供模型以及实验记录供用户直接下载使用。

Kinetics400-CSN 在不同 setting 的结果

Kinetics400-TSN 在不同 setting 的结果

不仅如此,MMAction2 作为一个视频理解领域的 benchmark,还提供了不同源数据处理下模型精度的研究,为社区提供一定的参考。之所以要做这个 benchmark,是由于数据集来源不同,标注形式各异,往往会给研究者带来很大的困扰,从而带来复现结果的精度异常。比如对于 Kinetics400 是视频帧而言,目前没有一个标准的解帧分辨率规定,固定长宽比或者保持长宽比的选择都有。

对此,MMAction2 对于不同的数据集处理做了详细的 benchmark,比如输入视频的分辨率(340x256, 视频短边256,视频短边320),视频的输入类型(原始视频,视频帧,视频特征),视频的编码方式(插入密集关键帧编码,删除冗余帧编码),以供社区参考。

各种 benchmark


高速多样的训练Pipeline

在视频理解领域里,比较重要的问题就是如何解决训练时的 IO 瓶颈问题。一般的解决方式是事先去抽好视频的帧,或者 on the fly 地对 Video 进行在线解码,MMAction2 对于这两种方法都有相应的支持。

具体地,对于训速度的优化,MMAction2 主要提供了以下几种方案的支持,并在相同硬件条件下对市面上的主流 Codebase 进行了速度对比,结果普遍优于现有的框架和 Released Code。

训练速度 Benchmark

  1. 多IO后端的支持。MMAction2 支持从 Disk 或者分布式存储中的 lustre 读取,也支持通过 ceph,类似网络硬盘中的文件进行读取,以及 Memcached 下进行数据读取。

  2. 多视频解码方式的支持。MMAction2 支持 on the fly 地去解码 video,并提供多种解码器的使用,OpenCV, PyAV, Decord,并在保证精度的前提下进行了一定的优化。

  3. Pipeline处理上的加速。MMAction2 是分布式的训练框架,并且在一些数据增强中提供了 lazy 选项,类似 resize – crop – flip 这种数据处理的 pattern,每步可以不立即执行操作,而是保留每步操作的抽象中间结果(比如 bbox 信息,是否 flip 等),最终整合并应用到 Frame 上,减少 IO 操作的次数,大大增加训练速度。此外,还支持 TurboJPEG 的图片解码方式,加速视频帧的读取。



训练 Pipeline 的优化

不仅如此,MMAction2 也支持处理各种模态信息的 Pipeline,除了 Video 和 RGB 帧以外,还支持处理光流(Flow),音频(Audio),以及压缩的视频(Compressed Video,即 Motion vector, I-Frame等)。


详尽的文档教程

不仅作为一个研究导向的框架,MMAction2 还可以作为一个可以用于入门和教学的框架。它包含了详尽的文档说明以及一系列面向新用户和行为识别新手的教程,包括 数据处理-框架安装-训练/测试模型-新增模块 的“一条龙”文档,旨在降低研究者的入手 MMAction2 的门槛。

对于数据的获取,MMAction2 对每一种数据集都提供了详尽的获取指导,用户只需要按照文档说明在命令行里键入对应的指令,即可完成数据集数据和对应 annotation 的获取!

Kinetics 数据集准备概览

对于框架各个特性的介绍和使用,MMAction2 也编写了详细的说明文档和教程,供使用者参考,使用 MMAction2 不迷路!

MMAction2 Tutorial Document

不仅如此,为了让用户快速入手,MMAction2 还提供了 Colab 的在线教程,让用户立刻就能感受到使用 MMAction2 的快感!

Colab Tutorial


丰富的 Demo

MMAction2 除了优秀的训练框架外,也为广大社区用户提供了基于 MMAction2 实现的丰富 Demo,以供大家使用。包括 长短视频标签预测,摄像头动作识别,时空动作检测,GradCAM 等,欢迎大家来玩!

优秀的售后服务

除了尽力及时处理 issue,为了更方便及时交流与准确表达,我们还创建了社区群。


总结

相比于在图像领域的分类、检测、分割等任务的算法和框架日臻成熟,视频的行为理解领域目前还有许多亟待解决的问题,我们希望 MMAction2 可以降低该领域的研究门槛,成为研究者们从事视频理解的利器!

END

备注:理解

视频理解交流群

视频理解、视频分类、视频摘要等最新资讯,若已为CV君其他账号好友请直接私信。

我爱计算机视觉

微信号:aicvml

QQ群:805388940

微博知乎:@我爱计算机视觉

投稿:amos@52cv.net

网站:www.52cv.net

在看,让更多人看到  

  • 5
    点赞
  • 25
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值