EfficientNet: Rethinking Model Scaling for Convolutional Neural Networks(2020)


文章目录

  • -
  • Abstract
  • 1. Introduction
    • diss former method
    • our method
  • 2. Related Work
  • 3. Compound Model Scaling
    • 3.1. 问题公式化
    • 3.2. Scaling Dimensions
    • 3.3. Compound Scaling
  • 4. EfficientNet Architecture
  • 5. Experiments
  • 6. Discussion
  • 7. Conclusion

原文链接
源代码

-

本文中的宽度可以理解为通道数,一般认为高的FLOPS更好,因为计算效率快
但本文中作者认为低的浮点运算数(FLOPS)更好是因为较低的FLOPS意味着模型在执行推理或训练时需要更少的计算资源,这对于在计算能力有限的设备上部署模型或在大规模应用中效率更高都是很重要的。通过降低FLOPS,可以在保持性能的同时减少模型的复杂度,这有助于提高模型的速度和效率

Abstract

卷积神经网络(ConvNets)通常是在固定的资源预算下开发的,如果有更多的资源可用,则可以扩展以获得更好的准确性。在本文中,我们系统地研究了模型缩放,并确定仔细平衡网络深度,宽度和分辨率可以带来更好的性能。基于这一观察结果,我们提出了一种新的缩放方法,该方法使用简单而高效的复合系数对深度/宽度/分辨率的所有维度进行均匀缩放。我们证明了该方法在扩展MobileNets和ResNet方面的有效性
为了更进一步,我们使用神经架构搜索来设计一个新的基线网络,并将其扩展以获得一系列模型,称为EffentNets,它比以前的ConvNets具有更好的准确性和效率。特别是,我们的EfficientNet-B7在ImageNet上达到了最先进的84.3%的top-1精度,同时比现有最好的ConvNet小8.4倍,推理速度快6.1倍。我们的EfficientNets在CIFAR-100(91.7%)、Flowers(98.8%)和其他3个迁移学习数据集上的迁移效果也很好,达到了最先进的准确率,参数减少了一个数量级

1. Introduction

扩大卷积神经网络被广泛用于获得更好的准确率。例如,ResNet (He et al., 2016)可以通过使用更多的层从ResNet-18扩展到ResNet-200;最近,GPipe (Huang et al., 2018)通过将基线模型放大四倍,实现了84.3%的ImageNet top-1精度

diss former method

然而,扩大卷积神经网络的过程从未被很好地理解,目前有很多方法可以做到这一点。最常见的方法是通过深度(He et al., 2016)或宽度(Zagoruyko & Komodakis, 2016)来扩展卷积神经网络。另一种不太常见但越来越流行的方法是按图像分辨率缩放模型(Huang et al., 2018)。在以前的工作中,通常只缩放三个维度中的一个——深度、宽度和图像大小。虽然可以任意缩放两个或三个维度,但任意缩放需要繁琐的手动调优,并且仍然经常产生次优的精度和效率

our method

在本文中,我们想要研究和重新思考放大卷积神经网络的过程。特别是,我们研究了一个核心问题:是否有一种原则性的方法来扩大卷积神经网络,从而达到更好的准确性和效率?我们的实证研究表明,平衡网络宽度/深度/分辨率的所有维度是至关重要的,令人惊讶的是,这种平衡可以通过简单地以恒定的比例缩放每个维度来实现。在此基础上,我们提出了一种简单有效的复合标度方法。与传统的任意缩放这些因素的做法不同,我们的方法用一组固定的缩放系数统一地缩放网络宽度、深度和分辨率。例如,如果我们想使用2^N倍的计算资源,那么我们可以简单地将网络深度增加α N,宽度增加β N,图像大小增加γ N,其中α,β,γ是由原始小模型上的小网格搜索确定的常系数。图2说明了我们的缩放方法与传统方法之间的区别

(a)是一个基线网络示例;(b)-(d)为常规缩放,仅增加网络宽度、深度或分辨率的一个维度。(e)是我们提出的以固定比例均匀缩放所有三个维度的复合缩放方法

