多目标跟踪(MOT)最新综述,一文快速入门

0 写在前面

去年暑期实习的时候,误打误撞进了一家自动驾驶公司,做了多目标跟踪的工作,工作也是秋招时靠着相关工作拿到了几个算法岗offer,后来毕业课题也换成了多目标跟踪。

前段时间毕业整体资料,在B站上传了一个由自己改进算法制作的行人多目标跟踪demo——《大规模密集行人检测跟踪,行人多目标跟踪,MOT20效果可以,可用于视频智能监控、自动驾驶等》

链接:https://www.bilibili.com/video/BV1zv411p7N2
https://www.bilibili.com/video/BV1zv411p7N2

没想到被很多朋友看到,其中不少朋友私信或者评论留言说对多目标跟踪感兴趣,但资料比较少,希望分享一份多目标跟踪的综述。

于是便有了这篇文章,也在朋友的建议下建了一个自动驾驶交流群,感兴趣的朋友可以文末扫码进群一起学习、一起玩。

PS:虽然最后的毕业论文查重是0.7%,但为了日后抽查安全,部分内容只能是语焉不详,还望理解。

1 MOT简介

多目标跟踪,一般简称为MOT(Multiple Object Tracking),也有一些文献称作MTT(Multiple Target Tracking)。在事先不知道目标数量的情况下,对视频中的行人、汽车、动物等多个目标进行检测并赋予ID进行轨迹跟踪。不同的目标拥有不同的ID,以便实现后续的轨迹预测、精准查找等工作。

MOT是计算机视觉领域的一项关键技术,在自动驾驶、智能监控、行为识别等方向应用广泛。如下图所示,对于输入视频,输出目标的跟踪结果,包括目标包围框和对应的ID编号。理论上,同一个目标的ID编号保持不变。

多目标跟踪中即要面对在单目标跟踪中存在的遮挡、变形、运动模糊、拥挤场景、快速运动、光照变化、尺度变化等挑战,还要面对如轨迹的初始化与终止、相似目标间的相互干扰等复杂问题。因此,多目标跟踪当前仍然是图像处理中的一个极具挑战性的方向,吸引了不少研究人员的长期投入。

2 研究难点

目标跟踪是一个早已存在的方向,但之前的研究主要集中于单目标跟踪,直到近几年,多目标跟踪才得到研究者的密切关注。与其它计算机视觉任务相比,多目标跟踪任务主要存在以下研究难点:

1) 数据集缺乏且标注困难;

2)目标检测不够准确;

3)频繁的目标遮挡;

4)目标数量不确定;

5)速度较慢,实时性不够;

3 数据集

近年,随着自动驾驶、智能监控等应用的发展需要,陆续形成了一些MOT基准数据集,包括MOTChallenge数据集、KITTI和其它几个已不太常用的数据集。

3.1 MOTChallenge数据集

MOTChallenge是目前MOT领域使用最多的数据集,主要是针对行人多目标跟踪任务,包括MOT15、MOT16、MOT17和MOT20等数据集。

MOT20数据集示例

3.2 KITTI数据集

KITTI数据集是目前全球最大的自动驾驶场景数据集,支持双目、光流、视觉测距、3D目标检测和3D跟踪等任务。通过一辆装有彩色/灰色立体摄像头、Velodyne HDL-64E旋转式3D激光扫描仪和GPS/IMU导航系统等多传感器的汽车在城市中环、郊区和高速公路等多个场景的多个路段收集而成。

对于MOT任务,KITTI提供了激光雷达点云和3D包围框轨迹。

KITTI数据集示例

3.3 其它数据集

除了MOTChallenge和KITTI数据集之外,还有几个较老的数据集,目前已经很少使用。主要有UA-DETRAC[60]数据集、TUD[61]数据集和PETS2009[62]数据集。感兴趣的朋友可以去网上搜一下。

PS: 由于KITTI官网数据集下载很慢很慢,所以我之前就特意写了一篇分享文章,分享了KITTI的全套百度网盘下载链接,帮助到了一些国内的朋友,也收获了一些好评。有需要的朋友可点击下文获取,免费分享:

kitti数据集简介与网盘分享 kitti-object、kitti-tracking自动驾驶

MOT16数据集的百度网盘也一起免费分享了出来:

多目标跟踪数据集MOT16简介与百度网盘分享 MOT16百度云

4 评价指标

经过不断完善,目前形成了一组多目标跟踪专用评估指标[63-64]。具体定义及计算公式如下:

1)FP:False Positive,即真实情况中没有,但跟踪算法误检出有目标存在。
2)FN:False Negative,即真实情况中有,但跟踪算法漏检了。
3)IDS:ID Switch,目标ID切换的次数。
4)MOTA: Multiple Object Tracking Accuracy,多目标跟踪准确度。

MOTA可以较好地反映跟踪准确度,是当前MOT的主要评估指标。但MOTA不能反映MOT算法对同一个目标轨迹长时间跟踪性能表现。

5)IDF1: ID F1得分,正确身份标签赋予的检测框与平均ground truth和计算的检测数量的比值。

6)MT:Mostly Tracked,大多数目标被跟踪的轨迹数量。目标被成功跟踪到的轨迹长度与轨迹总长度的比值大于等于80%的轨迹数量。

7)ML:Mostly Lost,大多数目标被跟丢的轨迹数量。目标被成功跟踪到的轨迹长度与轨迹总长度的比值小于等于20%的轨迹数量。

8)MOTP:Multiple Object Tracking Precision,多目标跟踪精度。表示得到的检测框和真实标注框之间的重合程度。

9)FPS:Frames Per Second,每秒处理的帧数。

5 研究方案

视觉目标跟踪的发展相对较短,主要集中在近十余年。早期比较经典的方法有Meanshift[19]和粒子滤波[20]等方法,但整体精度较低,且主要为单目标跟踪。

近五六年来,随着目标检测的性能得到了飞跃式进步,也诞生了基于检测进行跟踪的方案,并迅速成为当前多目标跟踪的主流框架,极大地推动了MOT任务的前进。同时,近期也出现了基于检测和跟踪联合框架以及基于注意力机制的框架,开始引起研究者们的注意力。

5.1 MOT三种框架——基于Tracking-by-detection的MOT

基于Tracking-by-detaction框架的MOT算法是先对视频序列的每一帧进行目标检测,根据包围框对目标进行裁剪,得到图像中的所有目标。然后,转化为前后两帧之间的目标关联问题,通过IoU、外观等构建相似度矩阵,并通过匈牙利算法、贪婪算法等方法进行求解。

代表方法:SORT、DeepSORT

5.2 MOT三种框架——基于检测和跟踪联合的MOT
JDE采用FPN结构,分别从原图的 1/8,1/16 和 1/32 三个尺度进行预测。在这三个不同尺度的输出特征图上分别加入预测头(prediction head),每个预测头由几层卷积层构成,并输出大小为 (6A+D)×H×W 的特征向量。其中 A 为对应尺度下设置的锚框的数量,D 是外观特征的维度。

JDE在MOT16测试集上MOTA=64.4%,GPU环境下,高分辨率输入图像下FPS达到22.2,低分辨率输入图像下FPS达到30.3,是第一个接近实时的多目标跟踪算法。

代表方法:JDE、FairMOT、CenterTrack、ChainedTracker等

5.3 MOT三种框架——基于注意力机制的MOT
随着Transformer[42]等注意力机制在计算机视觉中的应用火热,近期开始有研究者提出了基于注意力机制的多目标跟踪框架,目前主要有TransTrack[43]和TrackFormer[44],这两项工作都是将Transformer应用到MOT中。

TransTrack将当前帧的特征图作为Key,将前一帧的目标特征Query和一组从当前帧学习到的目标特征Query一起作为整个网络的输入Query。

代表方法:TransTrack、TrackFormer等

6 效果展示
6.1 图片


6.2 视频

链接:https://www.bilibili.com/video/BV1zv411p7N2
https://www.bilibili.com/video/BV1zv411p7N2

7 参考文献

在课题研究中,参考了大量相关文献,表示感谢。限于篇幅原因,这里就不再罗列了。最后,再次表示感谢。

8 写在最后

对于文章开头提到的自动驾驶交流群,主要是一些学习资料的分享、资讯、招聘、内推信息分享等,感兴趣的朋友欢迎进群一起玩:

