文献阅读-Performance-aware Approximation of Global Channel Pruning for Multitask CNNs

Scroll Down

链接: https://arxiv.org/pdf/2303.11923.pdf

Abstract

全局通道修剪(GCP)的目的是在不影响性能的情况下从深度模型中删除跨不同层的通道子集(过滤器)。以往的工作主要集中在单任务模型剪枝或简单地将其适应多任务场景,在处理多任务剪枝时仍然面临以下问题:1)由于任务不匹配,修剪良好的分类任务主干集中在保留能够提取类别敏感信息的过滤器上,导致可能对其他任务有用的过滤器在主干剪枝阶段被剪枝;2)对于多任务预测,与单任务预测相比,层内或层间的不同过滤器之间的联系和相互作用更为密切,使得多任务修剪更加困难。因此,针对多任务模型压缩,我们提出了一个性能感知的全局信道修剪(PAGCP)框架。我们首先从理论上提出了通过考虑层内和层间滤波器的联合显著性来实现优越GCP的目标。然后提出了一种顺序贪婪剪枝策略来优化目标,其中开发了一个性能敏感的oracle准则来评估过滤器对每个任务的敏感性,并保留全局与任务相关最多的过滤器。在多个多任务数据集上的实验表明,所提出的PAGCP可以将flop和参数降低60%以上,性能下降较小,并且在云和移动平台上都可以实现1.2倍~ 3.3倍的加速。我们的代码可在http://www.github.com/HankYe/PAGCP.git上获得

Index Terms

Channel Pruning, Multitask Learning, Sequentially Greedy Algorithm, Performance-aware Oracle Criterion

1.Introduction

迄今为止,基于卷积神经网络(Convolutional Neural Network, CNN)的模型在大规模多任务预测方面发展迅速,但大多数模型仍然存在巨大的计算成本和存储开销,阻碍了其在自动驾驶系统和边缘计算设备等实时应用中的部署。模型压缩作为一种有效的解决这一问题的技术,已经取得了很大的进展,大致可以分为知识蒸馏[1]、[2]、[3]、网络量化[4]、[5]和模型剪枝[6]、[7]、[8]、[9]、[10]等几种类型。知识蒸馏是通过保证两个模型预测的一致性,将大模型学习到的知识转移到小模型中;网络量化是通过将网络权值从浮点型投射到低比特型,从而减小模型的大小。另一方面,模型修剪作为一种流行的压缩技术被提出,它可以分为两类:1)权值修剪[6],[9]和2)通道修剪[7],[8],[10]。前者通过生成非结构化的稀疏连接来保持模型的准确性,但是非结构化的连接不可避免会产生尺寸不同的滤波器导致泛化能力变差,因为其具有不同硬件设备的专用性。

相比之下,通道修剪可以通过在整个滤波器或信道中引入结构化稀疏性来减少推理时间。例如,通过最小化重要特征映射的重构误差,开发了一种通道修剪技术,以正确选择具有代表性的通道[11]。此外,ThiNet[7]根据下一层的输出来确定当前层的滤波器显著性,从而开发了一种贪心算法来选择滤波器子集来压缩模型。最近,设计了一种数据无关的剪枝方法[12],该方法根据层是否可以被该过滤器核集近似,逐层构建一个过滤器核集。Joo等人[13]提出了一种线性可替换的滤波器剪枝方法,即如果一个滤波器可以被其他滤波器线性逼近,那么该滤波器就可以被剪枝。
image.png
修剪多任务网络比修剪单任务网络更具挑战性,例如,对象分类网络,因为多任务网络中的过滤器通常需要学习可以同时服务于多个任务的表示。因此,跨不同层的过滤器呈现出更强的相关性和交互性,并且一个过滤器的修剪也会影响另一个过滤器在不同任务中的性能。这是以往基于单任务和多任务的压缩研究所忽视的。一个典型的例子是,如果修剪了其他过滤器,同一过滤器的多个任务的灵敏度排名(意味着删除过滤器导致的每个任务的性能下降)可能会发生变化。另一个例子是对其他滤波器进行修剪后响应区域的变化,如图1所示。结果表明,一个滤波器的注意图中的高响应区域可能会受到其他滤波器修剪的极大影响。总的来说,动态变化的过滤器重要性(意味滤波器很重要),在多任务剪枝过程中,可能导致难以在多任务性能下降和压缩比之间找到最佳平衡。

尽管一些研究开始为多任务应用设计剪枝技术,但它们主要是基于基于分类的剪枝策略,即在多任务基准测试中对预先剪枝的分类主干使用多个特定于任务的分支进行微调[16],或者在多任务设置下采用基于分类的剪枝策略[17],[18]。然而,这些方法面临以下两个限制。

首先,基于预剪枝分类的主干特征不能很好地服务于多任务使用,这可以看作是单任务图像分类与不同多任务模型之间的滤波器不匹配问题。例如,许多具有丰富空间细节的浅层通道可能在分类主干中被预修剪,因为这些通道包含有限的分类所需的高级语义信息。但是,由于空间细节对目标定位非常重要,因此这种通道修剪会对检测模型的定位性能产生负面影响,最终在检测任务上对基于分类的主干进行微调时,会限制总体检测性能。

其次,以往的研究忽略了不同层次的剪枝滤波器对压缩性能的共同影响。这种忽略可能不会影响分类模型的压缩性能,因为存在很多对分类任务没有什么帮助的冗余信息,如背景特征和底层特征,可以被丢弃。换句话说,分类模型中来自不同层的大量相关滤波器是冗余的,具有很大的去除潜力。然而,如上所述,对于多任务模型,复杂的交互会导致一个过滤器的修剪严重影响另一个过滤器的性能。因此,在多任务设置下,当采用各种基于分类的剪枝策略时,忽略联合影响可能会导致对多任务模型中过滤器剪枝潜力的评估较差。

