简洁易用,更多算法,快来开箱新一代视频目标感知开源工具箱
MMTracking 是 OpenMMLab 生态面向视频物体感知的开源算法库,主要涵盖了计算机视觉领域丰富的视频物体感知任务,比如视频目标检测、多目标跟踪、视频实例分割、单目标跟踪。
2021 年 1 月,MMTracking 发布了首个版本,集成了当时主流的模型;
2022 年 9 月,我们发布了 MMTracking v1.0.0rc1,全面升级了架构设计,适配全新的 OpenMMLab 2.0 体系。
我们接下来将从全新架构设计,更简洁的代码结构,更丰富的算法库,更完善的使用文档四个方面,对全新升级的 MMTracking 1.0 进行介绍。
全新架构设计
在 MMTracking 原有的架构设计中,对于一个典型的模型训练过程,我们可以发现各个模块的构建被分散在了脚本、MMTracking 库函数、MMCV 库函数中(如图 1 所示)模型的前向传播,反向更新分散在执行器和钩子中,这对于用户理解训练流程带来了很多困难,用户需要自定义修改时容易找不到位置。
图 1:原架构训练逻辑
在新的架构中,MMEngine 的执行器集中了所有的模块构建功能,训练脚本只用于最基本的配置解析(如图 2 所示),这样新的训练流程不仅逻辑更加清晰,大大减少了代码量,还能为用户带来更方便的模型调试体验,让用户灵活地定义模型的前向和反向过程。
图 2:新架构训练逻辑
更简洁的代码结构
在 0.x 版本中,为了尽可能地复用代码,MMTracking 较为依赖 MMDetection,这对 MMDetection 不熟悉的用户带来了较大的上手难度,在 1.0 版本中,我们尽可能的剥离 MMTracking 对 MMDetction 的依赖:
1. 剥离了数据集类对 MMDetection 中 CocoDataset 的依赖
在 0.x 版本中,MMTracking 某个具体的数据集类,比如 MOTChallengeDataset 的继承关系如下:mmtrack.MOTChallengeDataset --> mmtrack.CocoVideoDataset --> mmdet.CocoDataset --> mmdet.CustomDataset --> torch.utils.data.Dataset,包含了 4 层继承关系,这给用户阅读源码带来了极大的困难;
在 1.0 版本中,得益于 MMEngine 里 BaseDataset 的实现,MMTracking 某个具体的数据集类,比如 MOTChallengeDataset 的继承关系如下:mmtrack.MOTChallengeDataset --> mmtrack.BaseVideoDataset --> mmengine.BaseDataset,同时大部分的代码集中于 mmtrack.BaseVideoDataset,进而将继承关系降低到 2 层,甚至 1 层,为用户理解源码提供了便利。
2. 剥离了模型输出格式对 MMDetection 的依赖
在 0.x 版本中,MMTracking 为了更好地接入 MMDetection 体系,进而利用 MMDetection 丰富的检测模型,模型的输出格式与 MMDetection 保持一致,这导致用户容易不理解模型输出含义的问题;
在 1.0 版本中,MMTracking 使用 MMEngine 的 Datasample 概念构建自己的 TrackDataSample,将网络的输入输出均使用 TrackDataSample 包装,提供了统一的、易读的、易理解的输出格式。
3. 剥离了模型输出可视化对 MMDetection 的依赖
在 0.x 版本中,MMTracking 利用 MMDetection 进行坐标框的可视化,对于使用 MMDetection 中的 API 而无法满足的需求,则在 MMTracking 内部自行实现一套逻辑,这导致了多套可视化逻辑的存在;
在 1.0 版本中,MMTracking 使用 MMEngine 的 Visualizer 模块,为各个任务的可视化提供了一个统一的入口。此外,我们可以直接借鉴 MMDetection 3.x 强大的 2D 图像可视化模块 DetLocalVisualizer 中图像绘制相关的各种强大功能,用在视频物体感知可视化中;同时,我们还极大地增强了可视化功能的可拓展性,用户自定义需要的可视化功能时会更加容易。
更丰富的算法库
MMTracking 目前涵盖了视频目标检测、多目标跟踪、视频实例分割、单目标跟踪四大视频物体感知任务,在 0.x 版本中,MMTracking 共计支持 13 种算法、13 种学术数据集。
在 1.0 版本中,我们对一些前沿算法进行了支持,比如多目标跟踪领域的 StrongSORT++、视频实例分割领域的 Mask2former、单目标跟踪领域的 PrDiMP,目前 MMTracking 1.0 版本共计支持 16 种算法、13 种学术数据集:
任务 | 算法 | 数据集 |
---|---|---|
视频目标检测 | DFFFGFASELSATemporal ROI Align | ILSVRC |
多目标跟踪 | SORTDeepSORTTracktorQDTrackByteTrackOCSORTStrongSORT++ | MOT ChallengeCrowdHumanLVISTAODanceTrack |
视频实例分割 | MaskTrack RCNNMask2Former | YouTube-VIS |
单目标跟踪 | SiameseRPN++PrDiMPSTARK | LaSOTTrackingNetGOT10KUAV123OTB100VOT2018 |
更完善的使用文档
在 MMTracking 0.x 版本中,我们在 quick_run.md 中为每个任务的模型使用方法提供了例子,然而由于每个任务的算法有不同的使用方式,这些例子不能很好地覆盖全部的使用样例,因此在 MMTracking 1.0 版本中,为了让用户能够更加简单快捷地使用 MMTracking 中的任何一个算法,在每一个算法 config 对应的 readme.md 里,我们为每一个算法都提供了更加详细的使用文档,包括训练、测试、推理流程,真正做到了开箱即用。
一个多目标跟踪领域 SORT 算法的使用样例如下:
SORT:
https://github.com/open-mmlab/mmtracking/tree/1.x/configs/mot/sort#get-started
总结
我们对 MMTracking 1.0 进行一个简单的总结,作为 OpenMMLab 2.0 的视频目标感知工具箱,目前我们已经在整个开源社区获得广泛使用。基于全新的架构和生态,MMTracking 具有可扩展易配置的特性。同时,我们也提供丰富的算法模型,方便的研究工具。
后续规划
未来,我们也将不断地迭代更新,为社区带来更好用的视频目标感知工具箱。我们计划在未来推出更易用的推理接口,更丰富的模型库。
同时我们也将不断拓展 MMTracking 的能力,支持更多的视频数据集,更广泛的任务(如视频物体分割、视频全景分割等)。
我们也欢迎社区用户来试用新版本的 MMTracking,提出宝贵建议,以及为 MMTracking 贡献代码。
MMTracking 新版本地址:
https://github.com/open-mmlab/mmtracking/tree/1.x
我们将在 2023 年 1 月 1 日正式发布 MMTracking 1.0 版本到主分支,对新版本感兴趣的同学,可以使用 1.x 分支来体验我们的全新版本。我们将在未来保持双分支的同时维护,主要的维护时间线如下所示:
相关文章
- Adobe Acrobat Pro DC 2019 软件安装步骤
- Adobe Acrobat XI Pro 11 软件安装步骤
- 2023IntelliJ IDEA激活码(2023IntelliJ IDEA最新激活码)2023IntelliJ IDEA激活码
- 2023CLion最新激活码教程
- 工厂人员行为识别检测系统
- 3.5. [kustz] 为 Container 添加健康检查方法
- 3.6. [kustz] 镜像拉取鉴权和策略
- 4.1. [kustz] 使用 cobrautils 为命令添加更实用的命令参数
- PDF阅读器鼻祖Adobe acrobat DC2022-64位直装免激活版本
- R语言统计学DOE实验设计:用平衡不完全区组设计(BIBD)分析纸飞机飞行时间实验数据
- 【视频】R语言逻辑回归(Logistic回归)模型分类预测病人冠心病风险|数据分享|附代码数据
- 【视频】R语言生存分析原理与晚期肺癌患者分析案例|数据分享|附代码数据
- R语言基于决策树的银行信贷风险预警模型|附代码数据
- 人脸检测和对齐算法MTCNN
- 使用URLSearchParams类获取地址栏参数
- 【NumPy高级运用】NumPy的Matrix与Broadcast高级运用以及IO操作
- 脚本实现电话短信报警
- 耶鲁大学教授:研究生做科研的 11 条 “军规“
- sweetviz 生成的 HTML 报告里图表中的中文显示乱码 解决方法
- 利用 ALV 实现增删改查系列之二:仅让 ALV 报表某一列允许被编辑试读版