当前位置: 代码迷 >> 综合 >> SiamMOT:Siamese Multi-Object Tracking论文详读
  详细解决方案

SiamMOT:Siamese Multi-Object Tracking论文详读

热度:79   发布时间:2023-11-21 09:07:44.0

论文地址:https://assets.amazon.science/ee/91/c7a6a6c942aa9c4aca99d71191ea/slimmot-siamese-multi-object-training.pdf

一、摘要

1.本文工作主要是针对SiamNet-base object tracking的优化改进
但我觉得对其他类型的object tracking工作也是很有借鉴意义的

2.SiamMOT在SiamNet-base object tracking的基础上加入了一个运动模型,并证明了加入运动模型的必要性

3.该运动模型分为隐式建模(IMM)运行和显式建模(EMM)两种
该运动模型用于估计两帧之间实例的运行情况,以便检测到的实例相关联

4.在MOT17、TAO-person以及Caltech Roadside Pedestrians三个数据集上证明了运行建模对于MOT任务的必要性,并表明SiamMOT取得了SOTA
并在ACM MM'20 HiEve Grand Challenge的HiEve数据集上性能优于winners

5.SiamMOT同时也是efficient的,在单GPU输入720P的视频能达到17FPS

二、Introduction中提出的一些观点

1.把早期的跟踪工作描绘为一个在tracking-by-detection”范式(paradigm)基础下的基于图的优化问题(graph-based optimization problem)
每个节点(node)表示一个检测(detection);每条边对两个节点链接的可能性进行编码,一般使用视觉和运动的组合来表示每个节点

2.之前的工作通常需要构建一个很大的离线图,所以很不适用于实时系统

3.近期也出现了一些实施跟踪的工作,专注于改进连续帧上的本地链接,而不是构建离线图来重新识别跨越大的时间间隔的实例

4.作者认为在SORT中一个较好的运行模型是提高其局部连接精度的关键
SORT中使用的传统算法KF运动建模,而Trackor++和CenterTrack是使用CNN基于视觉和几何特征对运动建模

三、方法论和试验结果先知

方法

1.使用基于区域的暹罗网络(region-based Siamese Network),其中“基于区域”的说法来自region-
based detection network即使用了Faster-RCNN,称为SiamMOT
基于区域的说法同时也是为了区分于CenterTrack工作中基于点特征隐式推断实例运动

2.此外在基于暹罗网络的单目标跟踪任务的启发下,提出了IMM和EMM两种运动建模方法

试验结果

1.证明:在三个不同的多人跟踪数据集进行了广泛的消融分析后的结果表明,实例级运动建模对于健壮的在线MOT非常重要,特别是在更具挑战性的跟踪场景中。
此外证明SiamMOT的运动模型可以显著提高跟踪性能,特别是在摄像机快速移动和人体姿势显著变形的情况下。

2.在MOT17数据集上以DLA-34为backbone的、带有EMM的、使用公共检测(public detection)的SiamMOT实现了65.9的MOTA和63.3的IDF1

3.最近的TAO-person数据集的TrackAP指标从Trackor++的36.7提升至了41.1

4.Human In Events(HiEve)数据集上取得了最好的结果 

四、变量声明

先对整体框架有个大致的了解,便于了解“运动建模”这部分的位置

参数解读一下吧,对这个过程基本就能了解了

图1:SiamMOT是一个基于区域的多目标跟踪网络,可同时检测和关联对象实例。暹罗跟踪器对跨帧的实例运动进行建模,用于在线多目标跟踪中的临时链接检测。帧的主干特征图以其实际大小的1/2可视化。 

输入变量

和分别表示两个时刻的帧

表示时刻一系列的检测实例(instances)(即是box)

输出变量

输出的是由和经空间匹配后经求解器求解出的

过程量

是跟踪器将传播到时刻产生的

过程量的表示对时刻输入帧预测的一系列实例(instances)(即是box)(注意这里的有两个,一个是输出量,一个是过程量)

为区域提议

为过程特征图

Siamese Track 在整个框架中表示的是一个跟踪过程,其实它就是我们接下来要重点提到的运动建模部分,如下原文

五、对主要创新点-两种运动建模的解读统一形式

建立一个统一的形式:

\left(v_{i}^{t+\delta}, \tilde{R}_{i}^{t+\delta}\right)=\mathcal{T}\left(\mathbf{f}_{R_{i}}^{t}, \mathbf{f}_{S_{i}}^{t+\delta} ; \Theta\right)

这段就不翻译了,我觉得原汁原味的英语更容易理解

