SiamCAR:Siamese Fully Convolutional Classification and Regression for Visual Tracking

Abstract

通过将视觉跟踪任务分解为两个子问题(像素类别的分类和该像素处的边界框的回归),本文以逐像素的方式提出了全卷积Siamese网络来解决视觉跟踪问题。

该框架由两个简单的子网络组成:一个用于特征提取,另一个用于边界框预测。

Introduction

视觉目标跟踪的挑战:光照变化、尺度变化、背景杂波、严重遮挡、非刚性对象外观的显著变化…

Siamese网络将视觉追踪任务设定为了一个目标匹配问题,其目的是学习目标模版和搜索区域之间的一般相似性映射。

相关项目的发展流程为:

  1. Siamese网络的策略是搜索区域,进行匹配。这要在多个尺度上进行以应对尺度变化。缺点在于耗时;
  2. SiamRPN给SIamese连上了一个RPN,用于解决多尺度造成的时间浪费。缺点在于需要预先设定锚框,使得模型对锚框的参数比较敏感。

本文提出的SiamCAR则是anchor-free的。

分类分支旨在为每个空间位置预测一个标签,回归分支旨在将每个位置回归一个相对边界框。

Proposed Method

请添加图片描述

Feature Extraction

该子网络由两个分支组成,target branch的输入为template patch Z Z Z;search branch的输入为search region X X X

这两个分支与其主干模型共享相同的CNN结构。两者输出的feature map分别为 φ ( Z ) , φ ( X ) \varphi(Z),\varphi(X) φ(Z),φ(X)

R R R本来是两个输出做互相关之后的结果。但是这一操作只能生成一个单通道的压缩响应图,缺乏有用的特征和用于跟踪的信息。

本文为了获得更多的信息,所以我们使用深度相关层来生成多个语义相似图: R = φ ( X ) ∗ φ ( Y ) R=\varphi(X)*\varphi(Y) R=φ(X)φ(Y)

其中 ∗ * 表示的是通道与通道间的相关计算。也就是说R的通道数和两个分支的输出的通道数一致。

原文认为低层次特征对定位来说很有帮助,高层次特征对语义属性的识别很有帮助,所以融合高低层次特征是一种很好的选择。因此,本文结合了最后三个块提取的特征进行连接。
φ ( X ) = C a t ( F 3 ( X ) , F 4 ( X ) , F 5 ( X ) ) \varphi(X)=Cat(F_3(X),F_4(X),F_5(X)) φ(X)=Cat(F3(X),F4(X),F5(X))
需要注意的是两个输出都是 3 × 256 3\times256 3×256维度的特征,最后得到R之后通过 1 × 1 1\times 1 1×1卷积进行降维,这样可以显著减少参数数量。

最后得到的feature map R ∗ R^* R作为分类回归子网络的输入。

Bounding Box Prediction

R ∗ R* R上的每一个 ( i , j ) (i,j) (i,j)可以和search region ( x , y ) (x,y) (x,y)构建起对应关系。可以认为每一个 ( i , j ) (i,j) (i,j)是原图锚框的中点。

本文的模型能够直接分类回归每个位置的目标边界框。其中response map R ω × h × m ∗ R^*_{\omega\times h\times m} Rω×h×m,通过两个分支后输出分类特征图 A ω × h × 2 c l s A^{cls}_{\omega\times h\times2} Aω×h×2cls以及回归特征图 A ω × h × 4 r e g A^{reg}_{\omega\times h\times 4} Aω×h×4reg

对于分类特征图,二分类结果为前景和后景的分类。对于回归特征图,输出的为 ( l , t , r , b ) (l,t,r,b) (l,t,r,b),表示从相应位置到输入搜索区域中边界框四边的距离。

因为目标和背景的比例不是很大,所以样本不平衡不是一个问题。所以我们简单地采用交叉熵进行分类,IOU损失进行回归。

( x 0 , y 0 ) (x_0,y_0) (x0,y0) ( x 1 , y 1 ) (x_1,y_1) (x1,y1)为左上角和右下角的点的坐标(GT)。然后让 ( x , y ) (x,y) (x,y) ( i , j ) (i,j) (i,j)在search region上的中心点。

于是,回归的目标就能被计算得到 t ~ ( i , j ) 0 = l ~ = x − x 0 , t ~ ( i , j ) 1 = t ~ = y − y 0 \tilde{t}^0_{(i,j)}=\tilde{l}=x-x_0,\tilde{t}^1_{(i,j)}=\tilde{t}=y-y_0 t~(i,j)0=l~=xx0,t~(i,j)1=t~=yy0
t ~ ( i , j ) 2 = r ~ = x 1 − x , t ~ ( i , j ) 3 = b ~ = y 1 − y \tilde{t}^2_{(i,j)}=\tilde{r}=x_1-x,\tilde{t}^3_{(i,j)}=\tilde{b}=y_1-y t~(i,j)2=r~=x1x,t~(i,j)3=b~=y1y