为此,我们重点研究了多任务模型压缩,并提出了一个性能感知的全局信道修剪(PAGCP)框架。首先,我们给出了多任务环境下全局信道修剪的公式化目标,其中GCP过程充分考虑了联合滤波器显著性;联合滤波器显著性是指通过设计的性能相关度量来评估层内和层间多个滤波器的协同重要性。在理论推导的基础上,提出了一种顺序贪婪剪枝策略和一种性能感知的oracle准则来解决GCP的客观问题。提出的顺序剪枝策略基于先前剪枝结构动态计算联合过滤器显著性,并以贪心方式选择需要剪枝的过滤器和层。此外,为了解决过滤器不匹配问题,性能敏感的oracle标准评估过滤器对每个任务的敏感性,并自适应地保留每层中与任务相关最多的过滤器。这样,通过控制每一层最敏感任务的局部性能下降,模型可以保持较好的多任务性能。

与以往针对多任务分类模型采用过滤器显著性准则的方法相比,该方法以贪婪的方式动态计算每个过滤器的显著性,以逼近最优GCP,并根据性能感知的oracle准则自动控制剪枝的性能下降,具有以下优点:首先,我们的剪枝是在没有惩罚的情况下执行的,但在参数数量和flop方面都有很大的减少。其次,与以往的工作相比,我们的方法实现的性能下降更加可控。传统的剪枝比的确定要么依赖于分层剪枝策略的独立敏感性分析,要么依赖于全局小阈值,剪枝后的性能下降难以察觉,如图2所示。

为了证明所提出的方法可以推广到不同的多任务设置,我们将所提出的PAGCP应用于包含分类和定位任务的检测模型,例如SSD [14], Faster R-CNN[19],CenterNet[20]和YOLOv5m[21],以及其他包含多个密集预测任务的传统多任务模型,如MTI-Net[22]。我们在多个目标检测和多任务学习(MTL)数据集上进行了实验,包括PASCAL VOC[23]、COCO[24]、NYUD_v2[25]和PASCAL Context[26]。实证结果和深刻的分析表明,在相同的压缩约束下,所提出的PAGCP在这些模型上取得了优于现有方法的性能。我们还将PAGCP专门用于单任务设置,即ResNet等图像分类模型[27],进一步验证了其在压缩各种CNN模型方面的优越性。最后,报告了修剪模型在云和移动平台上的延迟,以显示我们提出的方法的加速效果。

image.png

我们的工作可以概括为以下三点:
1)将多任务模型的全局信道剪枝问题表述为一个联合滤波器显著性优化问题,该问题考虑了层内和层间滤波器对多任务模型压缩性能的共同影响,并从理论上证明了滤波器的联合显著性是独立显著性和条件显著性之和的上界。据我们所知,这是第一个研究多任务模型信道修剪中联合滤波器显著性的工作。
2)在理论分析的基础上,提出了一种包含顺序贪婪通道剪枝算法和性能感知oracle准则的剪枝范式,近似地解决了GCP的派生目标问题。提出的剪枝策略基于前一步的剪枝结构,以贪婪的方式动态计算过滤器显著性,并通过性能感知oracle准则的约束来控制每层的剪枝比例。

3)我们在不同的多任务设置下进行了广泛的实验,包括典型的目标检测和传统的多任务学习,在不同的基准上。结果表明,该方法在所有任务上都优于现有的基于剪枝的多任务模型和其他轻量级模型。同时,我们的精简模型在云和移动平台上都实现了更快的推理速度,接近其他轻量级模型的延迟。

本文的安排如下: 第2节简要介绍了多任务模型、通道剪枝和针对多任务模型的通道剪枝的相关工作。在第3节中,我们首先对全局信道修剪过程进行了理论建模,并给出了GCP的制定目标。为了解决这一客观问题,提出了一种顺序贪婪通道修剪策略和性能感知oracle准则。第4节介绍了我们方法的广泛实验结果,随后是第5节的讨论和第6节的结论。

2. related works

我们的工作与多任务模型和通道修剪密切相关。在接下来的部分中,我们回顾了这两个领域的相关工作,并将我们的方法与现有的方法进行了比较。

2.1 Multitask Models

这里的多任务模型是指基于cnn的具有多个特定任务头和优化目标的模型,如典型的目标检测器[14]、[19]、[28]、[29]、[30],包括分类头和回归头。此外,传统的多任务模型[22]、[31]、[32]、[33]、[34]也得到了长期的研究,包括语义分割、深度估计、表面法向估计等多个密集预测任务,成为MTL研究的主流。在下面,我们将回顾目标检测模型和传统的多任务模型,这是本工作中的两个主要修剪重点。

2.1.1 目标检测器

基于cnn的目标检测大致可以分为两类:两阶段检测器[19]、[28]和单阶段检测器[14]、[29]、[30]。通常,两阶段检测器将检测过程分为初始提案生成和随后的提案细化阶段,其中感兴趣区域池(RoI)通过将不同大小的提案映射到固定大小的特征以供后续提案细化,起着至关重要的作用。相比之下,单阶段目标检测器作为一种密集预测任务,可以检测多个目标,而不依赖于RoI池。两阶段检测器通常比单阶段检测器的任务更多,第一阶段需要生成提议对象的粗定位和对象分数,第二阶段需要对目标进行分类和定位。

这些目标检测模型很难部署在资源受限的设备上,这主要是由于它们巨大的计算成本和存储开销。因此,在资源受限的移动应用中,压缩检测器并加快目标检测速度是必要的。

2.1.2 传统的多任务模型

传统的多任务模型[22]、[31]、[32]、[33]、[34]同时执行语义分割、深度估计、表面法线估计等多个密集预测任务。这些MTL模型需要在不同阶段的多个任务之间进行更多的交互,以从不同的任务中学习更多的互补特征。基于cnn的多任务模型可以分为以编码器为中心的模型和以解码器为中心的模型。通常,这两种类型都采用一个编码器-多个解码器结构。前者在编码阶段通过共享参数进行交互[31],[33],后者在解码阶段进行交互[22],[32],[34],可以从ground-truth标签中感知到更多的判别信息。

虽然多任务模型通过共享编码器节省了权重参数,但在交互阶段,跨任务特征由多个注意算子传播,计算量和内存消耗较大[22],[34]。因此,它们仍然需要对资源受限的移动应用程序进行压缩。此外,由于MTL模型中的过滤器呈现出更多的交互相关性,可以同时服务于多个任务,因此MTL模型的修剪比单任务模型的修剪更加困难。

2.2 通道修剪

现有的通道修剪方法可以大致分为两类:基于显著性的和基于稀疏性的。基于显著性的方法假设权重值表明它们对最终预测的重要性。这种方式的一个启发式思想是,那些较小的权重对输出的贡献很小,因此对模型的信息较少。因此,滤波器[35]或激活映射[36]上的1范数被计算为模型压缩的滤波器显著性。Liu等[37]认为过滤器的显著性可以用批处理归一化层的比例因子来表示。然而,一些作品从oracle的角度研究过滤器的显著性,基于每个过滤器对最终损失的直接贡献。Molchanov等通道对一阶泰勒系数排序来估计滤波器的重要性,考虑到全局损失计算比较耗时,一些研究将局部重建损失作为显著性准则。在[7]、[11]中,对输出特征图影响较小的滤波器被认为不太重要。除此之外,还有其他标准来对过滤器的重要性进行排序[39],[40]。

基于稀疏性的方法旨在以全局或局部的方式探索每层的修剪比率。在全局方式下,在剪枝之前,模型中所有层的大小都预先设定为相同的压缩比。霍华德等人[41]对所有层采用相同的剪枝比例,而Tan等[42]进一步将深度和分辨率与通道一起缩放。由于忽略了每一层的个体敏感性,这种剪枝方案是粗糙的,这对剪枝性能是决定性的。而局部方式则通过两个通用规范来个性化每层的剪枝比例。一种规范是基于显著性标准的敏感性分析[11],[16],[35]。另一种范数是全局自动搜索各层的剪枝比例,如[37]、[43]、[44]、[45]、[46]、[47]、[48]。尽管自动搜索可以避免大量手工选择,但它也涉及更多的优化操作,导致耗时的通道修剪。

到目前为止,这两种范式都取得了很大的进展,但仍然存在两个困境:忽略了同时修剪多个滤波器对压缩性能的共同影响,以及修剪过程中性能下降的不可感知性。多个滤波器的联合影响在目前的工作中还没有得到充分的探讨,由于不同滤波器之间的复杂相互作用,在多任务模型的压缩中应该强调这一点。性能下降是另一个关键问题,与可修剪性直接相关[49]。模型的剪枝比。目前大多数研究都是经验地为每一层设置较小的剪枝阈值,没有充分考虑不同层的剪枝电位和不同滤波器对多任务的共同影响,不足以将性能下降控制在最优水平。

2.3 多任务模型通道修剪

典型的多任务模型通道修剪方法主要有两种做法:在多任务基准上对预修剪的分类主干进行微调(基于微调的修剪),以及使基于分类的修剪策略适应多任务模型修剪(基于自适应的修剪)。Liu等[16]验证了基于微调的剪枝方法中的滤波器失配问题,并认为基于微调的方法的剪枝模型可以通过从头开始训练来表现良好。ThiNet[7]将带有局部重构正则化的贪婪通道剪枝转移到检测器压缩中。MLP[17]采用[35]中的群剪枝方法,将SSD模型压缩1范数。在[18]中设计了定位感知辅助网络来找出检测器的重要通道,该网络是在区分感知通道修剪的基础上进行分类的[50]。PAM[51]将多个网络合并为一个多任务网络,在网络修剪之前消除任务之间的冗余。该修剪策略是受已经存在的基于分类的修剪策略启发的。这些方法面临一个共同的缺点,即忽略了来自不同层或组的过滤器的共同重要性,这在多任务设置中应该得到更多的关注,因为过滤器比单任务模型中的过滤器更紧密地耦合和交互以表示多任务特征。

3. 问题和解决方案

本文的目的是通过考虑不同层间滤波器的联合显著性来研究优越的全局信道修剪。与联合过滤器显著性类似,这里的显著性表示通过某个度量评估的过滤器重要性,确定要修剪哪个过滤器。通常,显著性分数越高,表明保留此过滤器的机会越大。基于这一定义,我们首先推导了性能感知全局信道修剪的目标,然后提出了我们的修剪策略来解决目标问题。战略总体框架如图3所示。
image.png

3.1 准备

给定一个训练良好的模型,有L个目标层(表示待修剪的层[49]),传统的基于显著性的方法以最小化附带处罚的目标为目标,其中惩罚表示设计的显著性标准,可以表示为:
image.png
其中,L(·)表示与任务相关的目标函数(如分类任务的交叉熵,或多任务学习的多个目标的加权和),S(·)表示显著性标准,如过滤器的1范数,用于评估过滤器的重要性。x和y分别表示输入图像及其真值标签,其中x服从Dx的分布。

为方便起见,我们在下面省略了y。其中,g(·)为FLOPs的缩减率和参数等因素决定的约束向量,α为阈值向量,每个维数对应上述每个因素。Ω为原始模型中所有剪枝选择(解)的集合,θ表示Ω中的一个选择,其中元素θlk为二值变量,表示第l层第k个滤波器的剪枝状态,即image.png,其中Kl是第l层的滤波器数。Θ表示参数的总集合。约束g(·)通常用θ参数化,但其表达式在不同类型的模型中有所不同。对θ的显式约束为:image.png,其中image.png是θ的零范数,η是剩余滤波器数的阈值

根据ResRep[49]的分析,一旦第二项(惩罚)附加到目标上,第一项(性能损失)的梯度将与第二项竞争。惩罚的梯度使每个滤波器的参数偏离原始目标函数的最优值,改变了每个信道的原始重要度。与ResRep[49]设计一个掩模和一个压缩器来解耦两项的优化过程不同,我们的方法提出固定训练良好的模型的参数并且基于原始的滤波参数来评估每个通道的重要性。这样,可以在不影响过滤器对最终性能的贡献的情况下删除Eq.(1)中的第一项,从而消除两项之间的竞争。请注意,我们将性能损失添加到约束列表中,以补偿在丢弃第一项后忽略的性能损失。这种调整背后的动机是,我们可以通过探索模型中冗余过滤器的潜在最大数量来压缩训练良好的模型,而不会惩罚权重,这不会损害重要过滤器对最终性能的影响。因此,我们的目标是根据当前网络结构和滤波器权重自适应地确定压缩比。

