RPN网络的核心
Anchor机制。RPN网络进行前景背景分类时,是每个滑窗中心对应的感受野内是否存在目标,而目标的大小与长宽比例不是唯一确定的,需要进行不同尺寸的窗。Anchor在这里就是一个基准窗,让后按照不同倍数与长宽比得到不同尺寸的窗,在论文中基准窗大小是16,给出了(8,16,32)三种尺寸和(0.5,1,2)三种比例,这样就得到了九种尺寸的anchor,如图所示:
wenyilab
因此,在对60x40的Feature map进行滑窗时,以中心像素为基点构造9种不同的anchor映射到原来1000x600图像中,映射比例为16倍。那么总共可以得到60x40x9大约2万个anchor。
Faster rcnn 网络结构介绍
以上一直在讲解RPN网络,如何将RPN网络和fast rcnn检测器进行结合呢?
下图为Faster rcnn整个网络结构图:
wenyilab
1)卷积层
Faster rcnn支持输入任意图片,如上图的PxN,但进入网络之前可以对图片进行尺度限制,如可设定短边不超过600,长边不超过1000。我们可以假定MxN=1000x600(如果小于该尺寸,可以边缘补0,即图像会有黑色边缘)。
①13个conv层:kernel_size = 3,padding = 1,strde = 1
注:卷积层不会改变图片大小,即输入图片大小等于输出图片大小
②13个relu层:激活函数,不会改变图片大小
③4个pooling层:kernel_size = 2,stride = 2 pooling层会让输出图片是输入图片的1/2。
经过卷积层,图片大小会变成(Mx16)x(Nx16),即60x40,所以Feature Map就是60x40x512-d(注:VGG16是512-d,ZF是256-d)
2)PRN网络
Feature Map进入RPN后,先进行卷积核为3的卷积,输入依然是60x40x512,这样做的目的是进一步集中特征信息,接着会有两个全卷积,其结构是kernel_size = 1,padding = 0,stride = 1
wenyilab
①rpn_cls:60x40x512-d⊕1x1x512x18 ==> 60x40x9x2
逐像素对其9个anchor进行二分类
②rpn_bbox:60x40x512-d⊕1x1x512x36 ==> 60x40x9x4
逐像素对其9个anchor box四个坐标信息进行回归(偏移量)
论文中的图示如下:
wenyilab
anchor生成的具体操作
经过前面的卷积层后,图片大小变成了原来的1/16,在生成anchor时,我们先定义一个base_anchor,大小为16x16的box(因为特征图(60x40)上的一个点可以对应到原图(1000x600)上一个16x16大小的区域),即[0,0,15,15]的数组,首先保持面积不变,长宽比分别为(0.5,1,2)产生的anchor boxes如下:
之后经过长宽倍数的变化(16x8),(16x16),(16x32),产生的anchor boxes如下:
wenyilab
经过两种变换,最后生成9个anchor boxes,如下图所示:
wenyilab
根据计算可得生成的anchor boxes 有(60x40x9=216000)个,每个anchor box有四个偏移量,和原来的base_anchor基准坐标数组累加,就可以得到特征图上所有像素对应的anchor boxes的坐标值了,它是一个[216000,4]的数组。
网友评论