内容简介:Channel-wise卷积在channel维度上进行滑动,巧妙地解决卷积操作中输入输出的复杂全连接特性,但又不会像分组卷积那样死板,是个很不错的想法来源:晓飞的算法工程笔记 公众号论文: ChannelNets: Compact and Efficient Convolutional Neural Networks via Channel-Wise Convolutions
Channel-wise卷积在channel维度上进行滑动,巧妙地解决卷积操作中输入输出的复杂全连接特性,但又不会像分组卷积那样死板,是个很不错的想法
来源:晓飞的算法工程笔记 公众号
论文: ChannelNets: Compact and Efficient Convolutional Neural Networks via Channel-Wise Convolutions
-
论文地址:https://arxiv.org/abs/1809.01330
-
论文代码:https://github.com/HongyangGao/ChannelNets
Introduction
深度可分离卷积能够减少网络的计算量和参数量,其中point-wise卷积占据了大部分参数量,论文认为网络轻量化的下一个核心在于改变输入到输出的稠密连接方式。为此,论文提出channel-wise卷积的概念,将输入输出的维度连接进行稀疏化而非全连接,区别于分组卷积的严格分组,让卷积在channel维度上进行滑动,能够更好地保留channel间的信息交流。基于channel-wise卷积的思想,论文进一步提出了channel-wise深度可分离卷积,并基于该结构替换网络最后的全连接层+全局池化的操作,搭建了ChannelNets。
Channel-Wise Convolutions and ChannelNets
图a为深度可分离卷积结构,而图b为加入分组后的深度可分离卷积的结构,其中每个点代表一维特征。
Channel-Wise Convolutions
Channel-wise卷积的核心在于输入和输出连接的稀疏化,每个输出仅与部分输入相连,概念上区别于分组卷积,没有对输入进行严格的区分,而是 以一定的stride去采样多个相关输入进行输出(在channel维度滑动) ,能够降少参数量以及保证channel间一定程度的信息流。假设卷积核大小为,输出大小维度为,输入特征图大小为,普通卷积的参数量为,计算量为,而channel-wise卷积的参数量为,一般为远小于的数,代表一次采样的输入维度,计算量为,参数量和计算量都脱离于输入特征的维度。
Group Channel-Wise Convolutions
分组卷积的分组思想会导致channel间的信息阻隔,为了增加分组间的channel信息交流,一般需要在后面添加一个融合层,继续保持分组的同时整合所有组的特征。论文使用分组channel-wise卷积层作为融合层,包含个channel-wise卷积。定义输入特征维度,分组数,每个channel-wise卷积的stride为(这里指channel上滑动的步幅),输出特征图(滑动次)。为了保证每个分组的输出涵盖了所有的输入,需要满足,最后将所有的输出concate起来,结构如图c所示。
Depth-Wise Separable Channel-Wise Convolutions
深度可分离channel-wise卷积在深度卷积后面接一个channel-wise卷积用以融合特征来降低参数量和计算量,结构如图d所示。图中的channel-wise卷积的stride为1,为3,在进行特征融合的同时能够降低参数量。
Convolutional Classification Layer
一般网络最后都使用全局池化和全连接层进行最后的分类,但是这样的组合的参数量十分巨大。全局池化+全连接层的组合实际可以转换成深度可分离卷积,使用固定权重的深度卷积代替全局池化,pointwise卷积代替全连接层。因此,可以进一步使用上述的深度可分离channel-wise卷积来进行优化,而这里由于池化和全连接之间没有使用激活函数或BN等操作,采用常规的三维卷积进行实现更高效。
假设输入特征图为,类别数为,深度卷积或全局池化可以认为是卷积核大小为,权重固定为的三维卷积,而channel-wise可认为是卷积核大小为的三维卷积,两者可以合并成一个卷积核大小为的三维卷积。为了符合类别数量,,即每个类别的预测仅需要使用个输入特征图。
论文可视化了全连接分类层的权重,蓝色是代表为0或接近0的权重,可以看到全连接分类层的权重实际非常稀疏,即本身也只使用到部分输入,所以这里使用部分输入特征也是合理的。
ChannelNets
ChannelNet根据MobileNet的基础结构进行构建,设计了图3的分组模块(GM)和分组channel-wise模块(GCWM)。由于GM模块存在信息阻隔的问题,所以在GM模块前面使用GCWM来生成包含全局信息的分组特征。
ChannelNet包含3个版本:
-
ChannelNet-v1替换了部分深度可分离卷积为GM和GCWM,分组数为2,共包含约370万参数。
-
ChannelNet-v2替换最后的深度可分离卷积为深度可分离channel-wise卷积,大约节省100万参数,占ChannelNet-v1的25%参数。
-
ChannelNet-v3替换最后的池化层加全连接层为上述的Convolutional Classification Layer,大约节省了100万(1024x1000-7x7x25)参数。
Experimental Studies
在ILSVRC 2012进行网络性能对比。
对比更轻量的网络性能,这里采用MobileNet的width multiplier思想缩放每层的维度。
对比分组channel-wise卷积对ChannelNet的影响,替换GCWM为GM模块,考虑GCWM模块仅增加了32个参数,这样的性能提升是高效的。
Conclustion
Channel-wise卷积在channel维度上进行滑动,巧妙地解决卷积操作中输入输出的复杂全连接特性,但又不会像分组卷积那样死板,是个很不错的想法。但感觉论文本身的性能还不够最优,论文对比的也只是MobileNetV1,跟MobileNetV2比差了点。
如果本文对你有帮助,麻烦点个赞或在看呗~
更多内容请关注 微信公众号【晓飞的算法工程笔记】
以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网
猜你喜欢:本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
逆向工程权威指南
Dennis Yurichev(丹尼斯) / 安天安全研究与应急处理中心 / 人民邮电出版社 / 2017-3-1 / 168
逆向工程是一种分析目标系统的过程,旨在于识别系统的各组件以及组件间关系,以便于通过其它形式、或在较高的抽象层次上,重建系统的表征。 本书专注于软件的逆向工程,是写给初学者的一本经典指南。全书共分为12个部分,共102章,涉及X86/X64、ARM/ARM-64、MIPS、Java/JVM等重要话题,详细解析了Oracle RDBMS、Itanium、软件狗、LD_PRELOAD、栈溢出、EL......一起来看看 《逆向工程权威指南》 这本书的介绍吧!