Faster RCNN模型简介

举报
黄生 发表于 2025/02/01 21:12:28 2025/02/01
【摘要】 Faster R-CNN 由 Ross Girshick 以及何凯明等人在 2016 年(2015?)应用于目标检测任务中。与传统的 RCNN 相比,它能够高效地完成目标检测,并且利用 RPN(Region Proposal Networks,区域建议网络)来选择候选框。Fast RCNN的结构如下图所示:如图,Faster R-CNN网络分为两部分,一是Region Proposal Ne...

Faster R-CNN 由 Ross Girshick 以及何凯明等人在 2016 年(2015?)应用于目标检测任务中。与传统的 RCNN 相比,它能够高效地完成目标检测,并且利用 RPN(Region Proposal Networks,区域建议网络)来选择候选框。Fast RCNN的结构如下图所示:
image.png

如图,Faster R-CNN网络分为两部分,一是Region Proposal Network(RPN),二是Fast R-CNN。其中RPN包括图中proposals和conv layers,Fast R-CNN包括卷积层、ROI pooling及后面全连接层等部分。

Faster RCNN首先将整张图片输进CNN,提取图片的feature maps。将图片特征输入到到RPN,得到候选框的特征信息。RPN对于候选框中提取出的特征,使用分类器判别是否属于待识别的目标的候选框,将属于某一类别的候选框,用回归器进一步调整其位置。最后将目标框和图片的特征向量输入到Roi pooling层,再通过分类器进行分类,完成目标检测的任务。RPN能够协助Fast RNN将注意力集中在候选框中。

补充说明:

  1. Region Proposal Network (RPN)
  • 功能
    • RPN 负责生成候选框(region proposals)。它是一个独立的网络,与分类和回归任务解耦,从而加速整个目标检测流程。
  • 组成
    • 共享卷积层(Shared Conv. Layers):这些是预训练好的卷积层(通常来自 CNN 如 VGG 或 ResNet),用于提取特征图(feature maps)。共享卷积层的输出会同时提供给 RPN 和 Fast R-CNN。
    • 候选框生成(Proposals):RPN 使用锚框(anchor boxes)机制,从特征图生成多个候选框。这些候选框通过分类(前景/背景)和回归(边界框调整)任务进一步优化。
  1. Fast R-CNN
  • 功能
    • Fast R-CNN 负责最终的分类和边界框回归任务,对 RPN 提出的候选框进行精确定位和分类。
  • 组成
    • 共享卷积层(Shared Conv. Layers):同样用于提取特征图,但与 RPN 共享计算结果,以避免重复计算。
    • ROI Pooling:将候选框映射到固定大小的特征图块中,以适应全连接层的输入要求。
      ROI Pooling 的全称是 Region of Interest Pooling ,即 感兴趣区域池化 。
      在目标检测任务中,经过 RPN(Region Proposal Network,区域建议网络)生成的候选框(RoI)大小和形状各不相同,但后续的全连接层需要固定大小的输入,因此需要一种方法将这些不同大小的 RoI 转换为固定大小的特征表示,ROI Pooling 就是为了解决这个问题而提出的
    • 全连接层(Fully-Connected Layers):用于进一步的特征提取。
    • 分类和回归分支(Classification & Regression)
      • 分类分支:预测候选框所属的类别(包括背景)。
      • 回归分支:调整候选框的边界框位置,以获得更精确的目标定位。

卷积层

Faster RCNN首先将整张图片输进CNN,提取图片的feature map,再将其输入到到RPN,得到候选框的特征信息。

这里我们采用VGG16完成feature map的提取。卷积层是被RPN和Fast R-CNN两部分共享的。

RPN
相比于Fast RCNN,Faster R-CNN引入RPN(Region Proposal Network)完成候选框的提取,使得算法效率得到进一步提升。
RPN将任意尺寸大小的图片作为输入,输出若干个矩形候选框。为了生成区域候选框,在卷积层最后一层feature map上滑动一个(nn)的网络(通常是 3×3 或 5×5),将卷积生成的feature map与(nn)的窗口进行卷积运算。每一个滑动窗口都映射为一个更低维的特征。得到的特征送入两个分支中,一个用于框分类,另一个用于框回归。此网络执行滑动窗口形式,所有空间位置都共享全连接层。如下图所示:
image.png

滑动窗口其实是一个小的卷积核,它在特征图上逐像素滑动,每个位置都会生成一个局部的特征表示。这个过程有点像卷积操作,只不过滑动窗口的大小是固定的,比如 3×3 或者 5×5。每个滑动窗口都会对应一个候选框,这个候选框的位置和大小是由窗口的位置和锚点(anchor)的尺寸决定的。