因此,我们将Eq.(1)转换为Eq.(2),其目的是去除那些在几个压缩约束下产生最小显著性分数的过滤器。
image.png

为了得到要剪枝的最优滤波器子集θ,不同于以往的工作,独立计算滤波器显著性而不考虑修剪其他滤波器对显著性的影响,我们提出了一个考虑层内和层间联合滤波器显著性的PerformanceAware全局通道剪枝(PAGCP)框架,并根据性能感知标准控制每个目标层的剪枝比率。在下面,我们首先推导了PAGCP的优化目标,然后介绍了一个近似的解决方案:基于性能感知的oracle准则的顺序贪婪通道修剪。

3.2 PAGCP目标的理论推导

通常,候选滤波器在不同修剪选择下的显著性(即,θ 2f0;1g, 0表示修剪,1表示不修剪)可表示为:
image.png

式中f(·): image.png是模型预先定义的状态函数,例如模型预测损失[38],或下一层激活图的输出[11]。

M、n、r分别表示输入x、状态f和范数的维数。这种基于范数的显著性公式试图测量两个高维状态之间的距离。(更多的合理性分析见附录A.1) image.png表示以样本x为输入的第l层第k个滤波器的显著性。

3.2.1 两个任意滤波器的联合显著性

为了进行全局通道修剪,我们首先考虑一个简单的情况:两个任意滤波器θpu和θqv的联合显著性,它可以灵活地扩展到更大数量的滤波器。根据式(3),联合滤波器显著性可定义为:

image.png

其中image.png表示两个滤波器都被修剪,为简单起见,我们在下面的推导中忽略r。然而,这个结论适用于所有image.png. 现在我们有了下面关于联合滤波器显著性的定理。

理论1 假设image.png分别满足式(3)和式(4)。类似地,条件显著性image.png定义为滤波器θqv在修剪滤波器θpu后的衍生显著性。则下式成立:
image.png

式5的等式成立当且仅当状态f满足:
image.png

其中mid(·)表示元素的中位数映射。

该证明详见附录A.2。根据定理1,联合显著性的上界由两部分决定:θpu的独立显著性和θqv的条件显著性。受典型分类任务中使用softmax操作将输出logits映射到概率空间的启发,我们进一步探索将原始显著性值映射到一个新的概率空间,其中概率表示滤波器修剪机会。让image.png表示image.png负指数映射:image.png。类似的,image.pngimage.png也等价于image.png。式5可以转化为:
image.png,为了对称性,image.png

从Eq.(7)中可以看出两点。首先,由于p∈(0;1]由于S的非负性质(在附录a .3中有更多解释),可以从概率的角度来理解通道剪枝,通过设计一个适当的状态函数f来满足Eq.(6),即为每个滤波器引入一个剪枝概率(滤波器被剪枝的机会)。因此,两个随机滤波器的联合剪枝也是概率性的。

另一个看法是,尽管它与Eq.(6)失败时的概率是等价的,但Eq.(7)实际上表明了image.png的下界。因此,正如期望最大化(EM)算法[52]所证明的那样,迭代优化下界以接近局部最大值(见附录A.4),我们可以将由边际和条件“概率”相乘得到的下界推高,以全局逼近image.png的最大值,这比image.png更容易获得.

3.2.2 任意滤波器的一般联合显著性

接下来,我们进一步将Eq.(5)和Eq.(7)推广到具有任意数量过滤器的情况,例如N个过滤器。image.png
其中image.png,Kli为第i层的滤波器数。利用方程内绝对值的性质可以证明这一点。

3.2.3 逐步优化目标

将Eq.(8)的上界代入Eq.(2),可得:
image.png

也就是说,最小化联合显著性的全局通道修剪目标,可以通过包含具有相同压缩要求的多个条件显著性项的组合目标来近似。由于Eq.(9)包含条件显著性项的总和,因此其优化可以自然地分成与每一步中的局部约束相关的多步过程。

3.3 方法: 序列通道修剪策略

具体来说,我们在一个优化步骤中将同一层的滤波器作为候选剪枝集,固定其他层的滤波器,并将g (θ)的全局约束分解为局部约束,从而将目标Eq.(9)分解为逐层通道剪枝问题的串联。

为了解决逐步优化问题,我们提出在每一步中贪婪地寻找候选剪枝层,并在每个剪枝层中寻找候选剪枝过滤器,这被称为顺序贪婪剪枝策略。在该策略中,压缩性能滤波器之间的关系可分为两种类型:层间滤波器关系和层内滤波器关系,它们都由显著性准则和压缩约束显式表示。注意,这种关系随着每个过滤器的剪枝状态而变化,因此在剪枝过程中是动态的,这与以往静态处理过滤器关系并同时筛选出所有候选过滤器的方法不同。滤波器显著性的计算将在3.3.1节中详细介绍。

此外,由于每一层的滤波器对不同的任务具有不同的敏感性,因此全局约束的分解充分考虑了每一层对每个任务性能的贡献,以及每个剪枝层的压缩潜力。通常,对FLOPs减少贡献更大的层在相对性能下降约束中会被分配更大的容忍度。性能下降的约束取决于该层对哪个任务最敏感,并表示为性能感知oracle准则。标准的详细设置见第3.3.2节。

3.3.1 状态函数和显著性准则

如上所述,我们将目标分解为逐层修剪步骤的串联,以近似最优GCP。设θl表示第l层中的候选剪枝集。对于第1层的剪枝步骤,局部目标可表示为:

image.png
其中image.png表示第k层滤波器在第l层的显著性。Kl是第l层候选集合的过滤器编号。αl是由全局约束衍生而来的局部约束,详细内容见3.3.2节。

因此,由上述推导可知,式中的目标。(5)可以采用贪婪的方式将层内剪枝和层间剪枝结合进行优化。一般情况下,单层内或层间的贪婪剪枝应是一个连续的筛选过程;然而,由于大多数层的筛选空间较大,每层的计算复杂度成为剪枝过程中的主要瓶颈,达到image.png。为了解决这个问题,我们可以设计一个显著性准则,满足同一层中滤波器的显著性是相互独立的(意味着一个滤波器的显著性分数与同一层中的其他滤波器无关)。更多的独立性分析参见附录A.5),不同层的显着性相互依赖,使得每层的计算复杂度降低到0 (Kl)。