直观地说,复合缩放方法是有意义的,因为如果输入图像更大,那么网络需要更多的层来增加接受域,需要更多的通道来捕获更大图像上的更细粒度的模式。事实上,之前的理论(Raghu et al., 2017;Lu et al., 2018)和实证结果(Zagoruyko & Komodakis, 2016)都表明网络宽度和深度之间存在一定的关系,但据我们所知,我们是第一个对网络宽度、深度和分辨率这三个维度之间的关系进行实证量化的人

我们证明了我们的缩放方法在现有的mobilenet上工作得很好(Howard等人,2017;Sandler等人,2018)和ResNet (He等人,2016)。值得注意的是,模型缩放的有效性严重依赖于基线网络;更进一步,我们使用神经架构搜索(Zoph & Le, 2017;Tan et al., 2019)开发一个新的基线网络,并将其扩展以获得一系列模型,称为EfficientNets。图1总结了ImageNet的性能,其中我们的EfficientNets明显优于其他ConvNets。特别是,我们的EfficientNet-B7超过了现有的最佳GPipe精度(Huang et al., 2018),但使用的参数减少了8.4倍,在参考上运行速度提高了6.1倍。与广泛使用的ResNet-50 (He et al., 2016)相比,我们的EfficientNet-B4在FLOPS相似的情况下,将top-1的准确率从76.3%提高到83.0%(+6.7%)。除了ImageNet, EfficientNets在8个广泛使用的数据集中的5个上也能很好地传输并达到最先进的精度,同时比现有的ConvNets减少了高达21倍的参数

2. Related Work

简单夸赞了下前人的work,从精度、效率和模型缩放方面
在本文中,我们的目标是研究超大规模卷积神经网络的模型效率,以超越目前的精度。为了实现这一目标,我们采用模型缩放
网络深度和宽度对卷积神经网络的表达能力都很重要,但如何有效地扩展卷积神经网络以获得更好的效率和准确性仍然是一个悬而未决的问题我们的工作系统地和经验地研究了网络宽度、深度和分辨率这三个维度的卷积神经网络缩放

3. Compound Model Scaling

我们将制定缩放问题,研究不同的方法,并提出我们的新缩放方法

3.1. 问题公式化

卷积层i可以定义为一个函数:Y i = F i (X i),其中F i是算子,Y i是输出张量,X i是输入张量,张量的形状是<H i,W i,C i >1,其中,hi和wi为空间维度,ci为通道维度。卷积神经网络N可以用一个组合层的列表表示:N = F k ⊙…⊙f2 ⊙f1 (x1) = ⊙j = 1…k F j (x1)在实践中,ConvNet层通常被划分为多个阶段,每个阶段的所有层都共享相同的架构:例如,ResNet (He et al., 2016)有五个阶段,每个阶段的所有层都具有相同的卷积类型,除了第一层执行下采样。因此,我们可以将ConvNet定义为:

其中fl i i表示层F i在阶段i重复L i次,表示第i层输入张量X的形状。图2(a)展示了一个具有代表性的ConvNet,其中空间维度逐渐缩小,但通道维度逐层扩展,例如,从初始输入形状<224,224,3>到最后输出形状<7,7,512>

与常规的ConvNet设计不同,模型缩放试图扩展网络长度(L i)、宽度(C i)和/或分辨率(H i,W i),而不改变基线网络中预定义的F i。通过固定F i,模型缩放简化了针对新资源约束的设计问题,但对于每一层探索不同的L i,C i,H i,W i仍然有很大的设计空间。为了进一步缩小设计空间,我们限制所有层必须以恒定比例均匀缩放。我们的目标是在任何给定的资源约束下使模型精度最大化,这可以表述为一个优化问题:

式中,w、d、r为缩放网络宽度、深度和分辨率的系数;F i、L i、H i、W i、C i是基线网络中预定义的参数(示例见表1)。

