IGC系列网络的核心在分组卷积的极致运用,将常规卷积分解成多个分组卷积,能够减少大量参数,另外互补性原则和排序操作能够在最少的参数量情况下保证分组间的信息流通。但整体而言,虽然使用IGC模块后参数量和计算量降低了,但网络结构变得更为繁琐,可能导致在真实使用时速度变慢
来源:晓飞的算法工程笔记 公众号
IGCV1
论文: Interleaved Group Convolutions for Deep Neural Networks
Introduction
Interleaved group convolution(IGC)模块包含主分组卷积和次分组卷积,分别对主分区和次分区进行特征提取,主分区通过输入特征分组获得,比如将输入特征分为 L L L个分区,每个分区包含 M M M维特征,而对应的次分区则分为 M M M个分区,每个分区包含 L L L维特征。主分组卷积负责对输入特征图进行分组特征提取,而次组卷积负责对主分组卷积的输出进行融合,为 1 × 1 1\times 1 1×1卷积。IGC模块形式上与深度可分离卷积类似,但分组的概念贯穿整个模块,也是节省参数的关键,另外模块内补充了两个排序模块来保证channel间的信息交流。
Interleaved Group Convolutions
IGC模块如图1所示,主卷积对输入进行分组特征提取,然后将主卷积输出的特征进行隔区采样,方便后续的次卷积进行特征融合,将次卷积输出concate起来恢复为采样前的顺序后作为最后的输出。
假设共 L L L个主分区,每个主分区包含 M M M维特征,主分组卷积的操作如公式1所示, z l z_l zl为按卷积核大小抠出来的 ( M S ) (MS) (MS)维特征向量, S S S为卷积核大小, W l l p W^p_{ll} Wllp对应第 l l l分区的卷积核,大小为 M × ( M S ) M\times (MS) M×(MS), x = [ z 1 ⊤ z 2 ⊤ ⋯ z L ⊤ ] ⊤ x=[z^{\top}_1\ z^{\top}_2\ \cdots \ z^{\top}_L]^{\top} x=[z1⊤ z2⊤ ⋯ zL⊤]⊤代表主分组卷积的输入。
将主分组卷积的输出 { y 1 , y 2 , ⋯ , y L } \{y_1, y_2,\cdots ,y_L \} {y1,y2,⋯,yL}重排成 M M M个次分区,每个分区包含 L L L维特征,这样能够保证每个分区都包含来自不同主分区的特征,第 m m m个次分区由于每个主分区的第 m m m维特征组成:
y ˉ m \bar{y}_m yˉm对应第 m m m个次分区, y l m y_{lm} ylm为 y l y_l yl的第 m m m维特征, P P P为排序矩阵,次分组卷积在次分区上进行计算:
W m m d W^d_{mm} Wmmd对应第 m m m个次分区对应的 1 × 1 1\times 1 1×1卷积核,大小为 L × L L\times L L×L,次分组卷积的输出将重排为主分区的顺序, L L L个重排分区 { x 1 ′ , x 2 ′ , ⋯ , x L ′ } \{x^{'}_1, x^{'}_2, \cdots, x^{'}_L \} {x1′,x2′,⋯,xL′}的计算如下:
结合主卷积和次卷积的公式,IGC模块可以总结为:
W p W^p Wp和 W d W^d Wd为分块角对角矩阵,定义 W = P W d P T ⊤ W p W=PW^dPT^{\top}W^p W=PWdPT⊤Wp为混合卷积核,得到:
即IGC模块可以看成是常规卷积,其卷积核为两个稀疏核的积。
Analysis
考虑单像素的输入,IGC模块的参数量为:
G = M L G=ML G=ML为IGC的覆盖的维度数,对于常规卷积,输入输出维度为 C C C,参数量为:
给予相同的参数量, T i g c = T r c = T T_{igc}=T_{rc}=T Tigc=Trc=T,得到 C 2 = 1 S T C^2=\frac{1}{S}T C2=S1T, G 2 = 1 S / L + 1 / M T G^2=\frac{1}{S/L+1/M}T G2=S/L+1/M1T,可以进一步得到:
考虑 S = 3 × 3 S=3\times 3 S=3×3的情况,当 L > 1 L>1 L>1时可得到 G > C G>C G>C,即正常情况下IGC模块可以比常规卷积处理更多的输入维度。
论文研究了分区数 L L L和 M M M对卷积宽度的影响,将公式7进行变换得到:
当 L = M S L=MS L=MS时,公式12取等号,给予一定的参数量,卷积宽度的上界为:
当 L = M S L=MS L=MS时,卷积宽度最大
论文列举了不同设置下的宽度对比,可以看到, L ≃ 9 M L \simeq 9M L≃9M时宽度最大。
固定参数量意味着主分组卷积和次卷积的有效参数固定,当输入的特征维度更多时,卷积核也越大,卷积将变得更加稀疏,这可能导致性能的下降。为此,论文也进行不同配置的性能对比,具体见图3。
Experiment
小型实验的网络结构以及参数量和计算量的对比,注意实现时的结构为IGC+BN+ReLU。
CIFAR-10上的性能对比。
多个数据集上与SOTA的性能对比
Conclusion
IGC模块采用两层分组卷积和排序操作来节省参数量和计算量,结构设计简单巧妙,论文也对IGC进行了充分的推导与分析。需要注意的是,虽然论文从参数量和计算量上得出IGC模块的轻量性,但正如ShuffleNetV2论文提到的,参数量和计算量并不能等同于推理时延。
IGCV2
论文: IGCV2: Interleaved Structured Sparse Convolutional Neural Networks
Introduction
IGCV1通过两个分组卷积来对原卷积进行分解,减少参数且保持完整的信息提取。但作者发现,因为主分组卷积和次分组卷积在分组数上是互补的,导致次卷积的分组数一般较小,每个分组的维度较大,次卷积核较为稠密。为此,IGCV2提出Interleaved Structured Sparse Convolution,使用多个连续的稀疏分组卷积来替换原来的次分组卷积,每个分组卷积的分组数都足够多,保证卷积核的稀疏性。
Interleaved Structured Sparse Convolutions
IGCV2的核心结构如图1所示,使用多个稀疏卷积来替换原本比较稠密的次卷积,可以公式化地表示为:
P l W l P_lW_l PlWl为一个稀疏矩阵,其中 P l P_l Pl来排序矩阵用来重排维度, W l W_l Wl为稀疏的分区矩阵,每个分组的维度均为 K l K_l Kl。
IGCV2在设计的时候有个互补性原则,一个分组卷积的每个分组需要关联另一个分组卷积每个分组,并且仅关联每个分组的一维特征,即分组间有且仅有一条连接,可以看看图1体会一下,核心是排序的方法。根据互补性原则,可以得到输入维度 C C C和每层维度数 K L K_L KL的关系:
另外类似与IGCV1的推导,IGCV2在 L = l o g ( S C ) L=log(SC) L=log(SC)时参数量最少, S S S为卷积核大小,这里按次卷积为 1 × 1 1\times 1 1×1分组卷积计算。
Discussions
论文也对IGCV2的设计进行了讨论:
- Non-structured sparse kernels,不使用稀疏矩阵,使用正则化方法来引导卷积核稀疏化,论文发现这会约束网络的表达能力。
- Complementary condition,互补性原则不是必须的,只是高效设计分组卷积的一条准则,复合卷积可以不将输入输出全连接,设计得更稀疏化。
- Sparse matrix multiplication and low-rank matrix multiplication,低秩矩阵分解是压缩的常用方法,而稀疏矩阵分解还很少研究,下一步可以探讨结合稀疏矩阵分解和低秩矩阵分解来压缩卷积网络。
Experiment
论文对比的网络结构,IGCV2主卷积使用深度卷积。
与类似的网络结构进行对比。
与SOTA网络进行对比。
Conclusion
IGCV2在IGCV1基础上进一步稀疏化,使用多个稀疏卷积代替原本较为稠密的次卷积,论文依然使用充分的推导对IGCV2的原理和超参数进行分析。但也如前面说到的,参数量和计算量并不能等同于推理时延,需要在实际设备上进行对比。
IGCV3
论文: IGCV3: Interleaved Low-Rank Group Convolutions for Efficient Deep Neural Networks
Introduction
基于IGCV和bootleneck的思想,IGCV3结合低秩卷积核和稀疏卷积核来构成稠密卷积核,如图1所示,IGCV3使用低秩稀疏卷积核(bottleneck模块)来扩展和输入分组特征的维度以及降低输出的维度,中间使用深度卷积提取特征,另外引入松弛互补性原则,类似于IGCV2的严格互补性原则,用来应对分组卷积输入输出维度不一样的情况。
Interleaved Low-Rank Group Convolutions
IGCV3主要是对IGCV2的结构进行延伸,引入低秩分组卷积来代替原本的分组卷积,包含分组数为 G 1 G_1 G1低秩pointwise分组卷积、深度卷积、以及分组数为 G 2 G_2 G2低秩pointwise分组卷积,两个低秩分组卷积分别用于扩展特征维度以及恢复特征维度到原始大小,可公式化为:
P 1 P^1 P1和 P 2 P^2 P2为排序矩阵, W 1 W^1 W1为 3 × 3 3\times 3 3×3深度卷积, W ^ 0 \hat{W}^0 W^0和 W 2 W^2 W2为低秩稀疏矩阵,矩阵结构如下:
W ^ j , k g ∈ R C \hat{W}^g_{j,k}\in R^C W^j,kg∈RC包含 C G 1 \frac{C}{G_1} G1C个非零权值,对应首分组卷积的第 g g g个分组里的第 k k k个卷积核,用于扩展维度。 W g 2 W^2_g Wg2为第二个分组卷积(图2的第三个分组卷积)的第 g g g个分组的卷积核,用于缩小维度到原始大小。
由于IGCV3的分组卷积的输入输出维度是不同的,这导致IGCV2提出的互补性原则不能满足(输入输出间存在多条连接路径),排序操作也不能像之前那样使用。为了解决这个问题,论文提出超维(super-channels)的概念,将输入\输出\中间维度分成 C s C_s Cs个超维,输入和输出的超维包含 C C s \frac{C}{C_s} CsC,中间特征的超维包含 C i n t C s \frac{C_{int}}{C_s} CsCint,如图2所示,以超维为单位满足互补性原则,并以此进行排序操作,即松弛互补性原则,定义如下:
Experiment
与前两个版本对比,IGCV3-D的 G 1 G_1 G1和 G 2 G_2 G2分别为1和2。
在ImageNet上与其它网络进行对比。
这里对ReLU的使用进行了实验,主要针对MobileNetV2的ReLU使用方法。
对不同的分组数进行对比。
Conclusion
IGCV3在IGCV2的基础上融合了MobileNetV2的主要结构,并且使用更狠的低秩稀疏分组卷积,在整体结构上和MobileNetV2十分接近,核心依然是在稀疏分组卷积以及排序操作,虽然性能比MobileNetV2有些许提升,但整体的创新性略显不足。
Conclustion
IGC系列网络的核心在分组卷积的极致运用,将常规卷积分解成多个分组卷积,能够减少大量参数,另外互补性原则和排序操作能够在最少的参数量情况下保证分组间的信息流通。但整体而言,虽然使用IGC模块后参数量和计算量降低了,但网络结构变得更为繁琐,可能导致在真实使用时速度变慢。
如果本文对你有帮助,麻烦点个赞或在看呗~
更多内容请关注 微信公众号【晓飞的算法工程笔记】