BSConv:重新思考深度可分离卷积
BSConv:重新思考深度可分离卷积
Rethinking Depthwise Separable Convolutions: How Intra-Kernel Correlations Lead to Improved MobileNets
重新思考深度可分离卷积:核内相关性如何导致改进的MobileNets
https://arxiv.org/abs/2003.13549
https://github.com/zeiss-microscopy/BSConv
CVPR 2020
Abstract
我们引入了蓝图可分离卷积(blueprint separable convolutions BSConv)作为 CNN 的高效构建块。他们的动机是来自训练模型的核属性的定量分析,这些分析显示了沿深度轴的相关性占主导地位。基于我们的发现,我们制定了一个理论基础,从中我们仅使用标准层得出有效的实现。此外,我们的方法为深度可分离卷积(depthwise separable convoluions DSC)的应用提供了全面的理论推导、解释和论证,DSC已成为许多现代网络架构的基础。最终,我们发现基于DSC的架构(如MobileNets)隐含地依赖于跨内核相关性,而我们的BSConv公式则基于内核相关性,因此可以更有效地分离常规卷积。对大规模和细粒度分类数据集的大量实验表明,BSConvs 清晰且一致地改进了 MobileNets 和其他基于 DSC 的架构,而不会引入任何进一步的复杂性。对于细粒度数据集,我们实现了高达 13.7 个百分点的改进。此外,如果用作 ResNets 等标准架构的直接替代品,BSConv 变体在 ImageNet 上的表现也比原版同类产品高出 9.5 个百分点。代码和模型可在 https://github.com/zeiss-microscopy/BSConv 下使用。
1. 引言
提高模型效率:基于深度可分离卷积(DSC),即通过利用滤波器权重的冗余来驱动的构建块。


图1:引入了蓝图可分离卷积(BSConv)作为 CNN 的高效构建块,BSConv 利用了 CNN 内核沿其深度轴的相关性。因此,BSConv 使用一个 2D 蓝图内核来表示每个过滤器内核,该内核使用权重向量沿深度轴分布。

图2:在 ImageNet 上训练的香草 VGG-19、Inception v2 和 ResNet-50 CNN 的过滤器权重示例。对于三种CNN架构中的每一个,都会可视化一个大小 \(M\times K\times K = 128\times 3\times 3\) 的过滤器内核,将其拆分为128个图像。每个过滤器内核的权重沿深度轴高度相关。具体来说,大多数切片都显示相同的特定于过滤器 \(3\times 3\) 的 “蓝图”。只是按不同的因素(包括导致蓝图“反转”版本的负面因素)进行缩放。虽然每个内核只突出显示了三个切片,但对于更多的切片(ResNet-50 示例为 52/128)可见相关性。这一观察结果是我们提出蓝图可分离卷积 (BSConv) 的动机,它本质上表示一个大小 \(M\times K\times K\) 的过滤器内核。使用一个大小 \(K\times K\) 的蓝图核和一组用于在深度轴上分布的蓝图的 \(M\) 乘法因子。
2. 相关工作
提高CNN的效率
-
模型修剪:
-
量化和压缩技术
-
研究效率驱动的CNN架构
3. 蓝图可分离卷积(Blueprint Separable Convlotions BSConv)
在标准 CNN 中
- 输入张量 U :\(M\times Y\times X\)
- 输出张量 V : \(N\times Y\times X\)
- 卷积核 \(F^{(1)},\cdots,F^{(N)}\) : \(M\times K\times K\)
3.1 标准CNN中的内核相关性

