Abstract
由于准确性的原因,深度卷积神经网络(CNN)通常具有复杂的设计,有许多可学习的参数。为了减轻在移动设备上部署它们的昂贵成本,最近的工作为挖掘预先定义的架构中的冗余做了巨大的努力。然而,现代CNN在输入分辨率上的冗余还没有得到充分的研究,即输入图像的分辨率是固定的。在本文中,我们观察到使用同一神经网络精确预测给定图像的最小分辨率是不同的。为此,我们提出了一种基于每个输入样本动态确定输入分辨率的新型动态分辨率网络。其中,与期望的网络一起探索和优化计算开销可以忽略不计的分辨率预测器。具体来说,预测器学习每幅图像能够保留甚至超过原始识别精度的最小分辨率。在推理过程中,每个输入图像都将调整到其预测分辨率,以最小化总体计算负担。然后我们在几个基准网络和数据集上进行广泛的实验。结果表明,我们的DRNet可以嵌入到任何现成的网络架构中,以获得相当大的计算复杂度降低。例如,DR-ResNet-50与ImageNet上的原始ResNet-50相比,计算量减少了约34%,但计算精度提高了1.4%,计算量减少了10%。
1.介绍
在算法[6,23,38]、计算能力和大规模数据集[2,18]的发展下,深度卷积神经网络在各种计算机视觉任务中取得了显著的成功。然而,出色的性能伴随着较大的计算成本,这使得CNN很难在移动设备上部署。随着现实应用对CNN的需求越来越大,降低计算成本,同时保持神经网络的性能势在必行。
最近,研究人员在模型压缩和加速方法上付出了很多努力,包括网络剪枝、低比特量化、知识蒸馏和高效的模型设计。网络剪枝旨在通过一定的准则[32,16,19,26]来修剪对模型性能不敏感的不重要的过滤器或块。低比特量化方法用低比特值表示神经网络中的权重和激活[12,14]。知识蒸馏将教师模型的知识转移到学生模型中,以提高绩效[7,39,41]。高效的模型设计利用了轻量级的操作,比如深度卷积,成功构建了一些新颖的架构[8,43,5]。正交于那些通常集中于网络权重或架构的方法,郭等[4]和王等[34]研究了输入图像中存在的冗余。然而,现有的大多数压缩网络中输入图像的分辨率仍然是固定的。虽然深度网络通常使用统一的分辨率(例如ImageNet上的224× 224)进行训练,但图像中对象的大小和位置是截然不同的。图1显示了一些实现最高性能所需的分辨率不同的示例。对于给定的网络架构,对于分辨率较低的图像,网络用于处理图像的FLOPs(浮点数运算)将显著减少。
图1 。一个训练有素的ResNet-50模型的预测结果,用于不同分辨率(112×112,168×168,224×224)下的样品。一些“简单”的样品,比如左栏(panda),可以通过低分辨率和高分辨率来正确分类。但是,一些“硬”样本,比如右栏(豆娘蜓),前景对象隐藏或与背景混合,只能使用高分辨率正确分类。
诚然,输入分辨率是影响CNN计算成本和性能的一个非常重要的因素。对于相同的网络工作,更高的分辨率通常会导致更大的触发器和更高的精度[27]。相比之下,输入分辨率较小的模型性能较低,而所需的触发器也较小。然而,深度网络输入分辨率的下降为我们缓解CNN的计算负担提供了另一种可能。为了有一个清晰的说明,我们首先用图1所示的预先训练好的ResNet50在不同的分辨率下测试一些图像,并计算出给出每个样本正确预测所需的最小分辨率。在实践中,“容易”的样品,比如前景明显的熊猫,可以在低分辨率和高分辨率两种情况下正确分类,“难”的样品,比如前景和背景纠结在一起的豆娘,只能在高分辨率下准确预测。这一观察表明,通过降低分辨率,我们的数据集可以有效地处理更大比例的图像。另一方面,它也与人类的感知系统[1]兼容,即一些样本只在模糊模式下可以很容易地理解,而另一些样本则需要在清晰模式下才能看到。
在本文中,我们提出了一种新的动态分辨率网络(DRNet),它可以动态调整每个样本的输入分辨率,从而实现高效的推理。为了准确找到每幅图像所需的最小分辨率,我们引入了一个嵌入在整个网络前面的分辨率预测器。在实践中,我们设置几个不同的分辨率作为候选,并将图像输入分辨率预测器,以产生候选分辨率之上的概率分布作为输出。分辨率预测器的网络结构经过精心设计,计算复杂度可以忽略不计,并与分类器联合训练,以端到端的方式进行识别。通过使用所提出的动态分辨率网络推理方法,我们可以从每幅图像的输入分辨率中挖掘其冗余性。因此,可以节省分辨率较低的简单样本的计算成本,也可以通过保持较高的分辨率来保持硬样本的准确性。在大规模可视化基准测试和常规ResNet架构上的大量实验证明了我们提出的方法在降低总体计算成本的同时具有可比的网络性能。
图2。总体框架,分辨率预测器指导大型分类器的分辨率选择。BN:批标准化层;Pri:分辨率ri下类别上的概率分布;在推理阶段,分辨率预测器预测一个单热矢量,其中“1”表示相应的选定分辨率。然后将原始图像调整到选定的分辨率,并用选定的BN输入大型分类器
2 Related Works
虽然深度CNN模型显示出了极好的准确性,但它们通常包含数百万个参数和触发器。因此,模型压缩技术正在成为降低CNN计算成本的研究主机。在这里,我们从静态模型压缩和动态模型压缩两个部分重新审视现有的工作。
我们将不知道实例的模型压缩方法归类为静态的。分组卷积(GWC)、深度卷积和点卷积被广泛用于高效的模型设计,如MobileNet [8]、ResNeXt [37]和ShuffleNet [43]。揭示了特征映射之间的模式冗余,Han [5]提出通过一些廉价的操作从内在生成更多的特征映射,Zhang等[42]采用相对较重的计算来提取内在信息,而微小的隐藏细节则通过一些轻量级的操作来处理。以上方法在一定程度上实现了模型加速。然而,他们对所有输入样本一视同仁,而CNN模型或人类识别每个样本的难度是不平等的。因此可以进一步探索实例感知模型压缩。
动态模型压缩考虑了每个样本的不同难度。Huang [9]提出了具有多个分类器的多尺度密集网络,以便在“更容易”和“更难”的输入之间分配不均匀的计算。Wu等人[36]介绍了BlockDrop,它学习动态执行必要的层,以便最好地减少总计算量。Veit等人[29]提出ConvNet- AIG根据输入图像自适应地定义它们的网络拓扑。除了模型架构的动态调整,最近的作品更注重输入图像。维雷尔斯特等人[30]提出了一个小型门控网络来预测像素级掩模,确定动态卷积的评估位置。Uzkent等人[28]提出PatchDrop来动态识别何时何地使用以配对低分辨率图像为条件的高分辨率数据。Yang等人[40]动态利用基网络的子网络来处理不同分辨率的图像。Wang等人[34]提出了带有补丁建议网络的GFNet,该网络战略性地裁剪最小的图像区域以获得可靠的预测。关于多重分辨率和动态机制的著作很多。弹性[31]针对不同的实例使用不同的缩放策略,它从数据中学习如何选择最佳策略。消防栓[21]通过闸门为不同的输入选择不同的分支,并用组合器聚合它们的输出。RS-Net [33]利用私有BNs、共享卷积和全连接层,并以不同的分辨率训练输入图像。
与模型结构的动态调整和增强学习对输入图像的动态修改不同,我们考虑了整个图像,提出了分辨率预测器来动态选择单个模型的性能充足和成本高效的分辨率,以获得端到端的可靠预测。
3 Approach
在本节中,我们首先介绍了提出的动态分辨率网络的总体框架,然后分别详细描述了分辨率预测器、分辨率感知BN和优化算法。
3.1 Dynamic Resolution Network
受不同样本需要不同分辨率来实现最不精确预测的启发,我们提出了一种针对单个大型分类器网络的实例感知分辨率选择方法。如图2所示,提出的方法主要由两部分组成。首先是既有高性能又有昂贵计算成本的大型分类器网络,如经典的ResNet [6]和EfficientNet [25]。另一个是寻找最小分辨率的分辨率预测器,这样我们就可以调整每幅图像的输入分辨率,以便在精度和效率上有更好的权衡。对于任意输入图像,我们首先使用分辨率预测器预测其合适的分辨率r。然后,大型分类器将把调整大小的图像作为输入,当r低于原始分辨率时,所需的FLOPs将显著减少。为了获得更好的性能,在训练过程中对分辨率预测器和基网络进行了端到端的优化。
图2
分辨率预测器。
分辨率预测器被设计成一个基于CNN的预处理操作,然后将输入样本馈送到大的基网络。灵感来源于我们训练有素的大型模型虽然分辨率相对较小,但也可以正确预测相对数量的样本,同时可以节省大量的计算成本。一方面,分辨率预测器的目标是通过推断候选分辨率上的概率分布来找到合适的实例感知分辨率。请注意,从1×1到224×224有大量的候选者,这使得分辨率预测器很难探索如此大范围的分辨率,也没有意义。作为简化策略和实际需求,我们选择m个分辨率候选来缩小勘探范围。另一方面,我们必须尽可能地保持所提出的分辨率预测器的模型大小,因为它会带来额外的触发器FLOPs,否则,如果它额外引入的计算量超过从低分辨率保存的计算量,那么实现这样的模块就变得不切实际。本着这种精神,我们设计了具有几个卷积层和全连接层的分辨率预测器,以完成一个分辨率分类任务。那么提出的分辨率预测器R(·)的预处理可以如下给出:
(1)
其中X是馈送到分辨率预测器的输入样本,m是候选分辨率的总数,是代表每个候选概率的分辨率预测器的输出。然后选择概率最高条目对应的分辨率作为反馈给大型分类器的分辨率。由于从分辨率预测器的软输出到离散分辨率调整操作的过程不支持端到端的训练,这里我们采用Gumbel-Softmax [15]模块G,通过应用Gumbel-Softmax技巧解决不可微问题,将软决策pr转化为硬决策:
(2)
Gumbel-Softmax技巧将在下一小节中介绍。与现有的作品[34,10,30]通常有单独的培训流程和验证流程不同,这里我们用相同的流程来实现。对于训练和验证来说,分辨率预测器首先做出决策,然后只有选定分辨率的输入以正常的方式馈送到大型分类器,如图2左侧所示。由于我们在一个批次中有m种分辨率,所以我们把一个大批次分成m个小批次,并串行地给它们加油,而不是给m个大批次加油[10]。这个实现为分辨率感知的批处理规范化层带来了好处。每个批处理规范化层只需要统计每个分辨率下对应的样本数即可。如果我们采用[10]中的实现,分辨率敏感的BN将统计前向路径中的所有样本,而我们只通过后向路径中的部分样本进行优化。因此BN的统计数据将是不正确的,并导致更差的性能。
Resolution-aware 分辨率感知BN
出于存储压力和加载延迟的考虑,我们的框架建议只使用单个大型分类器,这导致单个分类器必须处理多分辨率输入 并引起两个问题。一个明显的问题是,第一个全连接层将无法以不同的输入分辨率工作,可以通过全局平均池来解决。因此我们可以在一个网络中处理多个分辨率。批处理规范化Batch Normalization(BN) [13]层存在另一个隐藏问题。BN通过重新居中和重新缩放,对输入层进行通道式规范化,使深度模型收敛更快更稳定。但是,不同分辨率下包括均值和方差在内的激活统计信息是不兼容的[27]。在多种分辨率下使用共享BNs会导致我们的实验精度降低,如第4.3节所示。由于批处理规范化层包含的参数可以忽略不计,所以我们提出了如图2所示的分辨率感知BNs。我们对每个分辨率的BN进行解耦decouple,并选择相应的BN层来标准化特征:
(3)
对于数值稳定性来说ε是一个小数字,μi和σi是独立分辨率下激活统计量的私人平均值private averaged mean 和方差;βi和γi是私人可学习的标度权重scale weights和偏差bias。由于共享卷积对性能不敏感,所以原始大型分类器的总体调整如图2的右侧所示。
3.2 Optimization
所提出的框架经过优化,可以对具有端到端训练的单个大型分类器的输入执行实例感知分辨率选择instance-aware resolution selection。损失函数和Gumbel softmax技巧描述如下。
Loss Function.
对基分类器和分辨率预测器进行了联合优化。损失函数包括图像分类的交叉熵损失和限制计算预算的FLOPs约束正则化两部分。
给定一个以图像X为输入,输出图像 分类概率预测的 预处理基图像分类器F,我们对分辨率预测器进行优化,并对预处理基图像分类器进行微调,使它们相互兼容。对于输入图像X,我们首先将其调整为等m个候选分辨率。我们使用提出的分辨率预测器为每幅图像生成分辨率概率向量。用Gumbel-Softmax技巧 像方程2,将软分辨概率pr转化为硬独热选择,其中h的热输入代表每个样品的分辨选择。我们首先获得每个分辨率的最终预测值,然后用h进行求和,得到所选分辨率的识别预测值:
(4)
yˇ和目标标签y之间的交叉熵损失H如下所示:
(5)
损失Lce的梯度被反向传播到基分类器和分辨率预测器以进行优化。
如果我们只使用交叉熵损失,分辨率预测器将收敛到一个次优点sub-optimal point,并倾向于选择最大的分辨率,因为分辨率最大的样本通常对应相对较低的分类损失。虽然低分辨率图像的分类置信度相对较低,但预测可以是正确的,需要较少的FLOPs。为了降低计算成本,平衡不同分辨率的选择,我们提出FLOPs约束正则化来指导分辨率预测器的学习:
其中F是实际推断触发器the actual inference FLOPs,Cj是j次分辨率的预先计算的FLOPs值,E()是样本上的期望值,α是目标FLOPs。通过这种正则化,如果平均FLOPs值太大,将会受到惩罚,强制 提出的 分辨率预测器 具备实例感知能力instance-aware,并预测出 性能充足(预测正确)和成本高效(分辨率较低)的分辨率。
最后,总体损失是分类损失和FLOPs约束正则化项的加权总和:
(9)
其中η是匹配Lce和Lreg大小的超参数。
Gumbel Softmax trick
由于从分辨率预测器的连续输出到离散分辨率选择的过程中存在不可微问题,我们采用Gumbel Softmax技巧[20,15]在反向传播过程中使离散决策可微。在EQ.1,分辨率预测器给出了分辨率候选pr =[pr1,pr2,…,prm]的概率。然后可以使用以下方法绘制离散的候选分辨率选择:
(9)
其中gj是通过对从均匀分布中提取的 i.i.d样本 u 应用两次对数运算获得的Gumbel噪声,如下所示:
(10)
在训练过程中,独热操作的导数用Gumbel softmax函数逼近,该函数既连续又可微分:
(11)
其中τ是温度参数。Gumbel噪声的引入有两个积极的作用。一方面,它不会影响原始分类概率分布的最高入口。另一方面,它使离散hardmax到连续softmax的梯度逼近更加流畅。通过这个直通的Gumbel softmax技巧,我们可以端到端优化整体框架。
4 Experiments
为了展示我们提出的方法的有效性,在本节中,我们用经典的大型分类器网络,包括ResNet [6]和MobileNetV2[24]对小规模ImageNet-100和大规模ImageNet-1K [2]进行了实验,在这里我们用分辨率感知BNs代替它们的单批标准化层(BN),并添加了提出的分辨率预测器来指导分辨率的选择。
4.1 Implementation Details
Datasets.
ImageNet-1K数据集(ImageNet ILSVRC2012) [2]是一个广泛用于评估神经网络分类性能的基准,它由1K类别的1.28M 训练图像和50K张验证图像组成。ImageNet-100是ImageNet ILSVRC2012的子集,其训练集是从原始训练集中随机选择的,由100个类别的500个实例组成。验证集是原始验证集的相应100个类别。有关ImageNet数据集的许可证,请参阅http://www.image-net.org/download.
实验设置
对于ImageNet-100和ImageNet-1K的训练期间的数据增强,我们按照[6]中的方案进行,包括从输入图像中随机裁剪一个补丁,用双线性插值调整到候选分辨率,然后随机水平翻转,概率为0.5。对于验证过程中的数据处理,我们首先将输入图像调整为256 × 256,然后裁剪中心224 × 224部分。分辨率预测器的详细信息在补充材料中提供。对于这两个数据集,我们首先使用不同分辨率的图像来预先训练一个没有分辨率预测器的模型。每个分辨率的损失加起来进行优化。然后我们在模型中加入一个设计好的预测器,进行微调。使用SGD(小批量随机梯度下降)进行优化,在前3个阶段应用学习速率预热learning rate warmup。在预处理阶段,该模型的总周期epoch为70,批量batch-size为256,重量衰减weight decay0.0001,动量momentum0.9,初始学习率initial learning rate 0.1,每20个周期衰减10倍。我们在微调阶段采用了类似的训练方案。总epoch为100,学习率每30下降10倍。我们采用1×学习率来微调大分类器,0.1×学习率来从头训练分辨率预测器。该框架在NVIDIA特斯拉V100 GPUs上用Pytorch [22]实现。
4.2 ImageNet-100 Experiments
4.3 消融研究
4.4 ImageNet-1K Experiments
4.5 Visualization
分辨率预测器的预测结果如图4所示。前四个前景明显的样本占据了整幅图像的大部分,可以高置信度地使用112 × 112分辨率。预测前景有点模糊的中间三个选择168 × 168分辨率。最后三个样本隐藏的前景几乎与背景融为一体,因此选择了最大的分辨率。虽然“容易”和“困难”的例子对于人类和机器来说可能是不同的,但这些结果与人类的感知系统是兼容的。
总结
在本文中,我们揭示了不同的样本获得不同的分辨率阈值来实现最不准确的预测。因此,对于一些分辨率较低的简单样本,可以节省大量的计算成本。为了使CNN能够高效预测,我们提出了一种新型的动态分辨率网络来动态选择每个输入样本的性能充足且成本低廉的分辨率。然后将输入调整到预测分辨率,并馈送到原始的大型分类器,在该分类器中,我们用分辨率感知的BN替换每个BN层,以适应多分辨率输入。该方法与网络体系结构解耦,可以推广到任何网络。在各种网络上的广泛实验证明了DRNet的有效性。