回归损失函数为: L r e g = 1 ∑ I ( t ~ ( i , j ) ) ∑ i , j I ( t ~ ( i , j ) ) L I O U ( A r e g ( i , j , : ) , t ~ ( x , y ) ) L_{reg}=\frac{1}{\sum\mathbb{I}(\tilde{t}_{(i,j)})}\sum_{i,j}\mathbb{I}(\tilde{t}_{(i,j)})L_{IOU}(A^{reg}(i,j,:),\tilde{t}_{(x,y)}) Lreg=I(t~(i,j))1i,jI(t~(i,j))LIOU(Areg(i,j,:),t~(x,y))
I ( t ~ ( i , j ) ) = { 1 , i f   t ~ i , j k > 0 , k = 0 , 1 , 2 , 3 0 , o t h e r \mathbb{I}(\tilde{t}_{(i,j)})=\{\begin{aligned}&1,if~\tilde{t}^k_{i,j}\gt0,k=0,1,2,3\\&0,other\end{aligned} I(t~(i,j))={1,if t~i,jk>0,k=0,1,2,30,other

保证算进损失函数的距离都是大于0的。

根据观察,远离目标中心的位置往往会产生低质量的预测边界框(单目标跟踪,离这个目标远的位置的边界预测效果不行),这会降低追踪系统的性能。因此,添加了一个与分类分支并行的centerness branch,以去除异常值。

它返回了一个 A ω × h × 1 c e n A_{\omega\times h\times1}^{cen} Aω×h×1cen,给出了中心度分数。这个GT得分是这么定义的。 C ( i , j ) = I ( t ~ ( i , j ) ) ∗ min ⁡ ( l ~ , r ~ ) max ⁡ ( l ~ , r ~ ) × min ⁡ ( t ~ , b ~ ) max ⁡ ( t ~ , b ~ ) C(i,j)=\mathbb{I}(\tilde t_{(i,j)})*\sqrt{\frac{\min(\tilde l,\tilde r)}{\max(\tilde l,\tilde r)}\times\frac{\min(\tilde t,\tilde b)}{\max(\tilde t,\tilde b)}} C(i,j)=I(t~(i,j))max(l~,r~)min(l~,r~)×max(t~,b~)min(t~,b~)

理想情况下,这个 ( x , y ) (x,y) (x,y)是尽量在bbox中心的,如果说这个点不在中心,我们就认为它不是这个bbox的 ( x , y ) (x,y) (x,y),所以这个得分会比较低。

在这里插入图片描述

值得一提的是,如果这一点被判定为背景点,损失函数中是不需要考虑它的中心度得分的。于是,中心度得分的损失函数有:

请添加图片描述

整体损失函数为:

请添加图片描述

The Tracking Phase

跟踪的目的是预测当前帧中的目标的边界框。对于一个位置 ( i , j ) (i,j) (i,j)会产生一个6维的矢量 T i j = ( c l s , c e n , l , t , r , b ) T_{ij}=(cls,cen,l,t,r,b) Tij=(cls,cen,l,t,r,b)

在运动过程中,边界框应该是微小变化的,所以我们施加了一个惩罚 p i j p_{ij} pij

于是,跟踪项可以如下书写 q = arg max ⁡ i , j { ( 1 − λ d ) c l s i j × p i j + λ d H i j } q=\argmax_{i,j}\{(1-\lambda_d)cls_{ij}\times p_{ij}+\lambda_dH_{ij}\} q=i,jargmax{(1λd)clsij×pij+λdHij}

其中 H H H是cosine window, λ d \lambda_d λd是平衡权重, q q q是有最高得分的目标像素。

因为模型以逐像素的方式解决了目标跟踪问题,因此每个位置都是相对于一个预先设定的边界框的。在实际跟踪过程中,如果只使用一个边界框作为目标框,它将在相邻帧之间抖动。

本文观察到,q周围的像素最有可能是目标像素。所以说,它找了从n个邻居中找了得分最高的k个(根据 c l s i j × p i j cls_{ij}\times p_{ij} clsij×pij),最终的预测是这k个回归框的加权平均。

值得关注的几个问题

Q1:输入的图片大小不一?

代码中,会将其resize为255255大小的图像。同时模板大小为127127

Q2:在两者做相关性之前,如何得到特征图?

先后经历了backbone和neck两部分。

backbone通常选择为ResNet50,给出了后三层的feature map。

neck为AdjustAllLayer,通过 1 × 1 1\times1 1×1将这三层调整为256通道。

Q3:两者的相关性计算是如何实现的?

请添加图片描述
采用了xorr_depthwise函数,实际上为:target的每一个通道在x的每一个通道上做一个卷积。

然后用 1 × 1 1\times 1 1×1卷积降维。

Q4: R*送入的网络是什么样的?

就是Conv+GroupNorm+ReLU的结构,最后用Conv进行分类。其中centerness和cls共享模型
请添加图片描述

Q5:映射关系?

输入图像被resize为255*255,stride为8,输出shape为25*25。最后对应的坐标从 ( 0 + 32 , 0 + 32 ) → ( 200 + 32 , 200 + 32 ) (0+32,0+32)\to(200+32,200+32) (0+32,0+32)(200+32,200+32)
请添加图片描述

Q6:惩罚项?

这个惩罚项是从另一篇论文中提出的,在那篇文章中,目的是为了使一次性检测框架适用于跟踪任务,所以需要提出一种策略来选择候选框。

使用余弦窗口和尺度变化惩罚对候选进行排序。 p e n a l t y = e k × m a x ( r r ′ , r ′ r ) × m a x ( s s ′ , s ′ s ) penalty=e^{k\times max(\frac{r}{r'},\frac{r'}{r})\times max(\frac{s}{s'},\frac{s'}{s})} penalty=ek×max(rr,rr)×max(ss,ss)
其中 k k k是超参数, r r r代表着候选框高度和宽度的比例, r ′ r' r代表最后一帧的比例。 s , s ′ s,s' s,s分别代表着候选框和最后一帧的规模,此处的规模如下定义 ( w + p ) × ( h + p ) = s 2 (w+p)\times(h+p)=s^2 (w+p)×(h+p)=s2
p = w + h 2 p=\frac{w+h}{2} p=2w+h,是padding。

然后与分类结果相乘就能得到排序的依据。

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

右边是我女神

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值