图3:沿过滤器内核深度轴的方差直方图,每个过滤器仅使用一个主成分分析(principal component)即可解释。过滤器按卷积阶段分组(阶段1:蓝色;阶段2:橙色;阶段3:绿色;阶段4:红色)。这些定量结果表明,很大一部分CNN过滤器可以用我们的BSConv公式来表示。此图最好以彩色观看。
在本文中,我们重点关注核内相关性及其在设计参数和时间效率 CNN 方面的潜力。图 2 显示了在 ImageNet 数据集上训练的三个已建立的 CNN 架构的示例性过滤器内核,即 VGG-19、Inception v2和 ResNet-50。从这些可视化中可以看出,沿深度轴存在核内相关性。具体来说,对于过滤器 \(F^{(n)}\) 来说,它的切片 \(F^{(n)}_{1,:,:},\cdots,F^{(n)}_{M,:,:}\) 通常显示相同的过滤器特定的 \(K\times K\) “蓝图”,只是由不同的因素(包括导致蓝图反转版本的负面因素)进行缩放。
虽然图2仅显示了过滤器内核的一小部分,但所描述的基于蓝图的过滤器切片的属性绝不例外。根据我们的观察,它在不同的CNN架构、训练设置和数据集中始终如一地发生。为了系统地量化过滤器内核在多大程序上表现处这种行为,我们通过以下方式分析了几个经过训练的CNN:对于CNN的每个单独过滤器,我们
- 将 \(M\times K\times K\) 内核拆分为 \(M\) 个 \(K\times K\) 的样本,
- 对 \(M\) 样本集进行主成分分析(principal component analusis PCA)
- 确定过滤器内核的方差,由第一个主成分(PC1)解释
使用这种方法,我们可以量化每个过滤器通过特定于过滤器的 \(K\times K\) 蓝图(在本例中对应于 PC1)和 \(M\) 因子(在本例中是通过 PCA 获得的分数)表示的程度。我们将这些单个值聚合为直方图,如图三所示,用于图2中使用的相同普通CNN。可以看出,平均而言,每个过滤器内核的方差中约有 50% 可以用这个简单的模型来解释,这表示效率提高的潜力很大。
3.2 从相关性到 BSConv


第3.1节中分析表明,对于经过训练的普通 CNN,每个 \(M\times K\times K\) 过滤器都可以使用 \(K\times K\) 蓝图和 \(M\) 沿深度维度分布蓝图的因子近似。尽管它绝不是在训练期间强制执行的,但这种近似值解释了观察到的方差的很大一部分。这一发现是引入蓝图可分离卷积(BSConv)的动机。它们的定义方式是,上述近似值变成CNN过滤器的积分属性。
-
过滤器内核 \(F^{n}\)
-
蓝图 \(B^{(n)}\) : 一个卷积核
-
**权重 \(w_{n,1},\cdots,w_{n,M} \in \mathbb{R}\) :一维卷积, **
-
\(m\in \{1,\cdots,M\}\ and\ n\in \{1,\cdots,N\}\)
虽然这个定义对过滤器内核构成硬约束,但在第5节中,我们通过实验表明,与普通卷积相比,使用 BSConv 训练的 CNN 可以达到相同甚至更好的质量。然而,与具有 \(M\cdot N\cdot K^2\) 自由参数的标准卷积层相比,BSConv 变体只有 \(N\cdot K^2\) 蓝图参数和 \(M\cdot N\) 权重参数。如下所述,后者可以进一步减少。
3.3 变体和实现
BSConv模块由 \(N\) 个过滤器组成,每个过滤器都有一个蓝图和 \(M\) 权重。所有 \(M\cdot N\) 权重都可以组合到矩阵 \(W=(w_{n,m})\) 中。根据训练步骤中的学习方式 \(W\),可以派生出不同的 BSConv 变体。在下文中,描述了两种变体。
3.3.1 不受约束的BSConv(Unconstrained BSConv BSConv-U)

图4:用于有效实现不同 BSConv 变体的计算图

