深度神经网络自出现以来,已经成为计算机视觉领域一项举足轻重的技术。其中,ImageNet 图像分类竞赛极大地推动着这项新技术的发展。这里将对各个深度学习模型进行比较分析,具体参考论文AN ANALYSIS OF DEEP NEURAL NETWORK MODELS FOR PRACTICAL APPLICATIONS。
论文综合分析了实际应用中的几项重要指标:准确度、内存占用、参数、操作时间、操作次数、推理时间、功耗,并得出了以下几项主要研究结论:
功耗与批量大小、体系结构无关;
准确度与推理时间呈双曲线关系;
能量限制是最大可达准确度和模式复杂度的上限;
操作次数可以有效评估推理时间。
自从2012年的 ImageNet 竞赛上,Alexnet取得突破发展,成为第一个应用深度神经网络的应用,其他关于DNN的更复杂的应用也陆续出现。
图像处理软件分类挑战赛的终极目标是,在考虑实际推理时间的情况下,提高多层分类框架的准确度。为了达到这个目标,就要解决以下三方面的问题。
>
第一,一般情况下,我们会在每个验证图像的多个类似实例中运行一个给定模型的多个训练实例。这种方法叫做模型平均或DNN集成,可以极大提高推理所需的计算量,以获得published准确度。
第二,不同研究报告中对验证图像做的预估模型(集合)的操作次数不一样,模型选择会受到影响,因此不同的抽样方法(以及取样集合的大小不同)得出的报告准确度结果就会有所偏差。
第三,加速推理过程是模型实际应用的关键,影响着资源利用、功耗以及推理延迟等因素,而目前尚无方法使推理时间缩短。
论文对过去4年图像处理软件分类挑战赛上出现的不同种类的先进的DNN架构进行了对比,从计算需要和准确度两个角度做分析,主要比较这些架构与资源利用实际部署相关的多个指标,即准确度、内存占用、参数、操作时间、操作次数、推理时间、功耗。
评价方法
由于不同的抽样方法得出的模型质量结论也不一样,比如,VGG-16和GoogleNet的central-crop误差分别是8.7%和10.07%,表明VGG-16性能优于googleNet,而用10-crop抽样,则误差分别是9.33%和9.15%,VGG-16又比GoogleNet差了。于是,论文决定对所有网络重新评估,使用单个central-crop抽样方法。
上图中不同的配色方案表示不同的架构和作者。注意,同组网络共享相同的色相,比如所有的ResNet系列都是用粉色系表示的。
具体结果
论文比较了以下DDN:
AlexNet (Krizhevsky et al., 2012);
batch normalised AlexNet (Zagoruyko, 2016);batch normalised Network In Network (NIN) (Lin et al., 2013);
ENet (Paszke et al., 2016) for ImageNet (Culurciello, 2016);
GoogLeNet (Szegedy et al., 2014);
VGG-16 and -19 (Simonyan & Zisserman, 2014);
ResNet-18, -34, -50, -101 and -152 (He et al., 2015);
Inception-v3 (Szegedy et al., 2015) 以及 Inception-v4 (Szegedy et al., 2016)。
准确率
最新的ResNet和Inception架构相比其他架构准确率至少高7%;上图2则提供了各网络更详细的准确率值,将计算成本和网络参数的数量可视化呈现。首先非常明显的是,VGG不管从计算需求还是参数数量方面来说,都是迄今为止最昂贵的架构,尽管它已经被广泛应用于许多应用程序。VGG的16层和19层的实现实际上与其他所有网络都是隔绝的。其他的架构形成了一条斜线,到Inception和ResNet时,这条线开始变平缓。这表明这些模型在该数据集上到达一个拐点。在这个拐点上,计算成本(复杂性)开始超过准确率上的好处。
时间和功耗
上图3显示了各架构在每个图像上的推理时间,作为一个图像批大小(从1到64)函数。我们注意到VGG处理一张图像所需时间约1/5秒,这使它在NVIDIA TX1上实时应用的可能性较小。AlexNet的批大小从1到64的变化中,处理速度提升了3倍,这是由于它的完全连接层的弱优化,这个发现令人惊讶。
内存
由上图5可见,最初最大系统内存使用情况是不变的,随着批大小增加,内存消耗增大。这是由于网络模型的初始内存分配以及批处理时的内存需求随着图像数量的增加而成比例地增加。
由上图6可见,对规模小于 100 MB的网络,初始内存分配不会小于 200 MB,而且随后呈现为一条斜率为1.3的线性函数。
运算量
分析发现,对批大小为16的图像,每个图像的运算量和推理时间之间存在线性关系。因此,在设计网络时,可以控制运算量,以使处理速度保持在实时应用或资源有限的应用的可接受范围内。
准确率和吞吐量
从上图显示,在单位时间里,准确率和推理数量之间存在非平凡的线性上限。对于给定的帧速率,可以实现的最大准确率与帧速率本身形成线性比例。此外,选定一个推理时间,可以得出资源充分利用条件下理论上的最大准确率。由于功耗固定,我们甚至可以进一步得出能耗限制下的最大准确率,这可以作为需要在嵌入式系统上运行的网络的基本设计因素。
参数使用
我们已经知道,DNN在利用全部学习能力(参数数量/自由度)方面非常低效。Han et al., 2015的研究利用DNN的这个缺陷,使用权重剪枝(weights pruning)、量化(quantisation)和变长编码(variable-length symbol encoding)将网络规模减小了50倍。值得注意的是,使用更高效的架构能够产生更紧凑的呈现。如上图所示,虽然VGG 比AlexNet的准确率更高,但其信息密度不如AlexNet。这意味着在VGG架构中引入的自由度带来的准确率上的提高不大。