论文笔记《Faster RCNN》

摘要
最先进的目标检测网络 取决于感兴趣区域提取算法以及目标定位,像SPP网以及Fast RCNN网络减少了检测的时间消耗,与此同时区域提取的时间消耗达到了瓶颈,本文使用区域提取网络,该网络与检测网络共享图像的卷积特征,因此区域提取的消耗几乎没有,RPN是全卷积(个人理解为没有全连接层只有卷积层)的网络,在每一个位置同时预测box以及得分,训练RPN为一个端到端的模型提取高质量的区域,该区域用于Fast RCNN检测,本文将RPN和Fast RCNN通过共享卷积特征合并成一个简单的网络,RPN会提取感兴趣区域,对于更深的VGG16模型,检测系统在GPU速度为5fps,每幅图像仅提取300proposal
本文算法:用深度卷积网络提取proposal,proposal的计算给检测的网络几乎是没有消耗的,最后介绍RPN,与检测的网络共享卷积层,在检测时共享卷积区域提取的时间是非常短的,10ms每幅图片。基于区域的检测算子使用卷积特征图,Fast RCNN可以用于区域提取,在卷积特征的顶层,通过添加一些额外的卷积层创建RPN,这些额外的卷积层可以在每一个位置上同时回归bbox以及目标得分,RPN是一种全卷积网络,并且为了检测proposal可以进行端到端的训练。RPN能够有效预测有大的尺寸变化以及缩放比例的感兴趣区域。对比流行的算法,有图像金字塔或者滤波器金字塔,我们使用“anchor”表示多尺度和多比例的box,本文算法可以看作回归金字塔,避免了图像以及滤波器多尺寸以及比例的枚举特性,对于单一尺寸的图片进行训练和测试该算法性能很好并且提到运算速度。