1. Implicit motion model

隐式运动模型使用MLP隐式估计两帧之间的实例级运动,如图

IMM通过将特征\mathbf{f}_{R_{i}}^{t}\mathbf{f}_{S_{i}}^{t+\delta}按通道连接在一起后送入MLP中预测可见置信度v_{i}以及相关位置及范围变化m_{i}m_{i}定义为下式,其中的\left(x_{i}^{t}, y_{i}^{t}, w_{i}^{t}, h_{i}^{t}\right)为目标boxR_{i}^{t}的4个参数:

m_{i}=\left[\frac{x_{i}^{t+\delta}-x_{i}^{t}}{w_{i}^{t}}, \frac{y_{i}^{t+\delta}-y_{i}^{t}}{h_{i}^{t}}, \log \frac{w_{i}^{t+\delta}}{w_{i}^{t}} \log \frac{h_{i}^{t+\delta}}{h_{i}^{t}}\right]

利用这些便可从方程的逆变换中很容易地推导出\tilde{R}^{t+\delta}

使用的loss形式为\mathbf{L}=\ell_{\text {focal }}\left(v_{i}, v_{i}^{*}\right)+\mathbb{1}\left[v_{i}^{*}\right] \ell_{\text {reg }}\left(m_{i}, m_{i}^{*}\right),其中的\mathbb{1}为指示函数(indicator function)

2. Explicit motion mode

显式运动建模的流程如图

可以看到主要利用的是逐通道互相关操作(*表示),具体来说是通过逐通道互相关操作来生成像素级别的特征响应图r_{i}
之后通过使用CNN \psi以两个分支分别进行卷积操作。其中一个分支负责预测密集的可见性置信度图v_{i},用以指示每个像素包含目标对象的可能性。另一个分支负责预测密集的位置特征图p_{i},用以对从该位置到左上角和右下角的偏移量进行编码。

因此,我们可以通过以下变换导出(x, y)处的实例区域:\mathcal{R}(\mathbf{p}(x, y))=[x-l, y-t, x+r, y+b],其中\mathbf{p}(x, y)=[l, t, r, b],也就是左上角和右下角的偏移量。

最后的运动估计就可表示为:

\begin{array}{r} \tilde{R}_{i}^{t+\delta}=\mathcal{R}\left(\mathbf{p}_{i}\left(x^{*}, y^{*}\right)\right) ; \quad v_{i}^{t+\delta}=\mathbf{v}_{i}\left(x^{*}, y^{*}\right) \\ \text { s.t. }\left(x^{*}, y^{*}\right)=\underset{x, y}{\operatorname{argmax}}\left(\mathbf{v}_{i} \odot \boldsymbol{\eta}_{i}\right) \end{array}

其中⊙是逐个元素的乘法,\eta_{i}是指定相应候选区域的非负惩罚分数的惩罚映射,由\boldsymbol{\eta}_{i}(x, y)=\lambda \mathcal{C}+(1-\lambda) \mathcal{S}\left(\mathcal{R}(\mathbf{p}(x, y)), R_{i}^{t}\right)计算得到。其中\mathcal{S}为高斯函数,负责评价\mathcal{R}(\mathbf{p}(x, y))R_{i}^{t}的相关性。\mathcal{C}是关于之前目标区域R_{i}^{t}的几何中心一个余弦窗函数。

损失函数形式为:

\begin{aligned} \mathbf{L} &=\sum_{x, y} \ell_{f o c a l}\left(\mathbf{v}_{i}(x, y), \mathbf{v}_{i}^{*}(x, y)\right) \\ &+\sum_{r} \mathbb{1}\left[\mathbf{v}_{i}^{*}(x, y)=1\right]\left(w(x, y) \cdot \ell_{r e g}\left(\mathbf{p}_{i}(x, y), \mathbf{p}_{i}^{*}(x, y)\right)\right) \end{aligned}

3. 小结

说实话我觉得显式和隐式的运动建模方法之间的差异并没有想象中的那么大,只能说是在这两种方法之间相比能体现出显式和隐式之分。

私以为SiamMOT中的显示建模仍然属于一种“隐式”建模,而卡尔曼滤波和匈牙利算法这种属于显式建模。当然,这只是个人观点。

就本文来说EMM相对IMM确实更加“显式”一点,它使用与通道无关的相关操作来允许网络显式地学习连续帧中相同实例之间的匹配函数,并实现了一种更细粒度的像素级监督机制,这对于减少与干扰项错误匹配的情况很重要。

  相关解决方案