动动发财的小手,点个赞吧!
简介
如果您正在阅读这篇文章,那么我假设您一定听说过用于目标检测的 RCNN 系列,如果是的话,那么您一定遇到过 RPN,即区域提议网络。如果您不了解 RCNN 系列,那么我强烈建议您在深入研究 RPN 之前单击此处阅读这篇文章。
因此我们知道,在目标检测算法中,目标是生成候选框,可能包含我们目标的框,这些框将通过边界框回归方法进行定位,并由分类器分类到各自的类别。
在早期版本的物体检测算法中,这些候选框曾经是通过传统的计算机视觉技术生成的。其中一种方法是“选择性搜索”,但这种方法的缺点是它是离线的,而且计算量很大。
这就是 RPN(区域提议网络)方法通过在非常短的时间内生成候选框和最重要的地方,这个网络可以插入任何对象检测网络,这使得它对任何对象检测模型都更有用。
RPN
CNN 从特征图学习分类的方式,RPN 也学习从特征图生成这些候选框。可以使用下图演示典型的区域提议网络
让我们逐步了解上面的框图
Step 1
因此,在第一步中,我们的输入图像通过卷积神经网络,最后一层将特征映射作为输出。
Step 2
在这一步中,一个滑动窗口运行在上一步获得的特征图上。滑动窗口的大小是 n*n(这里是 3×3)。对于每个滑动窗口,都会生成一组特定的锚点,但具有 3 种不同的纵横比(1:1、1:2、2:1)和 3 种不同的比例(128、256 和 512),如下所示。
因此,对于 3 种不同的纵横比和 3 种不同的比例,每个像素总共可能有 9 个建议。特征图大小为 WxH 的锚框总数和特征图每个位置的锚点数量 K 可以表示为 WxHxK 。
下图显示了在大小为 (600, 900) 的图像的位置 (450, 350) 处的 9 个锚点。
上图中,三种颜色代表三种尺度或尺寸:128×128、256×256、512×512。
让我们挑出棕色的盒子/锚点(上图中最里面的盒子)。三个盒子的高宽比分别为1:1、1:2和2:1。
现在我们有 9 个锚框用于特征图的每个位置。但是可能有很多盒子里面没有任何物体。因此模型需要了解哪个锚框可能包含我们的对象。带有我们对象的锚框可以被归类为前景,其余的将是背景。同时模型需要学习前景框的偏移量以调整以适合对象。这将我们带到下一步。
Step 3
锚框的定位和分类是由 Bounding box Regressor layer 和 Bounding box Classifier layer 完成的。
Bounding Box Classifier 计算 Ground Truth Box 与 anchor boxes 的 IoU 分数,并以一定的概率将 Anchor box 分类为前景或背景。
Bounding box Regressor 层学习 x,y,w,h 值相对于被分类为前景的 Anchor Box 的 Ground truth Box 的偏移量(或差异),其中 (x,y) 是框的中心, w 和 h 是宽度和高度。
由于 RPN 是一个模型,并且每个模型都有一个要训练的成本函数,因此 RPN 也是如此。 RPN 的损失或成本函数可以写成
注意:- PN 不关心对象的最终类(例如猫、狗、汽车或人等)是什么。它只关心它是前景对象还是背景。
示例
让我们用一个例子来描述 RPN 的整个概念
因此,如果我们有一个大小为 600×800 的图像,在通过卷积神经网络 (CNN) 块后,该输入图像将缩小为一个 38×56 的特征图,每个特征图位置有 9 个锚框。那么我们将有 38569=1192 个提案或 Anchor Boxes 来考虑。每个锚框都有两个可能的标签(前景或背景)。如果我们将特征图的深度设置为 18(9 个锚点 x 2 个标签),我们将使每个锚点都有一个向量,该向量具有表示前景和背景的两个值(称为 logit 的法线)。如果我们将 logit 输入 softmax/logistic 回归激活函数,它将预测标签。
假设 600×800 的图像在应用 CNN 后缩小 16 倍为 39×51 的特征图。 feature map 中的每个位置都有 9 个 anchors,每个 anchor 都有两个可能的标签(background,foreground)。如果我们将特征图的深度设置为 18(9 个锚点 x 2 个标签),我们将使每个锚点都有一个向量,该向量具有表示前景和背景的两个值(通常称为 logit)。如果我们将 logit 输入 softmax/logistic 回归激活函数,它将预测标签。现在,训练数据已包含特征和标签。模型将进一步训练它。
总结
区域提议网络 (RPN) 的输出是一堆框/提议,它们将被传递给分类器和回归器以最终检查对象的出现。简而言之,RPN 预测一个锚点是背景还是前景的可能性,并对锚点进行细化。