CSTrackerV2
论文标题:One More Check: Making “Fake Background” Be Tracked Again
论文地址:http://arxiv.org/abs/2104.09441
论文源码:https://github.com/JudasDie/SOTS
CSTracker原团队的论文。设计re-check模块解决上个版本丢失轨迹的匹配。
Motivation
在同一网络内,提取到用于检测和ReID任务的特征。但这些方法大多有一个相同的问题,仅仅依靠单帧输入来进行当前帧bbox的预测,而当遇到遮挡、模糊之类的模糊时,有用的视觉信息缺失,跟踪器的性能便会下降。如果一个目标,其在当前帧被误分为背景类别,那么便不会被连接到本属于的轨迹中,造成轨迹的中断或者终止。于是,作者在这篇文章中提出了一个re-check网络来存储这些没有检测到的目标,称之为“fake background”。re-check通过修进后的互相关性层(cross-correlation layer)来捕获先前轨迹和当前帧的候选框之间的关系,以此将先前的轨迹传播到当前帧来。这种前后帧信息的传播有助于恢复虚假背景框并且最终修复被破坏的轨迹段。通过将设计的重检查网络插入到CSTrack模型中
Methodoloy
总体来看,输入当前帧
x
x
x,通过backbone和neck得到特征
F
t
=
Ψ
(
x
)
F_{t}=\Psi(x)
Ft=Ψ(x)
之后
F
t
F_{t}
Ft会通过网络的head得到检测结果和外貌embedding,
[
R
t
d
e
,
F
t
i
d
]
=
Φ
(
F
t
)
[R_{t}^{de},F_{t}^{id}]=\Phi(F_{t})
[Rtde,Ftid]=Φ(Ft)
R
t
i
d
R_{t}^{id}
Rtid是检测结果,其中又包括前景概率
P
t
d
e
∈
R
H
×
W
×
1
P_{t}^{de}\in \mathcal {R}^{H\times W \times 1}
Ptde∈RH×W×1和bbox的坐标
B
t
d
e
∈
R
H
×
W
×
4
B_{t}^{de}\in \mathcal {R}^{H \times W \times 4}
Btde∈RH×W×4。
F
t
i
d
∈
R
H
×
W
×
C
F_{t}^{id} \in \mathcal{R}^{H \times W\times C}
Ftid∈RH×W×C为ID embedding。
检测结果 R t d e \boldsymbol{R}_{t}^{d e} Rtde通过greedy-NMS得到当前帧检测器最终的结果 D base \boldsymbol{D}_{\text {base }} Dbase ,也就是当前帧中的所有检测目标bbox集合。 D base \boldsymbol{D}_{\text {base }} Dbase 中的每一个检测结果,对应着 F t i d \boldsymbol{F}_{t}^{i d} Ftid中的一个 1 × 1 × C 1 \times 1 \times C 1×1×C的embedding,即每一个bbox对应一个ID值。
其中, M p M_{p} Mp代表先前的轨迹在当前帧的预测结果,输出的是分类为前景的概率。然后将 M p M_{p} Mp和原来的当前帧的bbox的结果 B t d e B_{t}^{de} Btde一起进行greedy-NMS。这次的NMS结果记为 D t r a n s D_{trans} Dtrans。 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中对应的embedding用于数据关联。
Re-check Network
CSTrack通过加入互注意力机制来缓解检测任务和ReID任务之间的竞争,以极小的代价提升了JDE,所以作者采用CSTrack作为baseline。
re-check网络由传感器检测模块和细化模块两个主要组成部分组成。前者将之前的轨迹传播到当前帧,得到相似性特征映射 M s M_{s} Ms。在第二模块中, M s M_{s} Ms通过一个倒置的瓶颈模块(IBM)进行初步处理,并与视觉特征 F t F_{t} Ft相结合,过滤背景内容。然后,对增强后的特征 F ^ \hat F F^进行多个卷积层的处理,得到最终的预测 M p M_{p} Mp。
如上图所示,上一帧的embedding
E
t
−
1
i
d
\boldsymbol{E}_{t-1}^{i d}
Et−1id被用来作为这一帧的时序信息。网络通过计算
E
t
−
1
i
d
\boldsymbol{E}_{t-1}^{i d}
Et−1id和
F
t
i
d
\boldsymbol{F}_{t}^{i d}
Ftid之间的相似度,将轨迹沿伸到当前帧来,也就是将上一帧的目标图像特征映射到当前帧的特征图上。作者通过实验还发现,如果一个目标在当前帧消失了,那么在相似度图中便对应着FP的反应。为了缓解这个问题,作者又将相似度图与当前帧特征
F
t
\boldsymbol{F}_{t}
Ft进行融合,来进行微调。最终,re-check网络可以表示为:
M
p
=
∏
(
F
t
i
d
,
E
t
−
1
i
d
,
F
t
)
M_{p}=\prod (F_{t}^{id},E_{t-1}^{id},F_{t})
Mp=∏(Ftid,Et−1id,Ft)
Transductive Detection Module
此模块的目的是通过前一帧的
E
t
−
1
i
d
=
{
e
t
−
1
1
,
.
.
.
,
e
t
−
1
n
}
\boldsymbol{E}_{t-1}^{i d}=\lbrace e_{t-1}^{1},...,e_{t-1}^{n} \rbrace
Et−1id={et−11,...,et−1n}和当前帧候选的embedding之间的相似度来预测之前轨迹在当前帧的位置。也就是将上一帧的目标图像特征映射到当前帧的特征图上。相应图
m
i
m_i
mi的计算方式:
m
i
=
(
e
t
−
1
i
∗
F
t
i
d
)
∣
i
=
1
n
m_{i}=(e_{t-1}^{i}*F_{t}^{id})|_{i=1}^{n}
mi=(et−1i∗Ftid)∣i=1n
m
i
m_i
mi中的最大值便代表之前轨迹在当前帧的位置。
n
n
n为上一帧embedding的个数,最终会得到
n
n
n个维度的相应图,
M
=
{
m
1
,
.
.
.
,
m
n
}
M=\lbrace m_{1},...,m_{n} \rbrace
M={m1,...,mn}。将相应图转化为二元的mask模板,将高置信度的区域设置为1,其余的位置均为0,作者认为可以减少其他模糊的预测:
m
^
i
x
y
=
{
1
,
i
f
∣
∣
x
−
c
x
∣
∣
<
=
r
,
∣
∣
y
−
c
y
∣
∣
<
=
r
0
,
o
t
h
e
r
w
i
s
e
\hat m_{i}^{xy}= \begin{cases} 1,&&if ||x-c_{x}||<=r,||y-c_y||<=r \\ 0, && otherwise \end{cases}
m^ixy={1,0,if∣∣x−cx∣∣<=r,∣∣y−cy∣∣<=rotherwise
其中
c
x
c_x
cx和
c
y
c_y
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
)
M_{s}=\sum_{i=1}^{n}(\hat m_{i}\cdot m_i)
Ms=i=1∑n(m^i⋅mi)
M
s
M_s
Ms代表着当前帧每个位置上存在上一帧轨迹的概率。如果
M
s
M_s
Ms中的某个位置值很大,说明此处有一个候选框可以连接到轨迹上。
Refinement Module
作者观察到有一些没有被匹配的目标会在训练中带来一些假阳性,为了缓解这个问题,设计了refinement module。采用原始的特征
F
t
∈
R
H
×
W
×
C
F_{t}\in R^{H\times W\times C}
Ft∈RH×W×C来对相应图进行微调。首先将概率mask放入一个反向的bottleneck模块,将
M
s
M_s
Ms映射到高维空间,再将为到原来的维度,得到
M
s
′
M_{s}^{'}
Ms′,然后与当前帧的特征进行融合:
F
^
=
F
t
⋅
M
s
′
\hat F=F_{t}\cdot M_{s}^{'}
F^=Ft⋅Ms′
再继续通过几层卷积,将
F
^
\hat F
F^转换为最终的
M
p
M_{p}
Mp。
LOSS
相应图
M
p
M_p
Mp的GT定位为多个高斯分布的组合,对于每个目标来说,
t
i
=
e
x
p
(
−
(
x
−
c
i
x
)
2
+
(
y
−
c
i
y
)
2
2
σ
i
2
)
t_{i}=exp(-\frac {(x-c_{i}^{x})^{2}+(y-c_{i}^{y})^{2}}{2\sigma_{i}^{2}})
ti=exp(−2σi2(x−cix)2+(y−ciy)2)
其中,
c
i
=
(
c
i
x
,
c
i
y
)
c_{i}=(c_{i}^{x},c_{i}^{y})
ci=(cix,ciy)为目标的中心点坐标,
σ
i
\sigma_{i}
σi和目标大小有关,然后可以得到和目标数量相同的gt,
t
=
{
t
1
,
.
.
.
,
t
n
}
t=\lbrace t_{1},...,t_{n} \rbrace
t={t1,...,tn}。最终t将沿着通道进行相加,得到最终的
T
T
T.
为了减少两个高斯分布之间的重叠部分的影响,
σ
i
\sigma_{i}
σi的上限设为1。最终采用logistic-MSE损失监督训练:
L
g
=
−
1
n
∑
{
(
1
−
M
p
x
y
)
l
o
g
(
M
p
x
y
)
,
i
f
,
T
x
y
=
1
(
1
−
T
x
y
)
M
p
x
y
l
o
g
(
1
−
M
p
x
y
)
,
e
l
s
e
\mathcal {L}_{g}=-\frac {1}{n} \sum \begin{cases} (1-M_{p}^{xy})log(M_{p}^{xy}),&if ,T^{xy}=1\\ (1-T^{xy})M_{p}^{xy}log(1-M_{p}^{xy}),&else \end{cases}
Lg=−n1∑{(1−Mpxy)log(Mpxy),(1−Txy)Mpxylog(1−Mpxy),if,Txy=1else
Fusing Basic and Transductive Detections
这部分是讲解
D
t
r
a
n
s
D_{trans}
Dtrans和
D
b
a
s
e
D_{base}
Dbase进行融合的过程,首先需要对
D
t
r
a
n
s
D_{trans}
Dtrans中的每一个bbox
b
i
b_{i}
bi计算一个得分
s
s
s:
s
=
1
−
m
a
x
(
I
O
U
(
b
i
,
D
b
a
s
e
)
)
s = 1-max(IOU(b_{i},D_{base}))
s=1−max(IOU(bi,Dbase))
得分
s
s
s越高就说明
b
i
b_{i}
bi没有出现在
D
b
a
s
e
D_{base}
Dbase中产生误检,其中阈值设置为0.5,也可能是当前帧将其误分类为背景。对得分高的bbox作为基本检测的补充,
当在经过re-check网络后得出 D t r a n s D_{trans} Dtrans,是包含上一帧位置信息的bbox的相应图,余 D b a s e D_{base} Dbase当前帧进行IOU匹配,若得分s高于阈值,则判断为该目标在当前帧中漏检或者误检,将改目标作为下一帧检测的补充,最后得出 D f i n a l D_{final} Dfinal.
算法的总流程:
Experiment
在之前的基于中心点研究中,网络预测的是anchor的中心点 a = ( a x , a y ) \mathbf {a}=(a_{x},a_{y}) a=(ax,ay)到bbox中心点 b = ( b x , b y ) \mathbf {b}=(b_{x},b_{y}) b=(bx,by)之前的归一化的偏移量,具体公式为: Δ = b − a = S i g m o i d ( r ) \mathbf {\Delta}=\mathbf {b}-\mathbf {a}=Sigmoid(\mathbf {r}) Δ=b−a=Sigmoid(r)。 r \mathbf {r} r表示回归之的预测, Δ \mathbf {\Delta} Δ为偏移量。但是在模型中偏移量大多数大于1.
然而,在下图中,绿色框的中心点在图像的外面,而由于sigmoid函数的限制,网络预测的偏移量生成的bbox很难覆盖整个目标。当目标只是部分可见时,bbox的预测也是不完全的,那么由于gt的bbox和预测的不完全的bbox差别很大,所以会被认定为假阳性样本。
为了缓解这个问题,作者提出了boundaryaware regression方法(BAR)。让模型预测:
Δ
=
b
−
a
=
(
S
i
g
m
o
i
d
(
r
)
−
0.5
)
×
h
\mathbf {\Delta}=\mathbf {b}-\mathbf {a}=(Sigmoid(\mathbf {r})-0.5)\times h
Δ=b−a=(Sigmoid(r)−0.5)×h
其中的h也是一个可学习的参数。这使得网络预测的偏移量能够大于1,使得预测的bbox覆盖得更多.