SENet网络分析

news2025/3/2 3:20:45

文章目录

  • 注意力机制:Attention
    • Biased Competition Theory
    • bottom-up和top-down注意力
  • SE Block
    • Squeeze操作
    • Excitation操作
    • scale操作
    • 与原结构合并
    • 计算复杂度评估
  • 实验
    • 与其他网络对比
    • 数据集实验
    • 内部参数对比实验
    • 进一步评估
      • Squeeze
      • excitation

Squuze-and-Excitation网络是针对表达能力的改造,和前面两篇不一样,提出的是一个叫SE block的结构。这个结构可以灵活的集成到之前的网络结构中去,比如VGG,RESNet等,也可以自己组成一个自己的SENet。
更关键的是,这个SE block提到了深度学习中一个很重要的词:注意力机制。

我们先简单说说注意力机制。

注意力机制:Attention

在人感知周围世界的时候,其实是有注意力机制存在的,比如一副错综复杂的图像中,你会很主要关注其中的一些内容,而这些内容和你想看到,想感知到的东西有关,这个东西叫做"goal",目标。
你的注意力就会被这个目标来牵引着走,简单来说就是每个人从一幅图像中的关注点都会有不一样,在于你想通图像中看到什么。
在其他的领域也一样,比如NLP。

研究这个注意力机制也有很多,在论文中看到了比如DBN,RNN,LSTM等。这些后续有时间再细读,其中有一篇我觉得挺有启发性,在这里简单说一说:
论文:Look and think twice- Capturing top-down visual attention with feedback convolutional neural networks

Biased Competition Theory

论文中提到的一个叫做偏向竞争理论的东东。
基本逻辑是引入一个语义层面的标签,其实也就是为这个图像确定一个目标:“goal”。那么在进行反向传播的时候,对前面隐藏层的相应神经元节点进行权重的判断,如果和这个goal无关的神经元则进行抑制。突出目标相关的神经元,提高这些神经元的权重。

方式呢就是通过在卷积核的激活层后面再增加一个feedback layer,这个层的每个神经元节点取值在[0, 1]之间:

feedback layer的位置与传播过程

在传播的过程中,通过一个函数来计算哪些神经元需要被抑制。
基本逻辑是在语义标签的指导下,尽量让这个语义的那个class类得到高分,而且feedback layer中的神经元关闭的比较多。也就是这些神经元的权重值总和最低。

bottom-up和top-down注意力

  • top-down的注意力机制可以理解先发现楼房,然后再看每一层,最后看每一间的细节特征。而这篇文章中提到的语义标签就是告诉你整幅图像最重要的特征,也就是最高,最top的东西,这个就是top-down的逻辑。
  • 一般卷积网络,是从最大的感受野开始(整幅图像),用一些固定的卷积核慢慢的去卷积,逐渐减少感受野,也就是图像的H和W在变小。可以理解为首先获取图像的每个底层的特征,慢慢的对特征进行高层抽象,提取高层特征。这种方式就是bottom-up。

SE Block

上面提到了比较好理解的注意力机制,而SE block引入的是一种叫做通道注意力机制的东东,和上面提到的注意力机制不太一样。
大致意思呢是想提取每个卷积核通道中的特征,然后总和这些特征来获得一些通道之间的联系,可能这个就叫做通道注意力机制吧。
原文描述为:The channel relationships modelled by convolution are inherently implicit and local (except the ones at top-most layers).
We expect the learning of convolutional features to be enhanced by explicitly modelling channel interdependencies

这一篇就重点来说说这个东西。

SE block也是提出了一个branch,也就是一个分支结构,这个分支结构包含两个部分:

  • Squeeze,压缩通道特征。
  • Excitation,激励部分通道特征,我理解可能是激活某种特征吧。

整体结构如下:

图1 SE基本结构

