摘要:

一般情况下,我们都会根据当前的硬件资源来设计相应的卷积神经网络,如果资源升级,可以将模型结构放大以获取更好精度。我们系统地研究模型缩放并验证网络深度,宽度和分辨率之间的平衡以得到更好的性能表现。基于此思路,提出了一种新的缩放方法:利用复合系数来统一缩放模型的所有维度,达到精度最高效率最高。复合系数有:w卷积核大小,d神经网络深度,r分辨率大小。在之前的MobileNet和ResNet上已展示了这种缩放方法的高效性。

使用神经架构搜索设计了一个主干网络,并且将模型放大获取一系列模型,我们称之为Efficient,它的精度和效率比之前所有的卷积网络都好。尤其是我们的EfficientNet-B7在ImageNet上获得了最先进的 84.4%的top-1精度 和 97.1%的top-5精度,同时比之前最好的卷积网络大小缩小了8.4倍、速度提高了6.1倍。我们的EfficientNets也可以很好的迁移,并且实现了最先进的精度——CIFAR-100(91.7%)、Flowers(98.8%)、其他3个迁移学习数据集。

谷歌最新论文:EfficientNet: Rethinking Model Scaling for Convolutional Neural Networks ICML 2019

相应源码地址:EfficientNet

1、不同的网络调节方法:增大感受野,增大网络深度,增大分辨率,如下图:

其中,(a)为基线网络,也可以理解为小网络;(b)为增大感受野的方式扩展网络;(c)为增大网络深度d的方式扩展网络;(d)为增大分辨率r的方式扩展网络;(e)为本文所提出的混合参数扩展方式;模型缩放的高效性严重地依赖于baseline网络,为了进一步研究,我们使用网络结构搜索发展了一种新的baseline网络,然后将它缩放来获得一系列模型,称之为EfficientNets。

2、测试效果,在w,r,d各种情况下的准确率和效率的相互关系曲线

一般卷积的数学模型如下:

H,W为卷积核大小,C为通道数,X为输入tensor;

复合系数的确定转为如下的优化问题:

调节d,w,r使得满足内存Memory和浮点数量都小于阈值要求;

为了达到这个目标,文中提出了如下的方法:

对于这个方法,我们可以通过一下两步来确定d,w,r参数:

第一步我们可以通过基线网络来调节确定最佳的,然后,用这个参数将基准网络扩展或放大到大的网络,这样就可以使大网络也具有较高的准确率和效率。同样,我们也可以将基线网络扩展到其他网络,使用同样的方法来放大;

基线模型使用的是 mobile inverted bottleneck convolution(MBConv),类似于 MobileNetV2 和 MnasNet,但是由于 FLOP 预算增加,该模型较大。于是,研究人员缩放该基线模型,得到了EfficientNets模型,它的网络示意图如下:

EfficientNet效率测试:

对比EfficientNets和已有的CNN模型,EfficientNet 模型要比已有CNN模型准确率更高、效率更高,其参数量和 FLOPS 都下降了一个数量级,EfficientNet-B7 在 ImageNet 上获得了当前最优的 84.4% top-1 / 97.1% top-5 准确率,而且CPU 推断速度是 Gpipe 的 6.1 倍,但是模型大小方面,EfficientNet-B7却比其他模型要小得多,同时,还对比了ResNet-50,准确率也是胜出一筹(ResNet-50 76.3%,EfficientNet-B4 82.6%)。

3、相关工作:

ConvNet精度:自从AlexNet赢得2012的ImageNet竞赛,ConvNets随着变得更大获得了更高的精度,同时GoogleNet使用6.8M的参数获得了74.8%的top-1精度,SENet使145M参数获得了82.7%的top-1精度。最近,GPipe进一步提高了精度——使用了557M的参数获得了84.3%的top-1验证精度:它如此的大以至于需要将网络划分使用特定的并行化手段训练,然后将每一部分传递到一个不同的加速器。然而这些模型主要是为ImageNet设计,但是将其迁移到其他应用上时效果也很好。

ConvNet效率:深度网络的参数过多,模型压缩是一种通用的方法减小模型大小——平衡精度和效率。当移动网络变得无处不在时,我们也通常要手动设计高效的ConvNets,比如SqueezeNets、MobileNets、ShuffleNets。最近,神经网络结构搜索在设计高效的ConvNets变得越来越流行,并且通过广泛搜索网络宽度、深度、卷积核类型和大小得到了比手动设计的模型更高的精度。然而,目前还不清楚怎么将这些技术应用到更大的模型中,通常要更大的设计空间和更贵的微调成本,在本篇论文中,我们旨在研究效率设计更大规模的ConvNets,为了实现这个目标,我们采用模型缩放。

