论文阅读之Siamese RPN以及一些其他内容的补充

siameseRPN

是在fc的基础上 多了尺度检测能力RPN的引入,使得Siamese网络自然拥有了多尺度检测的能力(通过anchor机制cover各种size),并且可以准确地回归出目标的位置及大小。
是在离线训练的基础上不更新模型,利用一种端到端的输出其实本质上是一种rnn模式,关于尺度的大小变化可根据图像金字塔得到。图像金字塔具体是怎么进行的?是在检测分支中添加了rpn结构其中利用了元学习以及一次性学习问题。相对于之前的siamesefc和cenet是添加了边界框回归的方法。且利用了图像对输入视频进行单目标追踪,对于很多初级CVer会直接认为目标追踪就是对每一帧的detection。其实这是不准确的,这样做一来运算速度慢(实时性不好),二来performance也难以理想,三来只能针对你能识别的目标进行tracking。
1,VOT单目标追踪是有规则的:给你一段视频,然后在视频的第一帧给一个bbox(框住你要tracking的对象),然后要在视频播放的过程中一直tracking这个对象。整个tracking过程是一个offline(线下)的,也就是local one-shot detection tas。也就是元学习。 ————————————————
2,元学习就是学会学习,这样就可以快速学习,利用元学习的算法一次性学习。是训练一个核心指导网络。每一个训练任务我们都构造一个行动网络(Actor Network),但是我们只有一个核心指导网络(Meta-Critic Network),这个网络包含两部分:一个是核心价值网络(Meta Value Network),另一个则是任务行为编码器(Task-Actor Encoder)。我们用多个任务同时训练这个Meta Critic Network。训练方式可以是常见的Actor-Critic。训练时最关键的就是Task-Actor Encoder,我们输入任务的历史经验(包括状态state,动作action,和回馈reward),然后得到一个任务的表示信息z,将z和一般价值网络的输入(状态state和动作action)连接起来,输入到Meta Value Network中
其中利用了元学习的方法也就是learn to learn 。
3,关于元学习,基于记忆的方法,网络的输入与上此的标签y作为输入,并且也储存了上次的x输入,在下一次输入时可以进行反向传播,也可以添加监督机制使得标签y和x建立了联系使得之后的x能够通过外部记忆获取相关图像进行比对来实现更好的预测。
本文加入的元学习的方法是基于预测梯度的方法,实现快速学习,而快速学习的关键一点是神经网络的梯度下降要准,要快,那么是不是可以让神经网络利用以往的任务学习如何预测梯度,这样面对新的任务,只要梯度预测得准,那么学习得就会更快。其实关于让神经网咯更快的方法也可以利用加入注意力机制的方法,一直将注意力集中在感兴趣的位置。训练一个attition模型。
在这里插入图片描述
构造一个attention机制,也就是最后的label判断是通过attention的叠加得到的
在这里插入图片描述
attention a则通过g和f得到。基本目的就是利用已有任务训练出一个好的attention model。
4,平移不变性(translation invariant)指的是对于同一张图及其平移后的版本,都能输出同样的结果。这对于图像分类(image classification)问题来说肯定是最理想的,因为对于一个物体的平移并不应该改变它的类别。而对于其它问题,比如物体检测(detection)、物体分割(segmentation)来说,这个性质则不应该有,原因是当输入发生平移时,输出也应该相应地进行平移。这种性质又称为平移等价性(translation equivalence)。这两个概念是比较混淆的,但确实是两个不同的东西。
一般来说,一个神经网络的性质,要么是从它本身使用的结构得到的,要么是从它在数据集中学到的参数得到的。
(1)卷积层:在信号处理中,卷积操作(以及相关操作)的性质包含了平移等价性。对于共享权值的卷积层来说,只在平移量为stride的整数倍时平移等价性才严格成立。池化层:普通池化层中,均值池化等价于固定卷积核的卷积层。全局池化层有一点的位移不变性,整个cnn结构其实不具有平移不变性,但是当只有当位移是整个网络的降采样倍数的整数倍才存在,所以对于平移不变性概率很难存在,所以可以用来分类的平移不变性主要来源于参数。对于其中用到的crop就是对应的patch之间的变换平移,也没有周围的黑边padding。会经常用stride为2的卷积层来替代池化层(等价降采样)针对池化弱的平移不变性损失的信息。
就是CNN的平移不变性主要是通过数据学习来的,结构只能带来非常弱的平移不变性,而学习又依赖于数据增强中的裁切,裁切相当于一种更好的图像平移。
4,经过第一帧给出的bbox也就是边界框框住tracking的对象),然后要在视频播放的过程中一直tracking这个对象。整个过程一直是线下的即local one-shot detection task。首先得找到这个对象的训练集,才能对每一帧可以跟踪。对于SIAMfc是利用了互相关的操作,就是卷积核提取第一帧的特征。卷积操作就在检测帧中找到与首帧目标相似的目标,通过输出的FeatureMap的score来体现。可以看到最后的输出是一张17x17的score map。其中的z是模板图像时bbox框住的范围中的x,y,w,h参数预处理之后变成的z。中间的fai变换就是;利用卷积层和padding,将原始图像处理是一个提取函数,训练出来就是FC训练目标。后面的卷积操作两个特征映射的卷积操作。
5,但是bbox不变 所以RPN加入了多尺度预测。提取的特征图像只有第一帧太单一。https://blog.csdn.net/leviopku/article/details/80875368 这个时RPN的解释。
不同的是SiamFC把输出直接用来进行相关滤波(图1中的∗∗),而SiamRPN接入的是一个RPN(有2个分支:分类、回归)。回归就是利用的bbox回归,利用给出的偏移量(dx, dy, dw, dh)。
关于bbox的回归?这个是关于fasterd的解释:https://www.cnblogs.com/wangyong/p/8513563.html。
在这里插入图片描述
其实是一种基于CNN的目标检测方法,Faster RCNN首先使用一组基础的conv+relu+pooling层提取input image的feature maps,该feature maps会用于后续的RPN层和全连接层。
RPN网络主要用于生成region proposals,首先生成一堆Anchor box,对其进行裁剪过滤后通过softmax判断anchors属于前景(foreground)或者后景(background),即是物体or不是物体,所以这是一个二分类;同时,另一分支bounding box regression修正anchor box,形成较精确的proposal(注:这里的较精确是相对于后面全连接层的再一次box regression而言)。
Roi Pooling:该层利用RPN生成的proposals和VGG16最后一层得到的feature map,得到固定大小的proposal feature map,进入到后面可利用全连接操作来进行目标识别和定位
Classifier: 会将Roi Pooling层形成固定大小的feature map进行全连接操作,利用Softmax进行具体类别的分类,同时,利用L1 Loss完成bounding box regression回归操作获得物体的精确位置。
在这里插入图片描述
1,卷积层:faster RCNN首先是支持输入任意大小的图片的,比如上图中输入的P
Q,进入网络之前对图片进行了规整化尺度的设定,如可设定图像短边不超过600,图像长边不超过1000,我们可以假定MN=1000600(如果图片少于该尺寸,可以边缘补0,即图像会有黑色边缘)
① 13个conv层:kernel_size=3,pad=1,stride=1;
卷积公式:
所以,conv层不会改变图片大小(即:输入的图片大小=输出的图片大小)
② 13个relu层:激活函数,不改变图片大小
③ 4个pooling层:kernel_size=2,stride=2;pooling层会让输出图片是输入图片的1/2
经过Conv layers,图片大小变成(M/16)(N/16),即:6040(1000/16≈60,600/16≈40);则,Feature Map就是6040512-d(注:VGG16是512-d,ZF是256-d),表示特征图的大小为6040,数量为512。
2,RPN:Feature Map进入RPN后,先经过一次3
3的卷积,同样,特征图大小依然是6040,数量512,这样做的目的应该是进一步集中特征信息,接着看到两个全卷积,即kernel_size=11,p=0,stride=1;
在这里插入图片描述
如上图中标识:
① rpn_cls:6040512-d ⊕ 1151218 ==> 604092
逐像素对其9个Anchor box进行二分类
② rpn_bbox:6040512-d ⊕ 1151236==>604094
逐像素得到其9个Anchor box四个坐标信息(其实是偏移量,后面介绍)
在这里插入图片描述
https://www.cnblogs.com/wangyong/p/8513563.html
滑窗 前景分类和回归层
(2.1)、Anchors的生成规则
前面提到经过Conv layers后,图片大小变成了原来的1/16,令feat_stride=16,在生成Anchors时,我们先定义一个base_anchor,大小为1616的box(因为特征图(6040)上的一个点,可以对应到原图(1000600)上一个1616大小的区域),源码中转化为[0,0,15,15]的数组,参数ratios=[0.5, 1, 2]scales=[8, 16, 32]
先看[0,0,15,15],面积保持不变,长、宽比分别为[0.5, 1, 2]是产生的Anchors box

