首页 > 其他分享 >卷积神经网络中池化层的详细介绍

卷积神经网络中池化层的详细介绍

时间:2024-04-11 17:25:15浏览次数:17  
标签:化层 池化层 中池 卷积 特征 神经网络 池化 size

原文链接:https://blog.csdn.net/a486259/article/details/131311587

https://zhuanlan.zhihu.com/p/476242144

池化层的本质是一个下采样,因为数据经过卷积之后维度越来越高,而且特征图没有多大改变,在连续多个卷积之后,会产生一个很大的参数量,不仅会大大的增加网络训练的难度,还容易造成过拟合的现象,所以通常会在卷积层之后放一个池化层对数据进行压缩,降低维度,减少参数量。具体操作是将一个像素点与它周围的数据点进行聚合统计,缩减特征图的尺寸,然后对其相邻的区域取均值或最大值,进一步减少参数量。通过池化操作,提取的特征对光线等因素的适应能力也有所增强。池化操作能够对上一层的特征图进行融合,因为相邻区域的参数具有较强的关联性,还能够防止发生过拟合现象。常用的池化操作主要有两种:最大池化(max-pooling) 和平均池化(mean-pooling)。

卷积神经网络自2012年,到2023年经历了翻天覆地的变化。最早的卷积神经网络由卷积层、池化层和全连接层所构成。其中卷积层用于提取图像的特征,池化层削减特征数量,全连接层用于对特征进行非线性组合并预测类别。然而在transformer横行的年代,池化层几乎要在神经网络中消失了。趁着池化层还能在少部分主流模型中看到,记录一下各种池化层。本博文一共介绍了7种简单的池化层,此外还介绍了一下卷积神经网络的基本结构。

在深度学习中,池化层只是削减特征的一种运算规则,其并没有参数。按其运算规则区分,有平均池化层、最大池化层、全局平均|最大池化层、随机池化层、混合池化、中值池化层、组合池化层等。其中前3个为常见池化操作,后面的比较少见。

除了这7种池化方法外,在极市平台的 https://jishuin.proginn.com/p/763bfbd5c125 中还介绍了幂平均池化(根据幂运算值使用平均|最大池化)、DPP池化(该池化可以放大空间变化并保留重要的图像结构细节)、Local Importance Pooling(局部重要性池化)和Soft Pooling(软池化)等

2.1 平均池化层

平均池化是以一定的步长对特征图的特定区域内的像素点求其平均值。一般情况下也是选取步长为 2,尺寸为 2×2 的滤波器。
参考 https://zhuanlan.zhihu.com/p/77040467
在前向传播过程中,计算图像区域中的均值作为该区域池化后的值;在反向传播过程中,梯度特征分均配到各个位置。根据下图效果,可以看出均值池化与低通滤波存在一定相似度,可以将高频信息进行滤除(模糊掉图像边缘,忽略掉噪声点),尽可能保存纹理信息,其对于以纹理特性分类的数据或许有用。

平均池化取每个矩形区域中的平均值,可以提取特征图中所有特征的信息进入下一层,而不像最大池化只保留值最大的特征,所以平均池化可以更多保留些图像的背景信息。

在实际应用中,均值池化往往以全局均值池化的形式出现。常见于SE模块以及分类模块中。极少见于作为下采样模块用于分类网络中。

2.2 最大池化层

最大池化是以一定的步长对特征图的特定区域内的像素点求得最大值。一般情况下是选取步长为 2,尺寸为 2×2 的滤波器。
在前向过程,选择图像区域中的最大值作为该区域池化后的值;在反向过程中,梯度通过前向过程时的最大值反向传播,其他位置的梯度为0。根据下图效果,可以看出平均池化效果与高通滤波存在一定相似度,将低频信息进行滤除(移除细纹理,只保留最大值),对一个2x2的区域只保留最大的值(类似于relu操作)。

其反向传播时,示意如上图,可以看到只有最大值所对应的区域有梯度值得到优化,而其它区域则没有梯度值。

这种方式摒弃了网络中大量的冗余信息,使得网络更容易被优化。同时这种操作方式也常常丢失了一些特征图中的细节信息,所以最大池化更多保留些图像的边缘信息。

2.3 全局池化层
全局池化层(Global Average Pooling,GAP)是平均|最大池化层的空间泛化,在平均|最大池化层中通常需要设置pool_size(池化区域的大小),而全局全局池化层则是默认为pool_size为WxH,将所有的数据一次性计算出结果(平均|最大池化层需要进行滑窗,滑动一次计算出一个结果)。故此,全局池化层有全局平均池化层和全局最大池化层。

GAP对整个网络在结构上做正则化防止过拟合,直接剔除了全连接层中黑箱的特征,直接赋予了每个channel实际的类别意义。除此之外,使用GAP代替全连接层,可以实现任意图像大小的输入(以往的CNN使用flatten操作将2d数据转成1维,不同的输入size,输出的特征维度不同,故只能固定图像输入尺寸)。GAP对整个特征图求平均值,也可以用来提取全局上下文信息,全局信息作为指导进一步增强网络性能。

全局池化层通常被放置在卷积基于全连接层中间,或者是CBAM(Channel attention)中。

2.4 随机池化层
参考自:https://zhuanlan.zhihu.com/p/77040467

随机池化是ICLR2013的一篇论文Stochastic Pooling所提出的,其结合了平均池化层和最大池化层的优缺点。随机池化的方法非常简单,只需对特征区域元素按照其概率值大小随机选择,元素值大的被选中的概率也大(避免了总是最大值被选中)。

2.5 混合池化
参考自:https://jishuin.proginn.com/p/763bfbd5c125
其受dropout的启发,用随机过程代替了常规的确定性池化操作,在模型训练期间随机采用了最大池化和平均池化方法,并在一定程度上有助于防止网络过拟合现象。混合池化以随机方式改变了池调节的规则,这将在一定程度上解决最大池和平均池所遇到的问题。

混合池化优于传统的最大池化和平均池化方法,并可以解决过拟合问题来提高分类精度。此外该方法所需要的计算开销可忽略不计,而无需任何超参数进行调整,可被广泛运用于CNN。

2.6 中值池化层
参考图像处理中的中值滤波所实现,基本上没有在CNN网络中看到。使用排序后的中值作为输出值,其前向传播与反向传播与最大池化类似。

博主推断其看是能提取图像纹理特征,但很难具备稳定性(中值在网络深层容易受感染),只可用在网络浅层中。在实际使用过程中,不支持将学习率设置的较大,且极难优化。

与最大池化相比,最大值虽然也不是很稳定,但是在整个训练过程中均以数值大小来描述特征对结果的影响力,故在整个体系下其还是具备稳定性的。

2.7 组合池化层

​ 组合池化则同时利用最大值池化与均值池化两种的优势而引申的一种池化策略,其与混合池化的区别在于确定性(组合池化是确定的使用两个池化方式,混合池化是不确定的使用两个池化方式)。常见组合策略有两种:Cat与Add。其代码描述如下:

def add_avgmax_pool2d(x, output_size=1):
    x_avg = F.adaptive_avg_pool2d(x, output_size)
    x_max = F.adaptive_max_pool2d(x, output_size)
    return 0.5 * (x_avg + x_max)

def cat_avgmax_pool2d(x, output_size=1):
    x_avg = F.adaptive_avg_pool2d(x, output_size)
    x_max = F.adaptive_max_pool2d(x, output_size)
    return torch.cat([x_avg, x_max], 1)

  

3、总结
自从2021年Transformer被引入到视觉模型后,卷积神经网络基本上要末路了,虽然此后也有ConvNeXt、SegNeXt成功挑战过Transformer的地位,但也无力挽回卷积神经网络的大势已去。

ConvNeXt使用了一些列的训练技巧(AdamW 优化器、Mixup、Cutmix、RandAugment、Random Erasing等数据增强技)和随机深度和标签平滑等正则化方案,也不过是勉强将 ResNet-50 模型的性能从 76.1% 提高到了 78.8%。而,Transformer并不需要使用如此复杂的增强策略,仅需要不断扩充训练集即可。整个模型没有池化层做特征降维

SegNeXt号称是在语义分割上使用卷积模型超过了Transformer模型,实则是使用了Transformer模型的中patch embeding,并用MLP层替换了multi head self-attention,其与卷积神经网络的关系并不大。整个模型没有池化层

