赞
踩
Faster RCNN的最大亮点就是提出了网络RPN(大名Region Proposal Network) ,在检测中的作用等价于之前论文(如Fast R-CNN, R-CNN)用来提取候选区域的Selective Search方法
RPN是一个相对于backbone较小的网络(small network)作用于最后一层卷积网络输出的特征图:
RPN被形象的图解为
n
×
n
n×n
n×n大小的滑动窗口,中心定位于特征图上的每个像素,而这个滑动窗口实际上由
k
k
k个anchor boxes组成,也就是说围绕在中心点的滑动窗口是有
k
k
k中变换形状的,不仅有
n
×
n
n×n
n×n的正方形的样子,还有不同尺度,不同面积的另外
k
−
1
k-1
k−1个。
(文章中以
k
=
9
k=9
k=9,有三种面积大小的anchor boxes,同一面积大小的anchor boxes又有三种不同的长宽比。)
用两个前向网络实现:
这样就对每个像素位置所包含的区域信息进行了一个处理,要注意的是:如今的每个像素是属于对原图像下采样后的特征图的,是存留着局部信息的。
回顾上阶段:经过上一步逐像素生成9个regions。
我们现在有: M × N × K M×N×K M×N×K个regions( M × N M×N M×N为RPN作用的特征图的尺寸),总数量是巨大的
而我们再回到任务本身:目标只在图像中的某个或某几个区域
那么显然我们要筛去没有包含很多目标信息的regions,如何用网络来表示包含信息的情况?——最后用一个proposal layer来衔接提出regions和送入检测器检测这两个过程
首先RPN的训练需要制作标签。
对于常用的数据集如VOC是有真值框的,那么我们判断anchors所圈住区域是否为真,还是用老方法IoU来度量。
从这一步我们也能明白一点,其实锚所选定的区域,应该是对原图像的一个操作
回顾Faster R-CNN对每一个候选目标都有两个输出:类别标签(class label)和一个边界框偏移量(bounding-box offset)。在此基础上,Mask R-CNN添加第三个输出分支:输出the object mask
有两种接入形式,分别对应两种backbone
对输入目标的空间布局进行编码,可以通过点对点的卷积实现
在Faster R-CNN结构中,最终输出的class labels和box offsets都是由全连接层输出的向量,而为了得到短的输出向量,信息一定存在collapsed
mask则是对于空间结构的一个检测,保留了空间信息
在Faster R-CNN中,对于RoI特征的提取,有两处存在着误差。
在backbone中会有对原图进行下采样,下采样的倍数取决于max pooling,当ground truth boxes不能被下采样倍数所整除时,出现了第一次对不准的情况
在Fast R-CNN中,提出了RoIPool这个方法,用于提取RoI的在特征图上的特征(7×7),操作过程为:找到RoI在特征图上的对应位置,并将其池化成统一7×7大小。这就衍生出一个问题:在划分每一个bin时,产生坐标位置的量化,这样就会导致提取到的特征和RoI之间的不准,虽然对分类可能没有太大的影响,但会很大影响到基于像素的mask的预测
为了保持像素在空间上的正确对应,文中提出了RoI的改进方法RoIAlign
对于bin边界的划定,只使用x/16而不取整
在每个RoI bin里,使用bilinear interpolation的方法计算输入特征在四个固定采样点的准确值,然后融合结果(max或average),方法示意图为:
实验测试,结果对采样点的位置,数量并不敏感,但量化会。
这一步对于结果有很大的提升
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。