视频理解相关源码解析
2021/4/26 12:25:18
本文主要是介绍视频理解相关源码解析,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
文章目录
- 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. 综合项目总体对比
MMAction2 | SlowFast | PyTorchVideo | MMAction | GluonCV | PaddleVideo | |
---|---|---|---|---|---|---|
框架 | PyTorch | PyTorch | PyTorch | PyTorch | MXNet/PyTorch | Paddle |
出品方 | OpenMMLab&商汤 | OpenMMLab&商汤 | Amazon | 百度 | ||
2D行为识别模型 | TSN、TSM、TIN、TANet、TPN | / | / | TSN | TSN、TPN | TSN、TSM |
3D行为识别模型 | C3D、I3D、R2plus1D、SlowOnly、SlowFast、X3D | Slow、SlowFast、C2D、I3D、Non-local、X3D | C2D、I3D、Slow、SlowFast、CSN、R(2+1)D、X3D | C3D、I3D、SlowOnly、SlowFast、R(2+1)D、CSN | C3D、I3D、R2+1D、P3D、R3D、Non-Local、SlowFast、CSN、TPN | SlowFast |
行为识别数据集 | UCF101、HMDB51、Kinetics、Something-Something-V1&2、MomentInTime、HVU、Jester、GYM | Kinetics、Charades、Something-Something-V2 | ucf101、hmdb51、kinetics、epic_kitchen、DoMSEV、Charades | HMDB51、UCF101、Kinetics | Kinetics400、Something-SomethingV2 | Kinetics、UCF101、YouTube8M |
时序行为检测模型 | BSN/BMN/SSN | / | / | SSN | / | BMN |
时序行为检测数据集 | ActivityNet、THUMOS14 | / | / | THUMOS14 | / | ActivityNet |
时空行为检测模型 | Fast-RCNN + SlowOnly/SlowFast | Fast-RCNN + Slow/SlowFast | / | Fast-RCNN+I3D | / | / |
时空行为检测数据集 | AVA | AVA | / | AVA | / | / |
模块化程度(二次开发) | 极高,非常方便二次开发 | 较高,适合二次开发(模型相关代码模块化程度较低) | 极高,适合作为组件用于其他框架 | 较高,适合二次开发 | 没看过源码 | 没看过源码 |
可视化工具 | 完善 | 完善 | / | / | 不了解 | 不了解/ |
部署相关工具 | 只有PyTorch转ONNX | 无 | PyTorch自带 | 无 | 不了解 | 听说有,不知道好不好用 |
学习成本 | 高(特别是时空行为检测相关,特别高) | 较高 | 中等 | 较高 | 不了解 | 高(毕竟要学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有什么优势。
这篇关于视频理解相关源码解析的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-26Mybatis官方生成器资料详解与应用教程
- 2024-11-26Mybatis一级缓存资料详解与实战教程
- 2024-11-26Mybatis一级缓存资料详解:新手快速入门
- 2024-11-26SpringBoot3+JDK17搭建后端资料详尽教程
- 2024-11-26Springboot单体架构搭建资料:新手入门教程
- 2024-11-26Springboot单体架构搭建资料详解与实战教程
- 2024-11-26Springboot框架资料:新手入门教程
- 2024-11-26Springboot企业级开发资料入门教程
- 2024-11-26SpringBoot企业级开发资料详解与实战教程
- 2024-11-26Springboot微服务资料:新手入门全攻略