Multi-Dimensional Pruning[译]

多维剪枝---一个统一的模型压缩框架

摘要 

在这项工作中,我们提出了一个统一的模型压缩框架,称为多维修剪(MDP),以同时压缩多维度上的卷积神经网络(CNNs)。 现有的模型压缩方法仅旨在减少空间(/时空)维度(如对2D CNNs的空间维度和对3D CNNs的时间和空间维度)或者channel维度的冗余相比,我们提出的方法可以同时减少CNNs的空间/时空和通道冗余。具体来说,为了减少沿时空维度的冗余,我们对卷积层的输入张量进行了降采样,其中通过我们的方法自适应地选择了降采样操作的尺度因子。卷积操作完成后,将输出张量上采样到原始大小,以确保后续CNN层的输入大小不变。为了减少通道冗余,我们为输出张量的每个信道引入一个门作为其重要性分数,其中门的值(gate value)会被自动学习。经过模型压缩过程后,将删除重要性分数较小的通道。我们在四个基准数据集上的综合实验表明,我们的MDP框架在修剪2DCNNs和3DCNNs时都优于现有的方法。

1.引言

 CNNs的时空维度(即二维CNNs的空间维度,三维CNNs的空间维度)存在大量冗余,现有的通道剪枝方法没有考虑到这一点。

图1(a)显示了C3D模型中第一卷积层的输出张量生成的四个连续帧的输出特征图。该图显示了一个人正在潜水的场景,每帧的空间分辨率为112×112。从图1(a)中,我们注意到背景(蓝色部分)的信息最少,人(红色部分)在四帧中基本相同,这表明cnn的冗余也存在于空间和时间维度上。我们在空间和时间维度上对这个输出张量进行降采样。如图1(b)所示,降采样后,每一帧的空间分辨率减半(即从112×112到56×56),将连续4帧减少到两帧。图1(b)中的信息几乎与图1(a)中相同,我们仍然可以认识到该人在降采样操作后正在潜水,这表明通过对CNNs中的张量进行降采样,可以以最小的信息损失减少时空冗余(STR)。

 图1:(a)由第一个卷积层的输出张量生成的四个连续坐标系的特征图(插图使用C3D模型[31])。在这些框架中,这个人的手的位置基本上是相同的。(b)降采样张量,其中的信息几乎与原始输出张量相同。

为了减少多维度的冗余,我们可以逐步执行不同的模型压缩算法,首先修剪通道,然后降低STR(时空冗余)。然而,这个解决方案往往是次优的,因为在逐步剪枝过程中并没有很好地探索来自不同剪枝阶段的依赖性。例如,如果我们在第一步修剪通道,然后在下一步减少STR,那么在第一个修剪阶段认为不重要的通道可能会变得重要。但是,我们无法在第二个剪枝阶段恢复这些通道,因为它们在第一阶段已经被移除,这降低了压缩模型的性能。CNN中的不同通道往往关注特征图的不同部分。在降低STR之前,具有详细信息的通道可能比具有总体信息的通道更重要,因为高分辨率特征图中的细节可以为cnn提供丰富的信息。因此,带有总体信息(overall information)的通道将会被删除。降低STR后,特征图的分辨率将降低,这些特征图中的细节将丢失。在这种情况下,与高分辨率的情况相比,细节较少的通道可能会提供更多的信息。因此,我们应该保留这些具有整体信息的通道。

为了解决上述问题,我们提出了一个新的统一框架,称为多维修剪(MDP),以端到端的方式同时减少cnn的空间/时空和channel冗余。具体来说,我们的MDP框架包括三个阶段:搜索阶段、剪枝阶段和微调阶段。在搜索阶段,我们通过将每个卷积层扩展到多个并行分支,构建了一个过参数化的网络,其中不同的分支对应于不同时空分辨率下的信息处理。来自不同分支的信息将根据其重要性分数进行汇总。我们还为每个通道引入了一个门来表明它的重要性。在搜索阶段,我们会自动学习分支机构和通道的重要性分数。在修剪阶段,我们根据分支和通道的重要性分数对其进行修剪。最后对压缩模型进行微调,以从精度下降中恢复。

