如何理解SiamRPN++?
如何理解SiamRPN++?
目标跟踪:
- 使用视频序列第一帧的图像(包括bounding box的位置),来找出目标出现在后序帧位置的一种方法。
孪生网络结构:
在进入到正式理解SiamRPN++之前,为了更好的理解这篇论文,我们需要先了解一下孪生网络的结构。
孪生网络是一种度量学习的方法,而度量学习又被称为相似度学习。
孪生网络结构被较早地利用在人脸识别的领域(《Learning a Similarity Metric Discriminatively, with Application to Face Verification》)。其思想是将一个训练样本(已知类别)和一个测试样本(未知类别)输入到两个CNN(这两个CNN往往是权值共享的)中,从而获得两个特征向量,然后通过计算这两个特征向量的的相似度,相似度越高表明其越可能是同一个类别。在上面这篇论文中,衡量这种相似度的方法是L1距离。
在目标领域中,最早利用这种思想的是SiamFC,其网络结构如上图。输入的
z
是第一帧ROI(也就是在手动在第一帧选择的bounding box),x
则是后一帧的图片。两者分别通过两个CNN,得到两张特征图。再通过一次卷积操作(L=(22-6)/1+1=17
),获得最后形状为17*17*1
的特征图。在特征图上响应值越高的位置,代表其越可能有目标存在。其想法就类似于对上面的人脸识别孪生网络添加了一次卷积操作。获得特征图后,可以获得相应的损失函数。y={-1,+1}
为真实标签,v
是特征图相应位置的值。下列第一个式子是特征图上每一个点的loss,第二个式子是对第一个式子作一个平均,第三个式子就是优化目标。
However, both Siamese-FC and CFNet are lack of boundingbox regression and need to do multi-scale test which makesit less elegant. The main drawback of these real-time track-ers is their unsatisfying accuracy and robustness comparedto state-of-the-art correlation filter approaches.但是,Siamese-FC和CFNet都没有边界框回归,因此需要进行多尺度测试,这使得它不太美观。这些实时跟踪器的主要缺点是,与最新的相关滤波器方法相比,它们的精度和鲁棒性不令人满意。
为了解决SiamFC的这两个问题,就有了SiamRPN。可以看到前半部分Siamese Network部分和SiamFC一模一样(通道数有变化)。区别就在于后面的RPN网络部分。特征图会通过一个卷积层进入到两个分支中,在Classification Branch中的
4*4*(2k*256)
特征图等价于有2k
个4*4*256
形状的卷积核,对20*20*256
作卷积操作,于是可以获得17*17*2k
的特征图,Regression Branch操作同理。而RPN网络进行的是多任务的学习。17*17*2k
做的是区分目标和背景,其会被分为k个groups,每个group会有一层正例,一层负例。最后会用softmax + cross-entropy loss
进行损失计算。17*17*4k
同样会被分为k groups,每个group有四层,分别预测dx,dy,dw,dh
。而k的值即为生成的anchors的数目。而关于anchor box的运行机制,可以看下方第二张图(来自SSD)。
SiamRPN++
进入主题:
Abstract & Introduction
However, Siamese track-ers still have an accuracy gap compared with state-of-the-art algorithms and they cannot take advantage of features from deep networks, such as ResNet-50 or deeper.(以往的siamese网络无法处理较深的网络)
We observe that all these trackers have built their network upon architecture similar to AlexNet [23] and tried several times to train a Siamese tracker with more sophisticated architecture like ResNet[14] yet with no performance gain. (用的都是AlexNet,而在ResNet上效果不佳)
Since the target may appear at anyposition in the search region, the learned feature representation for the target template should stay spatial invariant,and we further theoretically find that, among modern deep architectures, only the zero-padding variant of AlexNet satisfies this spatial invariance restriction.(只有AlexNet没有padding层才满足spatial invariance平移不变性)
- 由于padding层会破坏平移不变性,而越深的网络像ResNet-50等具备大量padding(这里简要解释一下,卷积层中的参数有stride、padding等。对于stride,只有在目标位移量(shift)是stride的整数倍时,才满足平移不变性。对于padding,同一目标在图片边缘和在图片内部的响应值不同)。因此需要解决平移不变性问题。于是作者提出了一种打破平移不变性限制的采样策略。
By analyzing the Siamese network structure for cross-correlations, we find that its two network branches are highly imbalanced in terms of parameter number; thereforewe further propose a depth-wise separable correlation struc-ture which not only greatly reduces the parameter numberin the target template branch, but also stabilizes the trainingprocedure of the whole model. (分类分支和回归分支参数量严重不平衡)
- 这一点从SiamRPN的结构图中即可看出。
Siamese Tracking with Very Deep Networks
- 对于原来siamese网络的分析:原先的孪生跟踪网络可以视为以下的式子:
\[
f(z,x)=\sigma(z)*\sigma(x)+b
\]
而这种设计,会导致两个限制:
The contracting part and the feature extractor used inSiamese trackers have an intrinsic restriction forstricttranslation invariance,f(z,x[4τj]) =f(z,x)[4τj],where[4τj]is the translation shift sub window opera-tor, which ensures the efficient training and inference.(只用某个ROI的区域作为x进行运算应该和总体进行运算后取该ROI的结果一致)
The contracting part has an intrinsic restriction forstructure symmetry,i.e.f(z,x′) =f(x′,z), which isappropriate for the similarity learning.(即根据相似性度量的思想,用z作为卷积核和用x的目标位置作为卷积核效果一致)
前者也就是严格平移不变性限制,后者就是目标相似限制。
Spatial Aware Sampling Strategy
如果特征提取网络不具有良好的平移不变性的时候(也就是采用ResNet或者MobileNet等拥有padding层的网络),此时再按照SiamFC的训练方式,即将所有正样本都放在中心,那么此时会学习到位置偏见,也就是对在中心的目标响应值最大。测试方式为,使用三种目标位置按照不同均匀分布的数据集进行训练,shift值越大表示均匀分布的范围越大,可视化结果如下图:
而这一设置均匀分布不同偏移量的策略被称为
spatial aware sampling strategy
。作者为了确定这一策略的有效性,又在VOT2016和VOT2018上做了测试,发现随着shift范围的变大,EAO指标(简单来说就是视频每一帧的跟踪精度a
的均值,而a
使用的是lOU)总体呈现上升趋势。在这些测试中,64 pixels
是一个良好的偏移量。而一旦消除了深层网络对中心位置的学习偏见,就可以根据需要利用任何结构的网络以进行视觉跟踪。
SiamRPN对ResNet的transfer
既然解决了位置偏见问题,就可以上手使用ResNet网络了。作者在这里主要是对ResNet-50结构进行修改。ResNet-50结构如下:
其中CONV BLOCK
(输入输出维度不同,shortcut用1*1 kernel
改变维度):
ID BLOCK
(输入输出尺寸一致,便于加深网络):
The original ResNet has a large stride of 32 pixels,which is not suitable for dense Siamese network prediction.As shown in Fig.3, we reduce the effective strides at the last two block from 16 pixels and 32 pixels to 8 pixels by modifying the conv4 and conv5 block to have unit spatial stride, and also increase its receptive field by dilated convo-lutions [27]. An extra 1×1 convolution layer is appended to each of block outputs to reduce the channel to 256.
Reset常见的stride
值为32,但对于跟踪任务,前后帧物体差距可能很小,因此作者将最后两个block的stride
改成了8 pixels
,而且会加入一个额外的1*1 convolution layer
将通道数变为256。网络会将stage 3/4/5
的结果放入到SiamRPN网络中进行Layer-wise Aggregation。
Layer-wise Aggregation多层特征融合
In the previous works which only use shallow networkslike AlexNet, multi-level features cannot provide very dif-ferent representations. However, different layers in ResNetare much more meaningful considering that the receptivefield varies a lot. Features from earlier layers will mainlyfocus on low level information such as color, shape, are es-sential for localization, while lacking of semantic informa-tion; Features from latter layers have rich semantic informa-tion that can be beneficial during some challenge scenarioslike motion blur, huge deformation.The use of this rich hierarchical information is hypothesized to help tracking.
对于ResNet这种很深的网络,不同stage
所获得的特征也不同。浅层stage
获得的是Low-level
图像特征,而较深的block
则偏向于获取语义信息。因此,使用好不同层次的特征有助于跟踪任务。
Since the output sizes of the three RPN modules have thesame spatial resolution, weighted sum is adopted directly onthe RPN output. A weighted-fusion layer combines all theoutputs.
上面已说,网络会提取后三个block的结果放入SiamRPN网络,而这三个RPN模块的输出结果形状是相同的,所以作者这里采用的是直接加权求和各个结果:
Depthwise Cross Correlation
在Siamese网络中,后面衡量相似度的是十分重要的。如SiamFC的方式就是上图(a)的方式,来预测一个单通道的Response Map。而SiamRPN使用的是上图(b)的方式,由于引入了anchor,通过多个独立模板层对一个检测层的卷积操作来获得多通道独立的张量。而这就导致了RPN层的参数量要远大于特征提取层。因此引入了本文的方法——DW-XCorr。
之所以(b)会产生那么多参数,原因在于在进入SiamRPN的RPN层时,存在一个用于提升通道数的卷积层。而(c)使用的是DW卷积操作(下面第二张图),也就是一个channel负责对一个channel进行卷积操作。如下第一张图,输入两个从ResNet获得的特征层(channel数目是一致的),先同样分别通过一个卷积层(由于需要学的任务不同,所以卷积层参数不共享),再分别进行DW卷积操作,然后两分支再分别通过一层不同的卷积层改变通道数以获得想要的分类和回归结果。这样一来,就可以减少计算量,且使得两个分支更加平衡。
而通过这种方式,在不同的通道对其相应的类会有不错的响应,而其他类则会有所抑制,也就是这种方式能够记住一些不同类别的语义信息。而(2)的up-channel方式却没有这种性质。
实验结果
在成功识别率,SiamRPN++位于第一位,在精度(识别框中心位置)方面,位于第三。
EAO值位于第一,远超第二名。
对于比较长的视频序列,SiamRPN++也位居第一的位置。
如何理解SiamRPN++?的更多相关文章
- 论文阅读:Siam-RPN
摘要 Siam-RPN提出了一种基于RPN的孪生网络结构.由孪生子网络和RPN网络组成,它抛弃了传统的多尺度测试和在线跟踪,从而使得跟踪速度非常快.在VOT实时跟踪挑战上达到了最好的效果,速度最高16 ...
- 理解CSS视觉格式化
前面的话 CSS视觉格式化这个词可能比较陌生,但说起盒模型可能就恍然大悟了.实际上,盒模型只是CSS视觉格式化的一部分.视觉格式化分为块级和行内两种处理方式.理解视觉格式化,可以确定得到的效果是应 ...
- 彻底理解AC多模式匹配算法
(本文尤其适合遍览网上的讲解而仍百思不得姐的同学) 一.原理 AC自动机首先将模式组记录为Trie字典树的形式,以节点表示不同状态,边上标以字母表中的字符,表示状态的转移.根节点状态记为0状态,表示起 ...
- 理解加密算法(三)——创建CA机构,签发证书并开始TLS通信
接理解加密算法(一)--加密算法分类.理解加密算法(二)--TLS/SSL 1 不安全的TCP通信 普通的TCP通信数据是明文传输的,所以存在数据泄露和被篡改的风险,我们可以写一段测试代码试验一下. ...
- node.js学习(三)简单的node程序&&模块简单使用&&commonJS规范&&深入理解模块原理
一.一个简单的node程序 1.新建一个txt文件 2.修改后缀 修改之后会弹出这个,点击"是" 3.运行test.js 源文件 使用node.js运行之后的. 如果该路径下没有该 ...
- 如何一步一步用DDD设计一个电商网站(一)—— 先理解核心概念
一.前言 DDD(领域驱动设计)的一些介绍网上资料很多,这里就不继续描述了.自己使用领域驱动设计摸滚打爬也有2年多的时间,出于对知识的总结和分享,也是对自我理解的一个公开检验,介于博客园这个平 ...
- 学习AOP之透过Spring的Ioc理解Advisor
花了几天时间来学习Spring,突然明白一个问题,就是看书不能让人理解Spring,一方面要结合使用场景,另一方面要阅读源代码,这种方式理解起来事半功倍.那看书有什么用呢?主要还是扩展视野,毕竟书是别 ...
- ThreadLocal简单理解
在java开源项目的代码中看到一个类里ThreadLocal的属性: private static ThreadLocal<Boolean> clientMode = new Thread ...
- JS核心系列:理解 new 的运行机制
和其他高级语言一样 javascript 中也有 new 运算符,我们知道 new 运算符是用来实例化一个类,从而在内存中分配一个实例对象. 但在 javascript 中,万物皆对象,为什么还要通过 ...
随机推荐
- 听《Sara》
Sara这首歌太好听了,虽然没有清楚具体是唱什么,但我感觉是讲一个故事,很好奇,我找到了歌词. Sara 塞拉 鲍勃迪伦 I laid on a dune, I looked at the sky, ...
- 吴裕雄--天生自然HTML学习笔记:HTML 表单和输入
HTML 表单用于收集不同类型的用户输入. <!DOCTYPE html> <html> <head> <meta charset="utf-8& ...
- bubble chart|Matrix Scatter|Overlay Scatter|Scatterplots|drop-line|box plot|Stem-and-leaf plot|Histogram|Bar chart|Pareto chart|Pie chart|doughnut chart|
应用统计学 对类别数据要分类处理: Bar chart复式条形图便于对比: Pareto chart:对类别变量依据频数高低排列: Pie chart:饼图用于一个样本,可以区分类别数据 doughn ...
- JavaScript中对象数组去重方法
在一次对后端返回的对象数组的操作时想通过indexOf()或者includes()的方法来实现对对象数组的去重但是行不通,因为用indexOf()返回的都是-1,一下记录两种对象数组(更具指定属性)去 ...
- 对String类型的认识以及编译器优化
Java中String不是基本类型,但是有些时候和基本类型差不多,如String b = "tao" ; 可以对变量直接赋值,而不用 new 一个对象(当然也可以用 new). J ...
- VMware虚拟机克隆CentOS6.5后修改网卡
在学习zk伪分布式集群对的时候,第一次注意到克隆虚拟机后修改eth的ip地址,发现ip不是自己修改的ip,进而在询问下发现,当我们第一次登陆查看我们克隆的虚拟机ip时:我们看到的ip不是et ...
- JXL包大解析;Java程序生成excel文件和解析excel文件内容
最近需求变化,需要把excel导入 我以前没有做过,所以我查了一些资料 和参考别人的代码 以下是多种方式: import java.io.File; import java.io.FileInputS ...
- 代码演示C#各版本新功能
代码演示C#各版本新功能 C#各版本新功能其实都能在官网搜到,但很少有人整理在一起,并通过非常简短的代码将每个新特性演示出来. 代码演示C#各版本新功能 C# 2.0版 - 2005 泛型 分部类型 ...
- python 写入 execl 文件 之 xlwt 模块
1. xlwt 安装 pip install xlwt 2. xlwt 操作, 代码 #!/usr/bin/env python3 import xlwt # 只能创建 新的 excel 文件 # 1 ...
- iOS 开发富文本之TTTAttributedLabel 在某个特定位置的文字添加跳转,下划线,修改字体大小,颜色
@property(nonatomic , strong) TTTAttributedLabel * ttLabel; @property(nonatomic , strong) NSRange li ...