当前位置: 首页 > article >正文

神经网络-SENet

SENet是一种用于图像分类的卷积神经网络模型,由Jie Hu等人在2018年提出。SENet的全称是“Squeeze-and-Excitation Network”,其核心思想是通过自适应地调整每个通道的特征图权重,来增强卷积神经网络对于不同特征的感知能力。

SENet的设计灵感源于人类大脑对于不同信息的处理方式。人类大脑会在视觉信息进入时,自动地对不同特征进行加权处理,以提高对于重要特征的感知能力。SENet试图通过类似的方式,对于不同通道的特征图进行加权处理,从而提高卷积神经网络的分类性能。

具体来说,SENet引入了一个称为“Squeeze-and-Excitation Module”的模块,该模块可以自适应地学习每个通道的重要性,并根据重要性对特征图进行重新加权。Squeeze操作将每个通道的特征图压缩成一个数值,Excitation操作则将这个数值映射到一个新的权重向量中,用于加权特征图。这个权重向量是通过一个全连接层和激活函数来计算得到的,其中激活函数可以是sigmoid或relu等。

SENet的优点是可以显著提高卷积神经网络的分类性能,同时具有较小的计算和参数量。SENet在多个图像分类任务上取得了优异的表现,例如ImageNet、CIFAR-10、CIFAR-100等。

总的来说,SENet是一种基于自适应加权的卷积神经网络模型,通过对于每个通道的特征图进行加权处理,提高了模型对于不同特征的感知能力,从而显著提高了分类性能。

SENet

卷积神经网络(CNN)是一种用于处理图像任务的模型。它通过在网络中的每个卷积层使用一组滤波器来捕捉图像中的空间模式和通道信息。通过多次卷积、激活函数和下采样操作,CNN能够生成一种层次化的图像表示,以捕捉全局的特征。

近年来,研究人员致力于寻找更强大的网络架构来提高图像任务的性能。一种流行的方法是在网络中引入学习机制,以帮助捕捉特征之间的空间相关性。另一方面,也有研究关注于改进网络中通道之间的关系。

SENet介绍了一种名为"Squeeze-and-Excitation(SE)"块的新型网络单元,旨在通过明确地建模卷积特征中通道之间的相互依赖关系来提高网络生成的表示质量。通过这种机制,网络可以根据全局信息有选择地强调重要的特征并抑制不太有用的特征,从而提高网络的性能。

简单来说,这篇论文提出了一种改进卷积神经网络的方法,通过更好地考虑通道之间的关系,使网络能够更准确地捕捉图像中的重要特征,从而提高图像任务的表现。

SENet 模型在处理结构化输入数据方面具有以下优点:

能够处理复杂关联关系:SENet 通过学习方程组,能够捕捉输入数据之间的复杂关联关系,从而提高预测和推断的准确性。

适用于多种任务:SENet 可以应用于多种不同类型的任务,如分类、回归、链接预测等。

参数共享:SENet 模型中的参数可以在不同输入数据之间共享,从而降低模型的复杂性。

可扩展性:SENet 模型可以随着输入数据规模的增大而扩展,从而适应大规模的结构化数据。

  • SE模块

如下图所示,流程如下:

  • 对于输入的图像X,经过Ftr变化,得到新的特征图U

  • 对特征图U,进行squeeze操作,即Fsq()操作,对每个通道的全局信息建模,生成一组通道描述符 1*1*C

  • 再经过excitation操作,对通道之间的依赖关系建模,即Fex(),生成一组权重信息,这些权重可以看作是对每个通道在特征图中的重要性的度量。

  • 最后将新特征图U重新加权,即Fscale,以生成经过重新校准的输出。

通过堆叠多个SE块,我们可以构建一个SE网络(SENet)。SE块可以在网络的不同深度上使用,并且在不同深度上具有不同的功能。在较早的层中,SE块以类别无关的方式激发有用的特征,加强共享的低级表示。而在后续层中,SE块变得越来越专门化,对于不同的输入以高度类别特定的方式进行响应。

总的来说,SE块通过特征重新校准,帮助网络更好地理解和利用输入数据,从而提升网络的性能。

Squeeze

当我们处理图像或特征时,每个通道都负责提取不同的特征信息。然而,传统的方法只能在局部区域内进行特征提取,无法利用整个图像的上下文信息。

为了解决这个问题,我们提出了一种方法,将全局的空间信息转化为通道描述符。具体来说,我们通过对每个通道上的特征值取平均,得到一个通道描述符。这个描述符表示了整个图像在每个通道上的平均特征值。

通过这个通道描述符,每个通道就能够利用整个图像的信息,而不仅仅局限于局部区域。这样做可以帮助提高特征的表达能力。

总的来说,我们通过将全局的空间信息转化为通道描述符,使得每个通道能够利用整个图像的上下文信息,从而提高特征的表达能力和模型的性能。