据我们所知,这是第一个可以同时减少二维CNNs的空间和信道冗余,以及3DCNNs的空间、时间和信道冗余的统一模型压缩框架。与现有的信道剪枝方法[21,38]或其他旨在减少STR[4,33,39]的方法相比,我们的MDP框架有几个优点:(1)MDP框架是一个统一的模型压缩框架,适用于二维网络和三维网络网络。(2)在搜索阶段可以自动学习多个维度的选定特征(即时空维度的选定分支和信道维度的选定通道)的最优组合,从而解决依次使用不同模型压缩算法的替代方法中的次优问题。

在四个基准数据集上的实验证明了我们提出的MDP框架对图像分类和视频分类任务的有效性。

2. 相关工作

Spatial/spatial-temporal redundancy reduction.(时空冗余减少)

近年来,很多工作在设计CNN结构时减少空间冗余。例如,Chen等人[4]提出用八度卷积(octave convolution)来代替香草卷积(vanilla convolution)。另一方面,有人提出了几种网络架构[33,39,17]来减少三维CNN的时间冗余(temporal redundancy)。TSN[33]采用稀疏时间采样策略来降低绵长的时间结构的计算成本。ECO[39]混合了2D和3D网络,以节省计算量。这些方法[4,12,33,39,17]的目标是设计新类型的卷积操作或网络架构,而不是压缩给定的网络。相比之下,我们的目标是通过联合修剪二维网络沿空间和通道维度,以及沿三维网络沿空间、时间和通道维度的网络来压缩给定的模型。由于这些新设计的卷积操作或网络结构,模型压缩没法应用于这些方法,因为他们需要从头开始训练模型(??)因此,这些方法不能将信息从预先训练好的模型传输到压缩模型中(无法应用蒸馏),这将降低压缩模型的性能。此外,这些方法只关注如何减少一维(空间或时间)的冗余。相比之下,我们的方法可以共同减少沿多个维度的冗余,从而获得更好的性能。

Multi-scale representation learning(多尺度表达学习)

 多尺度表示学习[10,30,19]已被证明对计算机视觉的许多任务有效。例如,Elastic-Net[32]在CNN中引入了弹性模块(elastic module)来提取多尺度特征表示(multi-scale feature representations)。在[16]中,将来自多个尺度的特征(the features from multiple scales)连接起来,以获得来自不同尺度的信息。这些多尺度表示学习方法的目标是捕获不同尺度上的特征信息,但我们的MDP框架的目标是压缩一个给定的CNN,以获得一个更有效的网络。

 Network architecture search(网络框架搜索)

 虽然我们的MDP方法也与网络架构搜索方法[20,2]相关,但我们的目标是通过沿不同维度剪枝给定的模型,而不是搜索最优的网络架构,来减少[20,2]的冗余。

3. Multi-Dimensional Pruning 

在本节中,我们以压缩三维cnn的过程为例,介绍我们的MDP框架,这是一个更一般的例子。可以很容易地得到压缩二维cnn的算法。

3.1. Overview

我们的MDP框架包括三个阶段:搜索阶段、剪枝阶段和微调阶段。在搜索阶段,我们首先从任意给定的原始网络中构造一个过参数化网络,然后利用(Sec. 3.2.2.)中引入的目标函数来训练这个过参数化网络。在剪枝阶段,我们根据在搜索阶段学习到的重要性分数,对这个过参数化网络中不重要的分支和通道进行修剪。在微调阶段,我们对修剪后的网络进行微调,以从精度下降中恢复。

3.2 搜索阶段

3.2.1 对过度参数化的网络的概述(Overview of the over-parameterized network)

 在搜索阶段,我们首先从任意给定的原始网络中构造一个过参数化的网络。我们可以通过修剪这个过参数化的网络来得到压缩后的模型。图2显示了原始网络中的一个卷积层(左),以及过参数化网络中的相应层(右)。我们在过参数化网络的相应层中,将每个卷积层扩展为几个并行分支。

