深度神经网络繁多,各自的性能指标怎样?
实际应用中,在速度、内存、准确率等各种约束下,应该尝试哪些模型作为backbone?

有paper对各个网络模型进行了对比分析,形成了一个看待所有主要模型的完整视角,其分析结果可以在实践中提供指导和帮助。

这篇博客主要整合了其中3篇文章的结论,分别是

  1. 201605-An Analysis of Deep Neural Network Models for Practical Applications
  2. 201809-Analysis of deep neural networks
  3. 201810-Benchmark Analysis of Representative Deep Neural Network Architectures

文章1和3是paper,2是篇博客(对1的更新)。这3篇文章对图像识别任务(ImageNet-1k)主要的state of the art网络进行了对比分析,采用的指标有:

  • accuracy,准确率,只使用cental crop,评估Top1、Top5在ImageNet-1k上的准确率
  • model complexity,模型复杂度,通过模型的可学习参数量衡量(近似为模型文件大小),反映了自由度
  • computational complexity,计算复杂度,操作次数,通过floating-point operations (FLOPs)衡量,Multiply-add乘加运算为2 FLOPS
  • memory usage,内存大小(空间复杂度)
  • inference time,推理时间
  • accuracy density,等于 accuracy / modle size,用来衡量参数的利用效率

比较重要的结论有:

  • 计算复杂度高,识别准确率不一定高;参数量大,识别准确率也不一定高。——好的网络结构设计很重要,比如ResNet系的模型。
  • 不同模型的参数利用效率不同,目前来看针对移动端设计的网络参数利用效率较高,如MobileNet、ShuffleNet、SqueezeNet等,但在Top1准确率高于80%的模型中,Inception-V4和SE-ResNeXt-101的利用率较高
  • 操作次数(FLOPs)是推理时间的良好估计
  • 为了满足不同的内存和速度要求,可选的最优模型不同

其他一些更细致的结论可以参看论文,下面贴一下论文中的重要图表。

论文An Analysis of Deep Neural Network Models for Practical Applications诞生于2016年5月,文中对当时的主要模型(从AlexNet到Inception-v4)进行了对比分析,得到了那张流传甚广的ball chart。后来在2018年9月,文章作者Eugenio Culurciello在博客Analysis of deep neural networks中,对图表进行了更新,包括了Shufflenet、Mobilenet、Xception、Densenet、Squeezenet等新近模型的对比分析,更新的ball chart如下:


图中,blob的中心为模型在图表中的位置,blob的大小对应模型的参数量,横轴为操作次数,纵轴为Top-1 center crop的准确率,越靠近左上角的模型计算复杂度越低、准确率越高,blob越小的模型参数越少

论文An Analysis of Deep Neural Network Models for Practical Applications中,推理时间和操作数的关系图表如下,不出意料的正相关

论文Benchmark Analysis of Representative Deep Neural Network Architectures中,做了更详细的对比,如下图所示,左上角ResNet系的模型表现强劲,右上角NASNet-A-Large的准确率最高但计算复杂度也最大

参数利用率如下:

速度(帧率)与准确率如下,图中的曲线为特定硬件下帧率与性能的上界,横轴为帧率的对数,

模型参数量与内存占用大小如下,GPU上内存占用最少的也在0.6G以上,

对于每个网络具体的推理时间和内存占用情况可以参见论文原文,有更详细的描述。

给定硬件平台上,在不同内存和速度约束下的最优模型如下:

Benchmark Analysis of Representative Deep Neural Network Architectures的代码基于pytorch,详见models-comparison.pytorch

参考

ImageNet主要网络benchmark对比的更多相关文章

  1. k8s的网络方案对比

    如下图,三台虚拟机k8s-master.k8s-node-1.k8s-node-2组成k8s集群,网络拓扑和节点IP分配如下图: 一.flannel组网方案 https://github.com/co ...

  2. Flannel和Calico网络插件对比

    1.Kubernetes通信问题 1.容器间通信:即同一个Pod内多个容器间通信,通常使用loopback来实现. 2.Pod间通信:K8s要求,Pod和Pod之间通信必须使用Pod-IP 直接访问另 ...

  3. 五种网络IO模型以及多路复用IO中select/epoll对比

    下面都是以网络读数据为例 [2阶段网络IO] 第一阶段:等待数据 wait for data 第二阶段:从内核复制数据到用户 copy data from kernel to user 下面是5种网络 ...

  4. Flannel和Calico网络插件工作流程对比

    Flannel和Calico网络插件对比   Calico简介 Calico是一个纯三层的网络插件,calico的bgp模式类似于flannel的host-gw Calico方便集成 OpenStac ...

  5. CNN网络架构演进:从LeNet到DenseNet

    卷积神经网络可谓是现在深度学习领域中大红大紫的网络框架,尤其在计算机视觉领域更是一枝独秀.CNN从90年代的LeNet开始,21世纪初沉寂了10年,直到12年AlexNet开始又再焕发第二春,从ZF ...

  6. 残差网络ResNet笔记

    发现博客园也可以支持Markdown,就把我之前写的博客搬过来了- 欢迎转载,请注明出处:http://www.cnblogs.com/alanma/p/6877166.html 下面是正文: Dee ...

  7. 『高性能模型』轻量级网络ShuffleNet_v1及v2

    项目实现:GitHub 参考博客:CNN模型之ShuffleNet v1论文:ShuffleNet: An Extremely Efficient Convolutional Neural Netwo ...

  8. CNN网络架构演进

    卷积神经网络可谓是现在深度学习领域中大红大紫的网络框架,尤其在计算机视觉领域更是一枝独秀.CNN从90年代的LeNet开始,21世纪初沉寂了10年,直到12年AlexNet开始又再焕发第二春,从ZF ...

  9. Golang 序列化方式及对比

    Golang 序列化方式及对比 - fengfengdiandia的专栏 - CSDN博客 https://blog.csdn.net/fengfengdiandia/article/details/ ...

随机推荐

  1. cesium 学习(五) 加载场景模型

    cesium 学习(五) 加载场景模型 一.前言 现在开始实际的看看效果,目前我所接触到基本上都是使用Cesium加载模型这个内容,以及在模型上进行操作.So,现在进行一些加载模型的学习,数据的话可以 ...

  2. 微信小程序踩坑日记2——实时访问数据库并渲染UI

    0. 引言 主要讲讲对于实时访问数据库并渲染UI我的解决方法. 一开始查到了随让小程序是单线程的,但是有一个基本上是封装的worker线程,相当于可以自己自定义(类似于Android开发里的handl ...

  3. IT技术人员的自我修养

    1. 前言        在IT领域摸爬滚打多年,从一个普通程序员到技术主管,到技术经理,再到技术总监,踩过不少坑.加过不少班,也背过不少锅,在提升自身技术能力与管理能力的同时,也一直在思考,作为IT ...

  4. 【ironic】ironic介绍与原理

    [ironic]ironic介绍与原理 零,配置文件 0.1 配置驱动 文件ironic.conf, ipmi硬件类型,默认值也是ipmi, pxe_ipmitool驱动也是默认值,配置驱动 [DEF ...

  5. 使用secureCRT上传下载

    secureCRT 的 下载 http://pan.baidu.com/s/1c1Mz1ks 下载完成后,输入yum install lrzsz,安装这个东西, 然后就可以直接在secureCRT中输 ...

  6. 阿里云nas使用记录

    公司买了阿里云的nas服务用来共享存储,多个web服务器共同挂载同一个nas服务.挂载过程中出现如下报错 NAS报错: [root@BJ-SBC fs]# mount -t nfs 10.10.8.1 ...

  7. 【MySQL】java.sql.SQLException: Incorrect string value: '\xF0\x9F\x98\xB3' for column

    问题原因: 输入内容包含特殊字符,MySQL 中的列不支持. 解决方法 多数是修改 MySQL 的数据库和表结构,CHARSET 改为 utf8mb4,但本人测试还是不能传入 emoji. 后来在代码 ...

  8. 【iOS】安装 CocoaPods

    1. 打开 terminal 2. 移除现有 Ruby 默认源 $ gem sources --remove https://rubygems.org/ 3. 使用新的源 $ gem sources ...

  9. 基于SpringBoot从零构建博客网站 - 集成editor.md开发发布文章功能

    发布文章功能里面最重要的就是需要集成富文本编辑器,目前富文本编辑器有很多,例如ueditor,CKEditor.editor.md等.这里守望博客里面是集成的editor.md,因为editor.md ...

  10. MySQL-5.7.21非图形化下载、安装、连接问题记录

    1.安装包下载链接:https://cdn.mysql.com//Downloads/MySQL-5.7/mysql-5.7.21-winx64.zip 官网:https://www.mysql.co ...