综述:深度学习中的池化技术

作者丨仿佛若有光
来源丨CV技术指南
编辑丨极市平台

极市导读

本文对池化技术进行了一个总结,简述了池化的作用与原理并解答了池化在使用时常见的问题,作者还对主要的几种池化操作分类进行了介绍。 >>加入极市CV技术交流群,走在计算机视觉的最前沿

导言:

池化是一个几乎所有做深度学习的人都了解的一个技术,大家对池化如何进行前向传播也都了解,池化的作用也了解一二。然而,池化如何回传梯度呢,池化回传梯度的原则是什么呢,最大池化与平均池化的区别是什么呢,什么时候选择最大池化、什么时候选择平均池化呢。

主要用的池化操作有平均池化、最大池化、全局平均池化,全局自适应池化。此外还有很多,如RoI池化、金字塔池化、重叠池化、随机池化、双线性池化等。
在本文中将会对这些内容一一总结。

池化的作用

1. 抑制噪声,降低信息冗余。
2. 提升模型的尺度不变性、旋转不变性。
3. 降低模型计算量。
4. 防止过拟合。
此外,最大池化作用:保留主要特征,突出前景,提取特征的纹理信息。平均池化作用:保留背景信息,突出背景。这两者具体后面会介绍,这里只介绍它们的作用。

池化回传梯度

池化回传梯度的原则是保证传递的loss(或者说梯度)总和不变。根据这条原则很容易理解最大池化和平均池化回传梯度方式的不同。
平均池化的操作是取每个块( 如2x2 )的平均值,作为下一层的一个元素值,因此在回传时,下一层的每一元素的loss(或者说梯度)要除以块的大小( 如2x2 = 4),再分配到块的每个元素上,这是因为该loss来源于块的每个元素。
注意:如果块的每个元素直接使用下一层的那个梯度,将会造成Loss之和变为原来的N倍。具体如下图。

最大池化的操作是取每个块的最大值作为下一层的一个元素值,因此下一个元素的Loss只来源于这个最大值,因此梯度更新也只更新这个最大值,其他值梯度为0。因此,最大池化需要在前向传播中记录最大值所在的位置,即max_id。这也是最大池化与平均池化的区别之一。具体如下图所示:

最大池化与平均池化的使用场景

根据最大池化的操作,取每个块中的最大值,而其他元素将不会进入下一层。众所周知,CNN卷积核可以理解为在提取特征,对于最大池化取最大值,可以理解为提取特征图中响应最强烈的部分进入下一层,而其他特征进入待定状态(之所以说待定,是因为当回传梯度更新一次参数和权重后,最大元素可能就不是在原来的位置取到了)。

一般而言,前景的亮度会高于背景,因此,正如前面提到最大池化具有提取主要特征、突出前景的作用。但在个别场合,前景暗于背景时,最大池化就不具备突出前景的作用了。

因此,当特征中只有部分信息比较有用时,使用最大池化。如网络前面的层,图像存在噪声和很多无用的背景信息,常使用最大池化。

同理,平均池化取每个块的平均值,提取特征图中所有特征的信息进入下一层。因此当特征中所有信息都比较有用时,使用平均池化。如网络最后几层,最常见的是进入分类部分的全连接层前,常常都使用平均池化。这是因为最后几层都包含了比较丰富的语义信息,使用最大池化会丢失很多重要信息。

空间金字塔池化

首先尝试一下用几句话介绍一下空间金字塔池化的背景,空间金字塔池化出自目标检测的SPPNet中,在目标检测中需要生成很多区域候选框,但这些候选框的大小都不一样,这些候选框最后都需要进入分类网络对候选框中的目标进行分类,因此需要将候选框所在区域变成一个固定大小的向量,空间金字塔池化就是解决这么一个问题。

下面是具体做法。

对于一个通道数为C的feature map,一取全局最大值,得到一个1xC的张量,二将feature map分割成4块,在每一块上进行最大池化,得到一个4xC的张量,三将feature map分成16块,在每块上进行最大池化,得到一个16xC的张量,将这三个张量拼接起来,得到一个大小为21xC的张量。对于任意大小的feature map经过这些操作都可以得到固定大小的张量。

RoI池化

RoI即Region of Interest,RoI池化是空间金字塔池化的一种特殊形式。

在目标检测以前的方法中,使用selective search生成候选框,这些候选框是在特征提取网络前就生成了,但经过特征提取后该框的边界不再是一个整数,例如,对于一个输入为800x800的图片,其中有一个665x665的框内框中一条狗,经过有五次池化的特征提取网络后该框的区域变为了(665/32)*(665/32)=20.87*20.87的区域,因此RoI经过了第一次量化,对这个边界进行取整为20,而分类网络的输入固定大小为7x7。因此将20x20的区域分成7x7块,由于20/7=2.86也不是整数,因此第二次量化,取2。然后在分块上进行最大池化生成一个7x7的大小。具体如上图所示。

这种方法经过两次量化得到的RoI于原始的RoI有了一定的偏差,当候选框比较大时,这个偏差影响不会很大,但候选框本身比较小时,这个偏差相对来说比较大,严重影响结果。

本部分引用自博客:https://blog.csdn.net/qq_33466954/article/details/106410410

