基本池化 Pooling#先回顾一下最基本的池化操作以最常见的最大池化Max Pooling为例这里的 表示池化窗口我们用最大池化来筛选“最强响应”。此外还可以使用平均池化来保留“整体信息”不再展开过多细节这里附上我们之前介绍池化的内容池化操作与卷积中的反向传播。总的来说Pooling 的本质是通过下采样来压缩信息从而减少计算量。同时由于其在局部窗口内进行聚合它实际上引入了一种重要的归纳偏置局部不变性先验在小范围内的变化不会显著影响输出。也正因为这一点在不显著改变语义的前提下Pooling 还可以间接扩大后续网络的感受野。当然最基础的 Pooling 也存在明显的局限采样位置是完全固定的。换句话说它的行为是“刚性的”窗口位置固定、采样方式固定、不随输入内容发生变化。总结一下就是不够灵活这在分类任务中通常问题不大但在目标检测等任务中就会变得非常明显。比如目标刚好落在池化窗口边界或发生轻微形变或偏移此时的 Pooling 可能会丢失部分关键信息甚至直接削弱目标响应。问题的关键在于Pooling 仍然是在“整张特征图上使用统一规则”但有时我们真正关心的是“某一个局部目标”。因此Pooling 的第一步改进就出现在检测任务中我们继续。2. Region of Interest Pooling#Region of Interest Pooling 简称 RoI Pooling它起源于 15 年的论文Fast R-CNN。Fast R-CNN 是一个目标检测模型它首次系统性提出了 RoI Pooling用于将任意大小的候选框映射为固定尺寸特征。同样如果你对检测任务本身的相关概念有些遗忘了可以在这里回顾目标定位与特征点检测。首先要说明的是Fast R-CNN 并不像现在主流的 YOLO 一样是端到端模型它的目标检测逻辑是先使用物理方法得到候选框再把候选框映射输入网络进行分类是一个两阶段模型。我们具体展开其逻辑如下2.1 候选框映射#如图所示第一步就是把物理方法生成的候选框在原图中的相对位置映射到原图卷积后得到的特征图上。这个映射本质上依赖于一个非常关键的参数空间缩放比例spatial scale。如果原图尺寸为 特征图尺寸为 那么假设原图上的 RoI 为是左上角坐标是右下角坐标。那么映射后就是我们再看看图里的实例原图feature map则假设原图中有一个候选框映射到 feature map坐标原图值计算公式feature map 值32329696所以得到这里就有一个问题要不要取整在RoI PoolingFast R-CNN 原始做法中会进行直接取整具体如下左上角向下取整 。右下角向上取整 。逻辑还是比较清晰的扩大一点范围保证不漏。但同样这也带来了误差。由此得到最终结果这就是 RoI Pooling 的第一步。2.2 划分子区域#现在我们得到了将候选框映射到特征图中的区域下一步是把该区域划分为 个子区域。要说明的是这里并不是把区域切成 个正方形而是按宽和高分别等分形成网格。对最终划分好的每个子网格我们就叫它一个bin。展开来说设当前 RoI 为则划分为 后一个 bin 的尺寸就是继续上一节的例子所以设 则但实际上这只是一种最理想的请况新的问题是候选框不是正方形怎么办最终 bin 的尺寸不是整数怎么办
深度学习进阶(九)池化技术的初步改进:RoI Pooling
基本池化 Pooling#先回顾一下最基本的池化操作以最常见的最大池化Max Pooling为例这里的 表示池化窗口我们用最大池化来筛选“最强响应”。此外还可以使用平均池化来保留“整体信息”不再展开过多细节这里附上我们之前介绍池化的内容池化操作与卷积中的反向传播。总的来说Pooling 的本质是通过下采样来压缩信息从而减少计算量。同时由于其在局部窗口内进行聚合它实际上引入了一种重要的归纳偏置局部不变性先验在小范围内的变化不会显著影响输出。也正因为这一点在不显著改变语义的前提下Pooling 还可以间接扩大后续网络的感受野。当然最基础的 Pooling 也存在明显的局限采样位置是完全固定的。换句话说它的行为是“刚性的”窗口位置固定、采样方式固定、不随输入内容发生变化。总结一下就是不够灵活这在分类任务中通常问题不大但在目标检测等任务中就会变得非常明显。比如目标刚好落在池化窗口边界或发生轻微形变或偏移此时的 Pooling 可能会丢失部分关键信息甚至直接削弱目标响应。问题的关键在于Pooling 仍然是在“整张特征图上使用统一规则”但有时我们真正关心的是“某一个局部目标”。因此Pooling 的第一步改进就出现在检测任务中我们继续。2. Region of Interest Pooling#Region of Interest Pooling 简称 RoI Pooling它起源于 15 年的论文Fast R-CNN。Fast R-CNN 是一个目标检测模型它首次系统性提出了 RoI Pooling用于将任意大小的候选框映射为固定尺寸特征。同样如果你对检测任务本身的相关概念有些遗忘了可以在这里回顾目标定位与特征点检测。首先要说明的是Fast R-CNN 并不像现在主流的 YOLO 一样是端到端模型它的目标检测逻辑是先使用物理方法得到候选框再把候选框映射输入网络进行分类是一个两阶段模型。我们具体展开其逻辑如下2.1 候选框映射#如图所示第一步就是把物理方法生成的候选框在原图中的相对位置映射到原图卷积后得到的特征图上。这个映射本质上依赖于一个非常关键的参数空间缩放比例spatial scale。如果原图尺寸为 特征图尺寸为 那么假设原图上的 RoI 为是左上角坐标是右下角坐标。那么映射后就是我们再看看图里的实例原图feature map则假设原图中有一个候选框映射到 feature map坐标原图值计算公式feature map 值32329696所以得到这里就有一个问题要不要取整在RoI PoolingFast R-CNN 原始做法中会进行直接取整具体如下左上角向下取整 。右下角向上取整 。逻辑还是比较清晰的扩大一点范围保证不漏。但同样这也带来了误差。由此得到最终结果这就是 RoI Pooling 的第一步。2.2 划分子区域#现在我们得到了将候选框映射到特征图中的区域下一步是把该区域划分为 个子区域。要说明的是这里并不是把区域切成 个正方形而是按宽和高分别等分形成网格。对最终划分好的每个子网格我们就叫它一个bin。展开来说设当前 RoI 为则划分为 后一个 bin 的尺寸就是继续上一节的例子所以设 则但实际上这只是一种最理想的请况新的问题是候选框不是正方形怎么办最终 bin 的尺寸不是整数怎么办