在每个分支中,我们将执行以下操作:(1) 我们通过应用沿空间和/或时间维度的平均池化,对卷积层的输入张量进行下采样。在我们的实现中,我们将输入张量降采样到4种不同的分辨率,其中有4个标度因子1、2、3和4,其中标度因子1表示不存在降采样操作(即身份映射)。我们还用四个不同的尺度因子(1、2、3和4)对输入张量进行了沿时间维度的降采样。因此,在沿着时空维度进行降采样操作后,过参数化网络的每层分支总数为4×4=16。在图二中,我们在X层(蓝色部分)有三个channels,每个channel用一个蓝色块表示。每个通道沿时间维度有4帧,用每个蓝色块的深度表示。对于图2中的分支2,我们分别在空间维度和时间维度上使用2和1的比例因子对X进行降采样。我们得到了分支2中的下采样张量I^{2},它被标记为绿色。在这种情况下,I^{2}的高度/宽度变成了X的高度/宽度的一半,而X和I^{2}的帧数都是4。 与分支2中的降采样操作类似,在branch_{i}中,我们分别以4和2的比例因数沿着空间维度和时间维度进行下采样。该分支I_{i}的降采样输入张量被标记为黄色。在这种情况下,I_{i}的高度/宽度变成了X的高度/宽度的四分之一,而X中的4帧被降采样为2帧。(2)每个分支的降采样张量被送入卷积层。在过参数化网络的所有分支中,卷积层的参数都是从原始网络中复制出来的。(3)在卷积层之后,我们将每个通道乘以一个栅极,如图2中的g_{.,.}表示。该门用于评估每个通道的重要性,其值在搜索阶段与卷积层的参数进行同步学习更新。(4)经过卷积操作后,我们将卷积层的输出张量上采样到原始大小,从而使来自不同分支的输出张量可以被集成,而不发生分辨率错配。在我们的实现中,我们选择了简单的最近邻插值方法(nearest neighbour interpolation method)来进行上采样操作,因为它不需要任何计算,并在我们的目标框架中得到了不错的结果。 

在过参数化的网络中,将来自多个分支的上采样张量集成到该层的最终输出张量中。收到DARTS的启发,我们使用加权和作为合并策略,权重在图2中以S(·)表示。 

3.2.2 Formulation

在形式上,为了对每层构建三维cnn的过参数化网络,让我们将这一层上的输入张量表示为X\in \mathbb{R}^{c_{in}\times d_{in}\times h_{in}\times w_{in}},在其中,c_{in}是这个layer的输入channels数量,d_{in}是输入张量的时间维度的长度,h_{in}w_{in}是输入张量的高和宽。同样,这一层的输出张量也可以表示为Y\in \mathbb{R}^{c_{out}\times d_{out}\times h_{out}\times w_{out}},其中,c_{out}是这个layer输出的channels数量,其他表示和上面输入类似。卷积层通过一个给定的变换T将输入张量X和输出张量Y连接起来,即Y=T(X)。假设在过参数化网络中这一层有B个分支,那么在过参数化网络中这一层的输出张量可以写得如下:Y=\sum_{i=1}^{B}S(\lambda _i)\cdot u_{i} \left \{ T_{i}[A_{i}(X)]\right \}                                                                                        (1)

其中,A_{i}T_{i}u_{i}分别是平均池化操作,变换函数,和对第i个branch的下采样操作。\lambda _{i}是第i个branch的可学习参数,S(·)是softmax函数,即S(\lambda_{i})=\frac{exp(\lambda_{i})}{\sum_{b=1}^{B}exp{(\lambda_{b})}}.记S(λi)表示在这一层的第i个分支的重要性得分。

I_{i}表示使用平均池化操作后在该层的第i个分支的合并输入张量,I_i=A_i(X)。记I_{j,:,:,:}^{i}I_{i}的第j个channel。在第i个branch中,执行转换操作T_{i}后的输出可以写如下:

O_{k,:,:,:}^{i}=g_{i,k}\cdot \sum_{j=1}^{c_{in}}I_{j,:,:,:}^{i}\ast W_{k,j,:,:,:}^{i} \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ (2)

其中,O_{i}是上采样之前的输出张量,O_{K,:,:,:}是 O_{i}的第k个channel。W^{i}\in \mathbb{R}^{c_{out}\times c_{in}\times d_{kr}\times h_{kr}\times w_{kr}}是卷积操作中的权重张量,\ast代表卷积操作,kr代表kernel/filter,g_{i,k}是第k个channel的gate valur。我们在等式(2)中省略了偏置量和激活函数。

目标函数  

在每一层独立构造过参数化网络后,我们利用受[21,2]启发的以下目标函数来训练过参数化网络。为了更好地表示,我们另外引入了上标\cdot ^{(l)}来表示下面的目标函数中第l层的相应符号。

