Faster R-CNN: Towards Real-Time Object Detection with Region Proposal Networks
推荐阅读:
Introduction
目标检测网络基本上可以分成两部分:候选区域生成(Region proposals) + 对候选区域进行分类以及bound boxes回归。
Region proposal的方法有多种,但是总的来说,region proposal 部分相比于 detection network 多花了很多时间,因此region proposal algorithms成为了一个计算瓶颈。
本文提出了Region Proposal Network用来进行候选区域提取,这样可以大大缩短候选区域的提取时间。
Faster RCNN
两部分:
- 深度全卷积网络 for region proposal —— RPN
- Fast RCNN detector
- 使用了attention机制
不同部分的主要功能:
- Conv layers提取特征图
- 作为一种CNN网络目标检测方法,Faster RCNN首先使用一组基础的conv+relu+pooling层提取input image的feature maps,该feature maps会用于后续的RPN层和全连接层
- RPN(Region Proposal Networks):
- 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回归操作获得物体的精确位置.
Region Proposal Networks
Anchors
- 输入:任意尺寸的图片
- 输出: a set of rectangular object proposals , each with an objectness score
对于任意一副输入图像,将其送入CNN之后,就可以得到相应的feature maps。RPN在CNN的最后一层feature map上滑动。假如最后一个feature map的大小是40 x 60 x channels,那么对于feature map中的每一个像素,用channels x 3 x 3 x 512的卷积核进行卷积,这样可以输出一个512维的特征向量。然后在接上一个1x1x18的卷积核,就可以输出18 = 2x9个评分(9个anchor,每个anchor有两个评分,代表前景,背景的confidence)。在256维特征后面接1x1x36的卷积核就可以得到36个值(9个anchor,每个anchor是4个值,分别代表中心点坐标,宽,高值)。
对于每一个像素都进行预测9个anchor,如果最后一层feature map是40x60大小的话,就要预测40x60x9个anchor,选出前300个得分高的作为候选区域,这样相比于Selective search得到的2000个区域少了很多,而且作者还进行了实验,发现用RPN得到的候选区域比selective search得到的Recall高很多。
出处:Mordekaiser
9个矩形共有3种形状,长宽比为大约为 {width:height} = {1:1, 1:2, 2:1} 三种,实际上通过anchors就引入了检测中常用到的多尺度方法。
RPN Loss Function
为特征图60*40上的每个像素生成9个Anchor box,并且对生成的Anchor box进行过滤和标记:
- 去除掉超过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
第一项表示分类损失,第二项表示回归损失,lambda是权重因子。RPN网络和CNN结合在一起可以实现端到端的训练。
生成anchors -> softmax分类器提取fg anchors -> bbox reg回归fg anchors -> Proposal Layer生成proposals