目录
14.1 什么是池化
14.2 池化层的作用
14.3 平均池化
14.4 最大池化
14.5 空间金字塔池化
14.6 ROI Pooling
14.7 最大池化与平均池化是如何进行反向传播的
14.8 卷积层与池化层的区别
欢迎大家订阅我的专栏一起学习共同进步
祝大家早日拿到offer! let's go
🚀🚀🚀http://t.csdnimg.cn/dfcH3🚀🚀🚀
14.1 什么是池化
池化(Pooling)是深度学习中常用的一种操作,通常用于减少数据维度、提取特征和减少计算量。在卷积神经网络(CNN)中特别常见,池化层往往会用在卷积层之后,通过池化来降低卷积层输出的特征维度,有效减少网络参数的同时还可以防止过拟合现象。
池化操作通过在输入数据的局部区域上应用某种函数(如最大值、平均值等),将该区域的信息聚合为一个单一值。这有助于提取最重要的特征并降低输入数据的维度。最常见的池化操作是最大池化(Max Pooling)和平均池化(Average Pooling)。
在最大池化中,池化操作将每个局部区域中的最大值作为输出;而在平均池化中,池化操作将每个局部区域中的平均值作为输出。这些池化操作通常在卷积层之后使用,以逐渐减小特征图的空间尺寸,同时保留最重要的特征。
通过池化操作,神经网络可以在保持关键特征的同时降低计算复杂度,并且对于提高模型的鲁棒性和泛化性能也是有益的。
14.2 池化层的作用
池化层在深度学习中的作用主要有以下几点:
- 降维和减少参数量: 通过池化操作,池化层可以减少特征图的空间尺寸,从而降低了后续层的参数量和计算复杂度。这有助于减少过拟合的风险,并提高模型的计算效率。
- 提取重要特征: 池化层可以帮助模型提取输入数据的最重要特征。例如,在最大池化中,每个池化窗口会选择局部区域内的最大值作为输出,从而强调局部区域内的主要特征。
- 平移不变性: 池化操作通常是在局部区域上进行的,因此它们对输入数据的平移不变性具有一定的提高。即使输入数据的位置发生变化,池化层仍然可以识别相同的特征。
- 减少过拟合: 池化层的降维作用有助于减少模型中的参数量,从而减少了过拟合的风险。过拟合是指模型在训练数据上表现良好,但在未见过的数据上表现较差的现象。
总的来说,池化层在深度学习中扮演着重要的角色,可以帮助模型减少参数量、提取关键特征、增强平移不变性,并且有助于减少过拟合的风险。
14.3 平均池化
平均池化(Average Pooling)是一种常用的池化操作,通常用于深度学习中的卷积神经网络(CNN)中。在平均池化中,池化窗口在输入数据的局部区域上滑动,然后计算该区域内所有值的平均值作为输出。
具体来说,平均池化的过程如下:
- 将输入特征图划分为不重叠的局部区域(通常是矩形区域)。
- 对于每个局部区域,计算其中所有值的平均值。
- 将计算得到的平均值作为输出,构成新的特征图。
平均池化通常与卷积层交替使用,在深度神经网络中起到了降维、提取特征和减少计算量的作用。
14.4 最大池化
最大池化(Max Pooling)是深度学习中常用的一种池化操作,通常用于卷积神经网络(CNN)中。在最大池化中,池化窗口在输入数据的局部区域上滑动,然后选择该区域内的最大值作为输出。
具体来说,最大池化的过程如下:
- 将输入特征图划分为不重叠的局部区域(通常是矩形区域)。
- 对于每个局部区域,计算其中所有值的最大值。
- 将计算得到的最大值作为输出,构成新的特征图。
最大池化通常与卷积层交替使用,在深度神经网络中起到了降维、提取特征和减少计算量的作用。
14.5 空间金字塔池化
空间金字塔池化(Spatial Pyramid Pooling,SPP)是一种池化技术,旨在处理具有不同尺寸和比例的输入图像,并生成固定大小的特征表示。它的主要优点在于可以处理具有不同大小的输入图像,并且生成固定长度的特征向量,这对于图像分类等任务非常有用。
目的:解决输入图片尺寸不一致,都可以用网络进行测试的问题。还能避免因缩放与裁剪操作导致的信息丢失问题。
CNN中,对于结构已确定的网络,需要输入一张固定大小的图片,比如224x224、32x32、96x96等。而当检测尺寸不一的图片的时,需要经过裁剪,或者缩放等一系列操作,往往会降低识别精度。空间金字塔池化SPP可以支持输入任意大小的图片,不需要经过裁剪缩放等操作,精度也会有所提高。
空间金字塔池化的主要思想是将输入特征图划分为多个子区域,然后在每个子区域上应用池化操作,最后将所有池化后的结果连接在一起形成一个固定长度的特征向量。与传统的池化操作不同,空间金字塔池化不限制输入图像的大小和比例,因此在处理尺寸不一的图像时更加灵活。
空间金字塔池化的步骤如下:
- 划分子区域:将输入特征图划分为多个子区域,通常采用不同大小和比例的网格来划分,以覆盖不同尺度和比例的物体。
- 对每个子区域应用池化操作:对于每个子区域,应用池化操作(如最大池化或平均池化),将子区域内的特征信息汇总成一个固定长度的向量。
- 连接池化结果:将所有子区域的池化结果连接在一起,形成最终的特征表示。
空间金字塔池化在图像分类、目标检测等任务中广泛应用,特别是在处理具有不同大小和比例的物体的情况下,它可以提供更加鲁棒和可靠的特征表示。
假设输入SSP层的feature map of conv5的shape是(h,w,c)。首先SSP层把feature map of conv5划分成4x4的小方块(对应图中蓝色矩形),每个小方块的宽高分别为w/4,h/4,通道数为c。针对每个通道,分别在这16个小方块进行最大池化(MaxPooling)。每个通道能取出16个最大值,所有通道共有16c个值;
然后SSP层把feature map of conv5划分成2x2的小方块(对应图中绿色矩形),使用同样的方法得到4c个值;
接着SSP层把feature map of conv5划分成1x1的小方块(对应图中灰色矩形),得到c个值,最后将上面三个值串联起来得到长度为16c+4c+c=21c的特征表示。
显而易见,所有通过SSP层得到的特征表示是固定长度的, 与输入的h,w无关。
14.6 ROI Pooling
RoI(Region of interest)指的是一张图片中认为有存在目标的区域,RoI大小不一。RoIPooling的特性是输入特征图的大小不确定,输出的特征图的大小固定。其实就是SSP的思想,SSP是对整个feature maps划分区域然后pooling,而ROI pooling 则是对ROI划分区域然后pooling。步骤如下:
1)根据输入image,将ROI映射到feature map对应位置;
2)将映射后的区域划分为相同大小的sections(sections数量与输出的维度相同);
3)对每个sections进行max pooling操作;
经过上述操作可以从不同大小的方框得到固定大小的相应 的feature maps。值得一提的是,输出的feature maps的大小不取决于ROI和卷积feature maps大小。ROI pooling 最大的好处就在于极大地提高了处理速度。
14.7 最大池化与平均池化是如何进行反向传播的
在反向传播时,梯度是按位传播的,需要做的就是如何构造按位的问题,且要遵守传播梯度总和保持不变的原则。
对于平均池化,其前向传播是取某特征区域的平均值进行输出,区域中的每个神经元都参与前向传播,因此在反向传播时,需要将梯度平均分配给每个神经元再进行反向传播,相关的操作示意如下图所示。
对于最大池化,前向传播是取某特征区域最大值进行输出,区域中仅有最大值神经元参与前向传播,因此在反向传播时,仅需要将该区域的梯度直接分配到最大值神经元即可,其他神经元的梯度被分配为0且是被舍弃不参与反向传播的。
但如何确认最大值神经元,是在进行前向传播时记录下最大值神经元的Max ID位置,这是最大池化与平均池化差异的地方,相关的操作示意如下图所示。
14.8 卷积层与池化层的区别
卷积层 | 池化层 | |
结构 | 由卷积核组成,每个卷积核与输入数据的局部区域进行卷积操作,并生成特征图。 | 通常没有参数,由池化窗口在输入数据的局部区域上滑动,并应用池化操作。 |
作用 | 提取输入数据的特征,保留特征的空间结构信息,并生成特征图。 | 减少特征图的空间尺寸,提取重要特征,并降低后续层的参数量和计算复杂度。 |
参数量 | 卷积层的参数量由卷积核的大小和数量决定,通常比较大。 | 池化层通常没有参数,因此参数量很少或为零。 |