乐趣区

关于算法:ChannelNets-channelwise卷积在channel维度进行卷积滑动-NeurIPS-2018

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 万 (1024×1000-7x7x25) 参数。

Experimental Studies


  在 ILSVRC 2012 进行网络性能比照。

  比照更轻量的网络性能,这里采纳 MobileNet 的 width multiplier 思维缩放每层的维度。

  比照分组 channel-wise 卷积对 ChannelNet 的影响,替换 GCWM 为 GM 模块,思考 GCWM 模块仅减少了 32 个参数,这样的性能晋升是高效的。

Conclustion


  Channel-wise 卷积在 channel 维度上进行滑动,奇妙地解决卷积操作中输入输出的简单全连贯个性,但又不会像分组卷积那样死板,是个很不错的想法。但感觉论文自身的性能还不够最优,论文比照的也只是 MobileNetV1,跟 MobileNetV2 比差了点。



如果本文对你有帮忙,麻烦点个赞或在看呗~
更多内容请关注 微信公众号【晓飞的算法工程笔记】

退出移动版