【知识星球】分组卷积最新进展,全自动学习的分组有哪些经典模型?

欢迎大家来到《知识星球》专栏,这里是网络结构1000变小专题,今天介绍最新的分组卷积模型的进展。

作者&编辑 | 言有三

1 CondenseNet

有三AI知识星球-网络结构1000变

CondenseNet

以前我们给大家讲了许多的分组网络,如果分组本身可以学习,而不是通过预先定义的规则,可能取得更好的效果,其中的一个典型代表就是condensenets,这是一个效率更高的模型,它是对densenet的改进。

作者/编辑 言有三

从图中可以看出,它的基本流程是,首先将输出进行分组,图中共12个输入通道,分为3组,每一组两个输出通道。然后通过一个condensing过程去除那些权重小的连接,这是一个剪枝操作。最后在optimization过程中对这些连接的权重进行微调学习。在训练的时候,最后的连接通过学习1*1卷积实现,而测试的时候则将通道进行重排,得到一个标准的分组卷积,这种方法与分组卷积的不同之处就在于通道的分组组合是通过学习而来,而不是按照顺序进行划分。

作者用他们在DenseNet框架上进行实验,只使用了DenseNet1/10的计算量,就取得了相当的性能,之所以能够降低计算量,就是因为对1*1卷积进行了分组学习,3*3卷积则使用标准分组卷积替代。

下面是它在ImageNet分类任务和一些经典模型的对比:

可以看出,CondenseNet的确以较低的计算代价取得了很好的效果。

参考文献

[1] Huang G, Liu S, Van der Maaten L, et al. Condensenet: An efficient densenet using learned group convolutions[C]//Proceedings of the IEEE Conference on Computer Vision and Pattern Recognition. 2018: 2752-2761.

2 FLGC

有三AI知识星球-网络结构1000变

Fully Learnable Group Convolution

通常的分组卷积网络分组是固定的,CondenseNet曾经学习了均匀的分组策略,本文则是完全的end-to-end学习到了更加自由的分组策略,流程也更加简单。

作者/编辑 言有三

该论文解决的是如何学习每一个分组中的通道及其相关的连接。假如一个conv层的输入输出channels个数分别是C和N ,被分成g个groups。

首先我们可以用一个大小为C×G的二值矩阵来表示分组情况,1表示归入某一组,每一个只有一个非零值。

对于卷积核也类似,可以用一个N×G的二值矩阵来表示分组情况。

所以要优化的就是这两个矩阵,为了让网络可以反向传播,实际优化时用softmax操作来替换掉上述的二值操作。

训练完之后,实际使用时,就需要对通道进行重新排列,这可以通过一个index-reordering层来完成。

下面是它在ImageNet分类任务和CASIA人脸识别任务上的实验结果:

可以看出,该方法的策略是有效的。不过该方法策略过于自由,在实际的硬件平台上并不会如此有效。

参考文献

[1] Wang X, Kan M, Shan S, et al. Fully Learnable Group Convolution for Acceleration of Deep Neural Networks[C]//Proceedings of the IEEE Conference on Computer Vision and Pattern Recognition. 2019: 9049-9058.

3 DGC

有三AI知识星球-网络结构1000变

Dynamic Grouping Convolution

通常的分组卷积网络分组数目是固定的,而本文Dynamic Grouping Convolution(DGC)则可以学习到分组的数目。

作者/编辑 言有三

首先我们需要一个二值的矩阵U来表示一个卷积层中输入输出通道之间的连接,一些结构示意图如下:

(a)是正常卷积,输入输出通道之间完全稠密连接;(d)是分组卷积,输入输出通道被分为若干个组,每个组中的通道密集连接;(b)是depth-wise分组卷积,分组数目等于输入输出 通道个数。(c)(e)是学习到的分组卷积,(f)是自由连接。

不过不是每一个二值矩阵都可以表示一个分组卷积,那么矩阵U究竟要满足什么样的条件才能使得所表示的连接是一个分组卷积呢?

作者认为如果矩阵U可以表示为若干个矩阵的Kronecker乘积,那么就能得到分组卷积的结构,这就是需要满足的约束条件。两个矩阵的Kronecker乘积案例如下:

大家可以推一下前面几个连接对应的矩阵,每一个都需要3个2×2的矩阵。

因此我们只需要优化logC (C是channels个数,2为底数)个2×2的矩阵参数,就可以确定分组结构。

下面是使用ImageNet数据集和ResNet的结果,x轴是从输入到输出的通道数,y是分组数,可以发现越高的层分组越大,越低的层分组越小,这有利于增强特征表达能力。

参考文献

[1] Zhaoyang Zhang, Jingyu Li, Wenqi Shao, Zhanglin Peng, Ruimao Zhang, Xiaogang Wang, Ping Luo. "Differentiable Learning-to-Group Channels via Groupable Convolutional Neural Networks" ICCV2019

4 关于有三AI知识星球

有三AI知识星球是我们继公众号之后重点打造的原创知识学习社区,有需要的同学可以阅读下文了解生态。

【杂谈】为什么邀请大家加入硬核知识星球有三AI

(0)

相关推荐