SiamRPN阅读笔记:High Performance Visual Tracking with Siamese Region Proposal Network

这是来自商汤的一篇文章 发表在CVPR2018上 论文地址

目录:

摘要

视觉目标跟踪在这些年来已经成为一个基础的主题,许多基于深度学习的跟踪器在多个跟踪基准上已经取得了优越的性能。但是大多数人性能优越的跟踪器很难有实时速度。在这篇文章中,作者提出了孪生候选区域生成网络(Siamese region proposal network),简称Siamese-RPN,它能够利用大尺度的图像对离线端到端训练。具体来讲,这个结构包含用于特征提取的孪生子网络(Siamese subnetwork)和候选区域生成网络(region proposal subnetwork),其中候选区域生成网络包含分类和回归两条支路。在跟踪阶段,作者提出的方法被构造成为单样本检测任务(one-shot detection task)。作者预先计算孪生子网络中的模板支路,也就是第一帧,并且将它构造成一个检测支路中区域提取网络里面的一个卷积层,用于在线跟踪。得益于这些改良,传统的多尺度测试和在线微调可以被舍弃,这样做也大大提高了速度。Siamese-RPN跑出了160FPS的速度,并且在VOT2015,VOT2016和VOT2017上取得了领先的成绩。

1.引言

作者说现代的跟踪器分为两个分支,一个是基于相关滤波器的方法,不再赘述;另一个是利用非常好的深度特征的方法,此方法不更新模型,所以性能方面不如基于相关滤波的方法。当然,如果微调网络的话,速度会变得非常慢。
本文是离线训练好的基于深度学习跟踪器,主要是提出了Siamese-RPN结构,不同于标准的RPN,作者在相关特征图谱上提取候选区域,然后作者将模板分支上的目标外观信息编码到RPN特征中来判别前景和背景。
在跟踪阶段,作者将此任务视为单目标检测任务(one-shot detection),什么意思呢,就是把第一帧的BB视为检测的样例,在其余帧里面检测与它相似的目标。
综上所述,作者的贡献有以下三点:

  1. 提出了Siamese region proposal network,能够利用ILSVRC和Youtube-BB大量的数据进行离线端到端训练。
  2. 在跟踪阶段将跟踪任务构造出局部单目标检测任务。
  3. 在VOT2015, VOT2016和VOT2017上取得了领先的性能,并且速度能都达到160fps。

2.相关工作

2.2 RPN

说了这么多,那到底什么是RPN呢?
RPN即Region Proposal Network,首先是在Faster-RCNN中提出的,用于目标检测。分为两个支路,一个用于分类前景和背景,一个用于边界框回归。
这里写图片描述
通俗来讲,就是用RPN来选择感兴趣区域的,即proposal extraction。例如,如果一个区域的p>0.5,则认为这个区域中可能是我们想要的类别中的某一类,具体是哪一类现在还不清楚。到此为止,网络只需要把这些可能含有物体的区域选取出来就可以了,这些被选取出来的区域又叫做ROI (Region of Interests),即感兴趣的区域。当然了,RPN同时也会在feature map上框定这些ROI感兴趣区域的大致位置,即输出Bounding Box。
这篇文章有详细的讲解:http://lib.csdn.net/article/deeplearning/61641
不得不去了解的几个知识有:

  • anchor box

翻译为锚点框,就是通过RPN对每个锚点上的k个矩形分类和回归,得到感兴趣区域。每个anhcor box要分前景和背景,所以cls=2k;而每个anchor box都有[x, y, w, h]对应4个偏移量,所以reg=4k

  • Bounding Box Regression

对每个锚点上预定义的k个框进行边界框回归,来更好的框住目标,具体操作会在后文讲。

2.3 One-shot learning

最常见的例子就是人脸检测,只知道一张图片上的信息,用这些信息来匹配出要检测的图片,这就是单样本检测,也可以称之为一次学习,可以观看吴恩达的相关视频课上有讲解:点击这里

