论文地址:https://arxiv.org/abs/2104.09441
代码地址:https://github.com/JudasDie/SOTS
该问现在已经被AAAI收录。
介绍和相关工作
单阶段追踪器的一个大问题是使用单帧输入的信息进行检测,会许多引入虚假的背景。这是由于检测器仅仅依赖单帧图像提供的线索,而单帧图片输入在追踪场景下对于遮挡小目标等问题很难处理,最终会导致检测器将这些分类为背景。
单独由检测器提供的目标坐标位置对于追踪来说事不够鲁棒的。并且人类视觉也不会只专注于一张图片,同时也会关心时序信息。这就启发我们将检测器错误分类的目标通过时序线索进行重新存储来进行二次检查。
在传统的单帧检测的基础上,通过一个二次检查检测机制来对虚假背景再次追踪,从而将时序信息,作为一个单帧视觉的检测的补充线索。不同于过去直接利用时序信息来训练模型,或者增加当前帧的视觉表示,作者提出的再检查网络通过学习过去轨迹的转导来存储错误分类的目标。
即对于一个过去帧的目标坐标,转导结果会再次确认当前帧他周围情况以及预测一个新的候选边界框。该框指示一个错误分类的目标,如果该目标不存在于第一次检查的预测中即目标检测器预测的候选框中,则该框将被重新加载。
主要思路来自于SOT中的最近流行的Siamese方法,其互相关层用于建模时序关联以及预测目标坐标,并且在此基础上,为了适应MOT做出了改变。具体的再re-check模型中,目标的时序信息被表示为他的ID embedding(一个 1 × 1 × C 1\times 1\times C 1×1×C的张量)。目标帧间移动时,通过使用互相关进行跨帧测量ID embedding的相似度来传播位置坐标。因此,追踪器会注意到目标在当前帧的状态,然后进行再次确认检测器的预测来观察是否有目标被错误丢弃了,互相关建模可以通过一个简单的矩阵乘法实现。
将该模块加入CSTrack,成为SiamMOT,达到了SOTA效果。
方法
SiamMOT模型的大体框架如下,包括一个JDE/CStrack追踪器和一个re-check网络。追踪器首先产生检测结果
R
t
d
e
R^{de}_t
Rtde和ID embedding
F
t
i
d
F^{id}_t
Ftid,然后通过一个re-check网络通过重新加载被检测器错误分类的目标来提升时序一致性,最终获得最终的检测框
D
f
i
n
a
l
D_{final}
Dfinal。
该模型是在CSTrack上部署的,JDE和CSTrack的部分就不讲了。主要讲解SiamMOT。
SiamMOT
通过再次利用前一帧产生的ID embedding
E
t
−
1
i
d
E^{id}_{t-1}
Et−1id作为目标的时序线索。re-check网络
Π
Π
Π会通过测量
E
t
−
1
i
d
E^{id}_{t-1}
Et−1id和
F
t
i
d
F_t^{id}
Ftid的相似度来传播过去轨迹。具体的通过一个互相关层进行向前追踪多目标。实验过程中发现,如果一个目标在当前帧消失时,往往会在相似度图中引入一个FP,为解决这个问题,会选择利用视觉特征图
F
t
F_t
Ft和相似度图,微调获得一个更好的指导图,省略具体操作后公式如下:
M
p
=
Π
(
F
t
i
d
,
E
t
−
1
i
d
,
F
t
)
(1)
\boldsymbol{M}_{p}=\Pi\left(\boldsymbol{F}_{t}^{i d}, \boldsymbol{E}_{t-1}^{i d}, \boldsymbol{F}_{t}\right)\tag{1}
Mp=Π(Ftid,Et−1id,Ft)(1)
最终的预测
M
p
M_p
Mp表示过去轨迹到当前帧的转导,将其认为是前景的概率,和原始的检测
B
t
d
e
B^{de}_t
Btde一起送入贪婪NMS中输出转导检测
D
t
r
a
n
s
D_{trans}
Dtrans,和基础的检测
D
b
a
s
e
D_{base}
Dbase一起通过IOU投票机制获得最终的候选边界框
D
f
i
n
a
l
D_{final}
Dfinal。
D
f
i
n
a
l
D_{final}
Dfinal和从
F
t
i
d
F_t^{id}
Ftid中提取的相应的ID embedding一起用于后面的关联。当基础检测错误将目标分类为背景时,转导检测会再次检查这些虚假背景,将其存储到missed boxes中。
Re-check网络
为了提升虚假背景破坏的时序一致性,提出了这个轻量型的re-check网络,由两部分组成,一部分是转导检测模块用于轨迹的传播,一个微调模块用于过滤FP。
转导检测模块
该模块的目的是为了将过去的轨迹传播到当前帧,即预测已存在目标的坐标。目标的坐标是通过测量过去轨迹embedding
E
t
−
1
i
d
=
{
e
t
−
1
1
,
…
,
e
t
−
1
n
}
E_{t-1}^{id} = \{ e^1_{t-1},\dots,e^n_{t-1}\}
Et−1id={et−11,…,et−1n}和当前候选embedding
F
t
i
d
F^{id}_t
Ftid之间的相似度进行预测,其中n代表过去轨迹的总数。通过一个互相关操作
∗
*
∗从而为每个目标会获得一个坐标相应图
m
i
m_i
mi:
m
i
=
(
e
t
−
1
i
∗
F
t
i
d
)
∣
i
=
1
n
(4)
\boldsymbol{m}_{i}=\left.\left(\boldsymbol{e}_{t-1}^{i} * \boldsymbol{F}_{t}^{i d}\right)\right|_{i=1} ^{n} \tag{4}
mi=(et−1i∗Ftid)∣∣∣i=1n(4)
m
i
m_i
mi中最大的值表示过去轨迹的预测状态,等式4返回的是一个相似度图
M
=
{
m
1
,
…
,
m
n
}
M = \{m_1,\dots,m_n\}
M={m1,…,mn}。每个值代表一个过去轨迹i的转移检测。互相关的建模通过pytorch进行一个简单的矩阵乘法实现。
然后通过缩小高响应范围将
m
i
m_i
mi离散化为一个二值mask
m
^
i
\hat m_i
m^i,原因是避免相似外貌带来的高响应影响,这个操作可以减少模糊预测,最终获得二值mask:
m
^
i
x
y
=
{
1
if
∥
x
−
c
x
∥
≤
r
,
∥
y
−
c
y
∥
≤
r
0
otherwise
(5)
\hat{\boldsymbol{m}}_{i}^{x y}=\left\{\begin{array}{ll} 1 & \text { if }\left\|x-c_{x}\right\| \leq r,\left\|y-c_{y}\right\| \leq r \\ 0 & \text { otherwise } \end{array}\right. \tag{5}
m^ixy={10 if ∥x−cx∥≤r,∥y−cy∥≤r otherwise (5)
m
^
i
x
y
\hat{\boldsymbol{m}}_{i}^{x y}
m^ixy代表
m
^
i
\hat m_i
m^i在
(
x
,
y
)
(x,y)
(x,y)处的值,
c
x
,
c
y
c_x,c_y
cx,cy代表在
m
i
m_i
mi最大值处的坐标。
r
r
r代表缩放率。最终将
m
^
i
\hat m_i
m^i乘上
m
i
m_i
mi来减少模糊响应。然后通过沿着通道维度像素级别求和聚合响应图:
M
s
=
∑
i
=
1
n
(
m
^
i
⋅
m
i
)
(6)
\boldsymbol{M}_{s}=\sum_{i=1}^{n}\left(\hat{\boldsymbol{m}}_{i} \cdot \boldsymbol{m}_{i}\right) \tag{6}
Ms=i=1∑n(m^i⋅mi)(6)
获得的聚合相似度图
M
s
M_s
Ms,显示了当前帧这个位置包含一个和过去轨迹相关的边界框的概率。如果得分很高,则代表相对于过去的一个轨迹他在这个位置存在一个潜在的box。
微调模块
为了缓解目标相识带来的FP,提出了这个模块来引入原始的视觉特征
F
t
∈
R
H
×
W
×
C
(
C
=
256
)
F_t\in R^{H\times W \times C}(C = 256)
Ft∈RH×W×C(C=256),为更精细的坐标提供语义信息。首先通过一个倒置neck模块编码相似度图
M
s
M_s
Ms(3x3卷积将
M
s
M_s
Ms送入高维空间,例如256通道数,然后再通过3x3卷积逐渐下采样到道通数1),得到
M
s
′
∈
R
H
×
W
×
1
M^{'}_s\in R^{H\times W\times 1}
Ms′∈RH×W×1,乘上视觉特征
F
t
F_t
Ft,得到强化特征
F
^
t
∈
R
H
×
W
×
C
(
C
=
256
)
\hat F_t\in R^{H\times W \times C}(C = 256)
F^t∈RH×W×C(C=256)。
F
^
=
F
t
⋅
M
s
′
.
(7)
\hat{\boldsymbol{F}}=\boldsymbol{F}_{t} \cdot \boldsymbol{M}_{s}^{\prime} . \tag{7}
F^=Ft⋅Ms′.(7)
然后强化特征通过几个卷积层获得最终的预测 M p M_p Mp。
优化
除了CSTrack原始的损失,这里为re-check网络引入一个新的监督函数。相似度图
M
p
M_p
Mp的GT定义为一个多重高斯分布的组合。具体的每个目标的监督信号为一个高斯mask:
t
i
=
exp
(
−
(
x
−
c
i
x
)
2
+
(
y
−
c
i
y
)
2
2
σ
i
2
)
(8)
\boldsymbol{t}_{i}=\exp \left(-\frac{\left(x-c_{i}^{x}\right)^{2}+\left(y-c_{i}^{y}\right)^{2}}{2 \sigma_{i}^{2}}\right)\tag{8}
ti=exp(−2σi2(x−cix)2+(y−ciy)2)(8)
c
i
=
(
c
i
x
,
c
i
y
)
c_{i}=\left(c_{i}^{x}, c_{i}^{y}\right)
ci=(cix,ciy)表示目标中心位置,
σ
i
σ_i
σi表示对象大小自适应标准偏差,公式8产生一组GT mask集合
t
=
{
t
1
,
…
,
t
n
}
t = \{t_1,\dots,t_n\}
t={t1,…,tn}。沿着通道维度对
t
t
t求和,获得监督
M
p
M_p
Mp的监督信号
T
T
T。
为减少两个高斯分布的重合,
σ
i
σ_i
σi上线设置为1。然后使用Logistic−MSE Loss 监督re-check网络。
L
g
=
−
1
n
∑
x
y
{
(
1
−
M
p
x
y
)
log
(
M
p
x
y
)
,
if
T
x
y
=
1
(
1
−
T
x
y
)
M
p
x
y
log
(
1
−
M
p
x
y
)
,
else
(9)
\mathcal{L}_{g}=-\frac{1}{n} \sum_{x y}\left\{\begin{array}{l} \left(1-\boldsymbol{M}_{p}^{x y}\right) \log \left(\boldsymbol{M}_{p}^{x y}\right), \quad \text { if } \boldsymbol{T}^{x y}=1 \\ \left(1-\boldsymbol{T}^{x y}\right) \boldsymbol{M}_{p}^{x y} \log \left(1-\boldsymbol{M}_{p}^{x y}\right), \text { else } \end{array}\right. \tag{9}
Lg=−n1xy∑{(1−Mpxy)log(Mpxy), if Txy=1(1−Txy)Mpxylog(1−Mpxy), else (9)
M x y M^{xy} Mxy和 T x y T^{xy} Txy分别表示在 M p M_p Mp和 T T T在 x , y x,y x,y位置的值。
融合基础和转导检测
这里详细介绍如何融合转导检测 D t r a n s D_{trans} Dtrans和基础的检测 D b a s e D_{base} Dbase来获得最终的候选框 D f i n a l D_{final} Dfinal。
首先通过IOU为
D
t
r
a
n
s
D_{trans}
Dtrans中的每个边界候选框
b
i
b_i
bi计算目标得分
s
s
s:
s
=
1
−
max
(
IOU
(
b
i
,
D
base
)
)
,
(10)
s=1-\max \left(\operatorname{IOU}\left(\boldsymbol{b}_{i}, \boldsymbol{D}_{\text {base }}\right)\right),\tag{10}
s=1−max(IOU(bi,Dbase )),(10)
高的s则代表该 b i b_i bi并未在基础检测 D b a s e D_{base} Dbase中出现,很可能是检测一个丢失的边界框。然后将所有大于阈值 ϵ = 0.5 \epsilon=0.5 ϵ=0.5的转导检测框保留,作为基础检测框的一部分,补充丢失的检测。
算法如下:
实验
基础追踪器的修改
原始JDE和CSTrack中,锚框中心点
a
=
(
a
x
,
a
y
)
a=(a_x,a_y)
a=(ax,ay)和相应的边界框重点
b
=
(
b
x
,
b
y
)
b = (b_x,b_y)
b=(bx,by)通过sigmod函数被限制在0~1:
Δ
=
b
−
a
=
Sigmoid
(
r
)
(11)
\boldsymbol{\Delta}=\boldsymbol{b}-\boldsymbol{a}=\operatorname{Sigmoid}(\boldsymbol{r}) \tag{11}
Δ=b−a=Sigmoid(r)(11)
r
\boldsymbol{r}
r代表网络的回归输出,
Δ
=
(
Δ
x
,
Δ
y
)
\boldsymbol{\Delta}=(\boldsymbol{\Delta_x},\boldsymbol{\Delta_y})
Δ=(Δx,Δy)代表预测偏移、然而,在图像的边界处,偏移量往往大于1,如下图,GT(绿色)超出了图像边界,但是由于Sigmod的闲置,预测边界框(红色)很难覆盖所有的目标,当一个目标只出现一小部分身体的时候,由于和GT框存在很大的区别,不完全的框预测会被考虑为FP,最终导致追踪效果下降。
为了缓解这一问题,作者建模了一个边界框注意回归(BAR),让追踪器通过可见身体推理出完全的目标,最终修改公式11为:
Δ
=
b
−
a
=
(
Sigmoid
(
r
)
−
0.5
)
×
h
(12)
\boldsymbol{\Delta}=\boldsymbol{b}-\boldsymbol{a}=(\operatorname{Sigmoid}(\boldsymbol{r})-0.5) \times h \tag{12}
Δ=b−a=(Sigmoid(r)−0.5)×h(12)
h
h
h为可学习的缩放参数,该参数允许网络预测偏移大于1的边界框,如图4,,BAR有能力基于可见部分预测不可见的目标。
实验对比