Resnet图像识别入门——池化层

简介: 池化和卷积不同,它没有channel维度的累加。

大家好啊,我是董董灿。

前面的文章Resnet图像识别入门——激活函数介绍了3中常见的激活函数,以及激活函数在神经网络中的作用。

在CNN网络中,除了激活函数之外,还有一种算法也是很常见的,那就是池化层。在Resnet50中,就存在一个最大池化层和一个全局平均池化层。

那么,什么是池化层呢?在CNN网络中,池化层又能起到什么作用?

池化Pooling

池化一般接在卷积过程后。

池化,也叫Pooling,其本质其实就是采样,池化对于输入的图片,选择某种方式对其进行压缩,以加快神经网络的运算速度。这里说的某种方式,其实就是池化的算法,比如最大池化或平均池化。

image.png

池化过程类似于卷积过程。上图表示的就是对一个图片邻域内的值,用一个 2x2 的池化kernel,步长为2进行扫描,选择最大值输出,称为最大池化。

最大池化 MaxPool 常用的参数为 kernel = 2, stride = 2 ,这样的参数处理效果就是输出图片的高度、宽度减半,通道数不变。

还有一种叫平均池化,和最大池化类似,就是将取区域内最大值改为求这个区域的平均值。

和卷积类比

和卷积类比,池化操作也有一个核(kernel),但它不是卷积核。

池化的核只负责框定某次池化计算需要的图片的范围,核里面并没有数据参与计算,也就是说,在训练过程中,池化层不像卷积层那样,需要学习权重。

另一个与卷积不同的是,在卷积的计算中,需要channel维度的数据累加,而池化层的channel维度的数据不需要累加,每个channel中的数据是独立的,这也导致,池化的运算复杂度比卷积简单很多。

下图是卷积和池化的示意图,通过两张图,大致可以看出两者的不同。
image.png

image.png

神经网络中为什么需要池化层?

特征不变性

汇合操作使模型更关注是否存在某些特征而不是特征具体的位置,可看作是一种很强的先验,使特征学习包含某种程度自由度,能容忍一些特征微小的位移。即池化层支持了一定的平移、旋转、拉伸不变性,这个特性就是有点抽丝剥茧的意思,不断用小特征对大特征进行精简。

如下图,通过池化操作,图片中的黑色特征在输出图片中,仍然被保留了下来,虽然有些许的误差。

image.png

降维

如上的例子,图片经过池化的操作,可以减小图片的尺寸,同时又可以保留相应特征,所以主要用来降维。

防止过拟合

由于池化层没有需要学习的参数,因此,在训练的过程中,可以在一定程度上防止过拟合的发生。

降低模型计算量

池化的操作,会在保留原始图片特征不变的情况下,将图片尺寸缩小,从而减少整个模型的计算量。

在神经网络的训练和推理过程中,一个维度的计算量减倍,往往会带来一个数量级的性能提升,尤其是在训练过程动辄迭代成千上万次的训练场景中。

使用池化算法,在减少图片的宽和高尺寸的同时,也会给模型的训练和推理带来更优异的性能提升。

除了上述最大池化和平均池化外,池化还有很多变种。最常见的一种变体就是全局池化。

全局池化的kernel大小和图片大小一样,因此最终输出的图片大小就是一个点。这种全局池化操作,后面一般用来接全连接层,从而进行分类。如Resnet50最后一层全连接层前,就是一个全局平均池化层。

refs:
https://www.zhihu.com/question/401688068/answer/1295651905
https://zhuanlan.zhihu.com/p/78760534

欢迎关注@董董灿是个攻城狮 和同名微信公众号
本文作者原创,转载请联系作者,请勿随意转载

相关实践学习
基于函数计算实现AI推理
本场景基于函数计算建立一个TensorFlow Serverless AI推理平台。
相关文章
|
4月前
|
机器学习/深度学习 并行计算 算法
【计算机视觉+CNN】keras+ResNet残差网络实现图像识别分类实战(附源码和数据集 超详细)
【计算机视觉+CNN】keras+ResNet残差网络实现图像识别分类实战(附源码和数据集 超详细)
64 0
|
机器学习/深度学习 算法
Resnet图像识别入门——Softmax分类是如何工作的
softmax作为一个分类器,它只是把重要的信息变得更重要了而已。
Resnet图像识别入门——Softmax分类是如何工作的
|
机器学习/深度学习 算法 计算机视觉
Resnet图像识别入门——全连接
全连接,到底连接的是什么?看完这篇文章,相信你会有所了解。
Resnet图像识别入门——全连接
|
机器学习/深度学习 人工智能 算法
|
机器学习/深度学习 人工智能 算法
Resnet图像识别入门——残差结构
残差结构像是Resnet的告诉公路,可以将计算误差很好的保留下来。
Resnet图像识别入门——残差结构
|
机器学习/深度学习 人工智能 算法
|
机器学习/深度学习 人工智能 算法
Resnet图像识别入门——初识卷积
卷积对于Resnet的重要性,不亚于反向传播算法对于深度学习的重要性。可以说,是灵魂。
Resnet图像识别入门——初识卷积
|
3月前
|
机器学习/深度学习 PyTorch 语音技术
Pytorch迁移学习使用Resnet50进行模型训练预测猫狗二分类
深度学习在图像分类、目标检测、语音识别等领域取得了重大突破,但是随着网络层数的增加,梯度消失和梯度爆炸问题逐渐凸显。随着层数的增加,梯度信息在反向传播过程中逐渐变小,导致网络难以收敛。同时,梯度爆炸问题也会导致网络的参数更新过大,无法正常收敛。 为了解决这些问题,ResNet提出了一个创新的思路:引入残差块(Residual Block)。残差块的设计允许网络学习残差映射,从而减轻了梯度消失问题,使得网络更容易训练。
|
8月前
|
机器学习/深度学习 PyTorch 算法框架/工具
ResNet代码复现+超详细注释(PyTorch)
ResNet代码复现+超详细注释(PyTorch)
591 0
|
4月前
|
机器学习/深度学习 数据采集 PyTorch
PyTorch搭建卷积神经网络(ResNet-50网络)进行图像分类实战(附源码和数据集)
PyTorch搭建卷积神经网络(ResNet-50网络)进行图像分类实战(附源码和数据集)
96 1