特别地,状态函数和显著性判据可以合理地设计为如下Ll范数的形式:
image.png
其中image.png表示第k个卷积核以及l层状态image.png的权重。

Eq.(11)中定义的状态函数满足Eq.(6)中的等式约束,使得最小化滤波器的联合显著性等价于最大化它们的联合剪枝概率。当候选滤波器在同一层时,由于滤波器权值的独立性,每个滤波器的条件显著性等于其边际显著性。因此,将每层剪枝的局部目标转化为以下目标(x略):

image.png

3.3.2性能感知Oracle准则

由于目标函数优化分解为分层修剪步骤,我们也应该将约束分解为分层步骤,以配合目标函数分解。如3.1节所述,在约束中加入性能下降是为了补偿目标中性能损失项的丢弃。为了将总性能下降约束分解为分层剪枝步骤,我们考虑了性能损失分解和阈值分解。

对于性能损失的分解,我们认为由不同过滤器提取的特征在所有层上对每个任务都具有不同的重要性。以目标检测为例,大多数浅层滤波器都侧重于提取更详细的空间信息,从而有利于定位任务。因此,浅层对定位任务具有更强的鲁棒性,对分类任务更敏感。相反,大多数深层滤波器对分类任务具有鲁棒性,由于卷积核提取了丰富的语义信息对定位任务敏感。

image.png
因此,每层的局部性能下降约束应该关注最敏感任务的性能下降。换句话说,当最敏感任务的性能下降达到局部约束边界时,一层中可过滤的过滤器数量将达到最大值,即性能感知oracle准则。其中,判据g(·)的公式为多任务损失变化的image.png范数:
image.png

式中,∆Lt(θ)表示第n个任务在剪枝状态θ时的相对损失变化。这样,判据对比例因子和绝对损失的变化不敏感。T是模型的任务号。注意,这里的任务数指的是学习目标中损失分量的数量。因此,一些为两个任务设计的模型,例如语义分割和深度估计,可能包含两个以上的损失成分,例如每个任务的多尺度预测的损失。1可以看出,全局约束g(·)的形式与Eq.(3)相同,其中Lt的向量对应于f;因此,它也可以用组合约束来近似,包括第一修剪层的独立约束和多个条件约束(即对前一个修剪状态的条件的性能下降约束)。

对于局部阈值的分解,我们考虑到每个目标层的冗余度不同,因此提出将性能下降的全局阈值分解为递进下降约束:
image.png

image.png
其中d1表示第一个候选剪枝层(即第一剪枝层可接受的最大相对性能下降为d1)的初始掉落阈值.λ表示基于前一个下降阈值的每一步阈值的常数缩放因子。α是全局性能下降约束的阈值。因此,约束在第i个剪枝步骤di的降阈值可以通过用λ缩放di−1来计算。

因此,最终的逐步目标优化剪枝过程用图表示。(1).请注意,为了实现每次迭代的高剪枝效率,我们对那些对FLOPs减少贡献更大的层施加了更宽松的局部约束。具体而言,我们首先对具有相同修剪比的所有候选层的FLOPs减少程度进行评估,如果λ < 1则按FLOPs减少程度降序排序,否则按升序排序(参见附录B.1中不同修剪比下的序列差异)。然后对于每一步,我们弹出一层来从重新排序的队列中进行修剪。考虑到模型轻量化和检测性能之间均衡,我们进一步评估了每个要修剪的滤波器对总FLOPs减少的贡献,并去除那些压缩贡献小但性能下降的滤波器。在实验中,我们用变量P来调节剪枝层的滤波比例。修剪策略的框架如Alg.(2)所示。

4. 实验和结果

该方法在两种多任务学习类型上进行了实证评估:一种是重要的视觉任务对象检测,另一种是传统的多任务学习。对于目标检测,我们对三种基准模型(SSD [14], Faster R-CNN[19]和CenterNet[20])和较新的轻量级检测器YOLOv5m2[21]进行压缩。目标检测的基准数据集是PASCAL VOC[23]和COCO[24]。对于传统的多任务学习,我们选择在两个基准上压缩最先进的模型MTI-Net [22]: NYUD-v2[25]和PASCAL Context[26]。为了与其他多任务模型压缩的通道剪枝方法进行充分的比较,除了基于微调的方法外,我们还将几种最先进的剪枝方法应用于多任务模型剪枝上,这些方法在官方论文中对分类模型进行了实验,但相对容易转移到多任务模型剪枝上,即基于自适应的方法。此外,考虑到多任务模型压缩的通道修剪方法研究尚不充分,我们还将压缩模型与其他压缩技术(如知识蒸馏、神经结构搜索(NAS)和模型缩放)获得的轻量级模型进行了比较,以验证我们方法的优越性。

我们首先在工作中引入基准数据集。然后,我们给出了详细的实验设置,包括跳跃连接的修剪方案、训练设置和压缩设置。最后给出了五种典型模型的压缩结果。

4.1 数据集

PASCAL VOC[23]包含20类真实世界对象,其中PASCAL VOC 2007的训练图像为5011张,PASCAL VOC 2012的训练图像为11540张,测试图像为4952张。我们遵循官方的分割设置在两个训练列表上训练模型,并在PASCAL VOC 2007测试集上评估所提出的方法。

COCO2017[24]是最新版本的COCO数据集,包含118K张训练图像、5000张验证图像和41K张测试图像。我们在训练图像上训练模型,并在验证集上对它们进行评估。

NYUD-v2[25]是室内场景数据集,它有多个任务标签,包括语义分割和深度估计。该数据集包含1449张图像,其中训练图像795张,测试图像654张。

image.png

PASCAL Context[26]是一个更大的用于多任务学习的基准数据集,它包含10,103个图像,其中4,998个用于训练,5,105个用于测试。多任务可以在这个数据集中得到,包括语义分割、深度估计、显著性估计、表面法线估计等。
NYUD-v2和PASCAL上下文的任务选择细节如表1所示。
image.png

4.2 实验设置

4.2.1 skip-connection的修剪

