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 分支来体验我们的全新版本。我们将在未来保持双分支的同时维护,主要的维护时间线如下所示:

简洁易用,更多算法,快来开箱新一代视频目标感知开源工具箱相关推荐

  1. 3D-BoNet:比3D点云实例分割算法快10倍!代码已开源

    点击我爱计算机视觉标星,更快获取CVML新技术 本文转载自新智元(AI_era)   新智元报道   来源:投稿 编辑:元子 [新智元导读]本文提出了一种基于边界框回归的高效点云实例分割算法,通过最小 ...

  2. 浅谈Retrofit封装-让框架更加简洁易用

    尊重他人的劳动成果,转载请标明出处:http://blog.csdn.net/gengqiquan/article/details/52329259, 本文出自:[gengqiquan的博客] 不知不 ...

  3. Life——一个简洁易用的强化学习库,基于pytorch

    简介 Life是一个基于pytorch实现的强化学习库,实现了多种强化学习算法. 项目地址:https://github.com/HanggeAi/Life 目前包含的强化学习算法 Sarsa mul ...

  4. Easydict 简洁易用的翻译词典,带你轻松优雅地查找单词或翻译文本。

    Easydict Easydict 是一个简洁易用的翻译词典 macOS App,能够轻松优雅地查找单词或翻译文本.Easydict 开箱即用,能自动识别输入文本语言,支持输入翻译,划词翻译和 OCR ...

  5. 了解:一款造福商家的收银软件来啦!2009年至今,致力服务店主10+年,已有 10,000+ 用户共同选择;简洁易用、安全稳定、服务周到、正版软件!轻便好用,让业绩飞起来新一代收银

    了解:一款造福商家的收银软件来啦! 2009年至今,致力服务店主10+年,已有 10,000+ 用户共同选择:简洁易用.安全稳定.服务周到.正版软件! 轻便好用,让业绩飞起来 新一代收银系统 全面支持 ...

  6. vue 提示框modal_v-dialogs v1.9.0 - 基于 Vue2 的简洁易用的弹出窗口,包含 modal, alert, mask, toast 等功能模式...

    v-dialogs 基于Vue2.x的简洁易用的弹出窗口插件,其包含有 Modal, Alert, Mask 与 Toast 等功能模式 更多文档.Demo 请访问: the jQuery versi ...

  7. 白话Elasticsearch45-深入聚合数据分析之易并行聚合算法,三角选择原则,近似聚合算法

    文章目录 概述 易并行聚合算法 三角选择原则 近似聚合算法 概述 继续跟中华石杉老师学习ES,第45篇 课程地址: https://www.roncoo.com/view/55 易并行聚合算法 有些聚 ...

  8. 排序算法--快排的优化

    排序算法–快排的优化 下面是我写的一种快排: #include <iostream> #include <stdlib.h>using namespace std;void P ...

  9. AgentWeb , 一个简洁易用的 Android Web 库

    转自:http://www.jianshu.com/p/c80da1c41af7 AgentWeb 介绍 AgentWeb 是一个高度封装的 Android WebView ,简单易用 , 带有进度条 ...

最新文章

  1. R语言广义线性模型函数GLM、(Model fit and regression diagnostics)、模型充分性评估方法、使用plot函数以及car包函数
  2. 如何使用Cisco命令阻止访问特定网站
  3. java 整型_Java整型计算
  4. keepalived中的脑裂
  5. [SCOI2007] 蜥蜴 (最大流)
  6. JavaScript的Prototype实现
  7. 英语语法---动名词短语详解
  8. java 实现 指派_TAP任务指派问题的汇编实现
  9. python调用zabbixapi接口_python调用zabbix api获取主机信息
  10. 《Web安全之机器学习入门》一 第3章 机器学习概述
  11. AcWing 1015. 摘花生 (DP)
  12. python与java区别-Java与Python到底有什么区别和共同点详细对比
  13. 在html文件中使用支持FLV、HLS、RTSP、WS-FLV/WS-RTSP、WEBRTC、HEVC/H265的永久免费H5直播点播播放器SkeyeWebPlayer.js
  14. 机器人周志_机器人制造基础学习日志
  15. 小米随身wifi没有网络显示无服务器,小米wifi怎么用 小米随身wifi无法上网怎么办...
  16. 数字供销方案、供销社数字化、信息化
  17. Exif的Orientation信息说明
  18. 代数数、超越数、代数函数、超越函数
  19. MarkDown支持Emoji表情
  20. 哪款蓝牙耳机性价比高?双十一蓝牙耳机推荐

热门文章

  1. 积跬步以至千里 中睿天下正式发布XDR解决方案
  2. 972真题分析 | 2023年972信息检索真题简要分析和答题思路参考
  3. Android App打包流程
  4. 鸿蒙用java虚拟机_鸿蒙运行Android应用的时候还会有JVM虚拟机?
  5. 2013年电子商务部工作总结之搜索引擎
  6. 读《100000+软文》
  7. VTK根据几个点插值成样条曲线,然后以样条曲线为中心线,生成圆柱体管道
  8. springboot的filter 过滤器的使用
  9. 四,iOS应用架构谈 本地持久化方案及动态部署
  10. 告别程序员生涯,一点感慨与诸君共勉