滑动窗口的中心在图像上对应一片区域,计算出该区域的中心位置后以该位置为中心,按3种scale、每种scale各有3种长宽比取9个矩形区域。这些区域就是提取到的anchors boxes。可见,feature maps中的一个位置,共有9个anchors,3种scale可以根据具体情况更改的,更改时最好能使最大的scale能基本将input image覆盖。 在确定好k个anchor box之后,就能确定相应的位置信息,通过2次bounding-box regression对位置进行修正。 首先判断anchors是否为前景,使用classifier对anchors进行二分类,输出两个概率值,即图中左侧对应的2k score。其次,计算对于anchors的bounding box regression偏移量(x,y,w,h),以修正边框位置,即图中右侧4k coordinates。 最后将两者结合生成region proposals,同时剔除太小和超出边界的proposals,最后将提取到的proposals提交给后面的Roi Pooling层。

补充说明:

Anchor boxes的生成

  1. 滑动窗口与anchor boxes生成
    • 在卷积层的feature map上滑动一个窗口(如3×3),这个窗口的中心在原图上对应一片区域。当计算出该区域的中心位置后,以该中心位置为中心,按照预设的3种scale(尺度)以及每种scale对应的3种长宽比,生成9个不同的矩形区域,这些矩形区域即为anchor boxes。
    • 例如,假设3种scale分别为128²、256²、512²,每种scale对应3种长宽比(如1:1、1:2、2:1),那么对于每个滑动窗口位置,会生成9个anchor boxes。这些anchor boxes覆盖了不同的目标尺寸和形状,从而能够适应多种目标检测场景。
    • anchor boxes的数量和尺寸可以根据具体任务需求和图像尺寸进行调整。一般建议最大的scale能够基本覆盖输入图像的尺寸,以确保能够检测到较大尺寸的目标。

Bounding-box regression与region proposals生成

  1. 前景背景分类

    • 生成的anchor boxes需要通过分类器(classifier)进行二分类,判断其是否为前景(包含目标)。分类器输出两个概率值,分别表示anchor box是前景和背景的概率,这对应于描述中的 “2k score”。
    • 例如,对于k个anchor boxes,分类器会输出2k个概率值,每个anchor box对应2个概率值,用于表示它是前景或背景的可能性。
  2. 边框回归(Bounding-box regression)

    • 对于每个anchor box,计算其相对于真实目标边框的偏移量,即通过回归任务来修正anchor box的位置。这个回归任务输出4k个坐标值,每个anchor box对应4个坐标值,表示其在x、y方向上的偏移量以及宽度和高度的调整量。
    • 例如,对于k个anchor boxes,边框回归任务会输出4k个坐标值,用于修正每个anchor box的位置。
  3. region proposals生成

    • 将分类和回归的结果结合,生成候选区域(region proposals)。具体来说,对于每个anchor box,如果其被分类为前景的概率较高,并且边框回归的结果较优,则将其作为一个候选区域。
    • 生成的region proposals需要经过进一步的处理,如剔除尺寸过小和超出图像边界的候选区域,以确保后续处理的有效性和准确性。
    • 最终,将筛选后的region proposals提交给后续的RoI Pooling层,进行目标分类和边框精调。

通过上述过程,RPN能够有效地生成高质量的候选区域,为后续的目标检测任务提供基础。

Roi Pooling
Fast R-CNN改进了R-CNN,应用了Roi Pooling。 由于在全连接层,需要输入固定大小的特征向量,R-CNN网络经过warp操作统一成固定的大小再送入后续网络,导致图像的变形和扭曲。而且每一个proposal均需要单独进行特征提取,重复计算量大。Poipooling通过卷积计算将图像统一成固定大小的特征向量。Roi Pooling的输入是卷积层得到的feature map和RNP得到的anchor,将其分割成7 * 7大小的子窗口,对每个子窗口进行max-pooling操作,输出ROI(region of interest)的feature map。输入后续的全连接层判断目标。

Classifier
在这一步,分类器完成对候选区域的检测。利用RoI feature maps计算ROI类别,同时再次bounding box regression获得目标最终的位置。

后记
从原始的CNN增加候选框的提取过程形成RCNN。接下来,RCNN加入Roi pooling形成Fast RCNN。然后,Faster RNN引入了RPN完成候选框的提取,并与FRCNN共享卷积层。模型不断的改善,弥补之前的不足,使得目标检测任务更准确和迅速。

原文地址:
Faster RCNN模型简介

本文添加了注释和修改了一些语句错误。

【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。