在这些先进的模型结构中,再也不会使用池化层来提取图像特征(特征降维),以后得卷积神经网络通用结果或许会被重新定义。

 

标签:化层,池化层,中池,卷积,特征,神经网络,池化,size
From: https://www.cnblogs.com/Dongmy/p/18129659

相关文章

  • 数据是一维数据,利用tensorflow深度学习框架,写一个带自注意力机制的卷积神经网络,并进行
    下面是一个使用TensorFlow框架的带有自注意力机制的卷积神经网络(Self-AttentionConvolutionalNeuralNetwork)的示例代码,包括数据处理、模型定义和训练过程:importtensorflowastffromtensorflow.keras.layersimportConv1D,Dense,GlobalMaxPooling1D,Concatenate#......
  • 1*1卷积核的作用
    1*1卷积核是卷积神经网络中的一种特殊类型的卷积核。它可以用于以下几个方面:降维:通过使用1*1卷积核,可以将输入特征图的通道数进行降维。这对于减少模型参数和计算量非常有用,特别是在深层网络中。通过降维,可以减少后续层的计算负担。增加非线性:1*1卷积核可以引入非线性变......
  • 高创新,预测方向小论文有救了!霜冰优化算法+卷积神经网络+注意力机制+LSTM(附matlab代码
    专题推荐:论文推荐,代码分享,视角(点击即可跳转)所有链接建议使用电脑端打开,手机端打开较慢【代码推荐购买指南】电力系统运行优化与规划、时间序列预测、回归分类预测matlab代码公众号历史推文合集23.3.21(电力系统前沿视角/预测和优化方向matlab代码/电力系统优秀论文推荐......
  • 2023 NIPS A*Net: A Scalable Path-based Reasoning Approachfor Knowledge Graphs 知
    文章链接原文:b9e98316cb72fee82cc1160da5810abc-Paper-Conference.pdf(neurips.cc)代码:https://github.com/DeepGraphLearning/AStarNet一、动机与贡献为了使路径推理方法适用于大规模图上的归纳推理任务,文章改进了路径信息获取的方法。路径推理方法较好的归纳推理能力......
  • 2024.4.9 avx加速一维卷积操作(汇总)
    第三次作业提交内容一:源代码在-O3编译优化下执行结果:AVX指令集优化://conv_avx.cppboolConvolve1D_Ks5_F64_AVX(double*__restrict__y,constdouble*__restrict__x,constdouble*__restrict__kernel,int64_tnum_pts){constexprint64_tkernel_size=5......
  • 2024.4.9 AVX加速卷积part2
    AVX加速卷积part2重新构筑下昨天的想法:问题:源程序在O2下的执行时间:经过AVX改进后的执行时间:下面尝试在AVX2基础上改进:AVX与AVX2的主要区别和改进:向量整数指令:AVX主要集中在浮点数运算上,提供了对256位宽SIMD(单指令多数据)向量的支持。AVX2引入了向量整数运算的支持。这......
  • 毕业设计:基于卷积神经网络的条形码识别系统 深度学习 人工智能 计算机视觉
    目录 前言设计思路一、课题背景与意义二、算法理论原理2.1卷积神经网络2.2目标检测三、检测的实现3.1数据集3.2实验环境3.3模型训练最后 前言    ......
  • 卷积神经网络python实现的三种方法
    1、介绍TensorFlow、PyTorch和Keras都是流行的深度学习框架,它们都具有成熟的卷积神经网络(CNN)实现。选择哪种框架取决于您的偏好、项目需求以及团队的技术栈。2、特点TensorFlow:TensorFlow是由Google开发的开源深度学习框架,广泛用于生产环境和研究领域。TensorFlow具有丰富的......
  • 深度学习-卷积神经网络--facenet人脸识别--67
    目录1.概述参考链接:人脸识别网络FaceNetfacenet详解1.概述FaceNet是谷歌于[CVPR2015.02](FaceNet:AUnifiedEmbeddingforFaceRecognitionandClustering)发表,提出了一个对识别(这是谁?)、验证(这是用一个人吗?)、聚类(在这些面孔中找到同一个人)等问题的统一解决框架,即它们......
  • Yolov8-pose关键点检测:特征融合 | CAMixing:卷积-注意融合模块和多尺度提取能力 | 202
     ......