GlobalTrack学习笔记
论文:https://arxiv.org/abs/1912.08531 代码:https://github.com/huanglianghua/GlobalTrack
1.背景
??长期跟踪的一个关键在于更大的区域(通常是整个图像)中搜索目标,以应对目标丢失。作者提出GlobalTrack进行全局实例搜索的跟踪器;GlobalTrack基于two-stage的目标检测器,根据单个查询图像作为指导,对任意实例进行全图像和多尺度搜索。最重要的是不需要在线学习,也不需要对位置或尺度变化进行惩罚,无需尺度平滑。 ??从上图我们可以发现ATOM、SiamRPN++和DaSiam_LT跟踪方法在跟踪目标丢失后的无法重新跟踪目标,由于这些跟踪方法都遵循了局部性假设(局部性假设指出了在时间的一致性假设下,目标的位置和尺度都是平缓变化的),因此这些跟踪方法只会在局部进行检测,所以导致了这些方法不适用于长期跟踪。 ??然而本文作者考虑到在位置和尺度突然变化、目标丢失以及短暂的跟踪失败情况下,这种局部性假设是不存在的,因此作者放弃了在局部检测的思想转向了全局检测,从而可以很好的解决问题,并适用于全局跟踪。
2.网络模型分析
2.1 整体网络结构
??基于Faster-RCNN的思路,GlobalTrack跟踪方法提出了两个模块:用于生成query-specific候选对象的query-guided区域生成网络(QG-RPN),以及对候选对象进行分类的query-guided区域卷积神经网络(QG-RCNN)并产生最终的预测。 ??在QG-RPN和QG-RCNN的特征调制部分中,对backbone和ROI输出的查询和搜索图像特征之间的相关性进行编码,指导检测器定位到query-specific的实例。 ??在跟踪过程中,将QG-RCNN的top-1预测作为结果。在训练阶段,使用与Faster-RCNN中相同的分类和定位损失,作者进一步提出了一种交叉查询损失,以提高GlobalTrack针对干扰物/相似物的鲁棒性,把同一图像上不同查询的损失平均化,迫使模型学习查询与预测结果之间的依赖性。
2.2 Query-guided RPN
??我将结合RPN和GA-RPN来讲解QG-RPN, ??从上图我们可以发现,在不同精确度下QG-RPN的召回率相较于RPN和QA-RPN都有了明显的提升,其中AR&k指的是取前k个较高精确度的候选框。 RPN思想: ??RPN的思想很简单,它主要通过一个3×3的卷积来整合特征,在分别使用两个1×1卷积来分别得到置信度得分图和位置偏移,如下图所示, ??其中置信度得分图是用来判断每个像素点上是否包含目标,而位置偏移是将对每个像素点上的建议框(即anchor)进行调整。
GA-RPN思想: ??主流的框架大多数都是依赖锚点的均匀分布,具体来说就是,一组具有预定义比例和长宽比的锚将被部署在大小为W×H,步幅为s的特征图上。由于许多锚放置在不太可能存在目标物体的区域中,因此该方案效率不高。 另外,这种手工挑选的先验不切实际地假设对象具有一组固定形状(即,比例和纵横比)。因此GA-RPN方法通过开发一种更有效的锚定方案,以考虑对象位置和形状的不均匀分布来安排具有可学习形状的锚。 从上图我们可以看出,GA-RPN方法采用两个分支分别预测anchor的位置和形状,然后结合在一起得到 anchor。之后采用一个 Feature Adaption 模块进行 anchor 特征的调整,得到新的特征图供之后的预测(anchor 的分类和回归)使用。整个方法可以 end-to-end training,而且相比之前只是增加了 3 个 1x1 conv 和一个 3x3 deformable conv,带来的模型参数量的变化很小。
位置预测: ??位置预测分支的目标是那些区域应该作为中心点来生成anchor,这是一个二分类问题,本文将feature map的区域分为中心区域,外围区域和忽略区域,大概思路就是将 ground truth 框的中心一小块对应在 feature map 上的区域标为物体中心区域,在训练的时候作为正样本,其余区域按照离中心的距离标为忽略或者负样本。通过位置预测,我们可以筛选出一小部分区域作为 anchor 的候选中心点位置,使得 anchor 数量大大降低。
形状预测: ??形状预测分支的目标是给定anchor中心点,预测最佳的长和宽,这是一个回归问题。按照往常做法,当然是先算出 target,也就是该中心点的 anchor 最优的 w 和 h,然后用 L1/L2/Smooth L1 这类 loss 来监督。但是target并不是很好计算,实现起来也很困难,因此本文采用IoU作为监督来学习w和h,既然算不出最优的w和h,而计算IoU又是可导操作,因此我们让网络自己去优化使得IoU最大。 ??然而这里存在一个问题就是对于某个anchor,应该优化和哪个groundtruth的IoU,对于以前常规的 anchor,我们可以直接计算它和所有 ground truth 的 IoU,然后将它分配给 IoU 最大的那个 gt。但是由于这里的w和h是未知的,因此我们将这个 anchor 和某个 gt 的 IoU 表示为
V
I
o
U
(
a
w
h
,
g
t
)
=
max
?
w
>
0
,
h
>
0
I
o
U
n
o
r
m
a
l
(
a
w
h
,
g
t
)
VIoU(a_{wh},gt)=\max_{w>0,h>0} IoU_{normal}(a_{wh},gt)
VIoU(awh?,gt)=maxw>0,h>0?IoUnormal?(awh?,gt),这里的w和h都是经过采样获得的,文中采样了9组,实验证明最终结果对于采样的组数并不敏感。
生成anchor: ??在得到 anchor 位置和中心点的预测之后,我们便可以生成 anchor 了,如下图所示。这时的 anchor 是稀疏而且每个位置不一样的。采用生成的 anchor 取代 sliding window,AR (Average Recall) 已经可以超过普通 RPN 4 个点了,代价仅仅是增加两个 1x1 conv。 Feature Adaption: ??然而上面的做法还存在一些不合理的地方,一方面,在同一层 conv 的不同位置,feature 的 receiptive field 是相同的,在原来的 RPN 里面,每个像素都表示相同形状的 anchor,但是现在每个 anchor 都有自己独特的形状大小,和 feature 就不是特别好地 match。另一方面,对原本的特征图来说,它并不知道形状预测分支预测的 anchor 形状,但是接下来的分类和回归却是基于预测出的 anchor 来做的。 ??我们增加了一个 Feature Adaption 模块来解决这种问题。思路很简单,就是把 anchor 的形状信息直接融入到特征图中,这样新得到的特征图就可以去适应每个位置 anchor 的形状。我们利用一个 3x3 的 deformable convolution 来修正原始的特征图,而 deformable convolution 的 offset 是通过 anchor 的 w 和 h 经过一个 1x1 conv 得到的。 QG-RPN: ??QG-RPN是为了得到与目标相关的候选区域,关键是利用相关性在backbone特征中对查询信息进行编码。
z
∈
R
k
×
k
×
c
z \in R^{k×k×c}
z∈Rk×k×c表示查询实例的ROI特征,
x
∈
R
h
×
w
×
c
x \in R^{h×w×c}
x∈Rh×w×c表示搜索图像特征,其中h,w和k代表特征尺寸;目的是获得一个
x
^
∈
R
h
×
w
×
c
\hat{x} \in R^{h×w×c}
x^∈Rh×w×c,用于编码z和x之间的相关性: ?表示卷积,
f
z
(
z
)
f_z(z)
fz?(z)是将z转换为卷积核,该卷积核在特征
f
x
(
x
)
f_x(x)
fx?(x)上生成z与x之间的相关性。
f
o
u
t
f_out
fo?ut用于确保输出
x
^
\hat x
x^具有与x相同的大小。
f
z
f_z
fz?是零填充的k×k卷积核,将在z转换为1×1的卷积核,
f
x
f_x
fx?是具有填充的3×3卷积层,而
f
o
u
t
f_{out}
fout?是1×1卷积层,将特征通道变回c。这部分不使用归一化和激活函数。 由于
x
^
\hat x
x^具有与x相同的大小,因此可以直接重用RPN的模块并执行后续操作即分类和定位。使用相同的RPN损失来训练QG-RPN,其中分类
L
c
l
s
L_{cls}
Lcls?和定位L_{loc}损失分别是交叉熵和smooth L1;QG-RPN的总损失为: 其中
p
i
和
s
i
p_i和s_i
pi?和si?是第i个proposal的预测得分和位置,
p
i
?
和
s
i
?
p_i^*和s_i^*
pi??和si??是groundtruth。λ是平衡权重。
2.3 Query-Guided R-CNN
??这里我将结合R-CNN来说明QG R-CNN, R-CNN思想: ??首先,通过主干特征提取网络,我们可以获得一个公用特征层,当输入图片为600x600x3的时候,它的shape是38x38x1024,然后建议框会对这个公用特征层进行截取。其实公用特征层里面的38x38对应着图片里的38x38个区域,38x38中的每一个点相当于这个区域内部所有特征的浓缩。 ??建议框会对这38x38个区域进行截取,也就是认为这些区域里存在目标,然后将截取的结果进行resize,resize到14x14x1024的大小。然后再对每个建议框再进行Resnet原有的第五次压缩。压缩完后进行一个平均池化,再进行一个Flatten,最后分别进行一个num_classes的全连接和(num_classes)x4全连接。num_classes的全连接用于对最后获得的框进行分类,(num_classes)x4全连接用于对相应的建议框进行调整。 ??通过这些操作,我们可以获得所有建议框的调整情况,和这个建议框调整后框内物体的类别。 QG R-CNN ??在第二阶段,利用QG-RPN生成的proposal,根据ROI特征refine其标签和边框的预测。使用Query-Guided R-CNN(QG R-CNN)对这些proposal进行分类和边框优化。给定查询
z
∈
R
k
×
k
×
c
z\in R^{k×k×c}
z∈Rk×k×c的ROI特征和第i个proposal
x
i
∈
R
k
×
k
×
c
x_i \in R^{k×k×c}
xi?∈Rk×k×c的ROI特征,通过特征调制对它们的相关性进行编码: 其中
⊙
\odot
⊙表示哈达玛积,
h
x
和
h
z
分
别
是
x
i
和
z
h_x和h_z分别是x_i和z
hx?和hz?分别是xi?和z的特征投影,
h
o
u
t
输
出
特
征
x
^
。
h
x
和
h
z
h_{out}输出特征\hat x。h_x和h_z
hout?输出特征x^。hx?和hz?是带填充的3×3卷积层,
h
o
u
t
h_{out}
hout?为1×1卷积层,输出c个通道。 获得调制特征
x
^
i
\hat x_i
x^i?之后,对proposal进行分类和定位以获得最终的预测。 在训练过程中,类似于QG-RPN使用交叉熵和smooth L1作为损失函数: 其中
N
p
r
o
p
N_prop
Np?rop是proposal的个数。
p
i
和
s
i
p_i和s_i
pi?和si?是估计的置信度和位置(中心和比例偏移),
p
i
?
和
s
i
?
p^*_i和s^*_i
pi??和si??是groundtruth;λ是平衡权重。
2.4 Cross-query Loss
交叉查询损失,给定一对具有M个实例{1,2,…,M}的图像,可以构造M个query-search图像对,从而计算出M个QG-RPN和QG-RCNN损失;对这些查询损失进行平均,获得一对图像的最终损失: 其中
3.实验结果
LaSOT: TLP & TrackingNet:
|