SiamRPN论文阅读笔记
什么是RPN
Abstract
近年来,视觉对象跟踪一直是一个基本主题,许多基于深度学习的跟踪器在多个基准测试中取得了最先进的性能。然而,这些跟踪器中的大多数很难以实时速度获得最佳性能。在本文中,我们提出了 Siamese region proposal network (Siamese-RPN),它是端到端离线训练的大规模图像对。具体来说,它由用于特征提取的连体子网络和包括分类分支和回归分支的区域提议子网络组成。在推理阶段,所提出的框架被制定为本地一次性检测任务。我们可以预先计算 Siamese 子网的模板分支,并将相关层公式化为普通卷积层来执行在线跟踪。受益于提案细化,可以摒弃传统的多尺度测试和在线微调。 Siamese-RPN 以 160 FPS 的速度运行,同时在 VOT2015、VOT2016 和 VOT2017 实时挑战中取得领先的性能。
Introduction
现代跟踪器分类
基于相关滤波器
第一个分支是基于相关滤波器,它利用循环相关的性质在傅里叶域中进行运算来训练回归函数。它可以同时进行在线跟踪和有效地更新滤波器的权重。原始版本在傅里叶域中进行,随后被广泛应用于跟踪界。最近的基于相关滤波的方法使用深度特征来提高精度,但在模型更新过程中很大程度上损害了速度。
使用深度特征
另一个分支的方法旨在使用非常强的深度特征,并且不更新模型。然而,由于没有使用特定领域的信息,这些方法的性能总是不如基于相关筛选的方法。
本文观点
与最先进的基于相关滤波器的方法相比,离线训练深度学习的跟踪器可以获得具有竞争力的结果。关键是所提议的孪生区域提议网络(SiamRPN)。它由一个模板分支和一个检测分支组成,用大规模的图像对进行端到端离线训练。受最新的建议提取方法RPN[27]的启发,我们在相关特征图上执行建议提取。与标准RPN不同的是,我们使用两个分支的相关特征图进行建议提取。在跟踪任务中,我们没有预先定义的类别,因此需要模板分支将目标的外观信息编码到RPN特征图中,以区分前景和背景。
取得先进性能的原因
首先,该方法可以利用Youtube-BB等大规模训练数据,利用图像对进行离线训练;消融研究表明,更多的数据可以帮助获得更好的性能。其次,我们发现区域建议子网络通常能准确预测建议的规模和比例,从而得到如图所示的紧凑边界盒。
贡献
1.我们提出了一种基于大规模图像对的离线端到端训练的Siamese区域提议网络(SiameseRPN)来完成跟踪任务。
2.在在线跟踪过程中,提出的框架被表述为一个局部的一次性检测任务,可以改进建议,从而摒弃昂贵的多尺度测试。3.在VOT2015、VOT2016、VOT2017实时挑战中以160 FPS的速度取得领先表现,证明了其准确性和效率的优势。
相关工作
由于本文的主要贡献是提出了局部单次检测任务的概念,因此我们简要回顾了与我们工作相关的三个方面:基于孪生网络结构的跟踪器、检测中的RPN和单次学习。
基于孪生网络结构的跟踪器
孪生网络由两个分支组成,这两个分支隐式地将原始面片编码到另一个空间,然后将它们与特定张量融合以产生单个输出。它通常用于比较隐式嵌入空间中两个分支的特征,特别是对于对比任务。最近,孪生网络在视觉跟踪社区中引起了极大的关注,因为它们平衡了准确性和速度。
GOTURN采用孪生网络作为特征提取器,并使用全连接层作为融合张量。通过使用最后一帧中的预测边界框作为唯一的建议,可以将其视为一种回归方法。Re3采用递归网络来获得由模板分支产生的更好的特征。受基于相关方法的启发,Siamese-FC首次引入相关层作为融合张量,并大大提高了精度。与GOTURN的one proposal regression相比,它成功的原因是密集监督的热图,这使得Siamese-FC对快速移动的对象更加鲁棒。CFNet在模板分支中增加了一个相关滤波器,使连体网络更浅但更有效。
然而,Siamese-FC和CFNet都缺乏包围盒回归,并且需要进行多尺度测试,这使得它不够优雅。这些实时跟踪器的主要缺点是,与最先进的相关滤波方法相比,它们的精度和鲁棒性不令人满意。
检测中的RPN
区域提议网络(RPN)首先在Faster R-CNN中提出。在RPN出现之前,传统的提案抽取方法非常耗时。例如,选择性搜索需要2秒来处理一幅图像。此外,这些建议对于检测来说不够好。多个锚点的枚举和共享卷积特征使得提议提取方法时间高效,同时实现高质量。由于前景-背景分类和包围盒回归的监督,RPN能够提取更精确的建议。有几种使用RPN的更快的R-CNN的变体。R-FCN将组件的位置信息考虑在内,FPN采用特征金字塔网络来提高微小物体检测的性能。与两级检测器相比,RPN的改进版本,如SSD和YOLO9000是高效的检测器。RPN由于其速度快、性能好,在检测方面有很多成功的应用,但是在跟踪方面还没有得到充分的开发。
One-shot learning
近年来,深度学习中的单点学习话题越来越受到关注。基于贝叶斯统计的方法和元学习方法是解决这一问题的两种主要方法。元学习方法旨在获得学会学习的能力,也就是说,意识到并控制自己的学习。具体而言,利用神经网络来预测反向传播期间目标网络的梯度。学习一个网络,该网络将一个小的有标签的支持集和一个无标签的例子映射到它的标签。虽然这些基于元学习的方法已经取得了有竞争力的结果,但这些方法通常是在分类任务上进行评估的,很少有方法扩展到跟踪任务。Learnet 是第一个利用元学习方法来解决跟踪任务的工作,它从单个样本预测瞳孔网络的参数。然而,Learnet的性能无法与基于现代DCF的方法相比,例如多个基准中的CCOT。
SiamRPN框架
如图所示,SiamRPN框架包括用于特征提取的连体子网和用于提议生成的区域提议子网。具体来说,RPN子网中有两个分支,一个负责前景-背景分类,另一个用于建议细化。包括目标对象的图像块被输入到SiamRPN框架中,并且整个系统被端到端地训练。
孪生特征提取子网络
在孪生网络中,我们采用无填充的全卷积网络。令
L
τ
L_τ
Lτ表示平移算子
(
L
τ
x
)
[
u
]
=
x
[
u
−
t
]
(L_τx)[u]=x[u-t]
(Lτx)[u]=x[u−t],然后移除所有填充以满足步长为 k 的完全卷积的定义:
h
(
L
k
τ
x
)
=
L
τ
h
(
x
)
h(L_{kτ}x)=L_τh(x)
h(Lkτx)=Lτh(x)
在这里,我们使用修改后的 AlexNet,其中来自 conv2 和 conv4 的组被删除。Siamese 特征提取子网由两个分支组成。一种称为模板分支,它接收历史帧中的目标补丁作为输入(表示为z)。另一个称为检测分支,它接收当前帧中的目标补丁作为输入(表示为 x)。这两个分支在 CNN 中共享参数,因此两个补丁通过相同的转换隐式编码,适用于后续任务。为方便起见,我们将 φ(z) 和 φ(x) 表示为连体子网的输出特征图。
区域提议子网络
区域提议子网络由成对相关部分和监督部分组成。监督部分有两个分支,一个用于前景背景分类,另一个用于提案回归。如果有 k 个 anchor,网络需要输出 2k 个通道用于分类,4k 个通道用于回归。因此,成对相关部分首先通过两个卷积层将 φ ( z ) φ(z) φ(z)的通道增加到两个分支 [ φ ( z ) ] c l s [φ(z)]_{cls} [φ(z)]cls 和 [ φ ( z ) ] r e g [φ(z)]_{reg} [φ(z)]reg,它们的通道分别为 2k 和 4k 倍。 φ ( x ) φ(x) φ(x) 也被两个卷积层分成两个分支 [ φ ( x ) ] c l s [φ(x)]_{cls} [φ(x)]cls 和 [ φ ( x ) ] r e g [φ(x)]_{reg} [φ(x)]reg,但保持通道不变。 [ φ ( z ) ] [φ(z)] [φ(z)]以“组”的方式作为[φ(x)]的相关核,也就是说,一组 [ φ ( z ) ] [φ(z)] [φ(z)]中的通道数与 [ φ ( x ) ] [φ(x)] [φ(x)]的总体通道数相同。在分类分支和回归分支上计算相关性:
A w × h × 2 k c l s = [ φ ( x ) ] c l s ∗ [ φ ( z ) ] c l s A_{w×h×2k}^{cls}=[φ(x)]_{cls}*[φ(z)]_{cls} Aw×h×2kcls=[φ(x)]cls∗[φ(z)]cls
A w × h × 4 k r e g = [ φ ( x ) ] r e g ∗ [ φ ( z ) ] r e g A_{w×h×4k}^{reg}=[φ(x)]_{reg}*[φ(z)]_{reg} Aw×h×4kreg=[φ(x)]reg∗[φ(z)]reg
模板特征图
[
φ
(
z
)
]
c
l
s
[φ(z)]_{cls}
[φ(z)]cls 和
[
φ
(
z
)
]
r
e
g
[φ(z)]_{reg}
[φ(z)]reg 用作内核,⋆ 表示卷积操作。如图 2 所示,
A
w
×
h
×
2
k
c
l
s
A^{cls}_{w×h×2k}
Aw×h×2kcls 中的每个点表示为
(
w
‾
,
h
‾
,
:
)
(\overline{w},\overline{h}, : )
(w,h,:) 包含一个 2k 通道向量,它表示每个锚点在原始地图上相应位置的负激活和正激活。采用 Softmax loss 来监督分类分支。类似地,
A
w
×
h
×
4
k
r
e
g
A^{reg}_ {w×h×4k}
Aw×h×4kreg 中的每个点都表示为
(
w
^
,
h
^
,
:
)
(\widehat{w}, \widehat{h}, :)
(w
,h
,:) 包含一个 4k 通道向量 ,它代表
d
x
,
d
y
,
d
w
,
d
h
dx, dy, dw, dh
dx,dy,dw,dh 测量锚点和对应的groundtruth 之间的距离。
在使用多个锚点训练网络时,我们使用了 Faster R-CNN 中使用的损失函数。分类损失是交叉熵损失,我们采用归一化坐标的平滑
L
1
L1
L1 损失进行回归。令
A
x
,
A
y
,
A
w
,
A
h
Ax, Ay, Aw, Ah
Ax,Ay,Aw,Ah 表示 anchor box 的中心点和形状,
T
x
,
T
y
,
T
w
,
T
h
Tx, Ty, Tw, Th
Tx,Ty,Tw,Th 表示 ground truth box 的中心点和形状,归一化距离为:
训练阶段:端到端的训练SiamRPN
在训练阶段,样本对以随机间隔从 ILSVRC和 Youtube-BB连续挑选。模板和检测块是从同一视频的两帧中提取的。在使用 Imagenet 预训练Siamese子网络之后,我们使用随机梯度下降 (SGD) 端到端训练 Siamese-RPN。由于需要训练回归分支,因此采用了一些数据增强,包括仿射变换。通过注意到两个相邻帧中的相同对象不会发生太大变化,我们在跟踪任务中选择的锚点少于检测任务。所以只采用了一种具有不同anchor比例的尺度,我们采用的anchor ratio是[0.33,0.5,1,2,3]。
在我们提出的框架中,挑选正负训练样本的策略也很重要。这里采用目标检测任务中使用的标准,我们使用
I
o
U
IoU
IoU 和两个阈值
t
h
h
i
thhi
thhi 和
t
h
l
o
thlo
thlo 作为测量。正样本定义为具有
I
o
U
>
t
h
h
i
IoU > thhi
IoU>thhi 的锚点及其对应的基本事实。负数定义为满足
I
o
U
<
t
h
l
o
IoU < thlo
IoU<thlo 的锚。我们将
t
h
l
o
thlo
thlo 设置为 0.3,将
t
h
h
i
thhi
thhi 设置为 0.6。我们还限制了最多 16 个正样本和来自一个训练对的总共 64 个样本。
看做单点检测的跟踪
我们将跟踪任务定义为局部单点检测任务。随后,详细分析并简化了该解释下的推理阶段,以加快速度。最后,介绍了一些具体的策略,使该框架适用于跟踪任务。
构想
我们将一次性检测视为鉴别任务。其目标是找到使预测函数
φ
(
x
;
W
)
φ(x;W)
φ(x;W)的平均损失
L
L
L最小的参数
W
W
W。它是在由
n
n
n个样本
x
i
x_i
xi和相应标签组成的数据集上计算的
l
i
l_i
li:
一次性学习旨在从感兴趣的类的单个模板z学习W。辨别性一次性学习的挑战在于找到一种机制,将类别信息纳入学习者,即学会学习。为了解决这一挑战,我们提出了一种使用元学习过程从单个模板
z
z
z学习预测器参数
W
W
W的方法,即将(z;W′)映射到W的前馈函数
ω
ω
ω。假设
z
i
z_i
zi是一批模板样本,那么问题可以表述为:
如上所述,让
z
z
z表示模板块,
x
x
x表示检测块,函数
j
j
j表示孪生特征提取子网络,函数
ζ
ζ
ζ表示区域建议子网络,那么一次检测任务可以表述为:
现在我们可以把孪生子网络中的模板分支重新解释为预测局部检测任务的内核的训练参数,这就是典型的学习学习过程。在这种解释中,模板分支被用来将类别信息嵌入内核,而检测分支则利用嵌入的信息进行检测。在训练阶段,除了成对的边界盒监督外,元学习器不需要任何其他监督。在推理阶段,孪生框架被修剪,除了初始帧,只留下检测分支,从而导致高速。
第一帧的目标补丁被送入模板分支,检测内核被预先计算,因此我们可以在其他帧中进行一次检测。因为局部检测任务是基于初始帧上的模板所给出的类别信息,所以它可以被看作是一次检测。
推理阶段:运行单点检测
我们将模板分支的输出视为本地检测的核。这两个核都是在初始帧上预先计算的,并在整个跟踪期间固定不变。
如图所示,通过预计算的核对当前特征图进行卷积,检测分支以单次检测的方式进行在线推理。在检测分支上进行前向传递,以获得分类和回归输出,从而得到前M个建议。具体来说,按照我们在公式2中定义的符号,我们将分类和回归特征图表示为点集:
由于分类特征图上的奇数通道代表正激活,我们收集所有
A
w
×
h
×
2
k
c
l
s
A^{cls}_{w×h×2k}
Aw×h×2kcls中的前
K
K
K个点,其中
l
l
l为奇数,并将点集表示为:
C
L
S
∗
=
(
x
i
c
l
s
,
y
j
c
l
s
,
c
l
c
l
s
)
i
∈
i
,
j
∈
j
,
l
∈
l
CLS^*={(x^{cls}_i,y^{cls}_j,c^{cls}_l)i∈i,j∈j,l∈l}
CLS∗=(xicls,yjcls,clcls)i∈i,j∈j,l∈l,其中
i
,
j
,
l
i,j,l
i,j,l是某个索引集。变量
i
i
i和
j
j
j分别编码对应锚点的位置,
l
l
l编码对应锚点的比值,因此可导出对应锚点集为:
A
N
C
∗
=
(
x
i
a
n
,
y
j
a
n
,
w
l
a
n
,
h
l
a
n
)
i
∈
i
,
j
∈
j
,
l
∈
l
ANC^* = {(x^{an}_i, y^{an}_j, w^{an}_l, h^{an}_l)i∈i,j∈j,l∈l}
ANC∗=(xian,yjan,wlan,hlan)i∈i,j∈j,l∈l。
此外,我们发现
A
N
C
∗
ANC^*
ANC∗在
A
w
×
h
×
4
k
c
l
s
A^{cls}_{w×h×4k}
Aw×h×4kcls上的激活,得到对应的精化坐标为
R
E
G
∗
=
(
x
i
r
e
g
,
y
j
r
e
g
,
d
x
l
r
e
g
,
d
y
l
r
e
g
,
d
w
l
r
e
g
,
d
h
l
r
e
g
)
i
∈
i
,
j
∈
j
,
l
∈
l
REG^*= {(x^{reg}_i, y^{reg}_ j, dx^{reg}_l, dy^{reg}_l, dw^{reg}_l, dh^{reg}_ l)i∈i,j∈j,l∈l}
REG∗=(xireg,yjreg,dxlreg,dylreg,dwlreg,dhlreg)i∈i,j∈j,l∈l。然后,细化的
t
o
p
K
top K
topK建议集
P
R
O
∗
=
(
x
i
p
r
o
,
y
j
p
r
o
,
w
l
p
r
o
,
h
l
p
r
o
)
PRO^* = {(x^{pro}_i, y^{pro}_j, w^{pro}_l, h^{pro}_l)}
PRO∗=(xipro,yjpro,wlpro,hlpro)可由以下公式(Eq. 12)得到:
在生成前K个建议后,我们使用一些建议选择策略使它们适合跟踪任务。
提议选择策略
为了使一次性检测框架适合于跟踪任务,提出了两种选择建议的策略。
第一种建议选择策略是丢弃由离中心太远的锚点生成的边界框。例如,我们只保留
A
w
×
h
×
2
k
c
l
s
A^{cls}_{w×h×2k}
Aw×h×2kcls分类特征图上的中心
g
×
g
g × g
g×g子区域,得到
g
×
g
×
k
g×g×k
g×g×k锚,而不是
m
×
n
×
k
m × n × k
m×n×k锚。由于邻近帧总是没有大的运动,丢弃策略可以有效地去除异常值。下图为选择分类特征图中距离中心不大于7的目标锚的示意图。
第二种方案选择策略是利用余弦窗和尺度变化惩罚对方案的得分进行重新排序,得到最佳方案。在丢弃异常值后,添加余弦窗来抑制大位移,然后添加惩罚来抑制大小和比例的较大变化:
这里k是一个超参数。r代表提案的高宽比,r '代表最后一帧的高宽比。S和S’代表提案和最后一帧的整体规模,计算如下:
(
w
+
p
)
×
(
h
+
p
)
=
s
2
(w+p)×(h+p)=s^2
(w+p)×(h+p)=s2
其中w和h表示目标的宽度和高度,p表示填充,等于
w
+
h
2
\frac{w+h}{2}
2w+h。
在这些操作之后,将分类分数乘以时间惩罚后,对前K个建议进行重新排名。然后进行非极大值抑制,得到最终的跟踪边界框。在最终选定边界框后,通过线性插值更新目标尺寸,保持形状的平滑变化。
结论
在这项工作中,我们提出了孪生区域提议网络(SiamRPN),该网络使用ILSVRC和YoutubeBB的大型图像对进行端到端的离线训练。SiamRPN可以通过应用框精化过程获得更精确的边界框。在在线跟踪过程中,提出的框架被定义为一个局部单镜头检测任务。在实验中,我们的方法可以在160 FPS的速度下,在VOT2015、VOT2016和VOT2017实时挑战中取得领先的性能。