Java教程

视频理解相关源码解析

本文主要是介绍视频理解相关源码解析,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

文章目录

    • 0. 前言
    • 1. 综合项目总体对比
    • 2. 分别介绍
      • 2.1 MMAction2
      • 2.2 SlowFast
      • 2.3 PyTorchVideo
      • 2.4 MMAction
      • 2.5 PaddleVideo
      • 2.6 GluonCV

0. 前言

  • 在视频理解领域搞了一年多,看了不少源码,记录一下。

  • 一般开源项目分为

    • 综合性源码库:包括众多类型数据(动作识别、时序动作检测、时空动作检测)、模型,还包括各种训练、测试、可视化、部署等一系列工具。
      • 如MMAction2,SlowFast,PyTorchVideo,MMAction,GluonCV,PaddleVideo
      • 其实还有一些别的综合性的,但感觉都没有人维护,或者算法太老了,所以也就不提了。
    • 单个算法项目:一般就是针对一篇论文的项目,比如TSN/TSM等。
  • 本文非常主观,非常主观,非常主观

1. 综合项目总体对比

MMAction2SlowFastPyTorchVideoMMActionGluonCVPaddleVideo
框架PyTorchPyTorchPyTorchPyTorchMXNet/PyTorchPaddle
出品方OpenMMLab&商汤FacebookFacebookOpenMMLab&商汤Amazon百度
2D行为识别模型TSN、TSM、TIN、TANet、TPN//TSNTSN、TPNTSN、TSM
3D行为识别模型C3D、I3D、R2plus1D、SlowOnly、SlowFast、X3DSlow、SlowFast、C2D、I3D、Non-local、X3DC2D、I3D、Slow、SlowFast、CSN、R(2+1)D、X3DC3D、I3D、SlowOnly、SlowFast、R(2+1)D、CSNC3D、I3D、R2+1D、P3D、R3D、Non-Local、SlowFast、CSN、TPNSlowFast
行为识别数据集UCF101、HMDB51、Kinetics、Something-Something-V1&2、MomentInTime、HVU、Jester、GYMKinetics、Charades、Something-Something-V2ucf101、hmdb51、kinetics、epic_kitchen、DoMSEV、CharadesHMDB51、UCF101、KineticsKinetics400、Something-SomethingV2Kinetics、UCF101、YouTube8M
时序行为检测模型BSN/BMN/SSN//SSN/BMN
时序行为检测数据集ActivityNet、THUMOS14//THUMOS14/ActivityNet
时空行为检测模型Fast-RCNN + SlowOnly/SlowFastFast-RCNN + Slow/SlowFast/Fast-RCNN+I3D//
时空行为检测数据集AVAAVA/AVA//
模块化程度(二次开发)极高,非常方便二次开发较高,适合二次开发(模型相关代码模块化程度较低)极高,适合作为组件用于其他框架较高,适合二次开发没看过源码没看过源码
可视化工具完善完善//不了解不了解/
部署相关工具只有PyTorch转ONNXPyTorch自带不了解听说有,不知道好不好用
学习成本高(特别是时空行为检测相关,特别高)较高中等较高不了解高(毕竟要学Paddle)
文档完善程度极高一般较高较高一般极高
亮点功能完善,模块化程度高,开发人员活跃,适合二次开发模型好,Facebook背书Facebook背书,作为组件非常好/几个Tutorial上手可能比较好文档全中文,部署相关可能比较方便
个人评价最适合作为二次开发,熟悉之后用起来挺顺手视频理解相关必须学习,可能代码质量不如MMAction2,新算法还是质量高就是Torchvision的视频版,作为组件不错别用了,开发者不活跃,建议转向 MMAction2说实话,没看出GluonCV相比MMAction2有什么优势要新学Paddle,我个人应该不会愿意

2. 分别介绍

2.1 MMAction2

  • 商汤&港中文出品

  • 支持的模型:

    • 行为识别:C3D/I3D/R2plus1D/SlowOnly/SlowFast/X3D/CSN/TSN/TSM/TIN/TPN/TANet/TRN/OmniSource/Audio/Non-local
    • 时序行为检测:BSN/BMN/SSN
    • 时空行为检测:SlowOnly+FastRCNN/SlowFast+FastRCNN/LFB
  • 支持的数据集

    • 行为识别:UCF101/HMDB51/Kinetics/Something-Something-V1&2/MomentInTime/HVU/Jester/GYM
    • 时序行为检测:ActivityNet/THUMOS14
    • 时空行为检测:AVA
  • 支持的工具

    • 单卡&多卡的训练、测试、验证
    • Demo:行为识别长视频&Webcam、时空行为检测长视频&Webcam
    • 部署:PyTorch转ONNX
    • 行为识别GradCAM
    • 中英文详细文档
    • 数据集准备详细文档+脚本
  • 优点:

    • 模块化良好,熟悉了之后,非常适合二次开发。
    • 模型多,2D行为识别、3D行为识别、时空行为检测都有。
    • 更新快,开发人员比较活跃,可以预见的未来,系列项目应该是一直会被支持。
  • 缺点:

    • 上手困难。

      • 模型构建使用了多个组件搭积木的形式,不熟悉的时候容易搞晕。
      • 训练、测试、验证使用了 OpenMMLab 系列的通用工具 MMCV,相关组件不一定在 MMAction2 源码库内,新手想要探索细节或添加新功能会比较费劲。
      • 时空行为检测模型使用了 MMDetection 中的内容,要看懂真不容易,连我这么熟悉 MMAction2 都云里雾里的,不仅要熟悉 MMAction2,还要熟悉 MMDetection。
    • 技术水平应该是不如 SlowFast。而SlowFast是 Facebook 视频理解成果展示平台,各种大佬研究员直接下场。

    • 部分模型(X3D/CSN)只提供了推理模型,没有自行训练过,不知道 finetune 或者 train from scratch 效果如何。

  • 个人使用感想:

    • 熟悉代码之后,二次开发还是很方便的,我个人比较喜欢这个库,目前提交了不少PR。
  • 源码阅读笔记:

    • 数据概述
    • 模型概述
    • 训练概述
    • Non-local
    • GradCAM
    • 时空行为检测Webcam

