多目标跟踪(MOT)论文随笔-POI: Multiple Object Tracking with High Performance Detection and Appearance Feature
网上已有很多关于MOT的文章,此系列仅为个人阅读随笔,便于初学者的共同成长。若希望详细了解,建议阅读原文。
本文是tracking by detection 方法进行多目标跟踪的文章,最大的特点是使用了state-of-the-art的detection和feature来代替以往的方法,使用简单的匹配方法就能达到最好的水平。
论文地址:https://arxiv.org/pdf/1610.06136.pdf
Detection 以及 Appearance特征地址(Google Drive 需FQ):https://drive.google.com/open?id=0B5ACiy41McAHMjczS2p0dFg3emM
文章方法:
- Detection部分
文章针对MOT16所使用的MOTA指标中的FP与FN,使用Faster R-CNN + Skip pooling + multi-region 的方法来结合多尺度特征,从而降低FP与FN。
- Appearance 特征部分
- 使用类似于GoogLeNet的网络来提取128维的特征,并使用cosine距离来度量表观特征(与之前SORT文章所使用的方法类似);
- 结合Softmax和Triplet loss来训练网络。其中Softmax loss用于保证appearance特征有良好的判别性,Triplet loss用来保证同一ID内的cosine距离足够小。(这里与SORT不同的是使用了Triplet loss来减小类内的cosine距离,相当于在training过程中使得特征更加针对于MOT的任务)。
- Online Tracker
使用Kalman滤波来预测track,使用 Kuhn-Munkres 算法来进行结合track和detection (与SORT类似,不同的是SORT使用了Hungarian算法来匹配),具体步骤见下:
- 构造相似度矩阵
计算track和detection间的关联度矩阵At−1 = Affinity(Tt−1,Dt)。计算时结合运动(affmot),形状(affshp),和外观(affapp)的关联度作为最后的关联度矩阵,具体计算如下:




- 匹配track和detection
使用 Kuhn-Munkres 算法来匹配track和detection。由于KM算法是全局优化算法,在一些detection遗失时会出错。因此我们使用两步匹配的策略,首先根据阈值Tt=0.5将track分为高质量的track和低质量的track(大于阈值为高质量,小于为低质量);然后首先匹配高质量的track和detection,再匹配前一步剩下的和低质量的track。Track的质量计算如下,其中couples(trackleti)包含了过往的所有匹配成功的track与detection的关联度:

- 具体流程
具体流程见下表,其中w1=0.5, w2=1.5, w3=1.2, τt=0.5, τa=0.4, τm=100。

4. Offline Tracker
Offline Tracker 是基于H2T的改进版本,主要使用了K-Dense Neighbors搜索算法,具体步骤见下:
- 使用了和Online Tracker相同的特征构建关联度矩阵。
- 文章提出两个阈值来解决motion和平滑关联性对于过大target不稳定的问题。
- 在构建关联度矩阵时放弃了高阶信息,来减少矩阵维度并提高DN搜索的效率。
- 具体步骤见下,由于主要着眼于Online Track,这里就不再详细展开,感兴趣的读者可以参考原文及其给出的参考文献。

文章结果
文章结果见下表,文章结果还是很不错的,在当时也达到了SOTA。不过相比于之前文章分析的SORT(60Hz)以及Deep SORT(40Hz),此方法(10Hz)在实时性方面还是有比较大的差距。个人认为主要是由于检测部分以及用于提取appearance特征的GoogLeNet计算量较大所导致的,这个网络结构换为轻量级的网络即可,在此就不再赘述。

