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间肯定水平的信息流。假如卷积核大小为$d_k$,输入大小维度为$n$,输出特色图大小为$d_f\times d_f$,一般卷积的参数量为$m\times d_k\times d_k\times n$,计算量为$m\times d_k\times d_k\times d_f\times d_f\times d_f\times n$,而channel-wise卷积的参数量为$d_c\times d_k\times d_k$,$d_c$个别为远小于$m$的数,代表一次采样的输出维度,计算量为$d_c\times d_k\times d_k\times d_f\times d_f\times n$,参数量和计算量都脱离于输出特色的维度$m$。
Group Channel-Wise Convolutions
分组卷积的分组思维会导致channel间的信息阻隔,为了减少分组间的channel信息交换,个别须要在前面增加一个交融层,持续放弃分组的同时整合所有组的特色。论文应用分组channel-wise卷积层作为交融层,蕴含$g$个channel-wise卷积。定义输出特色维度$n$,分组数$g$,每个channel-wise卷积的stride为$g$(这里指channel上滑动的步幅),输入$n/g$特色图(滑动$n/g$次)。为了保障每个分组的输入涵盖了所有的输出,须要满足$d_c \ge g$,最初将所有的输入concate起来,构造如图c所示。
Depth-Wise Separable Channel-Wise Convolutions
深度可拆散channel-wise卷积在深度卷积前面接一个channel-wise卷积用以交融特色来升高参数量和计算量,构造如图d所示。图中的channel-wise卷积的stride为1,$d_c$为3,在进行特色交融的同时可能升高参数量。
Convolutional Classification Layer
个别网络最初都应用全局池化和全连贯层进行最初的分类,然而这样的组合的参数量非常微小。全局池化+全连贯层的组合理论能够转换成深度可拆散卷积,应用固定权重的深度卷积代替全局池化,pointwise卷积代替全连贯层。因而,能够进一步应用上述的深度可拆散channel-wise卷积来进行优化,而这里因为池化和全连贯之间没有应用激活函数或BN等操作,采纳惯例的三维卷积进行实现更高效。
假如输出特色图为$m\times d_f\times d_f$,类别数为$n$,深度卷积或全局池化能够认为是卷积核大小为$d_f\times d_f\times 1$,权重固定为$1/d^2_f$的三维卷积,而channel-wise可认为是卷积核大小为$1\times 1\times d_c$的三维卷积,两者能够合并成一个卷积核大小为$d_f\times d_f\times d_c$的三维卷积。为了合乎类别数量,$d_c=m-n+1$,即每个类别的预测仅须要应用$(m-n+1)$个输出特色图。
论文可视化了全连贯分类层的权重,蓝色是代表为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比差了点。
如果本文对你有帮忙,麻烦点个赞或在看呗~
更多内容请关注 微信公众号【晓飞的算法工程笔记】