多目标跟踪(MOT)最新综述,一文快速入门相关推荐

  1. 一文快速入门分库分表中间件 Sharding-JDBC (必修课)

    书接上文 <一文快速入门分库分表(必修课)>,这篇拖了好长的时间,本来计划在一周前就该写完的,结果家庭内部突然人事调整,领导层进行权利交接,随之宣布我正式当爹,紧接着家庭地位滑落至第三名, ...

  2. 一文快速入门分库分表(必修课)

    之前有不少刚入坑 Java 的粉丝留言,想系统的学习一下分库分表相关技术,可我一直没下定决心搞,眼下赶上公司项目在使用 sharding-jdbc 对现有 MySQL 架构做分库分表的改造,所以借此机 ...

  3. 【Sharding-JDBC系列二】一文快速入门分库分表中间件 Sharding-JDBC (必修课)

    作为Sharding-JDBC 分库分表实战系列的开篇文章,我们在前文中回顾了一下分库分表的基础知识,对分库分表的拆分方式有了一定的了解,下边我们介绍一下 Sharding-JDBC框架和快速的搭建一 ...

  4. 一文快速入门 Kotlin 协程

    一.Kotlin 协程 Kotlin 协程提供了一种全新处理并发的方式,你可以在 Android 平台上使用它来简化异步执行的代码.协程从 Kotlin 1.3 版本开始引入,但这一概念在编程世界诞生 ...

  5. 一文快速入门分库分表中间件 Sharding-JDBC

    一.Sharding-JDBC 简介 Sharding-JDBC 最早是当当网内部使用的一款分库分表框架,到2017年的时候才开始对外开源,这几年在大量社区贡献者的不断迭代下,功能也逐渐完善,现已更名 ...

  6. csdn最新最全 Allure快速入门 自动化测试报告

    目录 1.关于Allure 2.Allure安装 3.Allure用法 3.1 语法格式 3.2 常用option和command 4.Allure报告结构 5.Allure特性 5.1 Flaky ...

  7. 多目标跟踪最新综述(基于Transformer/图模型/检测和关联/孪生网络)

    本文约11000字,建议阅读10+分钟 本文试图对计算机视觉在MOT中的最新发展趋势进行总结和回顾. 论文链接:https://arxiv.org/pdf/2209.04796.pdf 关注微信公众号 ...

  8. 深度学习超分辨率最新综述:一文道尽技术分类与效果评测

    置顶我爱计算机视觉,更快获取CVML新技术 最近52CV介绍了好几篇图像超分辨率的工作,比如: CVPR 2019 神奇的超分辨率算法DPSR:应对图像模糊降质 CVPR 2019 | 旷视提出超分辨 ...

  9. 2引擎帮助文档_ANSA快速入门指南中文帮助文档浅析(上)

    作者 | 团长 仿真秀科普作者 首发 | 仿真秀公众号(ID:fangzhenxiu2018) 导读:本文是ANSA入门系列第一篇(后续将会在仿真秀官网或APP同步发布).本系列致力于提供ANSA软件 ...

最新文章

  1. Eclipse 代码风格配置
  2. Android通过广播监测Wi-Fi和便携式热点开关状态
  3. 大剑无锋之大数据面试题第一套(选择题)
  4. 程序员效率:如何合理的分解任务
  5. popen 如何获取指令执行情况_Linux下使用popen()执行shell命令
  6. caffeine 读操作源码走读 为什么读这么快
  7. 你还在纠结要不要学 Go 吗?
  8. 也谈PostgreSQL的Vacuum机制及其最佳实践
  9. Linux实验一:安装配置Vmware-Linux实验环境
  10. codeforces 486 E. LIS of Sequence(dp)
  11. Slickedit 打开Qt工程
  12. STM8S103K3和STM8S105K4原理图
  13. 2020车载凯立德懒人包下载_【汽车导航升级】2020抖音最新流行音乐包 无损 可CD刻录福利分享...
  14. 力扣刷题 DAY_85 贪心
  15. 判断年份是闰年还是平年
  16. 2019迅雷校园招聘!后端工程师岗位两次技术面题目总结和解析
  17. Matplotlib的中文字体显示为方块的问题
  18. 通过距离感应器获取实际距离[FAQ04538][Sensor]java层获得P_sensor距离传感器当前真实值,不止0,1
  19. PCIE/GPU/显卡参数性能查看工具搜集
  20. VoIP技术(5)--VoIP语音质量保证

热门文章

  1. 使用JDBC处理Oracle大数据
  2. leetcode @python 124. Binary Tree Maximum Path Sum
  3. Tomcat源码分析——server.xml文件的加载
  4. careercup-数学与概率 7.7
  5. struts2错误:The Struts dispatcher cannot be found.
  6. 数字金融反欺诈技术名词表
  7. [习题]如何触发 GridView 身体里面的「子控件」的事件 (ASP.NET案例精编 / 清华大学出版社 Ch.10/11两章的补充)...
  8. react+typescript报错集锦持续更新
  9. 从零开始学习前端JAVASCRIPT — 7、JavaScript基础EVENT
  10. Xcode字体新宠 Monoid