L_{i}标准的cross-entropy loss,L_{st}是控制计算复杂度的惩罚项 ,我们期望大多数分支的重要性分数接近于零,因此大多数分支将在修剪过程中被移除。L_{gate}是一种基于l1范数的正则化器,它强制来自大多数分支和通道的门值g_{i,k}^{(l)}接近于零,以便在剪枝过程中安全地删除这些通道。 \Theta是整个网络的参数,在搜索阶段\Theta是来自原始网络的初始值。λ是包含来自所有层的可学习参数\lambda _{i}^{(l)}的集合,λ={\lambda_{1}^{(l)}\lambda_{2}^{(l)},……,\lambda_{i}^{(l)},……}

F(T_{i}^{(l)})表示第l层变换T_{i}^{(l)}的浮点运算数(FLOPs)数,广泛用于计算复杂度测量。α和η是两个coe 平衡不同损失的优势。我们可以通过调整α和η的值来控制压缩比。具体来说,α和η值越高,压缩比就越高。

3.3. Pruning method

我们在搜索阶段完成后执行修剪过程。在每一层中,我们只选择重要性得分最大的分支,并对其他分支进行修剪,并对所选分支中门值较小的通道进行修剪(门值的判定是什么)。在图3中,我们展示了一个卷积层的剪枝过程。在这里,为了更好的表示,我们再次忽略了上标.^{(l)}。假设图2中的第i个分支的重要性得分S(\lambda _{i})最大。在这种情况下,在修剪阶段,我们保留第i个分支,并删除这一层的其他分支。同时,我们假设该分支的第二通道的重要性得分g_{i,2}。因此,我们保留了第二个通道,并移除了第一个通道。如图3所示,在修剪阶段之后,我们最终得到了这一层的修剪网络。

3.4. The fine-tuning stage

我们对修剪后的网络进行微调,以从精度下降中恢复。经过微调阶段后,得到了压缩后的模型。

3.5. 压缩2D模型

使用我们的MDP框架压缩二维cnn是压缩三维cnn的一种特殊情况。对于2D-CNNs,我们只应用平均池化操作来沿着空间维度进行降采样。与压缩三维cnn的过程类似,我们使用1、2、3、4的比例因子对输入张量进行降采样。在这种情况下,我们在过参数化网络中的每个层都有4个分支。同时,我们只对空间维数上每个分支的输出张量进行上采样。在构建过参数化网络后,以下阶段与剪枝三维cnn的阶段相同。

3.6. 与其他方法比较

我们的工作与多尺度表示学习方法(Multi-scale representation learning approaches)和通道剪枝有关。然而,我们的工作在动机和公式两方面都不同于这些方法。多尺度表示学习方法的目的是捕获多尺度信息,以提高CNN网络的准确性。因此,在最终模型中选择并保留多个分支。与这两种方法相比,我们的工作旨在压缩CNN,在压缩后的模型中只保留了一个branch。虽然[21,18]中的通道剪枝方法也基于可学习的重要性分数对信道进行了修剪,但在他们的工作中并没有探讨其时空冗余。

4. 实验

为了证明我们的MDP框架的有效性,我们将我们的MDP方法与几种最先进的模型压缩方法进行了比较,包括ThiNet[23]、通道修剪(Channel Pruning)(CP)[8]、Slimming[21]、宽度乘数(Width-multiplier)(WM)[9],DCP[38],GAL[18],Taylor修剪(Taylor Pruning)(TP)[24]、过滤修剪(Filter Pruning)(FP)[15]和基于正则化的修剪(Regularization-based pruning)(RBP)[36]

四个基准数据集:CIFAR-10[13],ImgNet[26]、UCF-101[29]和HMDB51[14]。