传统的cnn通道剪枝通常只考虑卷积层的剪枝,而不考虑跳跃连接层的剪枝。在我们的方法中,为了使模型的剪枝比最大化,我们考虑了跳跃连接模块。同样,我们根据式(11)来评估跳过连接的重要性。为了考虑跳跃连接模块中多个滤波器对一个通道的共同影响,我们通过所有相应滤波器显著性分数的组平均值计算跳跃连接模块中一个通道的重要性。图4示出了跳过连接的修剪方案。

4.2.2 训练设置

image.png
目标检测 我们在三个基准目标检测器上评估了所提出的PAGCP:基于vgg16的SSD[14],基于vgg16的Faster R-CNN[19]和基于resnet的CenterNet[20]。我们还将该方法应用于最近的轻量级探测器YOLOv5m[21]。

在压缩SSD的实验中,输入图像在PASCAL VOC和COCO2017数据集上分别被调整为300×300像素和512×512像素。在PASCAL VOC上,我们训练了批量为32的SSD300的基础模型。通用学习率初始化为0.001,在迭代80,000和100,000时乘以0.1,并在120,000次迭代后终止。在coco上,训练SSD512 batchsize设置为12,初始学习率设置为0.001,在280,000、360,000次迭代时衰减0.1。整个训练过程达到400,000次迭代。对于修剪模型的微调,我们设置了与FLOPs压缩率成比例的训练epoch数,这意味着我们将用更小的FLOPs来微调模型以获得更多的epoch。

为了对Faster R-CNN进行压缩,我们在PASCAL VOC上进行了实验。每个图像的短边设置为600像素。我们以批大小为1来训练更快的R-CNN,学习率初始化为0.001,在epoch 10乘以0.1,并在epoch 14终止。

由于原始训练次数较小,修剪后模型的微调设置与基本训练设置保持一致。

为了对CenterNet进行压缩,我们在PASCAL VOC和COCO上进行了实验。在两个数据集上,图像大小设置为512 × 512像素。在PASCAL VOC上,我们训练了批大小为32的基本模型,初始学习率设置为1.25e-4,在epoch 45和60时衰减0.1。整个训练过程达到70次。

在COCO上,我们训练batch size为96的基本模型,学习率初始化为3.75e-4,在epoch 90和120时乘以0.1,在epoch 140后终止。修剪模型的微调调度遵循与SSD压缩相同的策略。

对于YOLOv5m的压缩,我们对PASCAL VOC和COCO进行了实验。图像大小在PASCAL VOC上设置为512×512像素,在COCO上设置为640×640像素,我们在两个基准数据集上从头开始训练基本模型,批处理大小为64。培训设置遵循官方策略。微调设置在SSD压缩中遵循相同的策略。

传统的多任务学习。我们在最先进的多任务学习模型MTI-Net[22]上评估了PAGCP,该模型以HRNet[63]为主干。在NYUD-v2上设置为480 × 640,在PASCAL Context上设置为512 × 512。我们以批大小为32的基本模型进行训练,学习率初始化为1.5e-4,以多项式形式更新,并在两个基准数据集上进行200次epoch后终止。修剪模型的微调设置遵循与SSD压缩相同的策略。

image.png

4.2.3压缩设置

对于我们实验中的所有模型,我们选择除输出头部外的所有层作为目标层。特别地,在基于resnet的CenterNet中保留了动态卷积(DCN-v2)层,因为偏移通道的修剪会影响连续的卷积权值。将滤波比P设置为待剪枝目标层的80%。通过基础训练中的损失函数来评估性能下降。

对于SSD的压缩,我们将每次剪枝迭代中PASCAL VOC和COCO的全局性能下降α分别约束为6和5,而PASCAL VOC和COCO的初始性能下降阈值d1均设置为6%。对于其他模型的压缩,我们设置了两个超参数:α = 6;d1 = 6%的PASCAL VOC对更快的R-CNN, α = 6;d1 = 6%的PASCAL VOC, α = 5;对于CenterNet, d1 = 6%, α = 10;d1 = 6%的PASCAL VOC, α = 8;对于YOLOv5m, d1 = 4%, α = 10;在MTI-Net的NYUD-v2和PASCAL上下文中,d1 = 6%。

4.3 目标检测结果

4.3.1 PASCAL VOC结果

表2比较了在相同测试设置下使用PAGCP的修剪检测器与其他方法。值得注意的是,除了使用其他压缩方法而不是通道修剪的轻量级模型和基于自适应的修剪SSD模型(其结果引用于他们的原始论文)之外,我们在相同的微调设置下再现了所有其他方法。一般来说,使用PAGCP方法的压缩模型具有更高的精度和更大的FLOPs和参数减少。特别是,在低精度状态下,我们的方法在所有SSD变体中获得了最高的SSD300压缩比和最佳精度,与基于自适应的通道修剪方法相比,准确度最多提高2.9%[7],[17],[18],参数减少超过85%。在高精度范围内,基于PAGCP的修剪YOLOv5m模型也优于基于自适应的修剪模型和最近的高效检测器YOLOv5s[21],该检测器基于缩小YOLOv5m的宽度和深度。特别是,我们的方法比YOLOv5s的精度提高了2.2%,并将精度降低控制在1.5%,参数降低了78%,FLOPs降低了64.8%。另外两种检测器(Faster R-CNN和CenterNet)的压缩结果也验证了我们的方法在不同类型检测器中的一致性有效性和通用性。

此外,在表4中,我们列举了将SSD压缩到与其他方法相当大小的每次迭代中的修剪结果。在最初的剪叶迭代中,可以观察到FLOPs和参数的减少都很明显,达到50%以上,但经过几次迭代后,可用压缩空间逐渐减少。

image.png

这个观察结果符合先前的知识,即小型的、训练良好的模型可能比大型的、训练良好的模型具有更少的冗余。

4.3.2 COCO上的结果