作者在讨论中提到了一些过去的特征工程方法,这些方法也使用了类似于本文中提出的方法,将局部特征的统计信息转化为全局特征。作者选择了最简单的方法——全局平均池化,但也指出其他更复杂的方法也可以使用。这表明了本文提出的方法不仅简单有效,而且可以通过进一步的改进得到更好的结果。

Excitation

为了利用在Squeeze挤压操作中聚合的信息,我们紧接着使用第二个操作来充分捕捉通道间的依赖关系。为了实现这个目标,该函数必须满足两个条件:首先,它必须是灵活的(特别是,它必须能够学习通道之间的非线性相互作用),其次,它必须学习到非互斥的关系,因为我们希望允许多个通道被强调(而不是强制一个通道激活)。为了满足这些条件,我们选择使用具有sigmoid激活的简单门控机制。

简单来说,我们使用sigmoid函数作为门控机制的激活函数。对于每个通道,我们通过一个全连接层将输入特征向量映射为一个标量值。然后,我们将该标量值通过sigmoid函数进行激活,得到一个0到1之间的值。这个值表示了每个通道在最终输出中的权重或重要性。

通过这种门控机制,我们可以学习到通道之间的非线性相互作用,并且可以灵活地调整每个通道的权重。这样,我们可以强调重要的通道,并允许多个通道同时被强调,而不是限制在一个通道上。

总而言之,通过使用具有sigmoid激活的简单门控机制,我们可以满足灵活学习通道间非线性相互作用的需求,并且允许多个通道同时被强调。这样,我们可以更好地捕捉通道间的依赖关系,提高网络的性能。

最终将得到的s与特征图相乘,得到新的特征输出,公式如下:

SE示例

如下图所示,左侧普通网路中加入了SE结构,右侧是在残差网络中,加入了SE结构;SE结构中使用了两层FC网络和一个ReLU激活、sigmoid函数;其中第一层FC起到了降维作用,第二个FC起到了升维作用。

我们考虑提出的SE块引入的额外参数。这些额外参数仅由门控机制的两个全连接层产生,因此构成了网络总容量的一小部分。具体而言,这些全连接层的权重参数引入的总数为:

其中,r表示缩减比例,S表示阶段的数量(阶段是指在具有相同空间维度的特征图上操作的块的集合),Cs表示输出通道的维度,Ns表示阶段s中重复的块的数量(当FC层中使用偏置项时,引入的参数和计算成本通常可以忽略不计)。

SE-ResNet-50是一种基于ResNet-50的改进模型,它引入了额外的参数来增强网络的性能。具体来说,SE-ResNet-50引入了大约250万个额外参数,相当于ResNet-50所需参数的约10%。

这些额外参数主要集中在网络的最后一个阶段,该阶段对最多的通道执行激励操作。激励操作有助于网络更好地学习特征表示,提高模型的性能。

然而,在实践中,研究人员发现可以以很小的性能代价来删除这个相对昂贵的最后一个阶段的SE块。通过删除这部分操作,可以将相对参数增加降低到约4%。这对于那些对参数使用量非常敏感的情况可能会很有用。

下面是SE在各种网络中添加的尝试,其中fc[16,256]表示两个全连接层输出的维度,具体结论如下:

下图是各网络的结果展示,其中original是原始论文中展示的结论,re-implementation是重新训练后得到的结论,SENet是加入SE结构的网络。


http://www.kler.cn/a/455159.html

相关文章:

  • Linux shell脚本用于常见图片png、jpg、jpeg、webp、tiff格式批量转PDF文件
  • Wend看源码-Java-集合学习(Set)
  • Redis——数据过期策略
  • windows使用zip包安装MySQL
  • C程序设计:数据在数组中的交换
  • ubuntu 网络管理--NetworkManager
  • 如何通过HTTP API分组检索Doc
  • 萤石网络:以用户为中心,构建全方位协同能力
  • 《第十四部分》WDG看门狗
  • vue和uniapp中,点击按钮 传递当前item对象,并从selectData数组中删除该条item数据
  • 如何查看服务器内存占用情况?
  • 交换机与路由器的区别
  • 04、Spring MVC
  • Santa Claus 2 (st表的lower_bound用法)
  • Elasticsearch:analyzer(分析器)
  • canvas之进度条
  • 音视频入门知识(六):消息获取模式篇
  • nexus docker安装
  • 使用 Three.js 创建圣诞树场景
  • 指针详解之 多层嵌套的关系
  • ES和MONGODB备份脚本
  • [Android]按下扫描键时启动一个线程来执行某些操作
  • 大语言模型的token和向量
  • PDF书籍《手写调用链监控APM系统-Java版》第7章 插件与链路的结合:Tomcat插件实现
  • 模方要使用多机引擎,有什么要求
  • Vue.js组件开发-实现访问页面自动获取数据