转自:https://zhuanlan.zhihu.com/p/71995304
Squeeze-and-Excitation Networks
一、概述
1.1 背景
受限于硬件的羸弱,深度学习在上世纪的发展一直是不温不火,直到2012年,Alexnet横空出世,深度学习才开始前所未有的大发展。随着技术的发展,卷积神经网络逐渐取代了之前全连接的神经网络,成为深度学习领域的主流算法。
卷积神经网络的优势在于能够更好的提取特征和权值共享,自Alexnet之后,VGG又提出了神经网络的深度越深,效果越好的思想。自此深度成为构建网络时所考虑的第一要素。此时,又有人提出了Inception模型,这是人们在关注深度之外第一次关注网络的时间复杂度和空间复杂度。
image图1
如图1所示,就是Inception v1的模型,该模型主要利用了1x1卷积进行了降维处理,达到了减小网络参数量和计算量的效果。在接下来的改进中,Inception又提出了利用两层3x3网络取代一层5x5网络这样的奇思妙想,进一步达到了减轻网络复杂度的作用。
如图2所示,就是5x5卷积变成3x3卷积的示意图。
image图2
从此之后,轻量级网络开始盛行。诸如Squeezenet,Mobilenet等都是轻量级网络中的杰出代表。
1.2 介绍
自Inception之后,人们已经不再通过暴力的增加网络层数的方法来企图获得更高的准确率了,然而面对复杂的问题,过浅的网络很难达到理想的效果,所以加深网络依然是解决图像分类问题的最佳途径。但是增加网络很容易造成overfiting甚至训练集上得到的效果也比浅层网络要差,所以如何有效的增加网络层数就成了深度学习领域研究的重中之重。
为了解决这个问题,很多学者提出了自己的见解,如resnet所讲述的残差网络就是一例。然而残差网络虽然能够增加层数但是层数增加到三位数之后再增加也就有些无能为力了。此时作者另辟蹊径,提出了一种新型的网络结构SENet,这个网络结构可以对所有网络进行改进然后做到真正有效的增加层数,无论原网络层数有多深,通过加入SENet,都能增加相当数量的深度,并有效的提高实验效果。值得一提的是SENet在2017年的ImageNet挑战赛获得冠军。
从Inception开始,学者们提出网络的时候就主要是提出一个block,然后用这个block像搭积木一样的搭出整个网络。同样,作者也是用这个方法设计网络的,作者提出了一个Squeeze-and-Excitation block,然后用这个SE block搭出了整个网络。
卷积神经网络虽然有诸多的好处,但是卷积神经网络捕捉到的只是局部的信息,假如卷积核是7x7,那么感受野的大小也只有7x7。但是一张图片的每一个像素点之间都是互相有联系的,之前使用局部感受野的网络都忽略掉了全局像素点之间的关联信息,使得实验效果不够理想。Inception通过多尺度的卷积核,找到了提取一张feature map上全局关联信息的方法,然而直到本文网络之前都没有谁考虑各通道之间的全局关联信息。所以作者将关注点放到了通道关联信息上,作者发现提取出通道之间互相关联的信息可以有效的增加神经网络的分类准确率。
image图3
如图3所示,就是一个SE block。对于任意给定的变换
(1)
我们可以构造一个对应的SE块来进行特征重新校准。首先通过挤压操作,跨越空间维度WXH产生一个全局描述符,这个全局描述符聚合了所有通道的空间信息,之后再进行激励操作,其中通过基于通道依赖性的门控机制为每个通道学习特定采样的激活,控制每个通道的激励。然后特征映射U被重新加权以生成SE块的输出,再与之前的block结合在一起,就达到了提取通道关联信息的目的。
SE网络可以通过简单地堆叠SE block的集合来生成,也可以用作架构中任意深度的原始块的直接替换。
新CNN架构的开发是一项具有挑战性的工程任务,通常涉及许多新的超参数和网络各层配置的选择。相比之下,上面概述的SE块的设计是简单的,并且可以直接与现有的最新架构一起使用,其卷积层可以通过直接用对应的SE层来替换从而使效果得到加强。另外,SE块在计算上是轻量级的,并且在模型复杂性和计算负担方面仅稍微增加。为了支持这些声明,作者开发了一些SENets,即SE-ResNet,SE-Inception,SE-ResNeXt和SE-Inception-ResNet,并在ImageNet 2012数据集上对SENets进行了广泛的评估。此外,为了证明SE块的一般适用性,作者还呈现了ImageNet之外的结果,这表明作者所提出的方法不受限于特定的数据集或任务。
二、Squeeze-and-Excitation Network
图3所示的Ftr,我们可以将其看做一个普通的卷积层,事实上,在SE-ResNet,SE-Inception中,对应的Ftr分别就是残差块和Inception块。
2.1 Squeeze
Squeeze操作的目的其实就是将空间信息提取出来,为了网络的轻量级,事实上我们还希望能够将信息进行压缩,不要增加过大的时间复杂度和空间复杂度。
因此作者选取了全局平均池化进行Squeeze操作。如图3所示,我们将通过全局平均池化得到的向量设为Z,那么z的第c个元素即可通过公式(2)进行计算:
(2)
这个操作实际上是在得到U之后再进行的全局平均池化。一般CNN的每个通道的滤波器都是对局部感受野进行特征提取,因此U中的每个feature map都无法利用与其他feature map之间的关联关系,而且在较低网络层次上对应到原图尺寸上的感受野相对于较高层数的来说,无疑是很小的,这样空间关联信息的流失就会更加严重。
那么作者提出的这个Squeeze,实际上就相当于将感受野扩展到了全局,自然能够提取的特征就更为丰富,通过训练得到的分类识别的准确率就更高了。
2.2 Excitation
为了利用在上一个操作中得到的全局信息,作者就提出了Excitation这个操作来全面捕获通道相关性。如图4和图5所示,就分别是SE-Inception Module和SE-Inception Module。作者指出我们所需的这个Excitation必须是灵活的同时又要能学习到非互斥的信息。
那么通过观察图4和图5我们也能轻易的得知:
(3)
其中指的是Relu函数,指的是sigmoid函数,r为压缩比例。这实际上就是两个全连接层再加上两个激活层。第一层全连接层的作用就是将global pooling所得到的全局信息进行压缩,作者通过实验发现,压缩比例r=16的时候实验结果最为理想。那么第二层全连接层的作用就是将被压缩的向量进行还原,还原到和global pooling层之后的向量大小一致。然后再将该向量与Ftr得到的三维卷积进行乘运算,实际上该向量中的每个值就与三维卷积中每个通道对应的feature map 相乘,这样每一个feather map就得到了与其他通道的空间关联特征了。
image图4
那么图4和图5中的C指的就是通道的数目,而指的就是这个模块输入的feather map的尺寸大小。而通过图示我们也能清楚的看到SE block可以通用的加在所有的网络结构中从而达到提升性能的作用。
2.3 模型与计算复杂度
SENet通过堆叠一组SE块来构建。实际上,它是通过用原始块的SE对应部分(即SE残差块)替换每个原始块(即残差块)而产生的,作者在表1中描述了SE-ResNet-50和SE-ResNeXt-50的架构。
image图5
表1
image作者通过实验发现,SE block改进resnet-50时,所增加参数量不超过10%,却提升了1.5个百分点的准确率,并且作者后来通过实验发现整体网络最末尾的SE block对效果提升作用很小,去除掉这些block网络的准确率也不过下降0.1个百分点,而增加的额外参数量就减小到4%了。如表2所示,是几个原有的网络结构的top-1和top-5的准确率,original表示的是网络提出者得到的结果,而re-implementation指的是作者复现的结果,而SENet指的是作者运用SENet加强之后得到的结果,很明显有显著的准确率提升。
表2(该表截取自论文)
image同时,作者还提出了一个计算模型复杂度的方法来探究运用了SENet之后,模型的参数量到底增加了多少,很显然准确率增加百分比相同的情况下,参数量增加越少的话,算法性价比越高。
两个全连接层的参数量都是,那么两个全连接层的参数量就是。以resnet为例,假设resnet一共包含了S个stage,其中第s个stage里面包含了个重复的残差块,那么用SENet加强过的resnet所增加的参数量就可以用公式(4)进行计算:
(4)
SENet的结构非常简单,特别容易部署,不需要引入新的函数或者卷积层,并且增加的参数量微乎其微,是一个有效增加神经网络分类准确率的方法。同时,作者通过实验发现,在Faster-rcnn等用于实现目标检测的网络中增加SENet块进行加强,也能得到很好的效果,这进一步证明了SENet网络的通用性。
接下来,作者思考了最后一个问题,增加的SE block添加在原有block中位置的不同会不会影响到实验结果。为此,作者进行了对比试验。
如图6所示, 是原来的残差网络与作者在四个不同位置添加了SE block的四种不同的网络结构,总共是五个不同的网络结构。
image图6
表3
image而表3即是四种不同的SENet结构的错误率对比,我们能够看到SE-PRE结构是其中相对表现最好的,这说明了SE block块所在位置确实会影响到神经网络的整体效果,所以我们在运用SENet时,对于其所添加的位置应该好好斟酌。
三、结论
这篇论文提出了一个名为名为SE block的架构单元,通过使网络能够执行动态的信道特征重新校准来提高网络的表示能力。实验证明了SENets的有效性,它在多个数据集和任务之间实现了最先进的性能。此外,SE块揭示了以前的体系结构无法充分地对通道相关关系建模。并且SE块生成的特征重要度值可以用于其他任务,例如用于模型压缩的网络剪枝。
网友评论