3.Siamese-RPN framework

这里写图片描述
左边是孪生网络结构,上下支路的网络结构和参数完全相同,上面是输入第一帧的bounding box,靠此信息检测候选区域中的目标,即模板帧。下面是待检测的帧,显然,待检测帧的搜索区域比模板帧的区域大。中间是RPN结构,又分为两部分,上部分是分类分支,模板帧和检测帧的经过孪生网络后的特征再经过一个卷积层,模板帧特征经过卷积层后变为2k*256通道,k是anchor box数量,因为分为两类,所以是2k。下面是边界框回归支路,因为有四个量[x, y, w, h],所以是4k.右边是输出。

3.1 孪生特征提取子网络

预训练的AlexNet,剔除了原始网络中conv2 conv4两层的并行分组
φ ( z ) \varphi(z) φ(z)是模板帧输出, φ ( x ) \varphi(x) φ(x)是检测帧输出

3.2 候选区域提取子网络

分类支路和回归支路分别对模板帧和检测帧的特征进行卷积运算:
A w × h × 2 k c l s = [ φ ( x ) ] c l s ⋆ [ φ ( z ) ] c l s A_{w\times h\times 2k}^{cls}=\left [ \varphi (x) \right ]_{cls}\star \left [ \varphi (z) \right ]_{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\times h\times 4k}^{reg}=\left [ \varphi (x) \right ]_{reg}\star \left [ \varphi (z) \right ]_{reg} Aw×h×4kreg=[φ(x)]reg[φ(z)]reg
A w × h × 2 k c l s A_{w\times h\times 2k}^{cls} Aw×h×2kcls包含2k个通道向量,中的每个点表示正负激励,通过softmax损失分类; A w × h × 4 k r e g A_{w\times h\times 4k}^{reg} Aw×h×4kreg包含4k个通道向量,每个点表示anchor和ground truth之间的dx,dy,dw,dh,通过smooth L1 loss:
L r e g = ∑ i = 0 3 s m o o t h L 1 ( δ [ i ] , σ ) L_{reg}= \sum_{i=0}^{3}smooth_{L1}(\delta [i],\sigma ) Lreg=i=03smoothL1(δ[i],σ)

δ [ 0 ] = T x − A x A w ,   δ [ 1 ] = T y − A y A h ,   δ [ 2 ] = l o g T w A w ,   δ [ 2 ] = l o g T h A h \delta [0]= \frac{T_{x}-A_{x}}{A_{w}} ,\ \delta [1]= \frac{T_{y}-A_{y}}{A_{h}}, \ \delta [2]= log{\frac{T_w}{A_w}}, \ \delta [2]= log{\frac{T_h}{A_h}} δ[0]=AwTxAx, δ[1]=AhTyAy, δ[2]=logAwTw, δ[2]=logAhTh

Ax, Ay, Aw, Ah是anchor boxes中心点坐标和长宽; Tx, Ty, Tw, Th 是ground truth boxes,为什么要这样呢,因为不同图片之间的尺寸存在差异,要对它们做正规化。