如果经过scales变化,即长、宽分别均为 (168=128)、(1616=256)、(16*32=512),对应anchor box如图
在这里插入图片描述
在这里插入图片描述
综合以上两种变换,最后生成9个Anchor box
在这里插入图片描述

上面是一个特征图产生的anchor
其中iou是两个bbox的重叠度,
在这里插入图片描述
关于样本的标记:
① 去除掉超过1000*600这原图的边界的anchor box
② 如果anchor box与ground truth的IoU值最大,标记为正样本,label=1
③ 如果anchor box与ground truth的IoU>0.7,标记为正样本,label=1
④ 如果anchor box与ground truth的IoU<0.3,标记为负样本,label=0
剩下的既不是正样本也不是负样本,不用于最终训练,label=-1

这个anchor通俗来讲就是设定的框不会随物体的变大变小而变动。把anchor框的位置(x, y)和大小(w, h)进行调整,所以只需要得到偏移量
(dx, dy, dw, dh),原参数加上偏移量就可以得到最后的bbox了。
本文的文章没有padding,利用了修改后的alexnet,修改了stride,使得网络输出特征图的高度和宽度与以上相匹配,conv1的目的是对来自template的特征进行通道数提升。将其变为(2kX256)个通道后,再经过切分,变成四维的变量(4X4X2kX256),才能作为卷积核。为了与template保持一致,图中对detection也进行了相应操作(即conv2),但保持detection的维度不变。
CNN中所谓的“卷积”绝大多数情况下指的是互相关操作),相当于用template在detection进行搜索。图中的k表示anchor的数量(论文中取k=5)。在RPN中,分类分支的输入应当具有2k个通道,分别表示k个anchor是前景还是背景的模型预测与Faster-RCNN差不多,添加了一些tricks。具体步骤如下:

1、对于coutput,首先扔掉其边缘,即仅保留与中心距离小于某阈值的输出。由于相邻的帧变化不大,故这一步可过滤掉outliers;

2、使用cosine window。cosine window的本质也是对远离边缘的数据进行抑制。

3、使用下图所示的penalty。这一步的目的是对相邻两帧之间过大的形状和尺度变化进行抑制
5,对coutput的各个位置的score进行比较,从而得到coutput最大值所在的位置。然后一方面得到了该位置所对应的anchor,另一方面根据该位置得到routput中的相应元素,确定该anchor的四个偏移量(dx, dy, dw, dz),根据anchor的坐标及偏移量就能得到预测框。这一过程其实就是构造rlabel的逆过程。
6,EAO:是指所有帧重合率的平均值。

准确率(Accuracy):成功跟踪时的帧占总帧数的比例。所谓“成功跟踪”是指重叠率大于某个阈值的那些帧。

失败率(Failure):一定长度的帧数之内,重合率小于某个阈值的次数。在VOT或OTB数据集上,每当重合率小于某个阈值时,会进行复位,所谓“复位”也就是把ground truth告诉模型。

EFO:表示归一化后的跟踪速度。具体做法是在同一台设备上用《跟踪算法处理每帧图像的时间》除以《用30*30的窗口对600×600的图像做滤波操作的时间》。

