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 种学术数据集:
任务 | 算法 | 数据集 |
---|---|---|
视频目标检测 | DFF FGFA SELSA Temporal ROI Align |
ILSVRC |
多目标跟踪 | SORT DeepSORT Tracktor QDTrack ByteTrack OCSORT StrongSORT++ |
MOT Challenge CrowdHuman LVIS TAO DanceTrack |
视频实例分割 |
MaskTrack RCNN Mask2Former |
YouTube-VIS |
单目标跟踪 | SiameseRPN++ PrDiMP STARK |
LaSOT TrackingNet GOT10K UAV123 OTB100 VOT2018 |
在 MMTracking 0.x 版本中,我们在 quick_run.md 中为每个任务的模型使用方法提供了例子,然而由于每个任务的算法有不同的使用方式,这些例子不能很好地覆盖全部的使用样例,因此在 MMTracking 1.0 版本中,为了让用户能够更加简单快捷地使用 MMTracking 中的任何一个算法,在每一个算法 config 对应的 readme.md 里,我们为每一个算法都提供了更加详细的使用文档,包括训练、测试、推理流程,真正做到了开箱即用。
一个多目标跟踪领域 SORT 算法的使用样例如下:
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-tya0PPWR-1666869697576)(https://p3-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/9772b480b9174c5dbe87886253ea2889~tplv-k3u1fbpfcp-zoom-1.image)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-MrC8YTze-1666869697577)(https://p3-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/401cca0142d046bda63cb592f289addf~tplv-k3u1fbpfcp-zoom-1.image)]
我们对 MMTracking 1.0 进行一个简单的总结,作为 OpenMMLab 2.0 的视频目标感知工具箱,目前我们已经在整个开源社区获得广泛使用。基于全新的架构和生态,MMTracking 具有可扩展易配置的特性。同时,我们也提供丰富的算法模型,方便的研究工具。
未来,我们也将不断地迭代更新,为社区带来更好用的视频目标感知工具箱。我们计划在未来推出更易用的推理接口,更丰富的模型库。同时我们也将不断拓展 MMTracking 的能力,支持更多的视频数据集,更广泛的任务(如视频物体分割、视频全景分割等)。我们也欢迎社区用户来试用新版本的 MMTracking,提出宝贵建议,以及为 MMTracking 贡献代码。
我们将在 2023 年 1 月 1 日正式发布 MMTracking 1.0 版本到主分支,对新版本感兴趣的同学,可以使用 1.x 分支来体验我们的全新版本。我们将在未来保持双分支的同时维护,主要的维护时间线如下所示: