大家好,又见面了,我是你们的朋友全栈君。
引言
RPN(Region Proposal Network)是Faster-RCNN网络用于提取预选框(也就是RCNN中使用selective search算法进行Region Proposal的部分),我们知道RCNN及Fast-RCNN中一个性能瓶颈就是提取预选框的部分,而RPN很好地对这个部分进行了优化,原因在于它将卷积神经网络引入了进来,使用特征提取的形式生成出预选框的位置从而降低了selective search算法带来的计算时间上的开销。
RPN( Region Proposal Network) :-
CNN从特征图中学习分类的方式,RPN也从特征图中学习生成这些候选框。一个典型RPN网络如图所示。它的网络流程如下:
step1
在第一步中,我们的输入图像通过卷积神经网络,其最后一层将特征图作为输出;
step2
在这一步骤中,滑动窗口通过上一步骤得到的特征图进行运行。滑动窗口的大小为n*n(这里是3×3)。对于每个滑动窗口,生成一组特定的锚,但有3种不同的长宽比(1:1, 1:2, 2:1)和3种不同的长宽(128, 256和512)的方框,如下所述:
- 有3种不同的长宽比和3种不同的方框,所以特征图中每个像素共可有9种方案;
- 在特征图大小为W * H的情况下,锚箱的总数量和特征图每个位置的锚数量为K,可以给出W * H * K。
下图显示了尺寸为(600, 900)的图像的(450, 350)位置的9个锚点。
在上图中,三种颜色代表三种比例或尺寸(128×128, 256×256, 512×512)。让我们把绿色的盒子/锚单列出来。这三个盒子的高度宽度比例分别为1:1、1:2和2:1。
step3
现在,我们已经为特征图的每个位置设置了9个锚定框。但可能有很多盒子里没有任何物体。因此,模型需要学习哪些锚箱可能有我们的对象。有我们的物体的锚箱可以被归类为前景,其他的则是背景。同时,模型需要学习前景框的偏移量,以适应物体。 这就把我们带到了下一个步骤。
step4
锚箱的定位和分类是由边界箱调节器层和边界箱分类器层完成的。边界盒分类器计算地面真实盒与锚定盒的物性得分,并以一定的概率(又称物性得分)将锚定盒分类为前景或背景。
Bounding box Regressor层学习x,y,w,h值相对于已分类为前景的Anchor Box的偏移(或差异),其中(x,y)是盒子的中心,w和h是宽度和高度。由于RPN是一个模型,每个模型都有一个成本函数来训练,所以RPN也是如此。 RPN的损失函数可以表示如下:
举例
让我们用一个例子来回顾RPN的整个流程。假设我们有一张大小为600×800的图像,在通过卷积神经网络(CNN)块后,这幅输入图像缩小为38×56的特征图,特征图的每个位置都有9个锚点盒。那么我们就有38 * 56 * 9=1192个建议或锚箱需要考虑。而每个锚箱都有两个可能的标签(前景或背景)。如果我们把特征图的深度定为18(9个锚点x 2个标签),我们将使每个锚点都有一个有两个值的向量(通常称为预测值),代表前景和背景。如果我们将预测值送入softmax/logistic回归激活函数,它将预测标签。
发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/152296.html原文链接:https://javaforall.cn
【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛
【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...