7,对于cnn网络用的vgg用于跟踪的层数和参数量特别少,因为VGG这些网络是学到的每一类物体的特点,故测试时可以输出物体的类别,但是siamese学到的并不是物体的特点,而是通过这些物体来学习物体形变的特点,只学习了物体形变的特点所以需要的层数比较少。本文最多也就用到了四层。强调的是一种动态的感觉。而不是这个物体的特征信息。
一点思考:
图片上具有较大语义信息的都会被很好的区分,但是fc并不能区分不同的物体,是因为加了窗函数,将周边的物体抑制掉了,猜测在跟踪的评价数据集中,大部分也是目标物体周围的其他物体较少,因此才能有不错的表既然网络所学习到的特征不够好,那么只需要学习到好的特征好就行了,一个很容易想到的方法就是增大数据集,但是直接简单粗暴的增大数据集会有用吗?这里作者进行了分析,直接用训练集中的视频查看网络提取特征的区分能力,发现在训练集中网络也不能区分开目标前景以及其他的干扰前景,然后得出结论直接加数据是不行的,这里我感觉,可就是因为训练集中,目标物体附近的干扰物太少,网络在学习的过程中,只学习目标物体与背景之间的区别就可以了,这样就可以使loss降低了,因此我觉得,简单的加数据没有用,但是添加一些有干扰物的训练集是不是会有用呢?后面
训练集使用的是ILSVR2015和YOUTOBE 包含的种类有限,故又引入了COCO数据集,通过增强手段比如(平移、调整大小、灰度化等)来扩充了正样本对的种类。为了提高判别能力,在负样本中,作者发现有语义的背景和类内干扰物都很少,所以增加了不同类别的困难负样本来避免跟踪结果飘逸,以及增加了相同类别的困难负样本来更加关注目标的细节表达。
在应对长时跟踪问题时在短时跟踪失败时利用局部到全局的搜索策略重新检测目标。

关于Siamse RPN原文阅读笔记

http://openaccess.thecvf.com/content_cvpr_2018/papers/Li_High_Performance_Visual_CVPR_2018_paper.pdf
论文链接

摘要

视觉目标跟踪在这些年来已经成为一个基础的主题,许多基于深度学习的跟踪器在多个跟踪基准上已经取得了优越的性能。但是大多数人性能优越的跟踪器很难有实时速度。在这篇文章中,作者提出了孪生候选区域生成网络(Siamese region proposal network),简称Siamese-RPN,它能够利用大尺度的图像对离线端到端训练。具体来讲,这个结构包含用于特征提取的孪生子网络(Siamese subnetwork)和候选区域生成网络(region proposal subnetwork),其中候选区域生成网络包含分类和回归两条支路。在跟踪阶段,作者提出的方法被构造成为单样本检测任务(one-shot detection task)。作者预先计算孪生子网络中的模板支路,也就是第一帧,并且将它构造成一个检测支路中区域提取网络里面的一个卷积层,用于在线跟踪。得益于这些改良,传统的多尺度测试和在线微调可以被舍弃,这样做也大大提高了速度。Siamese-RPN跑出了160FPS的速度,并且在VOT2015,VOT2016和VOT2017上取得了领先的成绩。
————————————————
现代的跟踪器分为两个分支,一个是基于相关滤波的,通过探索卷积操作和在傅里叶域的操作训练一个回归,可以进行在线跟踪和更新滤波器的权重,最近的相关滤波是利用深度特征来提高精度,但是很大的损失了模型更新的速度。另外一个分支是借用强烈的深度特征并且不更新模型。此方法不更新模型,所以性能方面不如基于相关滤波的方法。当然,如果微调网络的话,速度会变得非常慢。
本文是离线训练好的基于深度学习跟踪器,主要是提出了Siamese-RPN结构,不同于标准的RPN,作者在相关特征图谱上提取候选区域,然后作者将模板分支上的目标外观信息编码到RPN特征中来判别前景和背景。
在跟踪阶段,作者将此任务视为单目标检测任务(one-shot detection),什么意思呢,就是把第一帧的BB视为检测的样例,在其余帧里面检测与它相似的目标。
综上所述,作者的贡献有以下三点:

提出了Siamese region proposal network,能够利用ILSVRC和Youtube-BB大量的数据进行离线端到端训练。
在跟踪阶段将跟踪任务构造出局部单目标检测任务。
在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

最常见的例子就是人脸检测,只知道一张图片上的信息,用这些信息来匹配出要检测的图片,这就是单样本检测,也可以称之为一次学习,可以观看吴恩达的相关视频课上有讲解.https://mooc.study.163.com/learn/2001281004?tid=2001392030#/learn/content?type=detail&id=2001728700
另一方面,元学习方法旨在获得学习的能力,也就是说,意识到并控制自己的学习。利用神经网络预测目标网络在反向传播过程中的梯度。
虽然这些基于元学习的方法取得了较好的效果,但这些方法往往是基于分类任务进行评价的,很少有扩展到跟踪任务的。

3.Siamese-RPN framework

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

3.1 孪生特征提取子网络

在siam网络中采用一个没有padding的全卷积网络,让lt表示转换操作 (L τ x)[u] = x[u−τ],然后所有的padding操作满足以下全卷积的步长~
h(L kτ x) = L τ h(x)
利用alex网络修正,从第二层以及第四层修正。

3.2 候选区域提取子网络

分类支路和回归支路分别对模板帧和检测帧的特征进行卷积运算:
如果有k个锚,网络需要输出2k个信道进行分类,4k个信道进行回归。
首先两两相关的部分增加ϕ的chan -内尔(z)两个分支(ϕ(z)] cls和[ϕ(z)] reg 2 k和4 k次通道分别由两个康沃变频器——全局层
在这里插入图片描述
在这里插入图片描述
4k通道向量代表了dx dy dw dh 来度量在锚和groundtruth的距离。
在训练网络时。采用用于快速rcnn的损失函数。分类损失为交叉熵损失,采用具有归一化坐标的光滑l1损失进行回归。设A x, A y, A w, A h表示锚盒的中心点和形状,T x, T y, T w, T h表示真值框的中心点和形状。故归一化距离公式见上 上面一行四个的那个。
对损失函数优化:在这里插入图片描述
啦木塔是超参数 为了平衡这两部分,然后LCLS是交叉熵 ,在这里插入图片描述

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

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

4. Tracking as one-shot detection

在本节中,我们首先将跟踪任务定义为局部一次检测任务。然后,对该解释下的推理阶段进行了详细的分析,并对推理阶段进行了仿真,以提高推理速度。最后介绍了一些具体的策略,使该框架适合于跟踪任务。

4.1. Formulation

它的目的是找到最小的参数W - 最小化预测函数ψ的平均损失L (x; W)。它是计算n样本x和对应的数据集- ing标签ℓ
平均损失函数为:在这里插入图片描述
我们提出了一种基于元学习过程的单模板学习预测器参数W的方法
一个相应图的前馈函数,zi是模板样本,
在这里插入图片描述
z 表示模板分支,x是检测分支,函数fai是孪生特征提取子网络,并且函数kesai 是区域生成网络,故一次性检测任务可由一下方程表示:
在这里插入图片描述
在这里插入图片描述
这张图直观的表示出了将跟踪当做的单样本检测任务,模板帧在RPN中经过卷积层, φ(x)reg \varphi(x){reg}φ(x)
reg

和φ(x)cls \varphi(x)
{cls}φ(x)
cls

当做检测所用的核。
在这里插入图片描述
中心距离为7,仔细看图可以看出,每个网格都有k个矩形。
第二步,用余弦窗和尺度变化惩罚来对proposal进行排序,选最好的。余弦窗是为了抑制距离过大的,尺度惩罚是为了抑制尺度大的变化。具体公式可看论文。

用这些点对应的anchor box结合回归结果得出bounding box:
在这里插入图片描述
an就是anchor的框,pro propro是最终得出的回归后的边界框
至此,proposals set就选好了。

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

实验

  • 2
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值