smoothL1损失: s m o o t h L 1 ( x , σ ) = { 0.5 σ 2 x 2 , ∣ x ∣ ≤ 1 σ 2 ∣ x ∣ − 1 2 σ 2 , ∣ x ∣ ≥ 1 σ 2 smooth_{L1}(x,\sigma )=\left\{\begin{matrix} 0.5\sigma ^2x^2, |x|\leq \frac{1}{\sigma ^2}\\|x|-\frac{1}{2\sigma ^2} ,|x|\geq \frac{1}{\sigma ^2} \end{matrix}\right. smoothL1(x,σ)={0.5σ2x2,xσ21x2σ21,xσ21

3.3 训练阶段:端到端训练孪生RPN

因为跟踪中连续两帧的变化并不是很大,所以anchor只采用一种尺度,5中不同的长宽比[0.33, 0.5, 1, 2, 3]
当IoU大于0.6时是前景,小于0.3时是背景.

4. Tracking as one-shot detection

平均损失函数L:
min ⁡ W 1 n ∑ i − 1 n L ( ζ ( φ ( x i ; W ) ; φ ( z i ; W ) ) , l i ) \min_{W}\frac{1}{n}\sum_{i-1}^{n}L(\zeta (\varphi (x_i;W);\varphi (z_i;W)),l_i) Wminn1i1nL(ζ(φ(xi;W);φ(zi;W)),li)

l i l_i li是标签, W W W是孪生网络权重, ζ \zeta ζ是经过RPN操作
这里写图片描述
这张图直观的表示出了将跟踪当做的单样本检测任务,模板帧在RPN中经过卷积层, φ ( x ) r e g \varphi(x)_{reg} φ(x)reg φ ( x ) c l s \varphi(x)_{cls} φ(x)cls当做检测所用的核。

经过网络后
A w × h × 2 k c l s = ( x i c l s , y j c l s , c l c l s ) A_{w\times h\times 2k}^{cls}={(x_i^{cls},y_j^{cls},c_l^{cls})} Aw×h×2kcls=(xicls,yjcls,clcls)
A w × h × 4 k r e g = ( x i r e g , y j r e g , d x p r e g , d w p r e g , d h p r e g ) A_{w\times h\times 4k}^{reg}={(x_i^{reg},y_j^{reg},dx_p^{reg},dw_p^{reg},dh_p^{reg})} Aw×h×4kreg=(xireg,yjreg,dxpreg,dwpreg,dhpreg)
这里, i ∈ [ 0 , w ) , j ∈ [ 0 , h ) , l ∈ [ 0 , 2 k ) , p ∈ [ 0 , k ) i\in [0,w),j\in[0,h),l\in[0,2k),p\in[0,k) i[0,w),j[0,h),l[0,2k),p[0,k)
因为是分类, A w × h × 2 k c l s A_{w\times h\times 2k}^{cls} Aw×h×2kcls选前k个点
那么怎么选择呢?分两步
第一步,舍弃掉距离中心太远的BB,只在一个比原始特征图小的固定正方形范围里选择,如下图:
这里写图片描述
中心距离为7,仔细看图可以看出,每个网格都有k个矩形。
第二步,用余弦窗和尺度变化惩罚来对proposal进行排序,选最好的。余弦窗是为了抑制距离过大的,尺度惩罚是为了抑制尺度大的变化。具体公式可看论文。

用这些点对应的anchor box结合回归结果得出bounding box:
x i p r o = x i a n + d x l r e g ∗ w l a n x_i^{pro}=x_i^{an}+dx_l^{reg}*w_l^{an} xipro=xian+dxlregwlan

y i p r o = y i a n + d y l r e g ∗ h l a n y_i^{pro}=y_i^{an}+dy_l^{reg}*h_l^{an} yipro=yian+dylreghlan

w i p r o = w l a n ∗ e d w l w_i^{pro}=w_l^{an}*e^{dw_l} wipro=wlanedwl

h i p r o = h l a n ∗ e d h l h_i^{pro}=h_l^{an}*e^{dh_l} hipro=hlanedhl

a n an an就是anchor的框, p r o pro pro是最终得出的回归后的边界框
至此,proposals set就选好了。

然后再通过非极大抑制(NMS),顾名思义,就是将不是极大的框都去除掉,去除冗余的重叠框,具体操作就是先选择一个置信度最高的框,其余的框与之的IoU大于某个阈值,就剔除掉,从未处理的框中继续选一个得分最高的,重复上述过程。
最后根据最大分值得出最终的跟踪目标BB。

5. 实验

6. 结论

  • 47
    点赞
  • 204
    收藏
    觉得还不错? 一键收藏
  • 32
    评论
评论 32
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值