3.2. Scaling Dimensions

问题2的主要难点在于最优的d、w、r相互依赖,且在不同的资源约束条件下其值是变化的。由于这个困难,传统的方法主要是在以下一个维度上缩放卷积神经网络:

**深度(d)😗*缩放网络深度是许多卷积网络最常用的方法(He et al., 2016;黄等人,2017;Szegedy等,2015;2016)。直觉是,更深层次的卷积神经网络可以捕获更丰富、更复杂的特征,并且可以很好地泛化新任务。然而,由于梯度消失问题,更深层的网络也更难以训练(Zagoruyko & Komodakis, 2016)。尽管跳跃连接(He et al., 2016)和批处理归一化(ioffe&szegedy, 2015)等几种技术缓解了训练问题,但非常深的网络的精度增益减少了:例如,ResNet-1000具有与ResNet-101相似的精度,尽管它具有更多的层。图3(中)显示了我们对不同深度系数d的基线模型进行缩放的实证研究,进一步表明了非常深的卷积神经网络的精度回报递减

更大的网络,具有更大的宽度、深度或分辨率,往往可以获得更高的精度,但精度增益在达到80%后很快饱和,这表明了单维度缩放的局限性

宽度(w):通常用于缩放网络宽度小尺寸模型(Howard et al., 2017;Sandler et al., 2018;Tan et al., 2019)正如(Zagoruyko & Ko-modakis, 2016)中所讨论的,更广泛的网络往往能够捕获更细粒度的特征,并且更容易训练然而,极宽但较浅的网络往往难以捕获更高级的特征。我们在图3(左)中的经验结果表明,当网络变得更宽,w更大时,准确性很快饱和

分辨率®:使用更高分辨率的输入图像,ConvNets可以捕获更细粒度的模式。从早期ConvNets的224x224开始,现代ConvNets倾向于使用299x299 (Szegedy等人,2016)或331x331 (Zoph等人,2018)以获得更好的精度。最近,GPipe (Huang et al., 2018)在480 × 480分辨率下实现了最先进的ImageNet精度。更高的分辨率,如600x600,也广泛用于目标检测卷积神经网络(He et al., 2017;Lin等人,2017)。图3(右)显示了缩放网络分辨率的结果,其中更高的分辨率确实提高了精度,但对于非常高的分辨率,精度增益会降低(r = 1.0表示分辨率224x224, r = 2.5表示分辨率560x560)

通过以上分析,我们得出了第一个结论:
放大网络宽度、深度或分辨率的任何维度都可以提高精度,但对于更大的模型,精度增益会降低

3.3. Compound Scaling

我们通过经验观察到,不同的标度维度并不是相互独立的。直观地说,对于更高分辨率的图像,我们应该增加网络深度,这样更大的接受域可以帮助捕获在更大的图像中包含更多像素的相似特征。相应的,我们也应该在分辨率较高时增加网络宽度,以便在高分辨率图像中以更多的像素捕获更细粒度的图案。这些直觉表明,我们需要协调和平衡不同的缩放维度,而不是传统的单一维度缩放

为了验证我们的直觉,我们比较了不同网络深度和分辨率下的宽度缩放,如图4所示。如果我们只缩放网络宽度w而不改变深度(d =1.0)和分辨率(r =1.0),则精度很快饱和。在相同的FLOPS成本下,在更深(d =2.0)和更高的分辨率(r =2.0)下,宽度缩放可以获得更好的精度。这些结果将我们引向第二个观察结果:
为了追求更好的精度和效率,在卷积神经网络缩放过程中,平衡网络宽度、深度和分辨率的各个维度是至关重要的

事实上,之前的一些工作(Zoph et al., 2018;Real et al., 2019)已经尝试任意平衡网络宽度和深度,但它们都需要繁琐的手动调优
本文提出了一种新的复合缩放方法,该方法利用复合系数φ对网络宽度、深度和分辨率进行有原则的均匀缩放:

其中α,β,γ是可以通过小网格搜索确定的常数。直观地说,φ是一个用户指定的系数,它控制有多少资源可用于模型缩放,而α,β,γ分别指定如何将这些额外的资源分配给网络宽度,深度和分辨率

值得注意的是,规则卷积op的FLOPS与d, w, r成正比,即网络深度加倍将使FLOPS加倍,但网络宽度或分辨率加倍将使FLOPS增加四倍。由于卷积运算通常在卷积网络的计算成本中占主导地位,因此用公式3缩放卷积网络将使总FLOPS大约增加(α·β 2·γ 2 )φ。在本文中,我们约束α·β 2·γ 2≈2,使得对于任何新的φ,总FLOPS将大约增加2 ^φ

4. EfficientNet Architecture

由于模型缩放不会改变基线网络中的层算子F i,因此拥有一个良好的基线网络也至关重要。我们将使用现有的卷积神经网络来评估我们的缩放方法,但为了更好地展示我们的缩放方法的有效性,我们还开发了一个新的移动尺寸基线,称为EffientNet

受(Tan et al., 2019)的启发,我们通过利用多目标神经架构搜索来开发基线网络,该搜索可优化准确性和FLOPS。里我们优化FLOPS而不是延迟,因为我们不针对任何特定的硬件设备。我们的搜索产生了一个高效网络,我们将其命名为EfficientNet-B0

表1显示了EfficientNet-B0的体系结构。它的主要构建块是移动反向瓶颈MBConv (San- dler et al., 2018;Tan等人,2019),我们还添加了挤压和激励优化(Hu等人,2018)
从基线EfficientNet-B0开始,我们采用复合扩展方法,分两个步骤进行扩展:
• 第一步:我们首先固定φ = 1,假设两倍以上的资源可用,并根据公式2和3进行α,β,γ的小网格搜索。特别地,我们发现在α·β 2·γ 2≈2的约束下,EfficientNet-B0的最佳值为α = 1.2,β = 1.1,γ = 1.15

•步骤2:然后我们将α,β,γ固定为常数,并使用公式3缩放具有不同φ的基线网络,以获得EfficientNet-B1到B7(详细信息见表2)

即先固定φ ,计算α、β、γ,然后固定α、β、γ,计算φ
值得注意的是,通过在大型模型周围直接搜索α,β,γ可以获得更好的性能,但是在大型模型上搜索成本会变得非常昂贵。我们的方法解决了这个问题,只在小的基线网络上做一次搜索(步骤1),然后对所有其他模型使用相同的缩放系数(步骤2)

5. Experiments



6. Discussion

为了区分我们提出的缩放方法对效率网架构的贡献,图8比较了相同效率网- b0基线网络中不同缩放方法的ImageNet性能。一般来说,所有的缩放方法都以更高的FLOPS为代价来提高精度,但我们的复合缩放方法比其他单维缩放方法可以进一步提高精度,最高可达2.5%,这表明了我们提出的复合缩放方法的重要性
为了进一步理解为什么我们的复合缩放方法比其他方法更好,图7比较了几种不同缩放方法的代表性模型的类激活图(Zhou et al., 2016)。所有这些模型都是从相同的基线进行缩放的,其统计数据如表7所示。图像是从ImageNet验证集中随机选取的。如图所示,复合缩放模型倾向于关注更相关的区域和更多的物体细节,而其他模型要么缺乏物体细节,要么无法捕获图像中的所有物体

7. Conclusion

在本文中,我们系统地研究了卷积神经网络的缩放,并确定仔细平衡网络宽度,深度和分辨率是一个重要但缺失的部分,阻碍了我们更好的准确性和效率为了解决这个问题,我们提出了一种简单而高效的复合缩放方法,该方法使我们能够以更有原则的方式轻松地将基线ConvNet扩展到任何目标资源约束,同时保持模型效率在这种复合缩放方法的支持下,我们证明了移动尺寸的EfficientNet模型可以非常有效地缩放,在ImageNet和五种常用的迁移学习数据集上,以更少的参数和FLOPS超过了最先进的精度

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/211019.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

LeNet

概念 代码 model import torch.nn as nn import torch.nn.functional as Fclass LeNet(nn.Module):def __init__(self):super(LeNet, self).__init__() # super()继承父类的构造函数self.conv1 nn.Conv2d(3, 16, 5)self.pool1 nn.MaxPool2d(2, 2)self.conv2 nn.Conv2d(16…

Bash脚本处理ogg、flac格式到mp3格式的批量转换

现在下载的许多音乐文件是flac和ogg格式的&#xff0c;QQ音乐上下载的就是这样的&#xff0c;这些文件尺寸比较大&#xff0c;在某些场合使用不便&#xff0c;比如在车机上播放还是mp3格式合适&#xff0c;音质这些在车机上播放足够了&#xff0c;要求不高。比如本人就喜欢下载…

软件接口安全设计规范

《软件项目接口安全设计规范》 1.token授权机制 2.https传输加密 3.接口调用防滥用 4.日志审计里监控 5.开发测试环境隔离&#xff0c;脱敏处理 6.数据库运维监控审计

卷王开启验证码后无法登陆问题解决

问题描述 使用 docker 部署&#xff0c;后台设置开启验证&#xff0c;重启服务器之后&#xff0c;docker重启&#xff0c;再次访问系统&#xff0c;验证码获取失败&#xff0c;导致无法进行验证&#xff0c;也就无法登陆系统。 如果不了解卷王的&#xff0c;可以去官网看下。…

飞天使-linux操作的一些技巧与知识点3

http工作原理 http1.0 协议 使用的是短连接&#xff0c;建立一次tcp连接&#xff0c;发起一次http的请求&#xff0c;结束&#xff0c;tcp断开 http1.1 协议使用的是长连接&#xff0c;建立一次tcp的连接&#xff0c;发起多次http的请求&#xff0c;结束&#xff0c;tcp断开ngi…

ky10 server x86 设置网卡开机自启

输入命令查看网卡名称 ip a 输入命令编辑网卡信息 vi /etc/sysconfig/network-scripts/*33改成yes 按ESC键&#xff0c;输入:wq&#xff0c;保存

Aloha 机械臂的学习记录2——AWE:AWE + ACT

继续下一个阶段&#xff1a; Train policy python act/imitate_episodes.py \ --task_name [TASK] \ --ckpt_dir data/outputs/act_ckpt/[TASK]_waypoint \ --policy_class ACT --kl_weight 10 --chunk_size 50 --hidden_dim 512 --batch_size 8 --dim_feedforward 3200 \ --n…

Python网络爬虫环境的安装指南

网络爬虫是一种自动化的网页数据抓取技术&#xff0c;广泛用于数据挖掘、信息搜集和互联网研究等领域。Python作为一种强大的编程语言&#xff0c;拥有丰富的库支持网络爬虫的开发。本文将为你详细介绍如何在你的计算机上安装Python网络爬虫环境。 一、安装python开发环境 进…

bc-linux-欧拉重制root密码

最近需要重新安装虚拟机的系统 安装之后发现对方提供的root密码不对&#xff0c;无法进入系统。 上网搜了下发现可以进入单用户模式进行密码修改从而重置root用户密码。 在这个界面下按e键 找到图中部分&#xff0c;把标红的部分删除掉&#xff0c;然后写上rw init/bin/…

24、文件上传漏洞——Apache文件解析漏洞

文章目录 一、环境简介一、Apache与php三种结合方法二、Apache解析文件的方法三、Apache解析php的方法四、漏洞原理五、修复方法 一、环境简介 Apache文件解析漏洞与用户配置有密切关系。严格来说&#xff0c;属于用户配置问题&#xff0c;这里使用ubantu的docker来复现漏洞&am…

IOday7作业

1> 使用无名管道完成父子进程间的通信 #include<myhead.h>int main(int argc, const char *argv[]) {//创建存放两个文件描述符的数组int fd[2];int pid -1;//打开无名管道if(pipe(fd) -1){perror("pipe");return -1;}//创建子进程pid fork();if(pid &g…

非标设计之电磁阀

电磁阀&#xff1a; 分类&#xff1a; 动画演示两位三通电磁阀&#xff1a; 两位三通电磁阀动画演示&#xff1a; 111&#xff1a; 气缸回路的介绍&#xff1a; 失电状态&#xff1a; 电磁阀得电状态&#xff1a; 两位五通电磁阀的回路&#xff1a;&#xff08;常用&#xf…

算数运算符和算数表达式

基本算数运算符 算数运算符&#xff1a; &#xff08;加法运算符或正值运算符&#xff09;、-&#xff08;减法运算符或负值运算符&#xff09;、*&#xff08;乘&#xff09;、/&#xff08;除&#xff09;、%&#xff08;求余数&#xff09; 双目运算符&#xff1a; 双目…

CGAL的2D符合规定的三角剖分和网格

1、符合规定的三角剖分 1.1、定义 如果三角形的任何面的外接圆在其内部不包含顶点&#xff0c;则该三角形是 Delaunay 三角形。 约束 Delaunay 三角形是一种尽可能接近 Delaunay 的约束三角形。 约束 Delaunay 三角形的任何面的外接圆在其内部不包含从该面可见的数据点。 如果…

陀螺仪LSM6DSV16X与AI集成(3)----读取融合算法输出的四元数

陀螺仪LSM6DSV16X与AI集成.2--姿态解算 概述视频教学样品申请完整代码下载使用demo板生成STM32CUBEMX串口配置IIC配置CS和SA0设置串口重定向参考程序初始化SFLP步骤初始化SFLP读取四元数数据演示 概述 LSM6DSV16X 特性涉及到的是一种低功耗的传感器融合算法&#xff08;Sensor…

MySQL之创建时间类型的字段表

mysql之创建时间类型的字段表 CREATE TABLE tab(birthday DATE, -- 生日job_time DATETIME, -- 记录年月日时分秒login_time TIMESTAMP -- 时间戳NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP )解释&#xff1a; NOT NULL DEFAULT &#xff1a;默认不为空…

css未来:使用light-dark()切换主题色

css未来&#xff1a;使用light-dark()切换主题色 要根据使用的是浅色模式还是深色模式来更改颜色&#xff0c;我们通常会使用 prefers-color-scheme 媒体查询。为了让代码实现变得更容易&#xff0c;CSS 现在附带了一个名为 light-dark() 的实用函数。该函数接受两个颜色值作为…

编译原理lab3-cminus_compiler-LLVM简要熟悉

lab3实验报告&#xff0c;我的实验报告图例很少&#xff0c;这次只有两张图&#xff0c;其余的都以复制输出的形式展现出来了&#xff0c;最终提交的代码在最后 [[#你的提交|你的提交]][[#实验设计|实验设计]][[#提交一&#xff1a;手动编写.ll|提交一&#xff1a;手动编写.ll…

TREK610C高压放大器

181/2461/8938技术规格 输出电压&#xff1a;0到10 kV直流电压 输出电流&#xff1a;0到2 mA 转换率&#xff1a;大于500 V/μs 信号带宽&#xff1a;直流到1.0 kHz &#xff08;-3dB&#xff09; 放大倍数&#xff1a;1000 V/V 闭环系统以保持低噪音、高精确度电压输出 短…

最简单的基于 FFmpeg 的音频解码器

最简单的基于 FFmpeg 的音频解码器 最简单的基于 FFmpeg 的音频解码器正文参考工程文件下载 参考雷霄骅博士的文章&#xff0c;链接&#xff1a;最简单的基于FFMPEGSDL的音频播放器&#xff1a;拆分-解码器和播放器 最简单的基于 FFmpeg 的音频解码器 正文 FFmpeg 音频解码器…