论文笔记《Faster RCNN》_第1张图片具体实现
为了统一RPN和Fast RCNN的目标检测网络,我们的训练策略是交替训练RPN以及检测网络,比如固定proposal,通过共享卷积层在两个网络之间构建统一的网络,在PASCAL VOC数据集上评估我们的算法,RPN+FAST RCNN的性能高于selective search+Fast RCNN,时间短,我们算法提取proposal运行时间10milliseconds,使用深度网络,检测算法在GPU上速度为5fps,在速度和精度都是实用的目标检测系统,我们同时在COCO数据集以及PASCAL VOC数据集上进行了测试,最初的版本已经出版,至此 RPN以及Faster RCNN框架已经被采用,并且概括到其他方法,比如3维物体检测、部分检测、分割以及图像标题,快且有效的目标检测系统已经在多个系统中使用。算法在各个数据集中都能取得好的结果,结果表明我们方法不仅具有实用性而且也是一种有效提高检测精度算法。
Proposal,有很多关于目标proposal的算法,全面的调查以及查阅论文可以看到相关的方法,广泛使用的目标区域方法包括以超像素(selective search)以及以滑窗为基础的EdgeBoxes,object proposal方法可以和检测算法独立分开。
检测的深度网络:RCNN算法通过端到端的训练CNN将proposal分为目标和背景,RCNN主要是一个分类器,它不会预测目标的边界(除了bbox回归)它的精度取决于感兴趣区域提取部分,很多文章已经提出使用深度网络预测bbox,在Overfeat 方法中,全连接层被训练预测box,假设有一个目标的定位,全连接层变为一个检测多类目标的卷积层。RCNN需要将图片裁剪成固定的尺寸。共享的卷积运算在提高效率、精度以及视觉方面引起了大家注意,Overfeat从图像金字塔计算卷积特征用于分类、定位和检测。SPP网络共享卷积特征图用于目标检测和语义分割。Fast RCNN使用端到端的检测器训练共享的卷积特征提高精度和速度。
论文笔记《Faster RCNN》_第2张图片
Faster RCNN由两部分组成,一部分是深度全卷积网络,提供proposal,另一部分是Fast RCNN检测器,使用proposal,整个的系统是一个简单统一的目标检测网络,RPN告诉Fast RCNN去哪找proposal,在下面我们介绍RPN的设计及性质以及共享特征算法训练部分。
RPN网络将任意大小的图片作为输入,输出是一系列方形的感兴趣区域,每一个proposal都有目标得分,使用全卷积神经网络实现整个过程,最终目标与Fast RCNN目标检测网络实现共享运算,假设两个网络共享一系列卷积层,在实验中,ZF网络有5层共享卷积层,VGG-16网络有13共享卷积层。为了得到感兴趣区域,在卷积特征图上滑动一个小的网络,最后一个共享卷积层作为输出,小网络的输入是n*n的输入卷积特征图的空间窗口,每一个滑
动的窗口都会映射为一个低维特征(256-ZF、512-VGG),该特征送入两个全连接层reg和cls,本文使用n=3,输入图像有效的感受野是比较大的(171 像素-ZF,228像素-VGG),该小网络会进行滑窗的操作,全连接层在所有空间位置都是共享的,这个结构很容易推断出在两个滑动的1*1卷积层后有一个n*n的卷积层。
Anchor,在每一个滑动窗口的位置,同时预测多个proposal,在每一个位置可能有的proposal的最大数目记为k,reg层有4k输出对于k个box,cls层有2k score 在每一个位置估计是目标或者不是目标的概率,k个proposal对应有k个相关的box,称相关box为anchor,anchor在滑动窗口的中心,与尺寸和比例有关,本文使用3尺寸、3比例,在每一个滑动的位置有k=9个anchor,对于大小为W*H (2400)的卷积特征图,总共有WHk个anchor。
Anchor具有平移不变性,我们方法重要的性质就是变换不变性,包括anchor以及计算与anchor相关的proposal的函数,如果图片中的目标有一定的变换,proposal也应该变换,在任意位置同样的函数能够预测proposal,我们方法可以保证变换不变的性质 ,作为对照,MultiBox方法是用k-means得到800个不具有变换不变性的anchor,因此MultiBox不能保证如果目标进行了变换仍然可以得到相同的proposal。
变换不变的性质也可以降低model大小,MultiBox有(4+1)800维全连接输出层,然而本文算法当k=9时有(4+2)*9维卷积层输出,结果,输出层有2.8 10^4个参数(VGG-16有512*(4+2)*9),两个模型的参数都比MultiBox的输出层参数6.1*10^6少,如果考虑到特征映射层,proposal层比MultiBox有更少的参数,我们期待我们的方法在小数据集上尽可能少的出现过拟合,比如PASCAL VOC。
多尺度anchor作为参考回归,anchor设计对于多尺度多比例有了新的方案,在Figure1中所示,对于多尺度的预测有两个流行的方法,在DPM和CNN中,将图片resize为多尺度,在每一个尺度上计算特征图,这种方法非常有用但比较耗时,第二种方法是在特征图的多尺度上使用滑动窗口,比如,在DPM中,不同比例的model使用不同的滤波器大小分开训练,如果将这种方法应用到多尺度中,被认为是滤波器金字塔,第二种方法通常与第一种结合使用。
作为对比,以anchor为基础的方法建立在anchor金字塔上,本文方法的分类和anchor不同尺寸和比例的bbox回归,只跟单一尺寸的图像和特征图有关,使用单一大小的滤波器,在table8中会显示多尺寸的实验结果。
论文笔记《Faster RCNN》_第3张图片
多尺寸设计以anchor为基础,我们可以使用卷积特征在单一尺寸的图像上计算,使用Fast RCNN检测器进行检测,多尺寸的anchor是共享特征的一部分
损失函数,为了训练RPN,对每一个anchor使用二类别(目标或非目标),以下两种情况anchor为正样本1、anchor与ground-truth有最高的IOU值;2、IOU大于0.7,一个ground-truth可能会导致多个anchor为正例,一般第二种情况确定正例样本是比较合适的,但我们仍然采用第一种情况的原因是在一些特殊的情况,第二种方法可能找不到正例样本,IOU小于0.3为负样本,非正非负的样本在训练中不起作用。
损失函数:
I是minibatch中anchor的指数,pi是预测anchor是目标的概率,anchor为正例则pi*为1,如果anchor为负则pi*为0,ti是预测bbox的4个参数化向量,ti*与正例anchor有关的ground-truth,分类损失Lcls是关于两类(目标,非目标)的log损失,对于回归损失Lreg(ti,ti*)=R(ti-ti*)R由smoothL1定义,pi*Lreg表明回归损失之和正anchor有关cls和reg的输出由pi和ti组成,用入平衡权重Ncls是mini-batch的大小为256,Nreg为anchor位置的数目为2400,入为10,两者的权重基本相等,实验表明入对实验结果影响不大,归一化不是必要的并且可以被简化。
X,y,w,h分别是box的中心坐标和宽、高,x,xa,x*分别为预测box,anchor box和groundtruth box,bbox回归是使得anchor box更接近与ground-truth box,本文的bbox回归与之前以ROI为基础的不同,bbox回归在特征池化层,回归权重被区域的大小共享,在特征图上回归的特征都是3*3空间大小的,对于不同大小,需要学习kbbox回归,每一个回归负责一个尺寸和比例,k回归不共享权重,由于anchor的设计预测多个尺寸的box成为可能,尽管特征图的大小是固定的。
训练RPN,RPN训练采用反向传播和SGD,每一个minibatch包括很多正、负的样本anchor,有可能使得所有anchor的损失函数最优化,在每幅图片随机选择256anchor 计算minibatch的损失函数,选择的anchor中正负比例1:1,如果图片中正样本少于128个,用负样本补充。
新层初始化权重采用均值为0方差为0.01的高斯分布,所有其他层(共享卷积层)初始化使用ImageNet预处理的model,所有层使用ZF网络。VGG网络Conv3_1及以上都需要存储记忆,60Kminibatch的学习速度0.001接着20K minibatch的学习速度0.0001,在PASCAL VOC数据集上,动量0.9,权重衰减0.0005,使用caffe。
在RPN和Fast RCNN 共享特征,介绍了如何训练一个网络提取proposal,并没有考虑到使用这些proposal的基于区域的目标检测,对于检测网络,本文采用Fast RCNN,本文介绍一个算法学习一个由RPN和Fast RCNN组成共享卷积层的网络,RPN和Fast RCNN分开训练,我们需要找到一种方法在两个网络之间共享卷积层而不是学习两个分来的网络,对此,本文讨论三种方法
1、 交替训练,首先训练RPN,使用proposal训练Fast RCNN,Fast RCNN训练的网络被用于初始化RPN,这个过程是迭代的,本文采用的就是这种方法。
2、 近似联合训练,在训练的时候两个网络合并成一个网络,每次SGD迭代的时候前向传播得到的proposal,当训练Fast RCNN 检测器的时候,被认为是一个固定的预处理的proposal,在共享层,反向传播信号从RPN和Fast RCNN损失结合起来,该方法容易推导,但是这个方法忽略了偏导以及box的坐标,所以是近似的,实验表明该方法相比1降低25-50%的训练时间
3、 非近似联合训练,RPN预测的bbox也是函数的输入,Fast RCNN的ROI池化层接受卷积特征,同时,预测bbox作为输入,理论上有效的反向传播应该包括梯度及box坐标,近似联合训练中忽略了梯度。
4步交替训练,本文采用4步训练的方法学习共享特征以及交替优化,1、训练RPN,如之前介绍的一样,该网络被ImageNet预处理模型初始化,fine-tune完成端到端的区域proposal,2、用第一步RPN得到的proposal训练一个独立的检测网络,检测网络同样被ImageNet初始化,至此两个网络没有共享卷积层,3、用检测网络初始化RPN训练,固定共享卷积层只fine-tuneRPN独有的层,现在两个网络共享卷积层,最后保持共享卷积层固定,fine-tuneFast RCNN 独有的层,至此两个网络共享相同的卷积层形成了同意的网络,相似的交替训练可以迭代多次,但是并没有观察到有明显的提高。
延伸细节,训练和测试proposal和检测网络都是在单一尺寸图像上,将短边归一化为600像素,多尺度的特征提取可能会提高精度但是速度精度不会都高,在归一化的图像上,ZF和VGG网络在最后一个卷积层的步长是16像素,不归一化PASCAL图像一般是10像素,尽管大的步长有一个好的结果,使用小一点的步长精度可能还会提高。对于anchor,使用三个尺寸box面积128,256,512,3个比例1:1,1:2,2:1,对于特定的数据集,这些超参数不能很准确的确定,在后面对于参数的影响做了延伸实验,本文算法不需要图像金字塔或滤波器金字塔预测多尺寸区域,节省运行时间。
Anchor box在穿过图像边界时需要仔细处理,在训练时忽略跨越边界的anchor,对损失不会有影响,对于1000*600图像,大约有20000anchor,去掉跨越边界的 ,平均每幅图有6000anchor用于训练,训练2000proposal,测试300,采用NMS减少冗余,NMS阈值为0.7,NMS不影响精度只减少proposal数目。Cls得分会影响排名最高的proposal的精度,reg层可提高mAP,实验表明高质量的proposal主要依赖于bbox回归
Anchor的scale和ratio对实验结果影响不大,为了保证实验灵活性,都采用。入在1-100间结果差不多

你可能感兴趣的:(算法,FasterRCNN,论文笔记)