论文研读笔记(四)——Faster RCNN
论文研读系列汇总:
论文基本信息:
论文题目:
Faster R-CNN: Towards Real-Time Object Detection with Region Proposal Network
作者:
Shaoqing Ren, Kaiming He, Ross Girshick, and Jian Sun
(何恺明真的是推动cv的大牛人物了,orz)
论文原文:
https://arxiv.org/pdf/1506.01497.pdf
论文内容:
目标检测的历史变革:
摘要
主要贡献是引入了区域提议网络(RPN),使网络和检测网络共享全图像的卷积特征,使区域提议近乎零成本。PRN经过端到端的训练,可生成300个提议的高质量区域提出,由Fast RCNN来检测。并将PRN和Fast RCNN通过共享卷积特征合并成一个统一的网络。
Faster R-CNN
由两个模块构成,第一个是RPN结构,第二个是Fast RCNN结构。RPN结构会告诉Fast RCNN 应该在哪寻找可能的目标。
RPN层介绍:
卷积层其实相当于共享卷积层,因为卷积比FC层而言具有共享的属性。作者的模型建立在VGG等纯粹卷积网络模型的基础上,在最后一层全连接(为什么最后是全连接,因为卷积网络模型最后为了细致特征,最后一层一般都是全连接层,所以它其实共享的是全连接出来的特征图)出来的特征图中,进行滑动窗口操作(个人觉得他的滑动窗口也有点想卷积) ,接n*n的卷积层(作者这里接的是3*3的卷积层),最后通过两个1*1的卷积进行回归和分类的实现(回归用于坐标,分类确定类别)。通道数取决于锚点数,锚点介绍见下文。
锚点:
作者用了三个尺度和三个长宽比(一共9个锚点)在每个滑动窗口处。当图像中平移目标时,该方法能让region proposal平移,并同样能预测提议。具有平移不变性。
多尺度锚点:相比于别的方法的图像金字塔和卷积核金字塔(金字塔就是把它进行缩放以适应在一张静态图像上不同尺寸大小的目标),Faster RCNN的方法是achor(锚点)金字塔化,以适应不同大小的目标。这种方法仅在单一的特征图和静态图像上就能完成,成本更低。是共享特征的关键点所在。
在训练时,对每个回归器进行的训练,(不共享权重)并负责一个尺度和一个长宽比
由此可以预测不同尺寸的边界框。
RPN和Fast RCNN共享特征:
这里有两个模型,paper采用的方法是交替训练,即先训练RPN,并使用提议来训练Fast RCNN 。再由Fast RCNN来初始化RPN,并重复进行。
实验:
通过一些消融实验(控制变量,就是去掉一部分结构,以证明这部分结构有效),作者证明了VGG 比ZF有更好的效果,RPN层有更好的效果,数据集也能提高精确度。预测分数的卷积和预测坐标的卷积缺一不可,两者互相影响,互相能提高精确度。尺度和长宽比的效果相差不大,为了灵活性,paper选择了9个achor。
overfeat是一步的(后面的YOLO也是如此)在尺度金字塔上进行滑动窗口,并将特征用于定位和分类。而paper的检测方法是两步的(proposal和detection),是在提议上预测不同尺度和长宽比的提议,然后进行定位和分类。paper用实验证明无论速度还是精确度上,Faster RCNN都超过了前者。
ROI pooling layer:
实际上是SPP-NET的一个精简版,SPP-NET对每个proposal使用了不同大小的金字塔映射,而ROI pooling layer只需要下采样到一个7x7的特征图.对于VGG16网络conv5_3有512个特征图,这样所有region proposal对应了一个7*7*512维度的特征向量作为全连接层的输入.
RoI Pooling就是实现从原图区域映射到conv5区域最后pooling到固定大小的功能.
参考链接: