基础网络之EfficientNet
摘要:
一般情况下,我们都会根据当前的硬件资源来设计相应的卷积神经网络,如果资源升级,可以将模型结构放大以获取更好精度。我们系统地研究模型缩放并验证网络深度,宽度和分辨率之间的平衡以得到更好的性能表现。基于此思路,提出了一种新的缩放方法:利用复合系数来统一缩放模型的所有维度,达到精度最高效率最高。复合系数有: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的更多相关文章
- openstack(liberty):部署实验平台(一,基础网络环境搭建)
openstack项目的研究,到今天,算是要进入真实环境了,要部署实验平台了.不再用devstack了.也就是说,要独立controller,compute,storage和network了.要做这个 ...
- java基础-网络编程(Socket)技术选型入门之NIO技术
java基础-网络编程(Socket)技术选型入门之NIO技术 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.传统的网络编程 1>.编写socket通信的MyServer ...
- Linux学习笔记(9)linux网络管理与配置之一——Linux基础网络命令与学习大纲(0)
大纲目录 0.常用linux基础网络命令 1.配置主机名 2.配置网卡信息与IP地址 3.配置DNS客户端 4.配置名称解析顺序 5.配置路由与默认网关 6.双网卡绑定 [1] ping [2]net ...
- (转)Linux系统基础网络配置老鸟精华篇
Linux系统基础网络配置老鸟精华篇 原文:http://blog.51cto.com/oldboy/784625 对于linux高手看似简单的网络配置问题,也许要说出所以然来也并不轻松,因此仍然有太 ...
- python 基础网络编程2
python 基础网络编程2 前一篇讲了socketserver.py中BaseServer类, 下面介绍下TCPServer和UDPServer class TCPServer(BaseServer ...
- python 基础网络编程1
python 基础网络编程1 Source code: Lib/socketserver.py lib的主目录下有一个sockserver.py文件, 里面是python基本的网络编程模型 共有一个b ...
- Linux基础网络配置
目录 Linux基础网络配置 参考 IP配置 Route配置 DNS指向 ss命令 *网络排查工具 Linux基础网络配置
- 【基础网络】TCP与UDP 的区别
TCP协议与UDP协议的区别 首先咱们弄清楚,TCP协议和UCP协议与TCP/IP协议的联系,很多人犯糊涂了,一直都是说TCP/IP协议与UDP协议的区别,我觉得这是没有从本质上弄清楚网络通信! ...
- Java基础——网络编程(一)
本文主要记录网络编程的一些基础知识,学了前班部分,对专业术语有些蒙,但是,收货也是很多很多的.观察了自己计算机的进程,查找其他网络地址的IP,对互联网的层次关系有了更深一步的了解.下面多是概念的摘录, ...
随机推荐
- JAVA 基础编程练习题17 【程序 17 猴子吃桃问题】
17 [程序 17 猴子吃桃问题] 题目:猴子吃桃问题:猴子第一天摘下若干个桃子,当即吃了一半,还不瘾,又多吃了一个 第二天早上又 将剩下的桃子吃掉一半,又多吃了一个.以后每天早上都吃了前一天剩下的一 ...
- delphi 根据数据库结构生成TreeView
procedure TUIOperate.FillTree(treeview: TTreeView); var findq: TADOQuery; node: TTreeNode; / ...
- 关于CAShapeLayer的一些基本操作
设置圆形进度条: 实现效果如下: 实现代码如下:(注释很详细啦!!!) UIView *circleView = [[UIView alloc]initWithFrame:CGRectMake(, , ...
- vs 扩展和更新下载的插件在什么位置呢,看看吧,哈哈
C:\Users\Administrator\AppData\Local\Microsoft\VisualStudio\10.0\Extensions,注意哈,这个AppData是隐藏的哟,要显示才能 ...
- linux如何添加服务为系统服务快速启动或关闭
当在linux系统安装了一些服务比如apache,mysql,iptables等等后想快速启动或者重启 但是在使用系统启动或者关闭服务时候发现输入指令 >service httpd restar ...
- golang web框架设计5:配置设计
配置信息的解析,实现的是一个key=value,键值对的一个配置文件,类似于ini的配置格式,然后解析这个文件,把解析的数据保存到map中,最后调用的时候通过几个string,int之类的函数返回相应 ...
- MongoDB可视化工具Studio 3T的使用
原文地址:https://blog.csdn.net/weixin_39999535/article/details/81383196 studio3T 永久使用方法 新建文件studio3t.bat ...
- Linux 基本权限管理
1.linux权限表示: -rw-r--r-- (一共10位): 第一位:表示文件类型: 常用的三种文件类型:- 表示一般文件,d 表示目录,l 表示软链接文件: 后九位:每三位为一组: rwx r- ...
- Java 中 try、catch、finally 语句块的执行顺序
假设代码顺序书写如下:try → catch → finally → 其他代码 则: 1.正常执行顺序:try → catch → finally → 其他代码 2.try,catch和finally ...
- 如何克服社交恐惧症?zz
zhang Bavol 清华大学核能与新能源技术研究院——核科学与技术/电子爱好者 你说的这个恐惧症我也有一点点,不过现在我是只对那种不是很熟悉的七姑八婆之类的亲戚才会有这种憋屈感觉,对朋友和 ...