头图

ChannelNets: channel-wise卷积,在channel维度进行卷积滑动 | NeurIPS 2018

Channel-wise卷积在channel维度上进行滑动,巧妙地解决卷积操作中输入输出的复杂全连接特性,但又不会像分组卷积那样死板,是个很不错的想法

来源:晓飞的算法工程笔记 公众号

论文: ChannelNets: Compact and Efficient Convolutional Neural Networks via Channel-Wise Convolutions

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比差了点。



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

work-life balance.


晓飞的算法工程笔记
业余时间写写文章,更多内容关注公众号 【晓飞的算法工程笔记】~
86 声望
10 粉丝
0 条评论
推荐阅读
OREPA:阿里提出训练也很快的重参数策略,内存减半,速度加倍 | CVPR 2022
论文提出了在线重参数方法OREPA,在训练阶段就能将复杂的结构重参数为单卷积层,从而降低大量训练的耗时。为了实现这一目标,论文用线性缩放层代替了训练时的BN层,保持了优化方向的多样性和特征表达能力。从实验...

VincentLee阅读 520

SegmentFault 思否宣布将接入百度「文心一言」,提升开发者获取知识的效率
作为中国领先的新一代开发者社区,我们以「凝聚集体智慧,推动技术进步」为使命,长期关注前沿技术发展及产业应用。2023 年 2 月 11 日,ChatGPT for SegmentFault 浏览器插件上线,SegmentFault 成为了国内首个...

SegmentFault思否11阅读 3.1k评论 1

数据结构与算法:二分查找
一、常见数据结构简单数据结构(必须理解和掌握)有序数据结构:栈、队列、链表。有序数据结构省空间(储存空间小)无序数据结构:集合、字典、散列表,无序数据结构省时间(读取时间快)复杂数据结构树、 堆图二...

白鲸鱼9阅读 5.3k

对 ChatGPT 做一次技术面试(ChatGPT 没能通过)
问:对一个系统的描述如下:系统中有大量注册用户,用户可以关注其他用户。用户可以发布消息,消息包含发布者、发布时间和可见性。消息的可见性可以是公开、不公开或仅对关注自己的用户可见。请设计这个系统的数...

捏造的信仰7阅读 1.6k评论 1

封面图
openKylin 0.9.5版本正式发布,加速国产操作系统自主创新进程!
2023年1月12日,中国桌面操作系统根社区openKylin(开放麒麟)正式发布openKylin 0.9.5操作系统版本。此版本充分适应5G时代需求,打通平板,PC等设备,实现多端融合,弥补了国产操作系统的短板,有效推动国产操作...

openKylin6阅读 8k

封面图
超详细的ChatGPT注册教程来了
最近一周,大家都在讨论ChatGPT,一些主流的技术社区更是将ChatGPT吹的神乎其技,那ChatGPT是什么呢?又能给我们带来哪些变化呢?。带着这些问题,我打算先注册并使用 ChatGPT,供想要体验 ChatGPT 的小伙伴们参考。

xiangzhihong3阅读 2.8k评论 3

使用 🧨 Diffusers 实现 ControlNet 高速推理
自从 Stable Diffusion 风靡全球以来,人们一直在寻求如何更好地控制生成过程的方法。ControlNet 提供了一个简单的迁移学习方法,能够允许用户在很大程度上自定义生成过程。通过 ControlNet,用户可以轻松地使用...

HuggingFace3阅读 1.2k

封面图
86 声望
10 粉丝
宣传栏