模型缩放:有很多的方法因不同的资源限制对ConvNet进行缩放:ResNet可以通过调整深度(缩小到ResNet-18,放大到ResNet-200),WideResNet和MobileNets可以通过对宽度(#channels)缩放。公认的是更大的输入图像尺寸有利于提高精度,同时需要更多的计算量。尽管之前的研究展示了网络深度和宽度对ConvNets的表现力很重要,它仍然是一个开放的问题来高效缩放ConvNet获得更好的效率和精度。我们的工作系统地研究了ConvNet对网络深度、宽度和分辨率这三个维度进行了缩放。

参考链接:

1、https://blog.csdn.net/Trent1985/article/details/91126085

2、https://blog.csdn.net/h__ang/article/details/92801712

基础网络之EfficientNet的更多相关文章

  1. openstack(liberty):部署实验平台(一,基础网络环境搭建)

    openstack项目的研究,到今天,算是要进入真实环境了,要部署实验平台了.不再用devstack了.也就是说,要独立controller,compute,storage和network了.要做这个 ...

  2. java基础-网络编程(Socket)技术选型入门之NIO技术

    java基础-网络编程(Socket)技术选型入门之NIO技术 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.传统的网络编程 1>.编写socket通信的MyServer ...

  3. Linux学习笔记(9)linux网络管理与配置之一——Linux基础网络命令与学习大纲(0)

    大纲目录 0.常用linux基础网络命令 1.配置主机名 2.配置网卡信息与IP地址 3.配置DNS客户端 4.配置名称解析顺序 5.配置路由与默认网关 6.双网卡绑定 [1] ping [2]net ...

  4. (转)Linux系统基础网络配置老鸟精华篇

    Linux系统基础网络配置老鸟精华篇 原文:http://blog.51cto.com/oldboy/784625 对于linux高手看似简单的网络配置问题,也许要说出所以然来也并不轻松,因此仍然有太 ...

  5. python 基础网络编程2

    python 基础网络编程2 前一篇讲了socketserver.py中BaseServer类, 下面介绍下TCPServer和UDPServer class TCPServer(BaseServer ...

  6. python 基础网络编程1

    python 基础网络编程1 Source code: Lib/socketserver.py lib的主目录下有一个sockserver.py文件, 里面是python基本的网络编程模型 共有一个b ...

  7. Linux基础网络配置

    目录 Linux基础网络配置 参考 IP配置 Route配置 DNS指向 ss命令 *网络排查工具 Linux基础网络配置

  8. 【基础网络】TCP与UDP 的区别

    TCP协议与UDP协议的区别    首先咱们弄清楚,TCP协议和UCP协议与TCP/IP协议的联系,很多人犯糊涂了,一直都是说TCP/IP协议与UDP协议的区别,我觉得这是没有从本质上弄清楚网络通信! ...

  9. Java基础——网络编程(一)

    本文主要记录网络编程的一些基础知识,学了前班部分,对专业术语有些蒙,但是,收货也是很多很多的.观察了自己计算机的进程,查找其他网络地址的IP,对互联网的层次关系有了更深一步的了解.下面多是概念的摘录, ...

随机推荐

  1. Linux 常用高效操作

    空行处理 linux系统下删除空行,用vim底行模式'%s/^n$//g' 可以删除空行并真正修改文件,但文件数量太大时耗时不可预估,于是操作文件删除空行并重定向到一个新的文件是不错的选择. 常用特殊 ...

  2. HBase管理与监控——HMaster或HRegionServer自动停止挂掉

    问题描述 HBase在运行一段时间后,会出现以下2种情况: 1.HMaster节点自动挂掉: 通过jps命令,发现HMaster进程没了,只剩下HRegionServer,此时应用还能正常往HBase ...

  3. Cocos Creator Android打包 apk

    这一篇讲的是用 Cocos Creator 编译器打包 Android APP 的时候遇到的一些问题,虽然说打包的过程不是很复杂,但是在其中还是会遇到各式各样的坑. 我们将项目用CCC(Cocos C ...

  4. [BAT] cmd 管理员权限 右键菜单 运行

    将下面保存为 *.reg Windows Registry Editor Version 5.00 [HKEY_CLASSES_ROOT\Directory\Background\shell\runa ...

  5. 开始学习Yii

    YII是我一直想学的一个框架,之前看过TP3.2和5.0.Yii是Yes it is 的缩写. 我采用下载源码的方式安装,解压到web目录.以前用过Composer,Yii官网也推荐用Composer ...

  6. vue项目中请求头为applicationx-www-form-urlencoded的参数传递

    当请求接口的请求头如下图所示时, 前端在传参时需要先新建一个URLSearchParams对象,然后将参数append到这个对象中 const params = new URLSearchParams ...

  7. 计算1-9总共九个数字可以满足abc+def=hij这样的式子

    计算1-9总共九个数字可以满足abc+def=hij这样的式子:其中abcdefghij九个数字各个都不相同,它们都属于1-9个数字中: 首先,第一种方法很简单很暴力,直接枚举,这样的话时间复杂度高: ...

  8. 在vue的element图片的上传及回调

    首先声明,本人用的是element组件写的图片的上传及回调,若非element本方法暂不支持. 下面开始正式讲图片的上传及回调.(本篇拒绝一切花里胡哨,都是干活,言辞粗糙,望请见谅) 1,elemen ...

  9. The timeout period elapsed prior to completion of the operation or the server is not responding.

    问题:更新数据的状态值时,部分报出如下异常: 即时有成功更新,时有报错问题出现. 在LOG中发现成功更新的数据,存在更新时间过长问题,将近30秒(EF默认的CommandTimeout为30秒): 代 ...

  10. HanLP-朴素贝叶斯分类预测缺陷

    文章整理自 baiziyu 的知乎专栏,感兴趣的朋友可以去关注下这位大神的专栏,很多关于自然语言处理的文章写的很不错.昨天看到他的分享的两篇关于朴素贝叶斯分类预测的文章,整理了一下分享给给大家,文章已 ...