我们进一步在COCO上进行了多检测器的压缩实验,实验结果如表3所示。实验方案及选择的比较方法见表2。不同的是,我们主要关注COCO压缩中的高精度状态,我们将修剪后的YOLOv5m与最新的基于神经结构搜索(NAS)的轻量级检测器[58],[59],[61]和其他最先进的YOLO变体[60],[62]进行了比较。我们报告了实验中的AP@50和mAP@(0.5:0.95)作为比较的指标。从轻量级性能的角度来看,在相似的参数量级下,使用所提出的PAGCP的修剪后的YOLOv5m在两个指标上都大大超过了最近的探测器(+2%)。与最新高效的yolov变异模型YOLOX-S[62]相比,经过修剪的YOLOv5m具有更少的FLOPs和参数,但mAP(0.5:0.95)比YOLOX-S高1.9%。从压缩质量的角度来看,使用PAGCAP修剪后的YOLOv5m也优于基于自适应和缩放的模型,在相似压缩比下,修剪后的YOLOv5m在AP@50和mAP@(0.5:0.95)上都超过了YOLOv5s 4%以上。SSD512和CenterNet的压缩结果进一步验证了在修剪40 ~ 70% FLOPs或参数的情况下,在大规模数据集上保持高性能的能力

4.4. 传统多任务学习的结果

总的来说,我们的剪枝方法适用于任何多任务模型。因此,我们对传统多任务学习模型的压缩也很感兴趣。为简单起见,我们在最先进的模型MTI-Net的压缩上执行了所提出的PAGCP[22]。为了与其他修剪方法进行比较,我们采用了几种基于微调和自适应的方法来压缩MTINet。对于基于微调的方法,由于MTI-Net的骨干HRNet在以往的修剪方法中从未被压缩过,我们采用该方法对单任务MTI-Net(即仅分段MTI-Net或仅深度MTI-Net)的骨干进行修剪,然后在多任务设置下对修剪后的骨干进行微调。具体而言,我们选择每个任务的最终预测作为单个任务对MTI-Net进行剪枝,并将我们的方法应用于单任务剪枝。单任务剪枝压缩设置和我们的方法一样,d1=0.06, α=10, P=0.8。对于基于自适应的方法,我们选择与检测器相同的修剪方法,即Network Slimming[37]和Eagleeye[56],并将其调整为修剪MTI-Net。基于自适应方法的压缩设置与官方文件保持一致,训练设置与我们的相同。此外,我们将性能感知oracle标准应用于分层修剪方法[35],作为一种基于自适应的比较方法。表5分别给出了MTI-Net在NYUD-v2和PASCAL上下文中的压缩结果。

4.4.1 在NYUD-v2上的结果

在我们的训练器中复制了基本模型,两个轻量级模型[22],[32]的结果引用自[22]。在NYUD-v2上的结果表明,PAGCP可以在约50%的FLOPs压缩比下对所有任务保持较高的性能,优于微调和基于自适应的修剪方法。从表5可以看出,参数的缩减率相对小于FLOPs的缩减率。一个可能的原因是MTINet在特征传播阶段包含了大量的注意块,这些注意块占用了大部分的FLOPs,但用于自相关矩阵计算的参数却很少。因此,与FLOPs约简相比,注意块的剪枝可能带来更小的参数约简增益。尽管如此,与现有的多任务模型相比,修剪后的MTI-Net在语义分割方面最多实现+3.6%的mIoU,在深度估计方面最多实现-0.28的rmse。

4.4.2 PASCAL上下文上的结果

我们还在PASCAL上下文上重新实现了基础模型的训练,两个轻量级模型[22]、[32]的结果参考了[22]。我们可以从表5中得出结论,使用PAGCP的压缩模型可以显着减少47.7%的flop数,但每个任务的性能与原始模型相当。此外,压缩模型的参数降幅为25.4%,由于与4.4.1节分析的原因相同,其降幅不如FLOPs的降幅显著。

5. 见解和讨论

在本节中,我们将讨论每个组件对我们方法中剪枝性能的影响,包括顺序贪婪剪枝方式、性能感知oracle标准和几个超参数。此外,为了测试我们的方法与单一任务设置的兼容性,我们将PAGCP应用于分类模型。然后,我们对剪枝模型的加速性能感兴趣,并在不同平台上测试了各种模型的延迟。最后,对压缩后的模型结构、各层在剪枝过程中的灵敏度分布以及剪枝模型的几种预测结果进行可视化分析。

5.1 消融实验

image.png
顺序贪婪修剪。我们将提出的方法与其他三种修剪策略进行了比较,包括分层修剪、全局修剪和组修剪。对于层优先修剪策略,我们对每一层用我们的方法中想用的比例来修剪卷积核。对于全局剪枝,我们使用mean ' 1范数[35]得到剪枝集,并在一次迭代中进行剪枝。从表6可以看出,顺序贪婪算法在评估过滤器的联合显著性方面比常规剪枝策略表现得更好,从而以最大的压缩比获得最高的精度。

image.png
性能敏感的Oracle标准。

1)“1个度量”的效果:我们测试了另外三个度量,即“1个规范”、“2个规范”和“最小映射”。具体来说,我们在PASCAL VOC上对SSD300进行了压缩实验用相同的压缩设置和不同基于方法的oracle准则
(α=6, d1=0.06, P=0.8)。结果如表7所示,从表7中可以看出,最小映射可以获得最高的压缩比,但会严重损害压缩性能,而基于最大值的准则可以在可接受的FLOPs和参数减少的情况下获得最佳压缩性能。最小范数导致性能严重下降的原因是,该准则的目的是寻找最小的剪接比,以确保所有任务的性能降至局部阈值以下,而不区分这些任务对各种滤波器的不同灵敏度,这不可避免地会对许多重要的滤波器进行剪接。
image.png
2) 任务数量的效果: 我们讨论了在性能敏感的oracle标准中不同任务数量下的性能表现。以NYUD-v2上的MTINet为例,为了简化对性能感知准则的探索,我们根据每个任务所处的阶段将任务分为四组NYUD-v2上的子任务。将一个任务的四个多尺度输出打包为一个任务,将最终的预测绑定为另一个任务。这样,NYUDv2上的任务被划分为四个子任务,分别标注为表8中两个任务下的初始子任务和最终子任务。表8中的实验表明,尽管压缩比略大(例如3.6 MParams vs. 6.5 MParams),但减少压缩任务数会严重损害性能。相反,当压缩标准中包含更多的任务时,模型可以恢复更多。

Hyper-parameter分析。我们进一步研究了改变PAGCP中超参数对压缩性能的影响。特别地,有5个超参数可能影响压缩性能,包括剪枝序列初始化时的剪枝比、每层剪枝时的掩蔽比γ、初始下降阈值d1、剪枝层滤波比P和全局性能下降阈值α。直观上,d1和α决定了FLOPs的主还原比,而滤波比变量P则用于平衡剪枝比和剪枝质量。为了研究剪枝比和掩蔽比,我们分别从{0.1、0.3、0.5、0.7、0.9g和f0.025、0.05、0.075、0.1、0.125、0.15}组中取样。其他超参数设为:d1=0.6, α=6, P=0.8。对于d1和P的研究,我们对d1进行采样;P分别为f0.02、0.04、0.05、0.06、0.08g和f0.6、0.8、1.0}。其他超参数设为:α=6,剪枝比=0.3。

image.png

masking ratio = 0.05。对于α的研究,我们从集合{3, 6, 9}中抽取α,并设置其他超参数:剪枝比=0.3,掩蔽比=0.05,d1=0.6, P=0.8。通过调整这些参数得到的压缩结果如图5所示。

我们可以观察到:(1)当剪枝比大于0.3时,压缩性能保持相对稳定;(2)较小的掩蔽比可以获得较大的压缩比,因为对候选滤波器的选择更细粒度;(3)在相同剪枝比下,第一剪枝层的性能下降阈值较大,各层的滤波比较小,全局性能下降阈值较小,可以保持较好的性能。这表明有必要探索每一层的修剪空间。

5.2 PAGCP在分类任务上的专门化

image.png

由于分类任务是多任务学习的特殊情况,我们还测试了PAGCP与单任务设置的兼容性。在这种情况下,性能感知的oracle标准退化为普通的oracle形式,即丢失分类预测。为了公平比较,我们遵循之前的修剪工作,在ImageNet[74]上压缩ResNet50[27]。压缩设置实验设为:d1=0.06, α=5, P=0.8。我们使用标准训练设置(batchsize=256,初始学习率=0.01,余弦退火180次)对修剪后的模型进行微调。压缩结果如表9所示。与最先进的修剪方法相比,我们的方法在Top-1(-0.14%)和Top-5(-0.06%)上保持最小的精度下降,同时实现了较大的压缩比(FLOPs下降61.0%)。这更加论证了关节显著性的本质和PAGCP的有效性(更多结果见附录B.2)。

5.3加速研究

我们进一步探索剪枝后的加速结果。我们在三个基准数据集上进行了实验,在不同类型分辨率和平台的各种模型上进行了充分的验证。具体来说,我们在两个平台上测量延迟,包括云平台(单个NVIDIA GeForce RTX 3090)和基于单个Snapdragon 855处理器的移动平台。延迟计算采用两种分辨率的图像(320×320和640×640)作为两个平台的输入。在云平台上,我们报告基于批大小为32的延迟。在移动平台上,我们报告了基于ARM (CPU)和OpenCL (GPU)框架的批处理大小为1的延迟。为了公平比较,我们在相同的平台上测试了几种基于先前压缩方法的轻量级模型,例如,基于瘦身的修剪模型和基于eagleeye的修剪模型。结果如表10所示。通常,我们可以在具有两种分辨率类型和不同基准的所有平台上获得1.2x ~ 3.3x的修剪模型加速度。我们的方法在SSD型号上实现了最大的延迟加速,在YOLOv5m上实现了与YOLOv5s和yolovs相似的延迟。对于MTI-Net,我们报告了ARM和RTX3090上的延迟时间,因为有些操作不支持OpenCL,这也解释了为什么MTI-Net的加速不如其他两个模型那么显著。尽管如此,与以前的修剪方法相比,PAGCP可以在不同的模型和数据集上实现最大的延迟加速(详见附录B.5)。

5.4 可视化

修剪结构的可视化。为了清晰地显示结构变化,我们选择结构简单清晰的VGG16-SSD作为目标模型,对剪枝过程进行可视化。结果如图6所示。我们列出宽度,即通道号,在PASCAL VOC数据集上对SSD300进行每次迭代的每个目标层剪枝。从图6中可以看出,1)深层比浅层修剪得多,这与前人[49]认为SSD300可能在PASCAL VOC数据集上过拟合一致;2)大多数层保留了相邻层之间的宽度比,这反映了PAGCP更依赖于挖掘相邻层间过滤器的相关性来进行多任务模型修剪。
image.png

灵敏度分布的可视化。我们给出了SSD300各层剪枝过程中最敏感任务的分布,如图7所示。可以看出,模型中的任何任务都有可能成为某一层中最敏感的任务,其中面向分类的任务似乎比面向回归的任务更敏感(更多示例参见附录B.3)。原因可能是与分类相关的特征通常更抽象,具有高级语义,与回归相关的特征相比,通过堆叠多个非线性映射层进行提取,需要更深入、更复杂的结构。

可视化预测。我们给出了一些经过修剪的YOLOv5m模型在COCO上的目标检测结果,以及经过修剪的MTI-Net在NYUD-v2上的常规多任务学习结果,在图8和图9中展示出来,结果表明,使用PAGCP的修剪模型在多任务学习中仍然表现良好(见附录C的一些失败分析)。
image.png
image.png

6.结论

在本文中,我们提出了一个有效的性能感知全局通道修剪(PAGCP)框架,以压缩各种模型,包括目标检测,传统的多任务密集预测,甚至分类。从理论上推导了PAGCP的优化目标,并提出了一种序贯贪婪剪枝策略来近似求解目标问题。特别地,所开发的修剪策略由两个关键模块组成,包括考虑不同过滤器对层内和层间压缩性能共同影响的顺序通道修剪方案,以及考虑不同任务具有不同性能敏感过滤器的性能感知oracle准则。在多个检测、MTL和分类数据集上进行的大量实验证明了提出的PAGCP在预测精度、参数和FLOPs方面具有最先进的压缩性能,并且可以很好地推广到各种一级和两级检测器、MTL模型和分类网络。我们还给出了使用所提出的PAGCP压缩模型在云和移动平台上的真实推理时间,以显示我们的压缩模型在移动设备上的实时应用潜力。