当前位置: 代码迷 >> 综合 >> 目标检测之Faster-RCNN
  详细解决方案

目标检测之Faster-RCNN

热度:67   发布时间:2023-12-06 10:17:38.0

目标检测之Faster-RCNN

  • Faster-RCNN简介
    • 1、算法整体框架
    • 2、主干特征提取网络(backbone)
      • 2.1、残差网络(Resnet50)
    • ROIPooling原理

Faster-RCNN简介

Faster-RCNN是一个非常有效的目标检测算法,虽然是一个比较早的论文, 但它至今仍是许多目标检测算法的基础。

Faster-RCNN作为一种two-stage的算法,与one-stage的算法相比,two-stage的算法更加复杂且速度较慢,但是检测精度会更高。

事实上也确实是这样,Faster-RCNN的检测效果非常不错,但是检测速度与训练速度有待提高。

1、算法整体框架

在这里插入图片描述
上图为Faster-RCNN整体框架,整体思路大致为:网络输入(图片)—>CNN提取公共特征层—>提取公共特征(Feature Map)—>利用Feature Map产生建议框(Proposal)—>将产生的建议框与Feature Map进行POI Pooling操作—>进行卷积操作,获得预测结果和目标位置

获得的公用特征层Feature Map,其有两个应用,一个是和ROIPooling结合使用、另一个是进行一次3x3的卷积后,进行一个9通道的1x1卷积,还有一个36通道的1x1卷积。

在Faster-RCNN中,num_priors也就是先验框的数量就是9,所以两个1x1卷积的结果实际上也就是:

9 x 4的卷积 用于预测 公用特征层上 每一个网格点上 每一个先验框的变化情况。(为什么说是变化情况呢,这是因为Faster-RCNN的预测结果需要结合先验框获得预测框,预测结果就是先验框的变化情况。)9 x 1的卷积 用于预测 公用特征层上 每一个网格点上 每一个预测框内部是否包含了物体。

到这里我们可以获得了一些有用的框,这些框会利用9 x 1的卷积判断是否存在物体。

到此位置还只是粗略的一个框的获取,也就是一个建议框。然后我们会在建议框里面继续找东西。

2、主干特征提取网络(backbone)

Faster-RCNN可以采用多种的主干特征提取网络,常用的有VGG,Resnet,Xception等等,本文介绍残差网络(Resnet),残差网络介绍

2.1、残差网络(Resnet50)

ResNet50有两个基本的块,分别名为Conv Block和Identity Block,其中Conv Block输入和输出的维度是不一样的,所以不能连续串联,它的作用是改变网络的维度;Identity Block输入维度和输出维度相同,可以串联,用于加深网络的。
Conv Block的结构如下:
在这里插入图片描述
Identity Block的结构如下:
在这里插入图片描述
Resnet50结构如下:
在这里插入图片描述

ROIPooling原理

ROI pooling具体操作如下:

1、根据输入image(不同的image,共享特征层大小不一样),将ROI(建议框)映射到feature map对应位置;
2、将映射后的区域划分为相同大小的sections(sections数量与输出的维度相同);
3、对每个sections进行max pooling操作;
这样我们就可以从不同大小的方框得到固定大小的相应 的feature maps。值得一提的是,输出的feature maps的大小不取决于ROI和卷积feature maps大小。ROI pooling 最大的好处就在于极大地提高了处理速度。
举例说明:
我们有一个88大小的feature map,一个ROI,以及输出大小为22.

1、输入的固定大小的feature map
在这里插入图片描述
2、region proposal 投影到feature map上。(左上角,右下角坐标):(0,3),(7,8)
在这里插入图片描述
3、将其划分为(22)个sections(因为输出大小为22),我们可以得到:
在这里插入图片描述
对每个section做max pooling,可以得到:
在这里插入图片描述
说明:在此案例中region proposals 是57大小的,在pooling之后需要得到22的,所以在57的特征图划分成22的时候不是等分的,行是5/2,第一行得到2,剩下的那一行是3,列是7/2,第一列得到3,剩下那一列是4。
自我感觉写的不错的一个博客

  相关解决方案