轻量级网络IGCNets--对组卷积的运用

IGCNet v1

论文地址:2017.07

《Interleaved Group Convolutions for Deep Neural Networks》

IGC(Interleaved Group Convolutions):交错分组卷积

前言

随着卷积神经网络的不断发展,越来越多的网络结构不断出现,例如MobileNet、shuffleNet等,这些网络结构都是为了进一步提升模型的效果;

那么如何提高网络分类的精度呢?

  1. 提升网络的深度与宽度,即增加网络层数、增加输入输出的特征层通道数;
  2. 减少网络存在的冗余性,即很多模型存在的问题:卷积核冗余;

提升网络的深度与宽度:

随着网络模型的加深和更宽之后,计算量和参数量来会越来越多,而在实际的应用中,考虑更多的是如何可以应用一个小的模型就可以达到好的分类效果;然而应用中会发现训练上的问题:例如过拟合、梯度消失、梯度爆炸等,这些现象会使得后面的信息不能很好的反馈到前面。由此出现了ResNet的shortcut连接、GoogLeNet的Inception模块等等,可以参考我之前的一些博文;

减少网络冗余:

神经网络中用的最多的操作是卷积,即把输入设定为矩阵向量,卷积相当于输入矩阵与卷积核矩阵相乘,一种减少冗余的操作是采用核(kernels)操作,将高维度特征用低维度数据映射,来解决部分线性不可分问题,同时保持在低维度进行运算,从而提高效率;一种用二值化,把矩阵的相乘变成矩阵相加减运算,或者将其变成整型,通过一些量化的方式将一些相互接近的值采用同一个值来表示;另外一种就是把矩阵行或列减少,减少输入的channel;还有一种是把这个channel变成一个稀疏(sparse)的矩阵,那么计算量和参数量就会随之减少;

对于传统的卷积,假设输入通道数是8个, 然后输出通道数是8个,假若卷积为3x3,那么计算复杂度为8x3x3x8;

对于分组卷积,假设分组卷积会将输入分为两组,对每一组分别做卷积,那么每一组的算复杂度为4x3x3x4,总的算复杂度为2x(4x3x3x4)=8x3x3x4;

这样计算量和参数量就减少了,但是带来的问题是两组之间没有特征相融,所以需要考虑将特征融合加入进去,希望第一个分组卷积不同组的通道数可以在第二个分组卷积融合在一组,这样对于每一个输出通道与所有的输入通道都是相连的;如果将传统的卷积替换为IGC的话,就可以获得相当于传统卷积一半的参数量和计算量,以得到更高精度结果。

IGC(Interleaved Group Convolutions):交错分组卷积

交错组卷积的结构如上图所示,包括一个主组卷积和一个次组卷积;

主组卷积将输入特征分成L个组,每组包含M个特征通道,进行分组特征提取,主分组卷积的输入来自于直接分割图像的通道,如上图绿和黄两个主分区:L=2,M=3;

次组卷积则负责对主组卷积不同组的输出进行融合,将特征看作包含L个通道的M个组,每个组内的每一通道特征来自主组卷积的不同组,如上图主分区又依照通道数分三个次分区,每个次分区融合有主组卷积两个主分区的特征;

主组卷积相当于标准的分组卷积,沿通道分成L组,每个组内包括M个特征通道,使用卷积核进行空间卷积;

次组卷积相当于经过通道打乱的组卷积,沿通道分成M组,每个组内包括L个特征通道,为了把主组卷积结果的不同通道混合,使用1*1的卷积核进行逐点卷积,最后再恢复打乱的通道顺序,卷积完全是空间域的;

次组卷积前后使用了两个排序模块(permutation),相当于通道打乱操作及其逆操作,如上图所示,第一次为打乱通道,第二次为重新排序,即逆操作。

当L=2,M=3的IGC:

structured sparse(结构化稀疏)

常规卷积矩阵: 

假设把输入输出设定为矩阵向量,则输出矩阵向量等于输入矩阵与卷积核矩阵相乘

二值化卷积矩阵:

把矩阵的相乘变成矩阵相加减运算以减少计算复杂度

 integer(整数):

将卷积矩阵中的参数变成整数

量化:

将一些接近的值用相同的值表示

Fiter pruning:

减少卷积矩阵的行

Channel pruning:

减少卷积矩阵的列

 非结构化稀疏:

将一些参数化为0以减少计算量

结构化稀疏:

变成对角矩阵以优化计算