多目标跟踪(MOT)论文随笔-POI: Multiple Object Tracking with High Performance Detection and Appearance Feature的更多相关文章
- 多目标跟踪(MOT)论文随笔-SIMPLE ONLINE AND REALTIME TRACKING WITH A DEEP ASSOCIATION METRIC (Deep SORT)
网上已有很多关于MOT的文章,此系列仅为个人阅读随笔,便于初学者的共同成长.若希望详细了解,建议阅读原文. 本文是tracking by detection 方法进行多目标跟踪的文章,在SORT的基础 ...
- 多目标跟踪(MOT)论文随笔-SIMPLE ONLINE AND REALTIME TRACKING (SORT)
网上已有很多关于MOT的文章,此系列仅为个人阅读随笔,便于初学者的共同成长.若希望详细了解,建议阅读原文. 本文是使用 tracking by detection 方法进行多目标跟踪的文章,是后续de ...
- Motion-Based Multiple Object Tracking
kalman filter tracking... %% Motion-Based Multiple Object Tracking % This example shows how to perfo ...
- Multiple Object Tracking using K-Shortest Paths Optimization简要
参考文献:Multiple Object Tracking using K-Shortest Paths Optimization 核心步骤: 两步:一.detection 二.link detect ...
- 论文笔记:Visual Object Tracking based on Adaptive Siamese and Motion Estimation Network
Visual Object Tracking based on Adaptive Siamese and Motion Estimation 本文提出一种利用上一帧目标位置坐标,在本帧中找出目标可能出 ...
- 论文笔记-Deep Affinity Network for Multiple Object Tracking
作者: ShijieSun, Naveed Akhtar, HuanShengSong, Ajmal Mian, Mubarak Shah 来源: arXiv:1810.11780v1 项目:http ...
- MATLAB 例子研究 Motion-Based Multiple Object Tracking
这个例子是用来识别视频中多个物体运动的.我要研究的是:搞清楚识别的步骤和相应的算法,识别出物体运动的轨迹. 详细参见官方帮助文档,总结如下: 移动物体的识别算法:a background subtra ...
- matlab示例程序--Motion-Based Multiple Object Tracking--卡尔曼多目标跟踪程序--解读
静止背景下的卡尔曼多目标跟踪 最近学习了一下多目标跟踪,看了看MathWorks的关于Motion-Based Multiple Object Tracking的Documention. 官网链接:h ...
- [Object Tracking] Overview of Object Tracking
From: 目标跟踪方法的发展概述 From: 目标跟踪领域进展报告 通用目标的跟踪 经典目标跟踪方法 2010 年以前,目标跟踪领域大部分采用一些经典的跟踪方法,比如 Meanshift.Parti ...
随机推荐
- h264多slice
1, h264编码以macroblock为最小单位(简称MB),多个连续的MB组成一个slice,每个slice编码输出一个NALU 2, 划分slice的方式可以按照固定个数MB的方式: 也可以以对 ...
- Duplicate entry '0' for key 'PRIMARY'的一种可能的解决办法
在MySQL设计好数据库往往数据库中插入数据的时候, 因为主键ID默认是不赋值的,只给其他项目赋值了,相关的SQL代码是这样的 StringBuilder strSql = new StringBui ...
- 试着讲清楚:js代码运行机制
一. js运行机制 js执行引擎 经常看文章的说到js是带线程的,其实这个说法非常的模糊,准确的是js执行引擎是单线程的,js执行引擎就是js代码的执行器,有了这个概念就可以下来说说js是如何运行的了 ...
- Docker学习——Lepus部署
Lepus部署(基于docker)及mysql慢查询配置 介绍 Lepus是一个由Python+PHP开发的数据库企业级监控系统,可用于MySQL/Oracle/MongoDB/Redis 下载镜像 ...
- 【BZOJ1997】Planar(2-sat)
[BZOJ1997]Planar(2-sat) 题面 BZOJ 题解 很久没做过\(2-sat\)了 今天一见,很果断的就来切 这题不难呀 但是有个玄学问题: 平面图的性质:边数\(m\)的最大值为\ ...
- C++堆栈详解
一.预备知识-程序的内存分配 一个由c/C++编译的程序占用的内存分为以下几个部分 1.栈区(stack)- 由编译器自动分配释放 ,存放函数的参数值,局部变量的值等.其操作方式类似于数据结构中的栈. ...
- wpf 研究之道 winform or wpf,u choose who?
很久以前,我们用winform做过一个五子棋的程序,当时用winform的画图,先画出棋盘...后来项目的研究阶段,偶尔用winform做个小工具.闲暇之余,看到介绍wpf的资料,只知道它采用了xam ...
- 2D变形transform的translate和rotate
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...
- Spring与Akka的集成
概述 近年来随着Spark的火热,Spark本身使用的开发语言Scala.用到的分布式内存文件系统Tachyon(现已更名为Alluxio)以及基于Actor并发编程模型的Akka都引起了大家的注意. ...
- three.js引擎基础知识—摄像机、场景及渲染器
一.three.js采用右手坐标系: x轴正方向向右,y轴正方向向上,z轴由屏幕从里向外,如下图右: 二.3D编程三要素:场景.渲染器.摄像机 1.场景:创建的物品和模型都需放入场景中 threejs ...