论文阅读笔记:Faster R-CNN: Towards Real-Time Object Detection with Region Proposal Networks
本文主要包含如下内容:
博客
训练代码功能介绍
论文地址:Faster R-CNN: Towards Real-Time Object Detection with Region Proposal Networks
主要思想
设计RPN网络,利用CNN卷积操作后的特征图生成region proposals.代替了Selective Search、EdgeBoxes等方法,速度上提升明显.
RPN网络与检测Fast R-CNN网络共享卷基层,大幅度提高网络的检测速度.
网络结构介绍
卷积网络
用VGG16模型中的conv-5层网络提取image的feature maps,该特征谱被共享后用于后续RPN层和全连接层.
RPN网络
RPN是regional proposal networks的缩写,用于生成region proposals。该层通过softmax判断anchors属于前景还是背景,再利用bounding box regression修正anchors获得精确的proposals(当然,proposals同时剔除太小和超出边界的proposals),具体结构如下:
- conv feature map:在VGG的conv5_3后新添加的一个[email protected]的卷基层。
- k anchor boxes:在每个sliding window的点上的初始化的参考区域。每个sliding window的点上获取的anchor boxes都一样。只要知道sliding window的点的坐标,就可以计算出每个anchor box的具体坐标。faster-RCNN中k=9.
- intermediate layer:通过1×1的卷积获得2k scores和4k cordinates。
- 2k scores:对于每个anchor,用了softmax layer的方式,会获得两个置信度。当然也可以用一维正例的置信度.
- 4k cordinates:每个窗口的坐标。这个坐标是通过anchor回归groundtruth的位置.
- 用softmax判定预测的anchors是前景还是背景,但在前后均接上了一个
reshape layer是为了便于softmax分类,例如:将[1,2*9,H,W]reshape成[1,2,9*H,W],在经过softmax之后再reshape为[1,2*9,H,W]. - Proposal Layer:综合所有的anchors变量,计算处精准的proposals,送入后续
ROI Pooling层中.其中,前向传播实现了将预测框切换为图像大小,删除宽和高小于阈值的框,并将所有的proposals_scores排序,获取其中pre_nms_topN proposals,随后进行nms非极大值抑制(阈值为0.7)并获得after_nms_topN proposals(top300). - ROI Pooling:其输入shape为:(N, W/16, H/16, channels),输出shape为:(num_rois, 7, 7, channels),对输入的roi缩小16倍,这样就可以用缩放后的roi来读取图片的roi区域,并对这些区域进行roi-pooling(max_pooling),提取对应区域的特征.
Anchors
Anchors是一组大小固定的参考窗口:三种尺度{128^2,256^2,512^2}×三种长宽比{1:1,1:2,2:1},如下图所示,表示RPN网络中对特征图滑窗时每个滑窗位置所对应的原图区域中9种可能的大小,相当于模板,对任意图像任意滑窗位置都是这9中模板。继而根据图像大小计算滑窗中心点对应原图区域的中心点,通过中心点和size就可以得到滑窗位置和原图位置的映射关系,由此原图位置并根据与Ground Truth重复率贴上正负标签,让RPN学习该Anchors是否有物体即可。
在RPN网络中对特征图滑窗时,对滑窗位置中心进行多尺度多长宽比的采样,并对多尺度多长宽比的anchor boxes区域进行回归和分类,利用Anchors金字塔就仅仅依赖于单一尺度的图像和特征图和单一大小的卷积核,就可以解决多尺度多长宽比问题,这种对推荐区域采样的模型不管是速度还是准确率都能取得很好的性能。另外两种途径:使用图像金字塔,对伸缩到不同size的输入图像进行特征提取;对输入图像采用不同size的滤波器分别进行卷积操作.
全连接网络
通过全卷积层与softmax计算每个proposals具体属于哪个类别,输出类别概率向量,同时利用boundingbox regression获得每个proposals的位置偏移量bbox_pred,用于回归精确的目标检测框.
Bounding Box Regression
损失函数LOSS:SmoothL1Loss定义如下:
其中i为索引,pi表示其为目标的预测概率,pi*表示gt_box(正为1,否则为0)
ti和ti*分别表示预测框的位置和gt_box框的位置。Lreg如下:
bound-box regression中各参数的计算方式为: