视频理解相关源码解析

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。
  • 源码阅读笔记:

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后应该好一些)
  • 个人笔记

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有什么优势。
  • 4
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: YOLO(You Only Look Once)是一种实时目标检测算法,它以较快的速度在图像或视频中检测和定位物体。YOLO算法采用了全卷积神经网络结构,将图像分割为网格,并在每个网格中预测多个边界框和类别得分。 YOLO的源码解析PDF是指对YOLO算法的实现细节进行分析和解读的文档。这个文档可能包含YOLO算法的整体结构、网络架构以及训练和测试过程的详细说明。 在解析YOLO源码时,可能会介绍YOLO的网络结构,如何进行前向传播和反向传播,以及如何计算损失函数。此外,文档还可能讨论YOLO算法中使用的各种技巧和改进,例如使用Anchor Box、多尺度检测和类别平衡等。 在解析YOLO源码的过程中,还可能讲解YOLO算法中一些关键的模块和技术,如Darknet网络结构、卷积层、池化层以及非极大值抑制等。 了解YOLO源码的设计和实现细节,有助于我们深入理解YOLO算法的原理和优缺点,以及在实际应用中如何进行参数调整和算法优化。 需要注意的是,YOLO算法的源码解析可能比较复杂,需要具备一定的计算机视觉和深度学习知识才能进行理解和分析。因此,对于初学者来说,可能需要花费一定的时间和精力才能完全理解和掌握。 ### 回答2: "YOLO源码解析"是一本关于YOLO(You Only Look Once)目标检测算法的PDF书籍。YOLO是一种非常流行的实时目标检测算法,具有快速和高准确率的特点。 该书籍涵盖了YOLO算法的完整源码解析过程,包括算法的核心思想、实现细节和技术原理。通过学习这本书籍,读者可以深入了解YOLO算法的设计目标、算法流程、网络结构和训练过程。 书籍首先介绍了YOLO算法的基本原理,即将目标检测问题转化为一个回归问题,并使用单个神经网络来同时进行目标分类和边界框回归。然后详细解释了YOLO算法中所使用的网络结构和各个组件的作用,包括卷积层、池化层、全连接层等。 接下来,该书籍对YOLO算法的具体实现进行了解析。它详细介绍了如何对输入图像进行预处理和数据增强,以及如何训练网络模型和优化损失函数。此外,书籍还讨论了如何处理不同尺度和不同类别的目标,并如何自适应地调整检测框的大小和位置。 除了算法的实现细节,该书籍还涉及了YOLO算法的一些改进和扩展,如YOLOv2和YOLOv3。它介绍了这些改进算法的设计思路和性能提升,并给出了实验结果和比较分析。 总的来说,“YOLO源码解析”这本PDF书籍是一本深入解析YOLO目标检测算法的权威指南。通过阅读此书,读者可以系统地了解YOLO算法的原理、源码实现和改进方法,为进一步的研究和应用打下坚实的基础。 ### 回答3: YOLO源码解析PDF是一份解析YOLO算法源代码的文件,目的是帮助读者深入理解YOLO算法的原理和实现细节。 首先,YOLO(You Only Look Once)是一种实时目标检测算法,它的主要特点是将目标检测任务转化为一个回归问题,通过一个神经网络模型直接在图像上预测目标的位置和类别。 该PDF文件首先会介绍YOLO算法的整体结构和工作原理,包括输入图像的预处理、网络的构建以及输出结果的解码过程。它会详细解释YOLO网络是如何通过卷积和池化层来提取图像的特征,并将这些特征映射到不同尺度的特征图上。同时,该文件还会讲解如何使用anchors来回归预测框的位置。 另外,该PDF还会对YOLO源码的实现细节进行深入解析,包括网络的结构定义、前向传播过程、损失函数的定义和反向传播过程。它会讲解YOLO如何通过多个尺度的特征图来检测不同尺寸的目标,并如何利用置信度来判断预测框的置信度。 此外,该文件还会介绍YOLO源码中一些重要的技术细节,比如数据增强、类别的处理、非极大值抑制等。这些细节对于理解算法的性能提升和调优具有重要意义。 通过对YOLO源码的深入解析,读者可以更全面地理解该算法的原理和实现方法,并有助于读者在实际应用中根据自身需求进行算法改进和优化。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值