2.2 SlowFast

  • Facebook 出品,facebookresearch/pytorchvideo
  • 支持的模型:
    • 不支持2D行为识别和时序行为检测
    • 行为识别:Slow/SlowFast/C2D/I3D/Non-local/X3D
    • 时空行为检测:FastRCNN+SlowFast/FastRCNN+Slow
  • 支持的数据集:
    • 行为识别:Kinetics/Charades/Something-Something-V2
    • 时空行为检测:AVA
  • 支持的工具:
    • 单卡/多卡训练、测试、评估
    • Multigrid Training
    • 完善的可视化工具,包括长视频、webcam的行为识别、时空行为检测结果展示。
    • GradCAM 工具。
    • 有数据准备教程,比较详细。
  • 优点:
    • Facebook背书,开发人员技术水平应该是最强的,star也最多。
    • 是Facebook的视频理解成果展示平台,所以会发一些比较新的模型。
    • 算法模块化等都还不错(个人感觉可能不如MMAction2但也差不多),二次开发也还行。
    • 各种工具比较齐全,特别是可视化工具。
  • 缺点:
    • 文档有些不详细,特别是可视化相关的,需要自己看源码。
    • 对新手不太友好,学习成本较高。
    • 没有2D行为识别模型,即TSN/TSM等,3D模型的推理速度相对较慢。
    • 开发人员回复速度慢,有问题、BUG基本靠自己解决,我看除了FAIR外提交的PR官方都没有什么回复。
    • 数据集的抽象程度不高,需要自己改写(有了PyTorchVideo后应该好一些)
  • 个人笔记
    • GradCAM
    • 时空行为检测Webcam Demo
    • 训练相关

2.3 PyTorchVideo

  • Facebook 出品

  • 支持的模型

    • 行为识别:C2D/I3D/Slow/SlowFast/CSN/R(2+1)D/X3D
    • 自监督学习:SimCLR/BYOL(Bootstrap Your Own Latent)/Non-Parametric Instance Discrimination
  • 支持的数据集:

    • 行为识别:ucf101/hmdb51/kinetics/epic_kitchen/DoMSEV/Charades
  • 支持的工具

    • 抽象程度高的视频数据集类,以及抽帧、预处理工具
    • 支持基于PyTorch的部署工具。毕竟PyTorch就是Facebook出品的,支持自家产品很正常。但好像一般部署都不会直接使用PyTorch。
  • 优点:

    • 看这个库的名字就知道,应该是PyTorch/Facebook在视频理解领域的布局(TensorFlow在视频理解领域都没有什么能follow的工作)
    • 抽象程度高,作为组件使用非常方便。(个人打算在MMAction2中继承)
    • 文档、教程相对完善,且lightningFlash会支持该库。
  • 缺点:

    • 只是组件库,不是直接用来训练用的,官方没有训练代码(但可作为SlowFast的组件)。相关训练代码都是 Lightning 相关人员设计的。换句话说,不知道训练代码能不能训练得到想要的结果。
    • 不知道SlowFast中的模型是否会全部移植到PyTorchVideo中。如果只是最常用的这几个模型放过来,后续不会持续更新最新的,那对我来说,这个库可有可无。
    • 部署工具鸡肋,可能还是我不愿意用PyTorch部署的关系。

2.4 MMAction

  • OpenMMLab与商汤出品
  • 这个不多写了,支持的功能MMAction2基本上都支持。
  • 我也不知道为什么会有MMAction和MMAction2,反正现在这个库不更新了。
  • 白瞎了这1.6K的star,MMAction2才700+。

2.5 PaddleVideo

  • 百度出品,Paddle框架
  • 支持的模型
    • 行为识别:TSN/TSM/SlowFast/PP-TSM/VideoTag/AttengionLSTM
    • 时空行为检测:BMN
  • 支持的数据集
    • 行为识别:Kinetics/UCF101/YouTube8M
    • 时序行为检测:ActivityNet
  • 优点:
    • 所有文档都有中文,且文档比较完善。
    • 有一些别的库没有的经验,比如PP-TSM,以及一些实际应用场景(VideoTag和FootballAction)
    • 有一些推理优化工具。
    • 说自己提高了训练速度(但没有跟MMAction2比过……)
  • 缺点:
    • Paddle实现的,有一定学习成本。
    • 用户不多,猜测如果有坑还是要自己踩。

2.6 GluonCV

  • Amazon出品

  • 支持的模型

    • 行为识别:TSN/C3D/I3D/R2+1D/P3D/R3D/Non-Local/SlowFast/CSN/TPN
  • 支持的数据集

    • 行为识别:Kinetics400/SomethingSomethingV2
  • 优点:

    • MXNet和PyTorch都支持
    • 有一些比较容易上手的教程(Jupyter格式的)
  • 缺点:

    • MXNet的有一定学习成本。
    • 用户相对较少,二次开发估计也比较少,二次开发的成本估计也有一些。
    • 说实话,我没感觉GluonCV相比MMAction2有什么优势。
这篇关于视频理解相关源码解析的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!