关于Fast R-CNN中提到“共享卷积计算”和“空间金字塔池化”这两个紧密相连、推动目标检测发展的核心概念——解决R-CNN致命问题的钥匙

一、共享卷积计算

  • 这是Fast R-CNN相对于R-CNN最核心、最根本的效率提升,直接催生了其"快"的特性。

1. R-CNN的问题:重复计算的地狱

  • R-CNN使用 "区域优先 " 的流程:
    • 先通过选择性搜索提取约2000个候选区域。
    • 然后将每个候选区域分别、独立地输入CNN,进行特征提取。
  • 这就导致了灾难性的计算冗余:一张图片中,2000个候选区域之间高度重叠(都包含同一只猫的各个部分),背景区域也被反复计算。想象一下,你用同一个复杂的公式,对2000个几乎相同的数据分别计算,而不是先算出公用的中间结果------这是巨大的浪费。

2. Fast R-CNN的解决方案:特征图共享

  • Fast R-CNN(以及其前身SPP-Net)采用了 "特征图优先 " 的流程,这是一个范式转变
    • 步骤说明

      • 整图一次前向传播:将完整的输入图像一次性送入CNN的主干网络(如VGG16的卷积层部分)。
      • 生成共享特征图 :经过所有卷积层后,输出一张整图的、高维的、下采样的特征图。
        • 例如,输入一张224x224的图片,经过VGG16的卷积层后,会得到一张7x7x512的特征图(空间尺寸7x7,通道数512)。
        • 这张特征图上的每个像素点(7x7网格中的一个位置),都对应着原图上一个大区域的抽象特征。
      • 区域映射:将选择性搜索得到的原始像素坐标下的候选框,根据CNN的下采样比例(如32倍),映射到这张共享特征图上的对应位置。这个映射后的区域称为 "兴趣区域"。
    • 思想精髓

      • "先提取全局特征,再从中抠出局部特征",而不是"为每个局部重复提取全局特征"。
      • 性能提升的量化对比:
      • R-CNN:2000个区域 x 每个区域的前向传播计算量。
      • Fast R-CNN:1次整图前向传播的计算量 + 2000次简单的区域映射和池化操作。
      • 结果:测试速度从R-CNN的几十秒/图提升到Fast R-CNN的零点几秒/图。

二、空间金字塔池化及其演进

  • SPP是解决"如何将任意大小的RoI转换为固定大小输入"这一关键问题的创新。Fast R-CNN中的RoI池化是其简化但核心的版本。

1. 问题背景:CNN的全连接层需要固定输入

  • CNN末端的全连接层(如VGG16的FC6, FC7)要求输入向量的维度是固定的。但映射到特征图上的RoI,其尺寸各不相同(有的长,有的扁)。我们必须找到一种方法,将不同尺寸的RoI特征转换为统一尺寸。

2. SPP-Net的解决方案:空间金字塔池化

  • SPP-Net提出了一个优雅的解决方案:在特征图上进行多尺度的池化
  • 工作原理
    • 对于一个任意尺寸(如h x w)的RoI特征块。
    • 我们定义几个固定的输出尺度,例如一个金字塔结构:[4x4, 2x2, 1x1]。
    • 对每个输出尺度:
      • 将RoI划分为对应数量的网格(如对于4x4的输出,就将h x w的区域划分成4x4=16个格子)。
      • 在每个格子里进行最大池化,得到一个值。
      • 这样,4x4的输出就得到16个值,2x2得到4个值,1x1得到1个值。
    • 将所有尺度的输出值拼接成一个一维向量。例如,(16+4+1) * 通道数512 = 21*512 = 10752维的固定长度向量。
    • 这个固定长度的向量就可以送入后续的全连接层。
  • 优势:
    • 解决尺寸问题:完美适配任意形状的输入区域。
    • 提升模型鲁棒性:多尺度池化使模型对物体的尺度变化和轻微形变更具鲁棒性,因为信息在不同粒度上被保留了。

3. Fast R-CNN的改进:简化版SPP -> RoI池化

  • Fast R-CNN的作者认为SPP的金字塔结构(多尺度)虽然有效,但可以进一步简化以提升效率。他们采用了单尺度池化,并将其命名为 "RoI池化层"。
  • RoI池化工作原理
    • 指定一个固定的目标输出尺寸,例如 7x7。
    • 对于一个尺寸为 h x w 的输入RoI特征块,计算网格大小:
      • 每个网格的高度 = h / 7
      • 每个网格的宽度 = w / 7
      • (结果可能是浮点数,需要进行取整操作来划分网格边界,这是RoI池化实现中的一个关键细节,通常采用"量化"操作)。
    • 在每个7x7的网格内进行最大池化,最终输出一个固定的 7x7 特征图。
    • 将这个7x7的特征图展平,送入后续的全连接层。

三、为什么RoI池化就够了?

  • 在实践中,单尺度的RoI池化在保证绝大部分性能的同时,极大地简化了计算和实现。模型通过数据增强和深度网络本身已经具备了一定的尺度不变性。RoI池化成为了后续几乎所有两阶段检测器(Faster R-CNN, Mask R-CNN)的标准组件。
  • 进阶:Mask R-CNN进一步将RoI池化改进为 RoI对齐,解决了RoI池化中两次量化(区域坐标映射量化和网格划分量化)带来的特征不匹配问题,实现了像素级的精确定位。
相关推荐
王哈哈^_^3 小时前
【完整源码+数据集】道路拥塞数据集,yolo道路拥塞检测数据集 8921 张,交通拥堵识别数据集,路口拥塞识别系统实战教程
深度学习·算法·yolo·目标检测·计算机视觉·分类·毕业设计
乐迪信息7 小时前
乐迪信息:目标检测算法+AI摄像机:煤矿全场景识别方案
人工智能·物联网·算法·目标检测·目标跟踪·语音识别
一瞬祈望12 小时前
⭐ 深度学习入门体系(第 7 篇): 什么是损失函数?
人工智能·深度学习·cnn·损失函数
qq_124987075315 小时前
基于深度学习的蘑菇种类识别系统的设计与实现(源码+论文+部署+安装)
java·大数据·人工智能·深度学习·cnn·cnn算法
童话名剑18 小时前
三个经典卷积网络 + 1×1卷积(吴恩达深度学习笔记)
深度学习·神经网络·cnn·alexnet·lenet-5·vgg·1×1卷积
学习3人组18 小时前
主流深度学习目标检测模型性能对比表
人工智能·深度学习·目标检测
傻啦嘿哟20 小时前
深度学习破解复杂验证码:CNN实战指南
人工智能·深度学习·cnn
人工智能培训20 小时前
深度学习—卷积神经网络(4)
人工智能·深度学习·神经网络·机器学习·cnn·dnn
学习3人组21 小时前
目标检测模型选型+训练调参极简步骤清单
人工智能·目标检测·决策树