本节中浮点操作数的百分比[#FLOPs(%)]是指修剪网络的FLOPs与原始网络的比率,这是一种常见的方法 计算复杂度测量的使用准则。

数据集

利用CIFAR-10和ImageNet来评估我们提出的方法在图像分类任务中修剪二维CNN时的有效性。 CIFAR-10由来自10个类的50k训练图像和10k测试图像组成。ImageNet是一个大型数据集,它包含超过100万个训练图像和来自1000个类别的50k测试图像。另一方面,我们使用UCF-101和HMDB51来评估我们的MDP方法在视频分类任务中修剪3Dcnn时的性能。具体来说,UCF-101由来自101个类别的13320个视频组成,而HMDB51包含来自51个类别的6766个视频。

实现细节

 我们通过选择不同的α和η值来调整#FLOPs。对于图像分类,我们使用带有nesterov的SGD的优化器在搜索阶段进行优化(??)。在CIFAR-10上,初始学习率、批处理大小和动量分别设置为0.1、256和0.9。ImageNet上的设置与CIFAR-10相同,除了初始学习之外 g速率设置为1e^{-2}。在微调阶段,我们遵循[18],使用来自最后一层的hint[25]对修剪后的网络进行微调。其他设置与搜索阶段相同。

对于视频分类任务中使用的C3D模型[31],我们遵循[36]将每个视频分割成几个非重叠的片段,以16帧作为网络的输入。对于Inflated 3D(I3D)ConvNet 我们基于kinetics[3,11]对模型[1]进行预训练,并对UCF-101和HMDB51上的预训练模型进行微调,以获得在模型压缩前的原始模型。为了公平的比较,我们依据[1],使用帧长32作为输入大小。初始学习率、批处理大小和权重衰减分别设置为1e^{-3}、32和5e^{-4}。其他的设置与ImageNet相同。

4.1. 在CIFAR-10上的结果

在CIFAR-10上,我们通过使用三个广泛使用的模型来评估我们的MDP方法的有效性:MDP[28]、ResNet-56[6]和移动Net-V2[27]。结果见表1。对于VGGNet,我们的MDP方法仅需24.84%#FLOPs即可获得94.57%的精度,而DCP[38]需要34.97%#FLOPs才能达到相同的精度。

对于ResNet-56和MobileNet-V2,与其他基线方法相比,我们提出的MDP方法在更低的#FLOPs的情况下获得了更高的精度。研究结果清楚地证明了我们的MDP方法在小规模数据集上有效性。值得一提的是,我们的MDP方法精度分别比预先训练过的ResNet-56和MobileNet-V2高出0.55%和0.12%。在DCP的工作[38]中也呈现了类似的结果。一种可能的解释是在CIFAR-10等小规模数据集上的过拟合问题可以通过压缩模型来部分解决。

4.2. 在ImageNet上的效果

为了将我们提出的方法与大规模数据集上的其他最先进的方法进行比较,我们在ImageNet上压缩了ResNet-50[6]和MobileNet-V2[27]。我们遵循在[8]中的设置,与比较其他方法的top-5精度,结果如表2所示。 

为了研究通过同时减少多维度冗余的优势,我们还报告了一种使用逐步剪枝策略的替代方法的结果 ,在第一步使用DCP方法对通道进行修剪,然后在第二步使用MDP方法减少空间冗余。结果在表2中的DCP+SP。 

从表2中可以看出,我们有以下观察结果:(1)对于ResNet-50,我们的MDP方法优于其他现有的方法(2)对于MobileNet-V2,当#FLOPs相近时,我们提出的方法精度比其他最先进的方法多出2.4%以上,这是在ImageNet数据集上的一个显著改进 。(3)当将DCP+SP方法与DCP方法进行比较时,DCP+SP方法的性能更好,这表明进一步减少沿空间边界的冗余是有益的(4)我们的MDP框架比DCP+SP方法好0.2%,这证明了我们的MDP方法在多个维度上联合修剪模型的有效性。

在ImageNet数据集上的结果清楚地表明,使用我们提出的方法来同时减少大规模数据集上的多维冗余是有效的。

4.3. 在UCF-101上的结果

为了评估我们的MDP方法在修剪3Dcnn时的性能,我们在UCF-101[29]上进行了压缩C3D[31]和I3D[1,34]的实验。我们遵循[34]中的设置以报告视频级别(video-level)的准确性。对于I3D模型,我们使用ResNet-50作为骨干。

结果见表3。从表3中,我们观察到,我们的MDP方法在压缩C3D和I3D模型方面优于其他信道剪枝方法。由于RBP的工作[36]只报道了压缩C3D模型的剪辑级精度(clip-level accuracies),我们将我们的MDP方法与RBP方法在剪辑级精度方面进行了比较。RBP方法的剪辑级精度为76.38%,#FLOPs为50.00% ,而我们的MDP方法在78.06%精度下的#FLOPs为49.89%。结果表明了我们的MDP方法修剪三维cnn的有效性。

4.4. 在HDMB51上的效果

我们还在HMDB51数据集上进行了更多的实验,以进一步评估我们的MDP方法剪枝3DCNNs的性能。与UCF-101上的实验相似,我们在HMDB51上压缩C3D和I3D,并报告视频级的精度。结果见表4。同样,我们的MDP方法始终优于其他较低#FLOPs的基线方法,这进一步证明了该方法压缩3Dcnn的有效性。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值