从Deep-sort到FairMOT

转自:
https://zhuanlan.zhihu.com/p/260292966?utm_source=wechat_session

目标跟踪分为单目标跟踪(SOT)和多目标跟踪(MOT)。SOT一般在首帧给出目标,跟踪器(tracker)需要在后续帧定位出目标位置,可以看成目标重定位问题。MOT一般需要检测器(detector)先检测出目标,跟踪器对属于同一目标的框进行关联,可以看作目标匹配问题。下文重点介绍MOT算法。

MOT算法的通常工作流程:(1)给定视频的原始帧;(2)运行对象检测器以获得对象的边界框;(3)对于每个检测到的物体,计算出不同的特征,通常是视觉和运动特征;(4)之后,相似度计算步骤计算两个对象属于同一目标的概率;(5)最后,关联步骤为每个对象分配数字ID。

多目标跟踪的核心步骤:
在这里插入图片描述

由此可见多目标跟踪的核心在于检测,检测不到目标就无法进行跟踪,技术难点在于检测到目标后如何区分不同的目标,也就是目标跟特征提取和相似度计算。

多目标跟踪的评价指标:
各种指标
对于多目标跟踪,最主要的评价指标就是MOTA。这个指标综合了三点因素:FP、FN、IDsw.。FP即False Postive,为误检测的目标数量;FN即False Negetive,为未检出的真实目标数量;IDsw.即同一目标发生ID切换的次数。
多目标跟踪还有很多的评价指标,比如MOTP、IDF1、MT、ML、Frag等。作为入门,读者最需要关注的就是MOTA,其他指标可以等对MOT有了进一步了解后再关注。
IDF1:识别F值(Identification F-Score)是指每个行人框中行人ID识别的F 值。公式为:
在这里插入图片描述

一般来说IDF1是用来评价跟踪器好坏的第一默认指标,如果要给跟踪器性能排个序,一般会选择IDF1这个指标作为默认的初始排序指标。这三个指标可以根据任意其中两个推断出第三个的值,因此也可以只展示其中两个,当然最好这两个包含IDF1。

当然还有其余的评价指标,在这儿不再过多描述。

多目标跟踪的数据集:
在这里插入图片描述

多目标跟踪框架

现有多目标跟踪框架都是基于SORT和DEEP SORT演变而来。
在这里插入图片描述
从这两个工业界关注度最高的算法说起。
SORT作为一个粗略的框架,核心就是两个算法:卡尔曼滤波和匈牙利匹配。
卡尔曼滤波可以基于目标前一时刻的位置,来预测当前时刻的位置,并且可以比传感器(在目标跟踪中即目标检测器,比如Yolo等)更准确的估计目标的位置。卡尔曼滤波分为两个过程:预测和更新。
卡尔曼滤波详解
匈牙利算法解决的是一个分配问题。SK-learn库的linear_assignment_和scipy库的linear_sum_assignment都实现了这一算法,只需要输入cost_matrix即代价矩阵就能得到最优匹配。不过要注意的是这两个库函数虽然算法一样,但给的输出格式不同。具体算法步骤也很简单,是一个复杂度 [公式] 的算法。
匈牙利算法详解
DeepSORT的优化主要就是基于匈牙利算法里的这个代价矩阵。它在IOU Match之前做了一次额外的级联匹配,利用了外观特征和马氏距离。
外观特征就是通过一个Re-ID的网络提取的,类似于人脸识别网络中的特征值。然后是因为欧氏距离忽略空间域分布的计算结果,所以增加里马氏距离作为运动信息的约束。

目前主流算法:
在这里插入图片描述

1 SDE系列算法

这意味着系统至少需要两个计算密集型组件:一个检测器和一个嵌入模型(ReID)。为了方便起见,我们将这些方法称为分离检测和嵌入方法(SDE)。因此,总的推断时间大致是两个部分的总和,并将随着目标数量的增加而增加。SDE方法的特点给实时MOT系统的构建带来了严峻的挑战,这是实践的必然要求。deepsort就是SDE系列算法的代表,很显然这样的操作方式整个系统算法耗时较长,因此,通过“特征共享”降低算法耗时,进行项目落地成为一个比较好的思路。

2 特征共享的系列算法

两阶段特征共享算法
联合检测器和嵌入学习的一种选择是采用FasterR-CNN框架(Ren et al.2015),这是一种两级检测器:

第一个阶段,区域优先网络(RPN),与FasterR-CNN保持相同,并输出检测到的边界框。
第二阶段,FastR-CNN(Girshick 2015)通过用度量学习监督取代分类监督来转化为嵌入学习模型(Xiao et al.2017;Voigtlaender et al.2019)。
两阶段共享算法Track R-CNN 就是对 Mask R-CNN 进行扩展,使用 roi-pool 从共享的特征图中获取候选框所对应的图像特征,并通过一个轻量的网络针对每一个候选框同时进行:1)检测框回归与分类;2)前景 mask回归;3)Re-ID 特征回归。

一阶段特征共享算法 JDE

算法流程图:
在这里插入图片描述
在这里插入图片描述

JDE 算法存在的问题

它效仿 “one-stage” 物体检测器的思路,去掉了 roi-pool 层,但它依然保留了 anchor 的概念,因此也就依然存在多个(不完美匹配的)anchor 对应一个物体的情况。
一个更严重的问题是同一个 anchor(相似的图像区域)可能会对应不同的人,假如一张图像中有两个相邻的人,并且存在一个 anchor 和这两个物体的交集都很大,在前后两个不同的时刻,因为人或相机微小的运动,可能导致该 anchor 需要输出截然不同的身份标识,从而在很大程度上增加了网络学习的难度。
在MOT中ReID特征的维数不宜过高,因为MOT的数据集一般来说都比较小。结合这三点看上去很直接的改进,作者便在各个数据集中取得了很大的效果提升。

FairMOT
论文改进思路:
我们以 CenterNet 为基础,加入 Re-ID 分支,提出了 FairMOT 方法,使其能够同时进行物体检测和跟踪,下图展示了方法的框图。
简单来讲,FairMOT 会对每一个像素进行预测,预测其是否是物体的中心、物体的大小和以其为中心的图像区域的 Re-ID 特征。
检测和跟踪两个任务都是以“当前像素”为中心,所以不存在对齐的问题,也不存在严重的顾此失彼的不公平问题,这也是称这个方法为 FairMOT 的原因。
在这里插入图片描述

(1)主干网络
采用ResNet-34 作为主干网络,以便在准确性和速度之间取得良好的平衡。为了适应不同规模的对象,如图2所示,将深层聚合(DLA)的一种变体应用于主干网

与原始DLA 不同,它在低层聚合和低层聚合之间具有更多的跳跃连接,类似于特征金字塔网络(FPN)。此外,上采样模块中的所有卷积层都由可变形的卷积层代替,以便它们可以根据对象的尺寸和姿势动态调整感受野。 这些修改也有助于减轻对齐问题。

(2)物体检测分支
本方法中将目标检测视为高分辨率特征图上基于中心的包围盒回归任务。特别是,将三个并行回归头(regression heads)附加到主干网络以分别估计热图,对象中心偏移和边界框大小。 通过对主干网络的输出特征图应用3×3卷积(具有256个通道)来实现每个回归头(head),然后通过1×1卷积层生成最终目标。

Heatmap Head
这个head负责估计对象中心的位置。这里采用基于热图的表示法,热图的尺寸为1×H×W。 随着热图中位置和对象中心之间的距离,响应呈指数衰减。

Center Offset Head
该head负责更精确地定位对象。ReID功能与对象中心的对齐精准度对于性能至关重要。

Box Size Head
该部分负责估计每个锚点位置的目标边界框的高度和宽度,与Re-ID功能没有直接关系,但是定位精度将影响对象检测性能的评估。

(3)id嵌入分支 Identity Embedding Branch

id嵌入分支的目标是生成可以区分不同对象的特征。理想情况下,不同对象之间的距离应大于同一对象之间的距离。为了实现该目标,本方法在主干特征之上应用了具有128个内核的卷积层,以提取每个位置的身份嵌入特征。

损失函数
在这里插入图片描述

实验

anchor free 和 anchor based 对于多目标跟踪算法的影响,从下面的实验可以看出在不同大小的采样下anchor free的效果要比anchor based好很多。
在这里插入图片描述

Reid特征的选择:可以看出特征维度为128时效果最佳。
在这里插入图片描述

与JDE多目标跟踪算法对比
在这里插入图片描述

与其他两阶段的算法相比
在这里插入图片描述

  • 6
    点赞
  • 45
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值