首页 最新 热门 推荐

  • 首页
  • 最新
  • 热门
  • 推荐

解读Squeeze-and-Excitation Networks(SENet)

  • 25-03-03 21:22
  • 3809
  • 13025
blog.csdn.net

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

Squeeze-and-Excitation Networks(SENet)是由自动驾驶公司Momenta在2017年公布的一种全新的图像识别结构,它通过对特征通道间的相关性进行建模,把重要的特征进行强化来提升准确率。这个结构是2017 ILSVR竞赛的冠军,top5的错误率达到了2.251%,比2016年的第一名还要低25%,可谓提升巨大。这么大的提升是怎么来的呢?今天就来介绍下这个冠军背后的原理细节。

一、结构和原理

图1:SE Block

图1是SENet的Block单元,图中的Ftr是传统的卷积结构,X和U是Ftr的输入(C'xH'xW')和输出(CxHxW),这些都是以往结构中已存在的。SENet增加的部分是U后的结构:对U先做一个Global Average Pooling(图中的Fsq(.),作者称为Squeeze过程),输出的1x1xC数据再经过两级全连接(图中的Fex(.),作者称为Excitation过程),最后用sigmoid(论文中的self-gating mechanism)限制到[0,1]的范围,把这个值作为scale乘到U的C个通道上, 作为下一级的输入数据。这种结构的原理是想通过控制scale的大小,把重要的特征增强,不重要的特征减弱,从而让提取的特征指向性更强。下面来看下SENet的一些细节:
先是Squeeze部分。GAP有很多算法,作者用了最简单的求平均的方法(公式1),将空间上所有点的信息都平均成了一个值。这么做是因为最终的scale是对整个通道作用的,这就得基于通道的整体信息来计算scale。另外作者要利用的是通道间的相关性,而不是空间分布中的相关性,用GAP屏蔽掉空间上的分布信息能让scale的计算更加准确。

公式1:Squeeze的计算

Excitation部分是用2个全连接来实现 ,第一个全连接把C个通道压缩成了C/r个通道来降低计算量(后面跟了RELU),第二个全连接再恢复回C个通道(后面跟了Sigmoid),r是指压缩的比例。作者尝试了r在各种取值下的性能 ,最后得出结论r=16时整体性能和计算量最平衡。
为什么要加全连接层呢?这是为了利用通道间的相关性来训练出真正的scale。一次mini-batch个样本的squeeze输出并不代表通道真实要调整的scale值,真实的scale要基于全部数据集来训练得出,而不是基于单个batch,所以后面要加个全连接层来进行训练。可以拿SE Block和下面3种错误的结构比较来进一步理解:
图2最上方的结构,squeeze的输出直接scale到输入上,没有了全连接层,某个通道的调整值完全基于单个通道GAP的结果,事实上只有GAP的分支是完全没有反向计算、没有训练的过程的,就无法基于全部数据集来训练得出通道增强、减弱的规律。
图2中间是经典的卷积结构,有人会说卷积训练出的权值就含有了scale的成分在里面,也利用了通道间的相关性,为啥还要多个SE Block?那是因为这种卷积有空间的成分在里面,为了排除空间上的干扰就得先用GAP压缩成一个点后再作卷积,压缩后因为没有了Height、Width的成分,这种卷积就是全连接了。
图2最下面的结构,SE模块和传统的卷积间采用并联而不是串联的方式,这时SE利用的是Ftr输入X的相关性来计算scale,X和U的相关性是不同的,把根据X的相关性计算出的scale应用到U上明显不合适。

图2:三种错误的SE结构

图3是两个SENet实际应用的例子,左侧是SE-Inception的结构,即Inception模块和SENet组和在一起;右侧是SE-ResNet,ResNet和SENet的组合,这种结构scale放到了直连相加之前。

图3:SE-Inception和SE-ResNet结构

二、测试

1、ImageNet测试

作者用ImageNet 2012数据集,比较了不同深度下、不同类型的SENet结构和非SENet结构的性能差异。图4是测试结果,可以看到在所有的结构上SENet要比非SENet的准确率更高,而计算复杂度上只是略有提升。图5是两种不同深度的SE-ResNet和ResNet的训练曲线图,图6是ResNeXt和SE-ResNeXt、Inception-ResNet-v2和SE-Inception-ResNet-v2的收敛曲线,各种结构、各种深度的测试都能看出SENet有很大优势。

图4:不同深度、不同类型的SENet和非SENet的准确率、GFLOPs

图5:不同深度的SE-ResNet和ResNet的训练曲线图

图6:ResNeXt和SE-ResNeXt、Inception-ResNet-v2和SE-Inception-ResNet-v2的收敛曲线

2、场景分类测试

作者用Place365数据集进行了场景分类测试,比较的结构是ResNet-152和SE-ResNet-152,结果见图7,可以看出SENet在ImageNet以外的数据集上仍有优势。

图7:Place365测试结果

三、更多分析

论文还详细分析了scale的分布特点。作者对训练好的结构用以下4个分类的图片做测试,每个分类50张图片,统计SE-ResNet-50在5个不同层级上,excitation输出的分布(图9)。图9中SE_2_3是按SE_stageID_blockID的方法取名的,纵坐标是每个分类50张图片scale的平均值。这个图中越往后的图的层级越靠后,all曲线是全部1000个分类的平均值,用来和4个分类的曲线作比较。

图8:用这4个分类的图片来分析

可以看出靠前的层级(SE_2_3和SE_3_4)各个分类的曲线差异不大,这说明了在较低的层级中scale的分布和输入的类别无关;随着层级的加深,不同类别的曲线开始出现了差别(SE_4_6和SE_5_1),这说明靠后的层级的scale大小和输入的类别强相关;到了SE_5_2后几乎所有的scale都饱和,输出为1,只有一个通道为0;而最后一层SE_5_3的通道的scale基本相同。最后两层的scale因为基本都相等,就没有什么用处了,为了节省计算量可以把它们去掉。

图9:不同层级的scale的分布

总结:SENet把重要通道的特征强化,非重要通道的特征弱化,得到了很好的效果,这是一种全新的思路,在这个方向上将来可能会有更多的成果。

注:本文转载自blog.csdn.net的看不见我呀的文章"https://blog.csdn.net/gaotihong/article/details/82982766"。版权归原作者所有,此博客不拥有其著作权,亦不承担相应法律责任。如有侵权,请联系我们删除。
复制链接
复制链接
相关推荐
发表评论
登录后才能发表评论和回复 注册

/ 登录

评论记录:

未查询到任何数据!
回复评论:

分类栏目

后端 (14832) 前端 (14280) 移动开发 (3760) 编程语言 (3851) Java (3904) Python (3298) 人工智能 (10119) AIGC (2810) 大数据 (3499) 数据库 (3945) 数据结构与算法 (3757) 音视频 (2669) 云原生 (3145) 云平台 (2965) 前沿技术 (2993) 开源 (2160) 小程序 (2860) 运维 (2533) 服务器 (2698) 操作系统 (2325) 硬件开发 (2491) 嵌入式 (2955) 微软技术 (2769) 软件工程 (2056) 测试 (2865) 网络空间安全 (2948) 网络与通信 (2797) 用户体验设计 (2592) 学习和成长 (2593) 搜索 (2744) 开发工具 (7108) 游戏 (2829) HarmonyOS (2935) 区块链 (2782) 数学 (3112) 3C硬件 (2759) 资讯 (2909) Android (4709) iOS (1850) 代码人生 (3043) 阅读 (2841)

热门文章

101
推荐
关于我们 隐私政策 免责声明 联系我们
Copyright © 2020-2025 蚁人论坛 (iYenn.com) All Rights Reserved.
Scroll to Top