网上已有很多关于MOT的文章,此系列仅为个人阅读随笔,便于初学者的共同成长。若希望详细了解,建议阅读原文。

本文是tracking by detection 方法进行多目标跟踪的文章,在SORT的基础上进行了改进(SORT见前一篇随笔)。

论文地址:https://arxiv.org/pdf/1703.07402.pdf

代码地址:https://github.com/nwojke/deep_sort

文章概述

本方法最大的特点是加入了appearance信息来提高之前SORT的性能,用cosine 距离来度量 tracks 和 detection 的相似度以减少 SORT算法中ID switch的次数(减少了45%),并使用Kalman预测和实际detection间的平方马氏距离来过滤可能性小的匹配。

文章观点

  • SORT算法ID switch次数高是因为采用的关联矩阵只在状态预测不确定性较小的时候准确;(既状态估计模型存在缺陷)
  • SORT在通过遮挡进行跟踪时存在缺陷,因为它们通常出现在正视的相机场景中;
  • 本文将关联度量替换为结合运动和外观信息的度量。

文章方法

采用递归卡尔曼滤波和逐帧数据关联的传统单一假设跟踪方法。

1. 状态估计

  • 我们的追踪场景的定义是基于8维状态空间,由于并非本文核心思想,详细含义见原文在此不再赘述;
  • 本文使用具有等速运动和线性观测模型的标准卡尔曼滤波器,将bounding box坐标作为物体状态的直接观测模型;
  • 对于每个track,计算该帧距上次匹配成功的帧数,该计数器在卡尔曼滤波器预测期间递增,并且当轨道已经与测量相关联时重置为0;
  • 如果计数器得出的数目大于阈值则判断为离开场景,将其ID删除。如果现有的追踪不能匹配就开启一个新的track ID;
  • 本文引入一个试验track的概念,既新的track出现的前三帧被看作为试验阶段,在这一阶段每一帧都要匹配成功,否则就算匹配失败,会被删除。

2. 指派问题

  • 使用平方马氏距离来度量预测track的Kalman状态(BBOX的几何位置)和新到来detection之间的距离;

  • 使用cosine距离来度量各个track的appearance feature(128维)和detection feature之间的距离,来跟准确地预测ID;

  • 引入两个二值函数来限制assignment矩阵,分别比较平方马氏距离以及cosine距离和阈值的大小来进行判断,将两个函数结合起来对矩阵进行限制;

  • 使用combined距离来作为cost matrix进行度量各个track和detection之间的距离,这里文中只使用cosine距离进行度量(即将lambda设置为0),使用马氏距离排除不可能的情况,既基于由卡尔曼滤波器推断的可能的物体位置忽略不可行的分配。

3. 级联匹配

  • 物体被遮挡一段时间后,卡尔曼滤波预测的不确定性大大增加并且状态空间上可观察性变得很低,并且马氏距离更倾向于不确定性更大的track,这是由于减少了detection的标准差距预计的轨迹的距离。因此这里引入级联匹配,优先匹配detection与最近出现的track;
  • Matching Cascade算法见下,在最后结束算法时使用SORT中的IOU距离来解决局部遮挡的问题,通过计算unmatched tracks(只有前一帧是unmatched的) 和 unmatched detection的IOU distance,详细见最后的代码流程图。

4.  Appearance 描述 

通过在大规模re-id数据集上pre-trained深度网络来提取128维的appearance特征,用L2正则化将特征投影到单位超球面上来与余弦距离进行匹配,网络结构见下(需要注意的是此处的detection用的是POI中的detection坐标,文中的CNN网络用于提取bbox中的特征)。

文章结果

  • 相对于SORT,本文主要解决的是ID Switch过大的问题,从结果中可以看出ID Switch比之前下降了45%,并达到了state-of-the-art;
  • MOTA,MOTP,MT,ML,FN指标相对于之前都有提升,并且速度下降不大,很实用;
  • FM的上升主要是因为联合的matrix中过于强调appearance,导致在有遮挡或者丢失时detection的错误导致;
  • FP的升高很多,文章中提出这主要是由于静态场景中detection的错误以及过长的允许丢失的track age所导致的(相对于SORT只用相邻帧进行匹配来说,Deep SORT允许高达30帧的丢失,而Kalman的等速运动模型没有改变,这主要造成了FP的升高)。

 代码流程图

最新文章

  1. Oracle同义词
  2. mate-desktop安装在其他目录时一些配置信息
  3. maven 配置
  4. paip.Log4j配置不起作用的解决
  5. 算法教程(1)zz
  6. PowerShell处理RSS信息
  7. ASP.NET fails to detect Internet Explorer 10
  8. [转载]Spring Bean Definition Inheritance
  9. imadjust函数分析一
  10. [转载] 50个Android开发人员必备UI效果源码
  11. YouTube为什么打不开?以及简便的訪问的方法/解决方式!
  12. tcpdump抓取HTTP包【转载】
  13. day12(表达式,推导式,名称空间与作用域,函数的嵌套定义)
  14. 痞子衡嵌入式:语音处理工具Jays-PySPEECH诞生记(1)- 环境搭建(Python2.7.14 + PyAudio0.2.11 + Matplotlib2.2.3 + SpeechRecognition3.8.1 + pyttsx3 2.7)
  15. Azkaban启动web--javax.net.ssl.SSLException: Unrecognized SSL message, plaintext connection? at sun.se
  16. Mac 在terminal 上用命令打开sublime
  17. 3150luogu洛谷
  18. pandas重新索引
  19. [Chrome_Error] (failed) net::ERR_INCOMPLETE_CHUNKED_ENCODING 与 nginx 502 bad gateway
  20. SharePoint _layouts下自定义程序页面权限管理

热门文章

  1. eclipse远程调试Tomcat方法(测试成功并且说说遇到的坑)
  2. 【洛谷T7153】(考试) 中位数
  3. THUWC2018咸鱼记
  4. JS中的闭包问题
  5. Django---第三方
  6. MySQL服务读取参数文件my.cnf的规律研究探索
  7. Thinking in Java 第二章学习笔记
  8. Problem : 1196 ( Lowest Bit )
  9. 使用外置无线网卡来切换mac地址
  10. Java大世界