更快的 RCNN-RPN 网络

数据挖掘 神经网络 喀拉斯 物体检测 更快的rcnn
2022-02-16 11:29:42

我已经在堆栈溢出中问过这个问题,但得到了专家的回复,在这里发布这个问题,请帮助我理解这个概念......

我正在尝试了解 Faster RCNN 中的 RPN 网络。

我了解RPN网络的概念,

  1. 将输入图像传递给预训练的 CNN,并得到输出作为特征图
  2. 制作固定大小的特征图
  3. 从固定大小的特征图中提取锚点(每个滑动窗口有 3 个不同的比例和比例)。
  4. 使用两个 1×1 全连接 NN 查找背景或对象和边界框坐标(4 个值)
  5. 用 Ground Truth 边界框计算 Anchors 边界框的 IOU,如果 IOU>0.7,则锚点有对象,否则,锚点有背景。

RPN 的主题是给出具有对象的区域建议。

但是,我不明白输入和输出结构。

例如,我有 50 张图像,每张图像有 5 到 6 个对象,以及标签信息(每个对象的坐标)。

如何生成目标值来训练 PRN 网络...

在所有博客中,他们将架构展示为将整个图像提供给预训练的 CNN。

并且,RPN的输出,模型必须判断anchor是否有object,并且还要预测anchor中object的bounding box。

为此,如何准备输入和目标/输出值,就像我们在狗/猫或狗/猫/汽车分类问题中所做的那样。

如果我不正确,请让我纠正,

就是说,我们必须裁剪每张​​图像中的所有对象,并作为对象与背景进行二进制分类,以对锚点是否有对象进行分类

而且,是不是,我们必须将数据集中所有图像中每个裁剪对象的真实值作为目标,以便 RPN 网络训练良好,以预测每个锚点中对象的边界框。

希望,我清楚地解释了我的疑问。

帮我学习这个概念,谢谢

1个回答

就是说,我们必须裁剪每张​​图像中的所有对象,并作为对象与背景进行二进制分类,以对锚点是否有对象进行分类

RPN 从主干网络(VGG、Resnet 等)获取输入作为特征图。这里 RPN 本身是一个 CNN 层,因此它将处理不同形状的锚点到 FC 层。

对于损失计算,每个特征图点将映射到原始图像点(反向缩放)并计算损失函数的 IOU 分数。根据条纹和填充,可能会直接进行缩放。

从这些 RPN 将学习选择 bbox。

在 Faster RCNN 中,RPN 和对象分类层之间有不同的实现方法。

如果你熟悉 TF,可以参考这个实现。 https://github.com/tensorflow/models/blob/master/research/object_detection/meta_architectures/faster_rcnn_meta_arch.py