在最一般的情况下,权重 \(W\) 可以在没有任何约束的情况下变化,并且可以通过反向传播直接学习,就像蓝图过滤器内核的条目一样。
如图1所示,一个朴素的实现是通过从每个蓝图构建一个完整的内核,然后执行常规卷积。为了获得更有效的 CNN 实现,我们可以用以下方式重写公式1:首先,由于输入数据张量 \(U\) 和过滤器核 \(F^{(1),\cdots,F^{(N)}}\) 在深度维度上具有相同的大小 \(M\) ,我们可以将每个 \(3D\) 卷积拆分为 \(M\) 个 \(2D\) 卷积的总和,从而得到:
其次,我们可以用公式2中给出的 BSConv 表示替换每个过滤器,并得到
因为
- 每个蓝图过滤器 \(B^{(n)}\) 都独立于输入通道 \(m\)
- \(w_{n,m}\) 是一个标量,
我们可以将上面的方程重新排列为
进一步排列 \(w_{n,1},\cdots,w_{n,m}\) 成一个 \(M\times 1\times 1\) 数组 \(\widetilde{w}\) ,总和可以被卷积代替:
对于具体的实现,方程6和方程7可以直接转换成两个张量运算
- 使用内核 \(\widetilde{w}_1,\cdots,\widetilde{w}_{N}\) 对输出数据张量 \(U\) 执行的 \(1\times 1\) 的逐点卷积
- 使用内核 \(B^{(1)},\cdots,B^{(N)}\) 进行 \(K\times K\) 的深度卷积
3.3.2 Subspace BSConv(BSConv-S)
在分析 BSConv-U 中的权重矩阵 \(W\) (逐点卷积)时,我们观察到的 \(W\) 的行通常高度相关。这一事实进一步表明了正则化和参数减少的潜力。
具体来说,我们通过将 \(W\) 分解为 \(N\times M'\) 阶矩阵 \(W^{A}=(W^{A}_{n,m^{'}})\) 和 \(M'\times M\) 阶矩阵 \(W^B=(W^B_{m',m})\) 来进行低秩近似。
- \(M'=[p\cdot M]\)
- \(p\in (0.0,1.0)\) : 指定子空间 \(M'\) 的大小相对于原始空间的大小 \(M\) 的比例
- \(W^B\) : 一组 \(M'\) 个基向量
- \(W^A\) : \(W\) 的子空间版本(subspace version)
- 这种方法将参数量减少到 \(N \cdot M' + M'\cdot M\)
为了最小化低秩子空间的冗余,我们希望定义的 \(W^B\) 是正交的。这可以通过正则化损失来实现
- \(I\) : 单位矩阵
- \(||\ ||_F\) : 矩阵的 Frobenius 范数
- 将正则化损失与加权因子 \(\alpha\) 一起添加到分类损失 \(L_{class}\) 中,\(L=L_{class}+\alpha L_{artho}\)



BSConv-S的具体实现是一个三步过程:
- 通过 \(1\times 1\) 逐点卷积将输入张量投影到 \(M'\) 一维子空间 \(\widetilde{w}^B_1,\cdots,\widetilde{w}^B_{m'}\) 中
- 通过卷积核 \(\widetilde{w}^A_1,\cdots,\widetilde{w}^A_{N}\) 进行 \(1\times 1\) 逐点卷积得到 BSConv-U 的第一步结果
- 通过卷积核 \(B^{(1)},\cdots,B^{(N)}\) 进行 \(K\times K\) 卷积得到 BSConv-U 的第二步结果
4. 重新思考深度可分离卷积
4.1 BSConv-U 是一个反向深度可分离卷积
DSC 实际上强制执行跨内核关联,而不是内核内关联。
虽然跨核相关性和核内相关性都是有效的假设,但在[7]中表明后者占主导地位,因此具有更大的有效分离潜力。鉴于自然图像沿深度轴固有地相关,这一点变得更加明显,深度轴传播到所有图层。

图5:DSC 和 BSConv 的解释。DSC 隐式假设一个用于所有内核的 3D 蓝图,而 BSConv 依赖于每个内核的单独 2D 蓝图。
根据我们的推导,对于 MobileNetV1 的 BSConv-U 版本,在逐点卷积之后不应用激活或归一化,因为必须允许权重 \(w_{n,m}\) 为负数。

我们的方法为**深度可分离卷积(depthwise separable convoluions DSC)**的应用提供了全面的理论推导、解释和论证,DSC已成为许多现代网络架构的基础。最终,我们发现**基于DSC的架构(如MobileNets)隐含地依赖于跨内核相关性,而我们的BSConv公式则基于内核相关性,因此可以更有效地分离常规卷积**。对大规模和细粒度分类数据集的大量实验表明,BSConvs 清晰且一致地改进了 MobileNets 和其他基于 DSC 的架构,而不会引入任何进一步的复杂性。对于细粒度数据集,我们实现了高达 13.7 个百分点的改进。此外,如果用作 ResNets 等标准架构的直接替代品,BSConv 变体在 ImageNet 上的表现也比原版同类产品高出 9.5 个百分点。代码和模型可在 https://github.com/zeiss-microscopy/BSConv 下使用。
浙公网安备 33010602011771号