其他类型的池化

重叠池化(Overlapping Pooling):一般而言,池化的窗口大小等于步长,因此池化作用区域不存在重合部分。所谓重叠池化,即池化窗口大小大于步长,池化作用区域存在重合部分,这种池化也许有一定的效果。

随机池化(Stochastic Pooling):在一个池化窗口内对feature map的数值进行归一化得到每个位置的概率值,然后按照此概率值进行随机采样选择,即元素值大的被选中的概率也大。该池化的优点是确保了特征图中非最大响应值的神经元也有可能进入下一层被提取,随机池化具有最大池化的优点,同时由于随机性它能够避免过拟合。

全局自适应池化:其作用也是对于任意大小的feature map,都可以输出指定的大小。这背后的原理不知是否与RoI池化类似,即对于输入大小为HxW的feature map,指定输出大小为7x7,我猜测其可能就是将HxW分成7x7块再进行最大池化或平均池化。但真实情况需要阅读源码方可知。若有知情读者,可留言指出。

此外还有双线性池化等不是很常用的池化,这里不作过多介绍。

(0)

相关推荐

  • pytorch torch.nn.functional实现插值和上采样

    interpolate torch.nn.functional.interpolate(input, size=None, scale_factor=None, mode='nearest', ali ...

  • 解析目标检测全流程!附代码数据

    每日干货 & 每月组队学习,不错过  Datawhale干货  作者:王程伟,算法工程师,Datawhale成员 在计算机视觉中,红外弱小目标检测是一个重要的方向,但直到近一两年,才开始运用一 ...

  • 网络连接绘制人脑通路

    随着脑连接成像技术(也就是扩散磁共振成像)的快速发展,我们有机会以前所未有的分辨率绘制人脑在体通路.本文回顾了扩散磁共振成像(MRI)重建连接体研究中解剖路径的当前进展.本文首先介绍了扩散磁共振成像的 ...

  • 图像处理知多少?准大厂算法工程师30+场秋招后总结的面经问题详解

    作者丨灯会 来源丨极市平台 编辑丨极市平台 极市导读 本篇主要包含了图像滤波.边缘检测相关常考内容等相关面试经验. >>加入极市CV技术交流群,走在计算机视觉的最前沿 系列文章: 深度学习 ...

  • 深度学习中的知识蒸馏技术(下)

    本文概览: 写在前面: 这是一篇介绍知识蒸馏在推荐系统中应用的文章,关于知识蒸馏理论基础的详细介绍,请看上篇文章: 1. 背景介绍 1.1 简述推荐系统架构 如果从传统角度来看实际的工业推荐系统,粗略 ...

  • 深度学习中的知识蒸馏技术

    本文概览: 1. 知识蒸馏介绍 1.1 什么是知识蒸馏? 在化学中,蒸馏是一种有效的分离不同沸点组分的方法,大致步骤是先升温使低沸点的组分汽化,然后降温冷凝,达到分离出目标物质的目的.化学蒸馏条件:( ...

  • 深度学习中的知识蒸馏技术(上)

    本文概览: 1. 知识蒸馏介绍 1.1 什么是知识蒸馏? 在化学中,蒸馏是一种有效的分离不同沸点组分的方法,大致步骤是先升温使低沸点的组分汽化,然后降温冷凝,达到分离出目标物质的目的.化学蒸馏条件:( ...

  • 【技术综述】深度学习中的数据增强方法都有哪些?

    很多实际的项目,我们都难以有充足的数据来完成任务,要保证完美的完成任务,有两件事情需要做好:(1)寻找更多的数据.(2)充分利用已有的数据进行数据增强,今天就来说说数据增强. 作者 | 言有三 编辑 ...

  • 【技术综述】深度学习中的数据增强(下)

    言有三 毕业于中国科学院,计算机视觉方向从业者,有三工作室等创始人 作者 | 言有三(微信号Longlongtogo) 编辑 | 言有三 今天带来深度学习中的数据增强方法的下篇.我们将从以下几个方向入 ...

  • [综述类] 一文道尽深度学习中的数据增强方法(上)

    00 什么是数据增强 在深度学习项目中,寻找数据花费了相当多的时间.但在很多实际的项目中,我们难以找到充足的数据来完成任务. 为了要保证完美地完成项目,有两件事情需要做好: 1.寻找更多的数据: 2. ...

  • 一文概览深度学习中的激活函数

    人工智能算法与Python大数据 致力于提供深度学习.机器学习.人工智能干货文章,为AI人员提供学习路线以及前沿资讯 23篇原创内容 公众号 点上方人工智能算法与Python大数据获取更多干货 在右上 ...

  • 总结 | 一文读懂深度学习中的各种卷积

    仅作学术分,如有侵权,联系删除 转载于 :机器之心,towardsdatascience 如果你听说过深度学习中不同种类的卷积(比如 2D / 3D / 1x1 /转置/扩张(Atrous)/空间可分 ...

  • 透过新视角理解深度学习中的泛化

    文 / Google Research 团队 Hanie Sedghi 和哈佛大学 Preetum Nakkiran 如何理解泛化是深度学习领域尚未解决的基础问题之一.为什么使用有限训练数据集优化模型 ...