IGCNet v1就是使用的结构化稀疏的思想,将一个传统的卷积矩阵转化成一个稀疏的对角矩阵,以减少计算量与参数量,

主组卷积(Primary group convolutions)

假设共L个主分区,每个主分区包含有M维特征,主分组卷积的操作如下公式所示,W_{ll}^{p}对应第l分区的卷积核,x=[z{_{1}^{T}}, z_{2}^{T}, ..., z_{l}^{T}]代表主分组卷积的输入:

即对每一主分区的特征做不同的卷积处理:

在这里插入图片描述

 

次组卷积(Secondary group convolutions)

将主分组卷积的输出y_{1}, y_{2}, ..., y_{l}重新排成M个次分区,每个次分区包含L维特征,这样可以保证每个分区都包含来自不同主分区的特征,其中第m个次分区由每个主分区的第m维特征组成:
 

 

\overline{y_{m}}对应第m个次分区,\overline{y_{lm}}y_{l}的第m维特征,P为排序矩阵

次分组卷积在次分区上进行计算公式如下:

W_{mm}^{d}对应第m个次分区对应的1*1卷积核,矩阵大小为L*L,次组卷积的输出将重新排列为主分区的顺序

L个重排分区x_{1}^{'}, x_{2}^{'}, ..., x_{l}^{'}的计算公式如下:

IGC模块

结合主卷积和次卷积的公式,IGC模块可以总结为: 

 

W^{d}W^{p}为分块角对角矩阵,定义W=PW^{d}P^{T}W^{p}为混合卷积核,得到:

即IGC可以看成是常规卷积,其卷积核为两个稀疏核的积。

参数量固定意味着主分组卷积和次卷积的有效参数固定,当输入的特征维度更多时,卷积核也越大,卷积矩阵将变得更加稀疏,这可能导致性能的下降;

网络宽度

假设S为卷积核大小,

考虑单像素的输入,IGC模块的参数量为:

G=ML为IGC的输入输出维度 

对于常规卷积,输入输出维度为C,参数量为:

 

在相同计算量的情况下,即T_{igc}=T_{rc}=T,可以得到:

G^{2}=\frac{T}{\frac{S}{L}+\frac{1}{M}}C^{2}=\frac{T}{S}

所以:

假设S=3,M>=1,当L>1时,可以得到G>C,即正常情况下IGC模块与常规卷积的宽度更宽 

将公式7进行变换得到:

当L=MS时,公式12取等号,若参数量一定,卷积宽度的上界为:

所以当L=MS时,IGC的宽度最大 

下表为不同宽度的对比:

可以看到,当L\approx 9*M时宽度最大

然而通道数并不是越大越好,在参数量与FLOPs固定时,实验表明,当M=2(即每个主分区有两个通道)时模型表现最好:

网络结构

交错组卷积IGC采用IGC+BN+ReLU的设置:

不同深度时使用不同卷积的参数量与FLOPs: 

实验结果如下,当设置L=24,M=2时模型表现最好:

多个数据集上与SOTA的性能对比:

实验

IGC与常规卷积的对比:

可以看到,使用IGC模块的分类准确率有所提升,参数量与运算FLOPs有所下降

IGC模块代替常规卷积后与常规ResNet在ImageNet分类的对比:

可以看到效果有所提升

与小模型的对比:

特殊情况

Xception是IGC的一种特殊情况M=1,如下图,假设输入通道为7,主组分区L=7,每个主组分区M=1,通过1*1卷积得到输出特征,然后拼接在经过3*3卷积输出,xception与之相似;

当主组分区L=1时,此时IGC模块相当于普通常规卷积,而次组分区相当于为每个通道分配权重。

总结

主组卷与次组卷积次序可以交换,并不影响结果;

可以将3x3卷积分解成3x1和1x3,更加提高效率;

次组卷积是完成通道分配任务,可以用线性映射或者普通空间卷积代替;

 IGC模块采用两层分组卷积和排序操作来节省参数量和计算量,结构设计简单巧妙,但使用FLOPs作为参考,实际应用起来效果可能不好。

IGCNet v2

论文地址:2018.04

《Interleaved Structured Sparse Convolutions Neural Networks》

IGCNet v1通过两个组卷积来对原卷积进行分解,减少参数且保持完整的信息提取,但作者发现,因为主组卷积和次组卷积在分组数上是互补的,导致次卷积的分组数一般较小,每个分组的维度较大,次卷积核较为稠密;为此,IGCV2提出Interleaved Structured Sparse Convolution,使用多个连续的稀疏分组卷积来替换原来的次分组卷积,每个分组卷积的分组数都足够多,保证卷积核的稀疏性;

创新点

IGCNet v2的主要创新点也就是在IGCNet v1的基础上,对于block里第二次组卷积再进行一次IGC:

IGCV1:

IGCV2在次组分区再进行一次IGC: 

具体实现:结构:

Interleaved Structured Sparse Convolutions 

使用多个稀疏卷积来替换原本比较稠密的次卷积,结构如下:

公式化如下:

P_{l}W_{l}为一个稀疏矩阵,其中P_{l}为排序矩阵用来重排维度,W_{l}为稀疏的分区矩阵

互补性原则

一个分组卷积的每个分组需要关联另一个分组卷积每个分组,并且仅关联每个分组的一维特征,即分组间有且仅有一条连接;输入维度C和每层维度数K_{l}的关系:

网络结构 

网络结构对比,其中IGCV2主卷积使用深度卷积:

 实验

与类似的网络结构进行对比:

与SOTA网络进行对比: 

与MobileNetV1的对比,1x1的普通卷积替换成了1x1的交错组卷积: 

结果如下,参数量没怎么减少,准确率在通道数为1.0的时候只有略微提升,不过通道数少(0.5、0.25)的时候提升还是比较明显: 

总结

在V1的基础上进一步稀疏化,使用多个稀疏卷积代替原本较为稠密的次卷积;

使用低秩矩阵分解是网络压缩的常用方法,而稀疏矩阵分解还很少研究,下一步可以探讨结合稀疏矩阵分解和低秩矩阵分解来压缩卷积网络。

IGCNet v3

论文地址:2018.06

《IGCV3: Interleaved Low-Rank Group Convolutions for Efficient Deep Neural Networks》

创新点

IGCV3的主要创新点就是先用1x1Group Pointwise Covolution升维,再用3x3的分组卷积,再通过1x1Group Pointwise Covolution; 

基于IGC和bneck的思想,IGCV3结合低秩卷积核和稀疏卷积核来构成稠密卷积核,IGCV3使用低秩稀疏卷积核(bneck模块)来扩展输入分组特征的维度以及降低输出的维度,中间使用深度卷积提取特征,另外引入松弛互补性原则,类似于IGCV2的严格互补性原则,用来应对分组卷积输入输出维度不一样的情况;

Interleaved Low-Rank Group Convolutions  

IGCV3对IGCV2的结构进行延伸,引入低秩分组卷积来代替原本的分组卷积,包含分组数为G_{1}低秩pointwise分组卷积、深度卷积、以及分组数为G_{2}低秩pointwise分组卷积,两个低秩分组卷积分别用于扩展特征维度以及恢复特征维度到原始大小,可公式化为:

P^{1}P^{2}为排序矩阵,W^{1}为3×3深度卷积,W^{2}\hat{W^{0}}为低秩稀疏矩阵:

由于IGCV3的分组卷积的输入输出维度是不同的,这导致IGCV2提出的互补性原则不能满足(即输入输出间存在多条连接路径),排序操作也不能像之前那样使用;

松弛互补性原则

为解决上述问题,论文提出超维(super-channels)的概念,将输入\输出\中间维度分成C_{s}个超维,输入和输出的超维包含\frac{C}{C_{s}},中间特征的超维包含\frac{C_{int}}{C_{s}},如下图所示,以超维为单位满足互补性原则,并以此进行排序操作,即松弛互补性原则;

网络结构

实验 

与MobileNetV2的对比,1x1卷积改成了1x1的组卷积:

 

 结果如下图,参数量与FLOPs有所增加,准确率有所增加:

IGCV1、IGCV2、IGCV3的对比: 

在ImageNet上与其它网络进行对比:

对MobileNetV2的ReLU使用进行实验:

对不同的分组数进行对比:

总结 

使用低秩稀疏分组卷积以及排序操作,性能比MobileNetV2有些许提升;

分组卷积的极致运用,但总体结构与MobileNetV2比较相似。

参考

IGCNet:交错组卷积网络 

IGC系列:全分组卷积网络,分组卷积极致使用 | 轻量级网络 

哔哩哔哩:CVPR 2018中国论文分享会

仅为学习记录,侵删! 

  • 1
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

胖虎记录学习

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值