这两个结构是做了个什么事情呢?论文有这么一段描述:Consequently, we would like to provide it with access to global information and recalibrate filter responses in two steps,squeeze and excitation, before they are fed into the next transformation.
大意是说呢,在进入下一步之前,通过两个步骤:squeeze和excitatoin来重新校准filter response,我理解filter就是卷积核,request就是卷积核的输入,response就是卷积核的输出。
也就是说,通过squeeze和excitation两个操作提取通道之间的关系,然后用这个关系去重新校准卷积的输入。
也就是提取通道之间的卷积特征,然后用这个通道特征去修正原有网络输出的特征图。

  • X为输入
  • U为通过函数变换 F t r F_{tr} Ftr得到的特征图,也就是通过卷积得到的结果,在GoogleNet中就是Inception,在残差网络中就是Residual blcok。

U后面的上面那根线就是表示的SE block的操作,最后再和原输出U相结合。

Squeeze操作

这个操作对应上图中的函数 F s q F_{sq} Fsq
在图1中:

  • 输入X的通道数是 C ′ C^{'} C
  • 输出特征图U的通道数是C

上面提到了,要找到通道之间的关系,那就是要用到所有通道的信息。论文中简单起见,把每个通道都压缩成一个点,直接求平均,相当于就是这个通道的特征值。
这个求平均的过程就是所谓的Squeeze。

原文为:To mitigate this problem, we propose to squeeze global spatial information into a channel descriptor. This is achieved by using global average pooling to generate channel-wise statistics。

表达为公式就是:
z c = F s q ( u c ) = 1 H ∗ W ∑ i = 1 H   s u m j = 1 W u c ( i , j ) z_c = F_{sq}(u_c) = \frac{1}{H * W} \sum_{i=1}^H \ sum_{j=1}^W u_c(i,j) zc=Fsq(uc)=HW1i=1H sumj=1Wuc(i,j)

  • u c u_c uc表示特征图U中的某个通道
  • z c z_c zc表示经过压缩之后的向量Z

从公式中可以看出,每个尺寸为 H ∗ W H * W HW的featrue map通道,经过全局平均之后,就只剩一个像素点。
所以,一个 H ∗ W ∗ C H * W * C HWC的featrue map经过squeeze之后,就变成了一个 1 ∗ 1 ∗ C 1 * 1 * C 11C的vector,计作Z。

当然,这里是可以替换为各种更厉害的特征统计方法。这里是利用了一个最简单的,简单就是美。

Excitation操作

特征图经过压缩后,第二步就是综合这些通道的特征值。
论文提出,这个综合方法需要满足两个条件:

  1. 要可以表达非线性关系
  2. 要可以提取处非互斥的关系

所以,论文提出了一个计算方法:
s = F e x ( z , W ) = σ ( g ( z , W ) ) = σ ( W 2 δ ( W 1 z ) ) s=F_{ex}(z, W) = \sigma(g(z,W)) = \sigma(W_2\delta(W_1z)) s=Fex(z,W)=σ(g(z,W))=σ(W2δ(W1z))

  • δ \delta δ为ReLU。
  • W 1 , W 1 ∈ R C r ∗ C W_1, W_1 \in R^{\frac{C}{r} * C} W1W1RrCC为权重矩阵,
  • W 2 , W 2 ∈ R C ∗ C r W_2, W_2 \in R^{C * \frac{C}{r}} W2W2RCrC为权重矩阵
  • 从后面的图来看, σ \sigma σ为Sigmod。

从上面可以看出,这个Excitation就是两个全联接层:

  • 第一个连接层把 1 ∗ 1 ∗ C 1 * 1 * C 11C的vector Z变成一个 1 ∗ 1 ∗ C r 1 * 1 * \frac{C}{r} 11rC的向量。然后后面跟一个ReLU激活层。
  • 第二个连接层把 1 ∗ 1 ∗ C r 1 * 1 * \frac{C}{r} 11rC的vector重新恢复为一个 1 ∗ 1 ∗ C 1 * 1 * C 11C的向量。然后后面跟一个Sigmod的激活层。

scale操作

最后,根据图1,作为Squeeze和Excitation操作之后,还需要和原特征图U进行合并,也就是上面提到的“重新校准特征图”。这个合并方法也特别简单,就是把这个向量直接原特征图相乘。

x ^ c = F s c a l e ( u c , s c ) = s c u c \hat{x}_c=F_{scale}(u_c, s_c)=s_cu_c x^c=Fscale(uc,sc)=scuc

从上面的excitation可以得知, s s s是一个 1 ∗ 1 ∗ C 1 * 1 * C 11C的向量,与一个 H ∗ W ∗ C H * W * C HWC的特征图相乘的话,再从上面的公式可以看出,就是按通道数一个一个的去把 s s s中的每个元素拿出来与特征图的对应通道进行相乘,就是一个标量乘以矩阵,所以可以理解就是一个scale的操作,放大缩小而已。

讲到这里,感觉就是SE就是提取出了通道中某些特征,或者说某些注意力特征,通过这个 s s s,也就是表示通道的权重的向量,去把这个权重乘以对应的特征图通道,来放大或缩小这个通道的作用。从这个角度上来看,确实就叫做通道注意力机制。

与原结构合并

论文中提到了和两种经典结构合并的方式:

  • Inception:

  • ResNet

先把通道注意力的这个向量与残差结构中的U相乘之后再和恒等映射进行相加。

计算复杂度评估

通过上面的描述,很容易知道这个SE结构没有增加什么复杂的结构,所以论文中拿出来和ResNet-50做了个对比,ResNet-50的运算量为3.86 GFLOPs,增加了这个结构后的SE-ResNet-50大概为3.87 GFLOPs。

也就是增加了大约0.26%的运算量,但是可以达到ResNet-101的准确度。

时间上:

  • GPU上,256的一个batch,从190ms增加到了209ms。
  • CPU(嵌入式设备)上的运行时间从164ms增加到了167ms,忽略不计

参数增加量:增加了 2 r ∑ s = 1 S N s C s 2 \frac{2}{r} \sum_{s=1}^SN_sC_s^2 r2s=1SNsCs2

  • S为stage的个数
  • N为每个stage中Residual block的个数
  • C为通道数

大约是增加了2.5 million的参数,也就是大约增加了10%。

实验

这篇论文里有一句话,应该说适用于各种深度网络的论文:
A rigorous theoretical analysis of the representations learned by deep neural networks remains challenging, we therefore take an empirical approach to examining the role played by the SE block with the goal of attaining at least a primitive understanding of its practical function。

大意呢是一个严格理论证明有效性的网络是不太现实的,也就是深度网络一直说的黑盒子理论,只能从实验上去证明有效,经验主义着,或者说实践主义者。所以所有的深度学习论文都包含大量的对比实验,和其他的网络对比,不同数据集之间的对比,自己内部参数变化的对比等等。
这篇论文也是,主要是两部分,和其他网络的对比和自身参数变化的对比。

与其他网络对比

与其他网络对比主要挑选了VGG,Inception,ResNet及其各种变体,移动设备网络,具体的网络设置,训练方法,数据预处理等论文里写的很详细,这里不一一列举。
基本逻辑就是在这些经典结构里引入SE Block,引入方法上面有提到。
比较的双方就是引入了结构的和没引入结构的对比。
总结在了一张表里:

VGG,Inception,ResNet

MobileNet,ShuffleNet

大致的结论如下:

  • 在Network depth部分,也就是se block在网络深度这个维度上的比较。和resnet对比,resnet-50增加了se block后,准确率提高到6.62%,和resnet-101(6.52)差不多了,增加的计算量只有一点点,是101的一半
  • 在101和152的对比更加,在101上增加se block后, 准确率比152还高,比152的还高出0.27个百分点。
  • 还与VGG和Inception网络结构上进行了对比,基本上也是这个结论
  • 与最新,最牛逼的网络:Inception resnet和resnet-Xnet两种结构进行对比,引入SE block也是有很好的效果。
  • 给出了在各个结构中,在训练过程中,各个epoch的训练误差与验证误差走势图,整个走势稳得很,整个训练和验证集的过程,都是有提升的,而且每种结构都是这样,牛逼的很。

  • 与移动网络,也就是相对较少的网络层数,较少的参数量,也是有效的。

数据集实验

使用了ImageNet,CIFAR-10,CIFAR-100,Places365-Challenge dataset场景识别的数据集,COCO目标检测数据集(增加Faster R-CNN模块)。
结果为:

CIFAR

Places365

COCO

ImageNet

简单来说,SE block对不同的数据集也是同样有效。

内部参数对比实验

其实我理解就是对调整这个注意力机制的方式提供了一些tricks,也就是一些小技巧,可以从这些方面去调整。

  • 第一个就是前面提到的参数 r r r,这个参数越大,中间的参数就越小,就是两个卷积层中间的那一层。文中给出了不同 r r r取值下,对准确率的影响:
      

      通过上图可以看出,r的大小和性能没有正比关系,在r=8的时候效果最好,r=16可以认为是一个平衡点。
      值得关注的就是,每个residual block都可以用不同的r。

  • 对比了Squeeze是最大池化和平均池化的效果,global max pooling和 avg pooling差别不大
      

  • excitation那里的激活层,对比了tanh,ReLU,Sigmond。Sigmond效果较好,所以之前介绍的结构里,excitation用的就是Sigmond
      

  • 标准的ResNet-50总共是5个stage,也就是5个部分,论文还比较了单独在某个部分增加SE block的情况:


  结论就是在ResNet中的每个stage中增加这个block,随便增加在哪个stage都有用,加在一起可以起到叠加的作用。

  • 对于ResNet来说,这个SE Block增加在残差结构的哪个位置也是一个值得考量的变量:

与标准的集成方法不一样,另外又提出了三种不同的集成方法,SE-PRE,SE-POST,SE-Identity。
  结论是,标准的挺好,出了放后面不太好,不要放到残差的叠加动作之后:
  

  
  甚至还提出了集成到Residual Block中间去,为了节省一些参数量。
  

进一步评估

论文还进一步的评估了Squeeze和Excitation这两个步骤在SE block中的重要程度。

Squeeze

论文中做了一个实验,替换掉SE中的Squeeue,也就是max pooling,换成两个FC,都使用1 * 1的卷积层进行降维,从H和W两个方向上全部降成1。

从结果看:
  - 全局信息对网络结果有帮助,就算是两个1 * 1的卷积层也是起到了这个作用,也能有效降低错误率。
  - global max pooling的方式更有效

excitation

这一部分操作本质上是提取通道特征,把注意力放在有效的通道信息上,不重要的特征就会被忽略掉,通过激活层屏蔽。
所以论文这里提出了验证这个激活层有效性的实验,这个实验分成两部分:

  1. 第一部分是从整个数据集中抽样了4个类别的数据。然后输出通道的平均激活率(50个通道为一个样本求平均,compute the average activations for fifty uniformly sampled channels in the last SE block of each stage)。不同的stage要分开统计:

结论如下:

  • 图的命名规则是SE+stageID+blockID
  • 网络中靠前的层,每个类别的激活率差别基本不大。这个的解释是:前面的都是底层,一般性的特征,比如颜色,线条之类,后面的才会有高层特征,比如最后的语义特征这些(namely that earlier layer features are typically more general (e.g. class agnostic in the context of the classification task) while later layer features exhibit greater levels of specificity)。所以不管是什么类,提取到的东西很类似,所以激活率也没啥区别。
  • SE-4-6和SE-5-1这两个图说明到了网络的中层,不同类别的激活率趋势就不一样了,呼应了上一条。也说明了这个激活是有效的,因为类别不一样,注意力是不一样的。
  • 在SE-5-2这个位置,excitatioin基本退化成了一个恒等映射,所有的基本都是被激活的。而且SE-5-3这里,所有的类别基本上趋势是相同的,从这两个图可以看出,到了网络的后面,这个激活的作用基本不大了,所以才说到了网络的后面,这个参数 r r r可以设置的大一点。反正各个类别之间区别不大。
  1. 上面是对类别的注意力的实验,接下来测试了每个类别中,这个excitation对每张图像的作用。数据是用的两个类别,计算的是激活数的平均值和标准差。

结论是:

  • 不管是类别还是实例(instance,也就是image),注意力机制都是有效的。
  • 类别和实例的趋势基本类似。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/895199.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

流弊的docker

docker就是隔离式运行软件组(多个软件),docker分为dockerfile文件,images 镜像,容器,本地仓库,远程仓库。 构建dockerFile文件,可以获得images镜像 运行镜像获得容器 || 容器提交获得…

MS Word表格宽度自适应

x.1 问题: 你的表格可能并没有占满整行,且右对齐,例如如下, x.2 解决方式 这个时候你想右对齐,你可以这么操作,点左上角的十字全选表格, 在布局里选择自动对齐, 对齐方式选择居中右…

vscode远程连接Linux失败,提示过程试图写入的管道不存在(三种解决办法)

vscode报错如下: 一、第一种情况 原因是本地的known_hosts文件记录服务器信息与现服务器的信息冲突了,导致连接失败。 解决方案就是把本地的known_hosts的原服务器信息全部删掉,然后重新连接。 二、第二种情况 在编写配置文件config时&…

SQL力扣练习(十一)

目录 1.树节点(608) 示例 1 解法一(case when) 解法二(not in) 2.判断三角形(610) 示例 1 解法一(case when) 解法二(if) 解法三(嵌套if) 3.只出现一次的最大数字(619) 示例 1 解法一(count limit) 解法二(max) 4.有趣的电影(620) 解法一 5.换座位(626) 示例 …

VoxWeekly|The Sandbox 生态周报|20230814

欢迎来到由 The Sandbox 发布的《VoxWeekly》。我们会在每周发布,对上一周 The Sandbox 生态系统所发生的事情进行总结。 如果你喜欢我们内容,欢迎与朋友和家人分享。请订阅我们的 Medium 、关注我们的 Twitter,并加入 Discord 社区&#xf…

动漫3D虚拟人物制作为企业数字化转型提供强大动力

一个 3D 虚拟数字人角色的制作流程,可以分为概念设定-3D 建模-贴图-蒙皮-动画-引擎测试六个步骤,涉及到的岗位有原画师、模型师、动画师等。角色概念设定、贴图绘制一般是由视觉设计师来完成;而建模、装配(骨骼绑定)、渲染动画是由三维设计师来制作完成。…

QtCreator中设置自定义注释格式

QtCreator--工具--选项--文本编辑器--片段--组:C--添加 在其中添加一个key为:header,value如下图的组合: /*! ProjName : %{CurrentProject:Name}* FileName : %{CurrentDocument:FileName}* Brief : * Details : * Aut…

六大需求管理工具:满足您的需求管理需求

在项目开发和产品设计中,需求管理是确保项目成功的关键所在。通过使用专业的需求管理工具,团队可以更好地追踪、记录和分析需求,提高工作效率并确保项目按时完成。 市场上有许多需求管理工具可供选择,当下有什么好用的需求管理工…

Linux玩家福音,StarLite 5问世:搭载 Ubuntu、售 3285 元人民币

8月18日消息,英国硬件公司Star Labs近日发布了旗下最新款Linux平板电脑StarLite 5。这款平板配备了12.5英寸屏幕,采用了IPS技术和10点多点触摸,显示效果细腻、触控灵敏。屏幕比例为16:10,分辨率高达288x192,能够呈现出…

RISC-V公测平台发布· CoreMark测试报告

一. CoreMark简介 CoreMark是一款用于评估CPU性能的基准测试程序,它包含了多种不同的计算任务,包括浮点数、整数、缓存、内存等方面的测试。CoreMark的测试结果通常被用来作为CPU性能的参考,它可以帮助开发人员和系统管理员评估不同处理器和…

Vue 2组件基础

一个简单的组件示例&#xff1a; <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>Document</titl…

IDEA两种方法修改生成的jar包名字

方法一&#xff1a; 直接修改pom文件中的如下部分 <artifactId>excelreport</artifactId> <version>0.0.1-SNAPSHOT</version> <name>excelreport</name> <description>excelreport</description> 修改完成后&#xff0c;点…

慧函数生成代码应用到 IDEA 遇到依赖包问题怎么办?

以“将 map 转换为 json”需求为例&#xff0c;在慧函数界面生成代码。 生成后的代码复制到 IDEA 中&#xff0c;我们可以看到复制进来有导入包报错。 首先解决 com.feisuanyz.flow 引入失败的问题&#xff0c;前往飞算云智官网 从开发者学院【文档中心】的 Java 全自动开发工具…

【HarmonyOS】服务卡片 API6 JSUI跳转不同页面

【引言】 “JS卡片支持为组件设置action&#xff0c;包括router事件和message事件&#xff0c;其中router事件用于应用跳。若设置router事件&#xff0c;则action属性值为"router"&#xff1b;abilityName为卡片提供方应用的跳转目标Ability名&#xff1b;params中的…

Hadoop学习:深入解析MapReduce的大数据魔力(三)

Hadoop学习&#xff1a;深入解析MapReduce的大数据魔力&#xff08;三&#xff09; 3.5 MapReduce 内核源码解析3.5.1 MapTask 工作机制3.5.2 ReduceTask 工作机制3.5.3 ReduceTask 并行度决定机制 3.6 数据清洗&#xff08;ETL&#xff09;1&#xff09;需求2&#xff09;需求…

一起创建Vue脚手架吧

目录 一、安装Vue CLI1.1 配置 npm 淘宝镜像1.2 全局安装1.3 验证是否成功 二、创建vue_test项目2.1 cmd进入桌面2.2 创建项目2.3 运行项目2.4 查看效果 三、脚手架结构分析3.1 文件目录结构分析3.2 vscode终端打开项目 一、安装Vue CLI CLI&#xff1a;command-line interface…

(搜索) 剑指 Offer 13. 机器人的运动范围 ——【Leetcode每日一题】

❓剑指 Offer 13. 机器人的运动范围 难度&#xff1a;中等 地上有一个 m 行 n 列的方格&#xff0c;从坐标 [0,0] 到坐标 [m-1,n-1] 。一个机器人从坐标 [0, 0] 的格子开始移动&#xff0c;它每次可以向左、右、上、下移动一格&#xff08;不能移动到方格外&#xff09;&…

基于 SpringBoot+Vue 的家政服务管理平台(附源码,数据库,教程)

文章目录 1. 背景2.主要技术3. 可行性分析4.系统设计5系统的详细设计与实现5.1前台模块设计5.2后台功能模块 源码下载地址 1. 背景 本系统主要是设计出家政服务管理平台&#xff0c;基于B/S构架&#xff0c;后台数据库采用了Mysql&#xff0c;可以使数据的查询和存储变得更加有…

宏工科技十五周年,“归零心态”竞逐全球

长久以来&#xff0c;物料处理领域一直处于被大型跨国企业垄断&#xff0c;或是国内厂商野蛮生长的状态&#xff0c;宏工科技在15年发展中&#xff0c;通过培育自身的技术创新与自主研发能力&#xff0c;在物料处理领域突围&#xff0c;实现跨行业发展、规模化扩张和持续增长。…

HCIP VLAN实验

VLAN实验 拓扑图配置和分析分析配置LSW1LSW2R1 测试dhcp获取ipICMP测试 拓扑图 配置和分析 分析 从题目来看&#xff0c;因为 pc 1 3都是vlan2而且还是不同网段&#xff0c;pc 2 4 5 6在同一网段&#xff0c;所以可以将pc 1 2 5 4 6分在一个网段 pc4不通5 6 &#xff0c;那就…