没有合适的资源?快使用搜索试试~ 我知道了~
1458具有剩余连接和有限数据的神经网络剪枝罗建浩吴建新南京大学软件新技术国家重点实验室,南京,中国网址:luojh@lamda.nju.edu.cn,wujx2001@nju.edu.cn摘要滤波器级剪枝是加快深度CNN模型推理速度的有效方法。尽管已经提出了许多剪枝算法,但仍有两个问题有待解决。第一个问题是如何修剪剩余连接。我们建议通过基于KL发散的标准来修剪残留连接内部和外部的通道第二个问题是用有限的数据进行修剪。我们观察到一个有趣的现象:在小数据集上直接修剪通常比微调在大数据集上从头开始修剪或训练的小模型更糟糕。知识提炼是弥补有限数据不足的有效途径。然而,教师模型的对数可能是噪声的。为了避免标签噪声的影响,我们提出了一种标签细化方法来解决这个问题。实验证明了我们的方法(CURL,剩余连接压缩和有限数据)的有效性。CURL在ImageNet上的性能明显优于以前最先进的方法。更重要的是,当对小数据集进行修剪时,CURL实现了与微调预训练的小模型相当或更好的性能。1. 介绍深度神经网络现在已经成为各种计算机视觉领域的主导方法,例如图像识别[10,20,35]和对象检测[5],并且我们已经见证了模型精度的巨大提高但是,在资源受限的设备(如手机)上部署大型CNN模型仍然具有挑战性。由于过度参数化,在小型设备上运行笨重的大型模型既耗费存储又耗时。网络剪枝是一种有效的工具,可以在推理速度和模型精度之间获得满意的平衡。在这些方法中,过滤器级修剪旨在去除国家自然科学基金部分资助项目J. Wu是通讯作者。(a)瓶颈(b)沙漏(c)钱包图1.使用不同策略的残余块修剪的说明。(a)剩余块的瓶颈结构。(b)只修剪瓶颈内的通道,生成沙漏结构。(c)修剪剩余连接内部和外部的通道,生成类似于打开的钱包的形状。所有不重要的过滤器都按照一定的标准。这种策略不会破坏原有的模型结构,近年来受到越来越多的关注。虽然已经提出了许多过滤器级修剪算法,仍然存在一些开放的问题。首先,修剪剩余连接非常困难。 如示于图1、以往的剪枝方法大多只对剩余连接内的滤波器进行剪枝,而输出通道数不变。对于较小的目标模型(即,更多的过滤器修剪),原来的瓶颈结构将成为一个沙漏。显然,沙漏结构内部的中间层的表征因此,修剪通道内部和外部的剩余连接是更可取的加速网络。然后,修剪的块仍然是瓶颈或处于打开的钱包形状。如实验部分所示,钱包结构与沙漏结构相比具有更多的优点:1)由于更大的修剪空间,它更准确; 2)即使在相同数目的FLOP下,它也更快; 3)它可以节省更多的存储空间,因为将修剪更多的权重。第二个问题是关于用有限的数据修剪模型。大多数当前的修剪方法只报告它们在玩具数据集上的结果(例如,MNIST [21],CIFAR [19])或大规模数据集(例如,ImageNet [33]),忽略了一个重要的真实应用场景:修剪每个类别具有很少图像的小数据集上的模型。这是一个非常普遍1459因为我们不会将ImageNet应用到实际应用中。直接修剪目标数据集(通常很小)是必要的。为了在目标小数据集上获得小模型,有两种不同的方法:1)使用大数据集(或使用在大数据集上从头开始训练的小网络)压缩网络,然后在目标小数据集上进行微调; 2)直接修剪模型而不访问大数据集。在许多现实场景中,唯一的选择是使用小数据集压缩网络,然后在同一个小数据集上进行微调。但是,现实情况是,在小数据集上直接修剪。这种现象广泛存在于各种网络和数据集中。例如,如ThiNet [29]所示,在转移到其他域时,微调ImageNet上压缩的修剪模型是更好的选择。他们发现,在CUB200 [36]上直接修剪的准确率仅为66.90%,而微调修剪后的ImageNet模型可以达到69.43%。一个困境是,直接修剪目标数据集通常是在现实世界的应用程序中的情况,其中大型数据集要么是专有的,要么太昂贵而无法由普通用户使用。在本文中,我们提出了CURL,即压缩使用R的剩余连接和L有限的数据,以解决这两个问题。为了修剪剩余连接之外的通道,我们证明了由于捷径连接,同一阶段中的所有块都我们提出了一个KL-分歧为基础的crite- rion来评估这些过滤器的重要性。残余连接内部和外部的通道都将被修剪,从而导致钱包形结构。在ImageNet上的实验表明,本文提出的残差块剪枝方法的性能优于现有的方法。为了解决由于缺乏足够的训练数据而导致的问题,我们建议将知识蒸馏[14]和混合[40]结合在一起,并通过图像变换来扩大训练数据集。我们还提出了一种新的方法来校正教师模型的对数中的噪声。所有这些技术都大大提高了在有限数据条件下直接剪枝的精度我们的贡献总结如下。• 我们提出了一种新的方法来压缩残差块。我们不仅修剪了残留分支内部的通道而且还包括其输出激活图的通道(恒等分支和残差分支)。结果表明,该钱包形结构比以前的沙漏形结构具有更多的• 数据增广在有限数据的我们表明,结合数据增强和知识提炼可以实现更好的性能。为了避免标签噪声的影响,我们提出了一种标签细化策略,可以进一步提高准确率。2. 相关工作剪枝是加快模型推理速度、减小模型规模的有效方法网络剪枝的最新进展大致可分为两大类:非结构化剪枝和结构化剪枝。早期的研究主要集中在非结构化剪枝上. Han等人[8,9]提出了一种基于幅度的剪枝方法来去除冗余权值。具有小绝对值的连接被视为unimportant并被丢弃。为了弥补意外损失,郭某等人。[7]将拼接操作纳入网络修剪。一旦发现修剪的连接是重要的,它们可以在任何时候被恢复。然而,非结构化剪枝的弱点也是显而易见的。由于不规则连接导致的缓存和内存访问问题,其实际推理速度将受到不利影响。因此,诸如滤波器级修剪的结构化修剪是更优选的。在过滤器级修剪中,如果整个过滤器被认为是不重要的,则丢弃该过滤器。重要性评价标准对剪枝的成功与否起着至关重要的作用。Li等[22]将先前的基于幅度的准则引入过滤器级修剪,并根据其N1范数计算重要性得分。He等人[13]提出通过基于LASSO回归的方法和最小二乘重建来选择滤波器。Luo等人[29]基于从其下一层计算的统计数据计算过滤器重要性。 He etal. [12]计算了一层内过滤器的几何中值,以修剪具有冗余信息的过滤器。也有一些探索没有明确计算每个过滤器的重要性。Liu等[25]对批量归一化层的比例因子进行了NH1Huang和Wang [15]还在模型训练过程中引入了缩放因子。通过强制一些因子为零,不重要的过滤器将被修剪。Luo等人[28]设计了有效的信道选择层,以端到端的方式找到不太重要的滤波器He等人[11]杠杆强化学习有效地对设计空间进行采样,并实现了更好的压缩性能。Yu等人[39]提出了可精简的神经网络,这是一种训练可在不同宽度下执行的单个CNN模型的通用方法。虽然这种方法不是为修剪而设计的,但是减少了残差块的输出维度。但是,除了可细化的网络之外,上述过滤器修剪方法的修剪模型都是沙漏形状的。综上所述,这些剪枝方法在玩具数据集或大规模数据集上都取得了很好的效果,并对数据库的分类有着重要的贡献1460B64-d残差块164-d残差块164 × 64 × 1 ×132× 64 × 1 ×1BN,ReLU64 × 64 × 3 × 3256 ×64× 1 × 1BN,ReLUBN256 × 64 × 1 × 1BN,ReLU32×32 × 3 × 3BN,ReLU128×32 × 1 ×1128× 64× 1 × 1BNBNBN+快捷连接+快捷连接ReLUReLU256-d残差块2修剪128-D残差块264 × 256 × 1× 132×128 × 1 ×1BN,ReLUBN,ReLU64 × 64 × 3 × 332×32 × 3 × 3BN,ReLUBN,ReLU256 × 64 × 1 × 1128×32 × 1 × 1BN快捷连接BN快捷连接ReLU +256-dReLU +128-d图2.剩余块修剪策略的说明。我们的方法不仅修剪残差块内的通道(红色数字),而且还修剪其输出的通道(绿色数字)。每个矩形(卷积层)中的前两个数字分别表示一个层中的输出和输入通道的数量。这个数字最好用彩色看。对网络修剪的发展有很大的帮助。但它们都忽略了有限数据的剪枝问题,剪枝后的模型是沙漏形状的。据我们所知,这是第一次尝试解决在一个小的有限数据集上修剪网络的问题。3. 我们的方法在本节中,我们将提出我们的方法,CURL,它代表使用R剩余连接和L有限数据的压缩。顾名思义,CURL包括两个主要部分:修剪剩余连接和修剪有限的小规模数据。3.1. 修剪剩余连接第一步是评估每个过滤器的重要性我们将简要回顾剩余联络的概念,包括剩余联络的结构和现有评价标准的不足。然后,我们的新方法将被提出。由于存在快捷连接,一个阶段中所有残差块的通道号需要一致,以便求和运算有效。因此,修剪剩余连接是非常困难的。大多数以前的研究只集中在减少残余块内的通道(如图中红色数字所示)。2),保持输出维度不变。然而,存在一个很大的需求的剩余连接修剪。首先,修剪内部和外部通道比在推理期间仅修剪内部通道更快其次,由于每个块的激活映射减少,我们可以节省更多的内存空间。最后但并非最不重要的是,减少剩余输出意味着我们的修剪空间被扩大。我们可以在相同的压缩比下达到为了减少输出维度,应同时修剪同一级中的所有块(以及下采样层)。这不是一个简单的任务,用以前的方法是无法完成的。以前的重要性评价标准大多只关注单层(例如,ThiNet方法[29]),忽略其他层的关系。因此,我们应该设计一个新的重要性标准,可以同时评估多个过滤器3.1.2提出的修剪方法受ThiNet [29]的启发,我们提出了一种可以全局评估过滤器重要性的新方法ThiNet的主要思想同样,我们的目标是最小化最后一层的信息损失(即,softmax层)。让我们来看看Fig.2作为例子。残差块的输出尺寸为256。现在我们要评估每个通道的重要性得分。一个自然的想法是逐个去除输出通道,并计算通道去除后的信息损失。由于结构约束,每个残差块的输出通道应同时被移除。例如,在图1中,块1、块2和下采样层的第一输出通道应当被同时移除。二、受网络瘦身[25]的启发,我们将重置BN层的参数以移除相应的滤波器。每个块的输出通道由下式3.1.1剩余连接概述xi−µBy=γ+β,⑴图2示出了我们的策略为残留块prun- ing。左侧部分显示了ResNet的典型残差结构[10]。 假设有两个残差块,现阶段。每个块由三个卷积层组成(包括批处理规范化层和ReLU激活层)。通常,下采样层对于处理两个阶段之间的不同激活大小和通道数是必要的iσ2+其中,γ、β、μB、σB是批次归一化[16]参数。由于BN与通道无关,因此我们可以简单地设置γ=β=0,并且对应的输出通道将被清零。这意味着每个输出对应的滤波器块被删除。然后,我们将评估性能变化之前/之后的信道删除。因此,我们需要一个代理数据集。1461当然,代理数据集可以是训练数据集。然而,使用所有训练图像可能是混乱和耗时的。我们从训练数据集中随机选择256张图像,并提取这256张图像的预测概率(softmax层的输出)。设p是原始网络的输出概率,q是信道去除后的概率。比较两个概率分布相似性的一种常用方法我们计算过滤器重要性得分为(a)原始图像(b)旋转(c)剪切[4]Σns= D KL(p||q)=π对数皮岛(二)i=1qi如果当前滤波器是冗余的,则s将接近0。重新移动该滤波器对预测结果几乎没有影响。相反,s的值越大意味着当前维度越重要。因此,使用KL-散度来表示重要性分数是合理的。它可以反映去除某些滤波器的信息损失。该步骤将重复256次,得到256个重要性评分,每个通道一个。对于残留块内部的那些通道(图1的红色数字),(2)过程更容易。我们只需要在每一步删除当前图层的一个滤镜。最后,所有层中的过滤器分数将按升序排序。顶部k个过滤器将被移除,导致修剪的小模型。在实践中,k的值取决于可用的计算或存储预算。为了防止任何极端问题(例如,在修剪之后在层中只剩下很少的滤波器),每一层的最小压缩率不应小于阈值(例如,0.3)。我们的修剪方法的好处是显而易见的。首先,它是一个全局准则,可以同时评估所有过滤器的影响这种全局准则使得剩余连接的修剪成为可能。其次,重要性得分和过滤器位置之间没有直接的相关性。在先前的基于幅度的方法(例如,每个过滤器的(=1-范数[22]),层之间的重要性分数的大小是不同的。因此,应规定每层的固定压缩比。然而,我们可以实现自适应压缩。应该删除多少过滤器完全取决于分数。3.2. 使用有限数据进行然后在目标数据集上微调修剪的小模型。用有限的小规模数据进行微调是一个挑战。数据扩充(例如,mixup [40])在该步骤中起重要作用。如前所述,ImageNet预训练是一种重要的增强方法,它比直接在小数据集上进行剪枝获得了更高的准确性。ImageNet和小数据集之间的主要区别是训练示例的数量为了弥补这一差距,我们使用了几个图像变换(d)2×2shuffle [3](e)3×3shuffle [3](f)4×4shuffle [3]图3.扩展数据集的可视化。扩展训练数据集并通过知识蒸馏微调修剪的小模型的技术[14]。然而,logits可能是嘈杂的(因为教师模型没有看到这些增强的数据)。然后,我们提出了一个标签细化方法来更新这些嘈杂的logits。3.2.1数据扩展由于在小数据集上进行微调的主要困难是由有限的数据引起的,因此自然的想法是生成或收集更多的训练图像。例如,Chenet al. [2]利用GAN生成训练样本。然而,训练生成器网络可能是一个更具挑战性的问题,特别是对于具有大分辨率的真实图像。在这里,我们采用一种更简单的方法来扩展训练数据集。图3显示了数据扩展结果的示例我们使用三种不同的图像变换技术:• Rotate:将原始图像随机旋转r度,其中r∈[0,360)。• Cutout [4]:从原始图像像素中随机位置裁剪出一个矩形块。矩形的边长是从[0. 2,0。5]是原始图像大小的两倍• Shuffle [3]:将图像均匀地划分为N×N个子区域,并对这些划分的局部区域进行洗牌。我们使用三种不同的分区大小,即2×2、3×3、4×4。我们在这些变换背后的动机是,最具鉴别力的信息往往存在于局部图像块中(例如,鸟的腿颜色)用于对象识别问题。为了找到这些有区别的区域,网络应该更多地关注局部补丁而不是全局信息。因此,我们可以切掉一些区域或者甚至打乱整个图像以去除全局信息的影响(即,背景)。1462KL损失softmaxKLCE3.2.2标签优化+我们使用知识蒸馏[14]来微调小模型。原始的大模型扮演教师模型的角色,而修剪后的小模型是学生模型。一个典型的策略是在软目标(教师模型的logits)和硬目标(groundtruth标签)的监督下训练学生模型。但是,由于教师模型尚未看到新数据,因此其输出(logits)可能很吵。Inspired by PENCIL [38] and R2-D2 [37], we can up-date the noisy logits during model training via SGD. 不过,更新logits是很危险的。如果学生模型不够准确,软目标的质量可能会更新,变得更差为了避免这种情况,我们将整个训练过程分为两步:利用知识蒸馏加混合对原始小数据集进行微调,以及利用标签细化对扩展数据集进行微调。请注意,扩展的新数据和我们提出的改进方法仅用于步骤2。第一步:混合知识蒸馏。 Knowl- edge distillation[14]和mixup [40]是两种广泛使用的技术,对于有限数据的训练确实有帮助。我们建议将这两种技术一起首先,通过mixup生成新输入:图4.标签细化的图示。软目标(教师模型的logits)也将在模型微调期间更新。实线和虚线箭头分别表示前向和后向传播。如[37,38]。在模型微调期间,软目标也将通过SGD进行更新:u←−u−η·uL,(6)其中η是更新u的学习率,uL表示损失函数L相对于u的梯度,其通过反向传播计算。4. 实验在本节中,我们将评估x=λxi+(1−λ)xj,y=λyi+(1−λ)yj,(3)卷曲。 为了比较卷曲与国家的最先进的其中( xi, yi)和( xj, yj)是两个随机例子,λ∈[0,1]是从Beta分布中导出的。 新的输入x_w然后被馈送到教师和学生模型中。设u表示教师模型的输出logits,v表示学生我们的总损失计算如下:2首先,我们在ImageNet上测试了方法的有效性[33]。ResNet50 [10]将在此数据集上修剪。然后,将介绍小规模数据集上的更多结果。我们的方法在这些数据集上实现了比ImageNet预训练的小型模型更好或相当的性能最后,我们将以消融研究结束本节。所有实验均使用PyTorch进行[32]。L=αTLKL(p,q)+(1−α)LCE(q,y),(4)其中p=softmax(u/T),q=softmax(v/T)是温度T下的软最大输出。LKL和LCE分别表示KL-发散损失和交叉熵损失α∈[0,1]控制损失之间的平衡通过这两种技术,修剪后的小模型可以收敛到良好的局部最小值。第二步:知识提炼与标签提炼。 然后,我们在扩展的数据集上微调小模型图4示出了我们的标签细化过程的框架。软目标(即,教师模型我们的损失函数被设计为:L= αT 2L(q,p)+(1 − α)L(q,y)。(五)符号与Eq相同。(四)、注意这里没有使用mixup。与知识蒸馏的主要区别在于,我们使用反向KL发散损失来鼓励模型更加关注标签细化,4.1. 在ImageNet实作详细数据。我们遵循以前的训练设置。为了进行公平的比较,这里没有使用第3.2换句话说,我们在ImageNet实验中没有使用混合、知识蒸馏一旦过滤器的重要性已经由CURL评估,我们将删除所有层的所有不重要的过滤器然后用100个时期微调修剪后的数据论证策略和参数设置与Py-Torch官方示例相同。 我们采用大的小批量512.初始学习率设置为0。1.一、这里还使用了预热[6]和余弦学习率衰减[27]。由于最后一级的输出与预测密切相关我们将不修剪最后剩余级的输出维度(即,输出信道号仍然是2048)。表1显示了ResNet50的修剪结果。我们使用1-crop验证来测试模型准确性:短边的大小调整为256,然后是224 × 224的中心裁剪和输入剪枝模型softmaxsoftmax软目标硬靶CE损失1463表1.在ImageNet上修剪ResNet50的比较结果方法Top-1 Acc. 前5名Acc. Macs#参数。ResNet5076.15%92.87%4.09G25.56M[29]第二十九话68.42%88.30%1.10G8.66M[24]第二十四话69.31%89.12%1.11G10.21M国内生产总值-0.5[23]69.58%90.14%1.57G-泰勒-FO [30]71.69%-1.34G7.90M[39]第三十九话72.10%90.57%1.05G6.92M[28]第二十八话73.05%91.25%1.39G12.60M卷曲73.39%91.46%1.11G6.67M表2. 4个小数据集的总结。均值-标准化将报告最后一个历元的准确度。显然,CURL明显优于以前的最先进技术。我们的方法获得了 更 高 的 精 度 , 即 使 在 更少 的MAC ( Multiple-Accumulate operation)和参数。为了证明我们对残差连接修剪的动机,我们还在NVIDIA Tesla M40 GPU上测试了实际的推理速度。AutoPruner [28]仅修剪残差块内的通道。在较小的压缩率下(将移除更多的过滤器),残留块的中间层将非常薄,导致瓶颈结构成为沙漏。相比之下,我们修剪内部和外部残留块的通道。修剪后的结构仍然是瓶颈或打开的钱包。Wallet不仅比沙漏更准确(上面已经演示过),而且即使在MAC数量相同的情况下也更快为了公平比较,我们调整阈值以获得具有1.39G MAC和7.83M参数的新模型。沙漏在M40 GPU上处理小批量256张图像的推理时间更重要的是,钱包的模型尺寸比沙漏小得多(几乎减半)。因此,内存消耗可以大大减少与我们的修剪结构。4.2. 小规模数据集上的剪枝然后,我们在小数据集上修剪大模型。我们的目标是证明使用CURL直接修剪有限的数据可以实现与使用ImageNet修剪或训练的小模型相当甚至更好的性能 。 两 个 广 泛 使 用 的 网 络 , 即 ResNet50 [10] 和MobileNetV2 [34],将在四个小规模数据集上进行修剪。表2总结了这四个数据集的信息,包括训练和验证大小。基线设置。我们采用三个基准进行比较:1)微调在ImageNet上预训练的大型模型。这是在目标任务上获得分类网络的典型方法。2)在Ima-geNet上微调一个经过预训练(MobileNetV 2 -0.5)或修剪(ResNet 50-CURL,表1中的CURL模型)的小模型。这是一个妥协,由于难以prun- ing与有限的数据。3)直接修剪微调后的大模型(即,基线1)在目标小数据集上使用可精简神经网络方法[39]。在微调期间,模型使用32的小批量大小进行300个epoch的训练学习速率初始化为0.001,并使用余弦调度减少。在前5个epoch中使用预热。混合也被采用,其中α=1。其他参数设置和数据论证策略与PyTorch官方示例相同。CURL的实现细节。CURL的微调过程分为两个步骤。为了公平的比较,总的微调时期仍然是300。在第一步中,在200个epoch中使用mixup和知识蒸馏来训练修剪模型知识蒸馏的温度T设定为2,α在方程中。(4)被设置为0.7,并且学习率为0.01。还使用预热和余弦衰减时间表。在第二步中,由于数据集扩大了6倍,我们用16个epoch训练小模型(16×6×100)。由于logits将在微调期间更新,因此模型对温度不敏感,我们设置T=1这里α值不变。修剪网络的学习速率被设置为0.0001,并使用余弦调度来降低。至于更新日志的学习率η其他参数设置与基线中使用的参数设置相同。ResNet的剪枝策略与ImageNet上的实验相同。至于MobileNetV2,所有的瓶颈都将被修剪。请注意,每个瓶颈的第二层是深度卷积,这意味着输入维度应该与其输出相同因此,每个残余块的前两个层将被同时修剪。表3显示了这四个数据集的结果。第二行和第三行之间的性能比较证明,在训练数据有限的情况下,直接修剪小数据集通常比微调ImageNet上训练或修剪的小模型更糟糕。换句话说,ImageNet预训练仍然是一种强大的技术,可以用有限的数据获得更准确的模型。然而,这种技术可能不适用于许多现实世界的应用。在大规模数据集上进行训练也是繁琐且原始的大型数据集甚至可能在许多现实世界场景中不可用。与此形成鲜明对比的是,所提出的CURL方法在大多数数据集上都运行良好。我们的方法实现了与在ImageNet上训练或修剪的微调小模型相当甚至更好的性能。MobileNetV 2 -1.0时数据集名称元类#火车 #Val.#分类CUB200-2011 [36]鸟类5994 5794200[31]第三十一话猫狗3680 366937[17]第十七话狗12000 8580120[18]第十八话汽车8144 80411961464表3.修剪小规模数据集的结果。在每个模型中,有4种方法:1)微调在ImageNet上训练的大模型; 2)对在ImageNet上训练或修剪的小模型进行微调; 3)使用可精简神经网络直接在小数据集上修剪大模型[39]; 4)使用CURL直接在小数据集上修剪大模型。[18 ]第18届全国人大常委会副委员长[19]表4.用不同的微调方法在CUB200上修剪MobileNetV2。这里,方法nothing +mixup +KD +mixup& KD我们的划痕Acc.(%)70.76 73.89 77.87 77.99 78.72 64.39模型被修剪后,CURL在所有数据集上的性能都大大优于MobileNetV 2 -0.5。值得一提的是,在Oxford Car上,CURL甚至比原来的大型车型更出色。这一结果表明,所提出的CURL方法是非常有用的修剪有限的数据时。至于ResNet,由于ResNet 50-CURL是一个非常强大的基线(与以前的最新技术相比,ResNet 50-CURL在ImageNet上实现了最佳性能,并且已经使用CURL进行了训练),因此直接在小数据集上进行修剪的优势并不那么显著。但是,我们仍然可以在CUB 200 -2011和牛津汽车上取得比ResNet 50-CURL更好的结果。4.3. 消融研究为了探索CURL不同模块的影响,我们将在本节中进行消融研究。主要研究了三个模块,即微调策略、剪枝准则和标签细化。所有消融研究均在CUB 200 -2011 [36]上使用Mo-bileNetV 2 [34]模型进行。4.3.1微调策略的影响我们首先研究不同的微调策略的影响大型微调模型(MobileNetV 2 -1.0)由CURL评估和修剪,生成一个小但不准确的模型。然后,使用具有300个时期的几种不同的策略来微调修剪的模型。其他参数设置与以前的实验相同。表4总结了不同微调方法的结果。一个标准的方法是训练小模型没有像混淆或知识蒸馏这样的增强技术。不幸的是,最终的准确率只有70.76%,这比通过相同方法微调的MobileNetV 2 -0.5 ( 72.97% ) 差 得 多 。 如 果 使 用mixup,准确率可以提高到73.89%,但仍然比使用mixup微调的MobileNetV 2 -0.5(73.96%)差。请注意,如果我们使用具有相同微调策略的Slimmable NN[39]修剪模型,其准确率仅为72.20%(更多详细信息请参见表3)。这一现象表明,我们的KL分歧为基础的标准,即,当量(2),在评价过滤器重要性方面效果较好。另一方面,这些结果也证明了我们的动机:直接在小数据集上进行修剪通常比微调在大数据集上训练或修剪的小模型尽管我们的剪枝方法在ImageNet上的表现优于以前的最先进技术,但由于缺乏足够的训练数据,在小数据集上进行微调仍然非常具有挑战性。如[1]所示,知识蒸馏对有限数据的剪枝成功有很大如果我们配备了知识蒸馏的标准微调方法,最终的准确率可以提高到77.87%。如果将混淆和知识提炼结合起来,则准确率可进一步提高到77.99%.在此基础上,我们提出了用图像变换的方法来扩大训练数据集,用标签细化的方法来更新教师模型最后,修剪后的小模型可以达到78.72%的准确率,这是几乎相同的未修剪的大模型(78.77%)。请注意,混淆和知识蒸馏的组合,以及教师的logits的更新最后一个实验是关于从头开始训练。我们随机初始化修剪后的网络结构的权重从0.05开始,学习率的值也通过余弦调度降低。其他参数设置与前一个相同然而,从头开始训练的准确率仅为64.39%,远低于任何修剪结果。MobileNetV2-1.0Acc.78.77%Macs299.77MAcc.89.94%Macs299.56MAcc.78.94%Macs299.67MAcc.87.27%Macs299.76MMobileNetV2MobileNetV2-0.573.96%96.12M86.32%95.91M72.15%96.02M81.50%96.11M[39]第三十九话72.20%96.12M83.37%95.91M67.81%96.02M87.02%96.11M卷曲78.72%96.07M86.89%95.91M74.72%96.04M87.64%96.15MResNet5084.76%4.09G92.59%4.09G83.82%4.09G91.89%4.09GResNet50ResNet5081.33%1.11G百分之九十点八四1.11G81.60%1.11G88.60%1.11G[39]第三十九话80.05%1.05G89.67%1.05G77.80%1.05G91.47%1.05G1465我我我表5.在CUB200上用不同的评价标准对MobileNetV2进行剪枝我们修剪了最后一个瓶颈的中间层的50%过滤器在没有微调的情况下测试精度。方法随机体重总和和体重损失KL-Div. (我们的)表6.在几个小数据集上使用/不使用所提出的标签细化方法的修剪结果模型精炼?CUB200宠物狗车77.43% 86.65% 74.02% 87.15%Acc.6.80% 8.25% 21.83% 66.33%MobileNetV2✓78.72% 86.89% 74.72% 87.64%这种现象是合理的,因为用有限的数据进行训练非常具有挑战性。最近,一项研究[26]表明,从头开始训练相同的网络可以实现与修剪相当或更好的性能。他们认为修剪的真正价值在于找到一个更好的网络结构,而不是重要的过滤器。在足够的训练时间和数据下,这一然而,当条件不适用时(例如,训练有限的数据),该结论将不成立。在这种情况下,找到重要的过滤器变得更有价值。综上所述,我们的剪枝方法为如何获得有限数据的小模型以及如何摆脱对大数据集的依赖提供了可行的解决方案,这在许多现实世界的应用中非常重要。4.3.2修剪标准然后,我们研究了不同的标准评估过滤器的重要性,即,当量(二)、我们关注MobileNetV2的最后一个瓶颈结构。在该块中有两层(逐点卷积和逐深度卷积)由于深度方向卷积的结构约束,我们应该同时修剪这两层。完成这项任务最简单的方法是随机丢弃通道。我们随机修剪了这两层的50%过滤器,并在CUB 200上获得6.80%的top-1准确度,无需微调(如表5所示)。从这个最简单的基线开始,我们然后专注于如何设计一个更好的方法来评估多个过滤器的重要性。一种可能的解决方案是扩展先前的基于幅度的准则。权重和[22]是基于其1-范数计算滤波器重要性的方法。在这里,我们简单地将两个过滤器的得分加在一起:si=<$W1<$1+<$W2<$1,其中W1和W2表示滤波器第一次(逐点卷积)和第二次(深度卷积)的i明智卷积)隐藏层。然而,扩展版本的权重和仅比随机策略好一点(8.25% vs.6.80%)。然后,我们考虑数据驱动的标准,并专注于网络的输出。一个自然的想法是评估精度的变化。如果删除某些过滤器对模型精度没有影响,那么我们可以认为它们不重要。然而,这种方法是不切实际的。我们发现,模型的精度是不敏感的一个或两个过滤器。大多数渠道在评估后会得到相同的分数由于精度与损耗密切相关,我们可以替换AC-ResNet50占82.88% 90.32% 78.65% 91.77%✓83.64% 90.30% 79.79% 92.19%精度随损失变化而变化,并将得分计算为si=Lpruned-Lunpruned。 该标准的性能为21.83%。虽然这个结果明显优于随机和权重和,但修剪网络的准确性仍然不令人满意。受知识提取的启发,我们提出了一个基于KL-散度的准则来评估修剪模型的信息损失。在此准则下,准确率显著提高到66.33%。4.3.3标签细化为了弥补有限数据的缺口,我们提出了一种标签细化技术。通过几种图像变换方法将原始数据集放大6倍然后,通过知识蒸馏在这个扩大的数据集上训练微调的模型。由于标签噪声,软目标也将在训练期间更新。表6说明了我们的标签优化策略的有效性。与标准的混合知识提取方法相比,使用我们的标签精化方法可以在大多数数据集上获得更好的性能。更新软目标可以进一步提高模型精度。例如,如果我们设置η=0(不更新软目标),并在扩展的CUB200数据集上微调修剪的MobileNetV2,准确率为78.56%,略高于低于更新软目标的结果(78.72%)。在这项工作中,我们采用了一种简单的方法来处理软目标的标签噪声。如何纠正误导性的错误标签仍值得探讨。如果使用更高级的算法,则可以进一步提高模型精度。5. 结论在本文中,我们提出了一种新的过滤器级修剪方法,以加快深度CNN模型的推理速度与以往的修剪策略不同,我们通过KL散度为基础的标准修剪通道内外的残余连接。我们还提出了一个标签细化的方法,以避免标签噪声的影响。使用所提出的CURL方法,我们可以直接在小数据集上修剪模型,并且与在大规模数据集上修剪或训练的小模型进行微调相比,可以实现相当甚至更好的结果,这在许多现实世界的场景中具有很大的价值。1466引用[1] Haoli Bai,Jiaxiang Wu,Irwin King,and Michael Lyu.通过交叉蒸馏的少射网络压缩。arXiv预印本arXiv:1911.09450,2019。7[2] Hanting Chen , Yunhe Wang , Chang Xu , ZhaohuiYang,Chuanjian Liu,Boxin Shi,Chunjing Xu,ChaoXu,and Qi Tian. 学生网络的无数据学习在ICCV,第3514-3522页4[3] 岳晨、白亚龙、张伟、陶梅。用于细粒度图像识别的破坏与构造学习在CVPR中,第5157-5166页,2019年。4[4] Terrance DeVries和Graham W Taylor。改进的卷积神经网 络 的 正 则 化 。 arXiv 预 印 本 arXiv : 1708.04552 ,2017。4[5] Ross Girshick,Jeff Donahue,Trevor Darrell和JitendraMalik。丰富的特征层次结构,用于精确的对象检测和语义分割。在CVPR中,第5801[6] PriyaGo yal , PiotrDolla´r , RossGirshick , PieterNoord-huis , Lukasz Wesolowski , Aapo Kyrola , AndrewTulloch,Yangqing Jia,and Kaiming He.准确的大批量小批量 SGD :1 小时内 训练ImageNet 。arXiv预印本arXiv:1706.02677,2017。5[7] Yiwen Guo,Anbang Yao,and Yurong Chen.高效DNN的动态网络手术。在NeurIPS,第1379- 1387页,2016中。2[8] Song Han,Huizi Mao,and William J Dally.深度压缩:使用修剪、训练量化和霍夫曼编码压缩深度神经网络。2015年,国际会议。2[9] Song Han,Jeff Pool,John Tran,and William Dally.学习权值和连接以实现高效的神经网络。在NeurIPS,第1135-1143页,2015中。2[10] Kaiming He,Xiangyu Zhang,Shaoying Ren,and JianSun.用于图像识别的深度残差学习。CVPR,第770-778页,2016年。一二三五六[11] Yihui He, Ji Lin ,Zhijian Liu ,Hanrui Wang,Li-JiaLi,and Song Han. AMC:AutoML用于移动设备上的模型压缩和加速。在ECCV,LNCS第11211卷,第815-832页,2018年。2[12] 杨鹤、刘平、王紫薇、胡芷兰、易阳。通过几何中值进行滤波器修剪,用于深度卷积神经网络加速。在CVPR中,第4340-4349页,2019年。2[13] Yihui He,Xiangyu Zhang,and Jian Sun.用于加速深度神经网络的通道修剪。在ICCV,第1389-1397页,2017年。2[14] Geoffrey Hinton Oriol Vinyals和Jeff Dean。在神经网络中提取知识。深度学习和表示学习研讨会,NIPS,2014年。二、四、五[15] 黄泽浩和王乃艳。深度神经网络的数据驱动稀疏结构选择。在ECCV,LNCS第11220卷,第317-334页,2018年。2[16] Sergey Ioffe和Christian
下载后可阅读完整内容,剩余1页未读,立即下载
cpongm
- 粉丝: 4
- 资源: 2万+
上传资源 快速赚钱
- 我的内容管理 收起
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
会员权益专享
最新资源
- zigbee-cluster-library-specification
- JSBSim Reference Manual
- c++校园超市商品信息管理系统课程设计说明书(含源代码) (2).pdf
- 建筑供配电系统相关课件.pptx
- 企业管理规章制度及管理模式.doc
- vb打开摄像头.doc
- 云计算-可信计算中认证协议改进方案.pdf
- [详细完整版]单片机编程4.ppt
- c语言常用算法.pdf
- c++经典程序代码大全.pdf
- 单片机数字时钟资料.doc
- 11项目管理前沿1.0.pptx
- 基于ssm的“魅力”繁峙宣传网站的设计与实现论文.doc
- 智慧交通综合解决方案.pptx
- 建筑防潮设计-PowerPointPresentati.pptx
- SPC统计过程控制程序.pptx
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功