参考代码:pytracking
1. 概述
导读:现有的跟踪网络很多都着力于将目标从背景中区分开来,也就是提升前景背景的分辨能力,但是对目标位置估计的准确性(跟踪框于实际目标的重合度)却被低估了,这也就导致了下图1中出现的目标定位位置并不准确的问题。对此文章提出了一个新的跟踪方法ATOM,它由两部分组成:目标位置估计和目标辨别。目标位置估计参考了IoU-Net的位置回归思路(因而在读这篇文章之前需要先搞懂IoU-Net的工作原理),将其移植到了跟踪网络中,因为该任务需要高层级的语义信息用以预测IoU值,因而并不适合在线训练,从而文章使用现有的跟踪数据集和COCO数据集一起进行离线训练。对于目标的分辨,由于需要提供鲁棒的目标分辨能力和较小的计算开销,文章使用在线学习(优化方法为:Conjugate-Gradient-based)的方式进行训练,由两层卷积网络构成。文章的方法使用ResNet-18为backbone能在1080 GPU上跑到30FPS。
图1:
2. 方法设计
2.1 整体pipline组成
文章的方法大体由两个部分组成:负责跟踪框位置的估计模块和前景背景的分类模块,其整体pipeline见下图所示:
- 1)目标位置估计:这部分采用在ImageNet上预训练的ResNet-18作为backbone,之后整个网络在跟踪数据集和检测数据集上进行训练,之后在进行在线跟踪的时候这部分参数是固化的。其输入有4个部分:参考帧的backbone特征和目标框以及当前的帧的backbone特征和目标框估计,之后输出这个目标框估计的IoU得分;
- 2)前景背景区分:这部分是完全在线训练的方式实现的,在backbone特征的基础上得到目标的置信度,从而将目标与其它区域区分开;
2.2 目标边界框估计
这里的估计方式参考自IoU-Net,文中将IoU-Net的边界框优化方式引入到跟踪网络中,但是对其做了任务适应的更改。对于采用什么样的feature进行预测可以很好结合参考帧和当前帧,文章指出使用文章提出的modulation-based方法比直接特征融合和Siamese方式要好(具体的比较细节请参见原文),从而提出了下图中的特征融合方式:
对于参考帧抽取backbone的block3和block4的特征,之后在参考帧目标框的指引下进行PrPool操作,之后经过全链接得到一组正数组成的系数向量
c
(
x
0
,
B
0
)
∈
R
1
∗
1
∗
D
z
c(x_0,B_0)\in R^{1*1*D_z}
c(x0,B0)∈R1∗1∗Dz,可看作为权重。
对于当前帧经过backbone之后也是抽取相同block处的特征但是处理的方式不太一样,具体见图3所示,其得到的是当前帧的特征表达 z ( x , B ) ∈ R K ∗ K ∗ D z z(x,B)\in R^{K*K*D_z} z(x,B)∈RK∗K∗Dz,其中 K K K是特征的空间分辨率。
之后将当前帧的特征表达和参考帧的系数向量进行channel-wise的组合,之后经过IoU预测模块
g
g
g得到当前当前提取边界框的IoU预测值:
I
o
U
(
B
)
=
g
(
c
(
x
0
,
B
0
)
⋅
z
(
x
,
B
)
)
IoU(B)=g(c(x_0,B_0)\cdot z(x,B))
IoU(B)=g(c(x0,B0)⋅z(x,B))
不同的特征融合方式对于最后性能的影响见下表所示(文章使用的是modulation):
训练过程:
这里使用LaSOT(Large-scale Single Object Tracking)/TrackingNet跟踪数据集,一个视频中的最大采样间隔为50。此外,还引入COCO数据集用以提供更多样化的训练素材。对于参考图像截取的是以目标为中心长宽5倍的区域。对于测试帧也是采样类似的区域,但是在目标位置和尺度上引入扰动去模拟跟踪的场景。之后将这些区域进行剪裁并resize到固定的大小。参考IoU-Net这里也在GT box的基础上使用高斯噪声引入扰动生成16个候选bounding boxes,但是它们与GT box的IoU最小为0.1。
2.3 目标区域的判别
通过目标区域位置估计得到了目标的精确位置,但是单单靠定位的结果是很难鲁棒对目标进行区分的,因而这里引入了目标判别分支,从而为跟踪提供2D维度下的目标位置确定。
文章的目标区域判别由两个卷积组成,可以描述为:
f
(
x
;
w
)
=
ϕ
2
(
w
2
∗
ϕ
1
(
w
1
∗
x
)
)
f(x;w)=\phi_2(w_2*\phi_1(w_1*x))
f(x;w)=ϕ2(w2∗ϕ1(w1∗x))
其中,
w
1
,
w
2
w_1,w_2
w1,w2代表卷积核为
1
∗
1
,
4
∗
4
1*1,4*4
1∗1,4∗4,输出channel为64/1的卷积,
ϕ
2
,
ϕ
1
\phi_2,\phi_1
ϕ2,ϕ1代表激活函数PELU和Identity(空)。参考之前的回归方法,其在整幅特征图上的监督损失函数定义为:
L
(
w
)
=
∑
j
=
1
m
γ
j
∣
∣
f
(
x
j
;
w
)
−
y
j
∣
∣
2
+
∑
k
λ
k
∣
∣
w
k
∣
∣
2
L(w)=\sum_{j=1}^m\gamma_j||f(x_j;w)-y_j||^2+\sum_k\lambda_k||w_k||^2
L(w)=j=1∑mγj∣∣f(xj;w)−yj∣∣2+k∑λk∣∣wk∣∣2
由于文章采用的是在线学习的方式,因而使用传统的梯度下降算法是并不适合的,对此文章提出使用一种简化的优化算法。
首先,文章对目标函数进行了简化,对于目标区域置信度的回归被描述为了:
L
1
=
∑
j
=
1
m
γ
j
(
f
(
x
j
;
w
)
−
y
j
)
L1=\sum_{j=1}^m\sqrt{\gamma_j}(f(x_j;w)-y_j)
L1=j=1∑mγj(f(xj;w)−yj)
对于正则化约束项简化为:
L
2
=
∑
k
λ
k
w
k
L2=\sum_k\sqrt{\lambda_k}w_k
L2=k∑λkwk
则新的损失函数描述为:
L
(
w
)
=
∣
∣
L
1
+
L
2
∣
∣
2
L(w)=||L1+L2||^2
L(w)=∣∣L1+L2∣∣2
这里使用二次高斯牛顿近似得到:
L
ˉ
w
=
(
Δ
w
)
≈
L
(
w
+
Δ
w
)
\bar{L}_w=(\Delta w)\approx L(w+\Delta w)
Lˉw=(Δw)≈L(w+Δw)
之后一阶泰勒展开
r
(
w
Δ
w
)
≈
r
w
+
J
w
Δ
w
r(w\Delta w)\approx r_w+J_w\Delta w
r(wΔw)≈rw+JwΔw,因而
L
ˉ
w
(
Δ
w
)
=
Δ
w
T
J
w
T
J
w
Δ
w
+
2
Δ
w
T
J
w
T
r
w
+
r
w
T
r
w
\bar{L}_w(\Delta w)=\Delta w^TJ_w^TJ_w\Delta w+2\Delta w^TJ_w^Tr_w+r_w^Tr_w
Lˉw(Δw)=ΔwTJwTJwΔw+2ΔwTJwTrw+rwTrw
具体的推导可以参考原文,这里给出其优化过程:
2.4 在线的跟踪方法
文章backbone中block4的输出作为分类模块的输入。对于第一帧,题哦你给过不同程度的平移/旋转/滤波/dropout等增广出30个训练样本 x j x_j xj,之后使用上面提到的算法1进行在线训练,设置优化参数 N G N = 6 , N C G = 10 N_{GN}=6,N_{CG}=10 NGN=6,NCG=10去训练参数 w w w,每10帧使用优化参数 N G N = 1 , N C G = 5 N_{GN}=1,N_{CG}=5 NGN=1,NCG=5去训练参数 w 2 w_2 w2。
目标的估计:
利用之前预测得到的目标位置和尺度在backbone上进行特征抽取,之后使用分类模块去寻找2D空间下的最大值响应,结合之前得到目标位置和尺度信息得到目标的跟踪框
B
B
B,之后为了排除局部最大值带来的影响文章在
B
B
B的基础上添加均匀随机分布噪声得到10个初始的proposal,之后对它们进行5次梯度上升优化(step=1),之后取3个IOU得分最大的结果平均得到最后的结果。
3. 实验结果
TrackingNet test set:
LaSOT:
VOT2018: