Benchmark Analysis of Representative Deep Neural Network Architectures
代表性深度神经网络架构的基准分析
发表时间:[Submitted on 1 Oct 2018 (v1), last revised 19 Oct 2018 (this version, v2)]
发表期刊/会议:Computer Vision and Pattern Recognition
论文地址:https://arxiv.org/abs/1810.00736
代码地址:https://github.com/CeLuigi/models-comparison.pytorch
关键词:Deep neural networks, Convolutional neural networks, Image recognition.
0 摘要
本文对目前图像识别领域提出的大多数DNNs(deep neural networks)进入了深入分析,从多个指标进行对比。
指标:
识别精度,模型复杂度,计算复杂度,内存使用,推理时间;
这项研究有助于研究人员全面了解目前已经探索了哪些解决方案,以及未来哪些研究方向值得探索;从业者可以选择更适合实际部署和应用的资源限制的DNN架构。
1 简介
重要发现(=结论):
- 精度不会随着操作的数量的增加而增加,见图1;
- 模型复杂度和精度直接不存在线性关系,见图1;
- 期望的吞吐量为精度设置了上限,见图3;
- 不是所有的DNN模型都以相同的效率使用参数,见图2;
- 几乎所有模型都能在高端GPU上实现超级实时性能,而只有一些模型更适用于嵌入式设备,见表1;
- 即使是模型复杂度非常低的DNN, GPU内存占用的最小值为0.6GB左右,见表2;
- 模型复杂度可用于可靠地估计总内存利用率,见图4;
2 BENCHMARKING
实验设备:
- workstation
- Intel Core I7-7700 CPU @ 3.60GHZ;
- 16GB DDR4 RAM 2400 MHz;
- NVIDIA Titan X Pascal GPU with 3840 CUDA cores;
- 系统:Ubuntu 16.04;
- embedded system
- NVIDIA Jetson TX1 board with 64-bit ARM®A57 CPU @ 2GHz;
- 4GB LPDDR4 1600MHz;
- NVIDIA Maxwell GPU with 256 CUDA cores;
- JetPack-2.3 SDK;
3 比较模型
![](https://i-blog.csdnimg.cn/blog_migrate/5ba9b93fea2ead00ab90892fcdad9788.png)
4 性能指标
准确率:ImageNet-1k图像分类任务验证集的Top-1和Top-5精度;
模型复杂度:可学习参数的总数;
内存消耗:不同batch size下的情况,batch size = 1,2,4,8,16,32,64;
计算复杂度:floating-point operations (FLOPs);
推理时间:以毫秒来衡量推理时间;
5 结果
A:准确率vs计算复杂度vs模型复杂度
![](https://i-blog.csdnimg.cn/blog_migrate/c252c313a75407c92c201ba2b2f1597f.png)
横轴:计算复杂度,越靠左越好;
纵轴:精度,越靠上越好;
-
NASNet-A-Large精度最高,也是计算复杂度最高的DNN(右上角);
-
SE-ResNeXt50 (32x4d)复杂度低,精度高(左上角);
-
计算复杂度和识别精度之间似乎没有关系,例如SENet-154需要大约3倍于SE-ResNeXt-101(32x4d)所需的操作数量,而具有几乎相同的精度;
-
模型复杂度和识别精度之间似乎也没有关系,VGG-13的模型复杂度(球的大小)比ResNet-18高得多,而精度几乎相同;
B:准确率vs学习能力
![](https://i-blog.csdnimg.cn/blog_migrate/d1e9dfdd502fbe36e706d65c2743568f.png)
定义每个模型使用参数的效率:
精度密度accuracy density = Top-1 accuracy / params.
(a)
横轴:accuracy density,精度密度,越高越好;
纵轴:不同模型;
(b)
横轴:精度密度,越大越好
纵轴:Top-1 acc,越大越好;
由图2(a)可知,最有效地使用参数地模型是SqueezeNets、ShuffleNet、MobileNets和NASNet-A-Mobile;
由图2(b)可知,在最有效的模型中,NASNet-A-Mobile和MobileNet-v2是两个提供了更高的Top1精度的模型(右上角最好);
C:推理时间
![](https://i-blog.csdnimg.cn/blog_migrate/36a5fb1bfc880a477d77374e53760fef.png)
(左)由表中可以看出,当batch size为1的时候,所有的DNN都在workstation上实现超级实时性能,只有SENet-154除外;
(右)由表中可以看出,当batch size为1的时候,只有少数DNN能够在嵌入式系统上实现超级实时性能,包括:SqueezeNets, MobileNets, ResNet-18, GoogLeNet和AlexNet;
D:准确率与推理时间
![](https://i-blog.csdnimg.cn/blog_migrate/bf53e8daf22b0ba0b4d0f24934503a49.png)
横轴:每秒推理的图像数量 Images per second FPS(取log之后,所以图像是曲线),越大越好;
纵轴:Top-1 acc,越大越好;
图左:
如果目标吞吐量超过250FPS,精度最高的模型是ResNet-34,Top-1 acc为73.27%;
超过125FPS,精度最高的是Xception,Top-1 acc为78.79%;
超过62.5FPS,精度最高的是SE-ResNeXt-50 (32x4d),Top-1 acc为79.11%;
超过30FPS,精度最高的是NASNet-A-Large,Top-1 acc为82.50%;
如果要选实时性能最好的:MobileNet-v2,Top-1 acc为71.81%;
如果要选Top-1 acc > 75%的:ResNet-50;
如果要选Top-1 acc > 80%的:SE-ResNeXt-101 (32x4d);
E:内存使用情况
![](https://i-blog.csdnimg.cn/blog_migrate/befb4d4db058f0591b2493d5d94bd750.png)
batch size = 1时,除了NASNet-ALarge、SE-ResNets、SE-ResNeXTs、SENet-154、VGGs和Xception之外,大多数模型需要的内存小于1GB。
F:内存使用vs模型复杂性
![](https://i-blog.csdnimg.cn/blog_migrate/f3e30172727263d698829341fa5f3ef3.png)
横轴:参数量(模型复杂度);
纵轴:总内存利用率;
从图中可以看出,基本是线性关系,并且两条斜率近似相同(即1.10和1.15);
截距不同(分别为910和639);
这意味着模型的复杂性可以用来可靠地估计总的内存利用率。
可以观察到具有最小复杂度的模型(即SqueezeNet-v1.0和SqueezeNet-v1.1均为5MB)的内存占用为943MB和921MB,而具有稍高复杂度的模型(即MobileNetv1和MobileNet-v2分别为17MB和14MB)的内存占用要小得多,分别为650MB和648MB。
G:给定约束条件下的最佳DNN
给定如下约束:
- 内存:
- high(≤1.4GB);
- medium(≤1.0GB);
- low(≤0.7GB);
- 计算时间:
- half real-time (@15FPS);
- real-time (@30FPS);
- super real-time (@60FPS);
![](https://i-blog.csdnimg.cn/blog_migrate/e8b91f3e8d036cff87ae844b75d86264.png)
Titan Xp,以low(≤0.7GB)内存为约束条件,DPN-68,不受计算时间的影响,识别准确率最高可达75.95%;
Titan Xp,以high(≤1.4GB)内存为约束条件,SE-ResNeXt-50 (32x4d),精度最高为79.11%;
Jetson TX1对内存使用没有要求,通过使用MobileNet-v1,识别准确率最高可达69.52%,保证了超高的实时吞吐量。
要让Jetson上运行的DNN在识别精度方面与Titan Xp上运行的最佳DNN相当,至少需要1GB的内存大小。在这种情况下,表现最好的是ResNet-50,能够保证一半的实时吞吐量,识别精度为76.01%。