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

news2025/5/15 5:51:58


文章目录

  • -
  • 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.coloradmin.cn/o/1299145.html

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

相关文章

SpringIOC之ConfigurationClassUtils

博主介绍&#xff1a;✌全网粉丝5W&#xff0c;全栈开发工程师&#xff0c;从事多年软件开发&#xff0c;在大厂呆过。持有软件中级、六级等证书。可提供微服务项目搭建与毕业项目实战&#xff0c;博主也曾写过优秀论文&#xff0c;查重率极低&#xff0c;在这方面有丰富的经验…

mysql面试题——日志

一&#xff1a;为什么需要REDO日志 缓冲池可以帮助我们消除CPU和磁盘之间的鸿沟&#xff0c;checkpoint机制可以保证数据的最终落盘&#xff0c;然而由于checkpoint 并不是每次变更的时候就触发 的&#xff0c;而是master线程隔一段时间去处理的。所以最坏的情况就是事务提交后…

【基于Python的二手车数据可视化平台的设计与实现】

基于Python的二手车数据可视化平台的设计与实现 前言数据获取与处理网络爬虫数据存储 可视化平台的设计与实现Flask框架数据可视化 创新点结语 前言 随着社会的不断发展&#xff0c;二手车市场也逐渐成为一个备受关注的领域。为了更好地为二手车的买家和卖家提供信息&#xff…

【Vue】日常错误总结(持续更新)

日常遇到的小问题汇总, 内容小篇幅少的就全放这里了, 内容多的会在Vue专栏单独分享~ 目录 【Q】 el-form-item值为 null 或 undefined显示““ 【Q】dialog内组件数据刷新总是延迟慢一拍 问题背景描述 解决方案 代码简单模拟 JS 【Q】el-input 不能输入的解决办法 方法…

如何优雅地使用Mybatis逆向工程生成类

文/朱季谦 1.环境&#xff1a;SpringBoot 2.在pom.xml文件里引入相关依赖&#xff1a; 1 <plugin>2 <groupId>org.mybatis.generator</groupId>3 <artifactId>mybatis-generator-maven-plugin</artifactId>4 <version>1.3.6<…

(五)五种最新算法(SWO、COA、LSO、GRO、LO)求解无人机路径规划MATLAB

一、五种算法&#xff08;SWO、COA、LSO、GRO、LO&#xff09;简介 1、蜘蛛蜂优化算法SWO 蜘蛛蜂优化算法&#xff08;Spider wasp optimizer&#xff0c;SWO&#xff09;由Mohamed Abdel-Basset等人于2023年提出&#xff0c;该算法模型雌性蜘蛛蜂的狩猎、筑巢和交配行为&…

软件工程之需求分析

一、对需求的基本认识 1.需求分析简介 (1)什么是需求 用户需求&#xff1a;由用户提出。原始的用户需求通常是不能直接做成产品的&#xff0c;需要对其进行分析提炼&#xff0c;最终形成产品需求。 产品需求&#xff1a;产品经理针对用户需求提出的解决方案。 (2)为什么要…

数据仓库工具Hive

1. 请解释Hive是什么&#xff0c;它的主要用途是什么&#xff1f; Hive是一个基于Hadoop的数据仓库工具&#xff0c;主要用于处理和分析大规模结构化数据。它可以将结构化的数据文件映射为一张数据库表&#xff0c;并提供类似SQL的查询功能&#xff0c;将SQL语句转换为MapRedu…

排序:非递归的快排

目录 非递归的快排&#xff1a; 代码分析&#xff1a; 代码演示&#xff1a; 非递归的快排&#xff1a; 众所周知&#xff0c;递归变成非递归&#xff0c;而如果还想具有递归的功能&#xff0c;那么递归的那部分则需要变成循环来实现。 而再我们的排序中&#xff0c;我们可…

数字逻辑电路基础-组合逻辑电路之4位先行进位加法器

文章目录 一、问题描述二、verilog源码三、仿真结果一、问题描述 前面介绍4位行波进位全加器(串行加法器)的原理及verilog实现,但是它是一种串行加法器,当位数多时,比如32位的二进制数相加,由于进位逐位从低位向高位传递,这会造成相当大的延迟。对于需要快速加法运算的…

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…

Three.js+pcl.js 实现Web端的点云处理+显示

1 功能实现 在前面我们实现了PCD的加载器的基础上&#xff0c;这次将加上 pcl.js —— 著名的PCL库的web版本&#xff0c;详情见https://pcl.js.org/&#xff0c;来处理我们加载上去的点云。 具体实现如下&#xff1a; 用户可以通过每个板块的右上角进行处理前 / 后的切换&am…

php使用vue.js实现省市区三级联动

参考gpt 有问题问gpt 实现效果 现省市区三级联动的方法可以使用PHP结合AJAX异步请求来实现。下面是一个简单的示例代码&#xff1a; HTML部分&#xff1a; <!DOCTYPE html> <html> <head><meta charset"UTF-8"><title>省市区三级联动…

vue-seamless-scroll无缝滚动组件

首先找到他的官网vue-seamless-scroll 1.进行安装依赖 vue2 npm install vue-seamless-scroll --save vue3 npm install vue3-seamless-scroll --save 2.全局引入 vue2 import scroll from vue-seamless-scroll Vue.use(scroll) vue3 import vue3SeamlessScroll fro…

JVM 内存分析工具 Memory Analyzer Tool(MAT)的深度讲解

目录 一. 前言 二. MAT 使用场景及主要解决问题 三. MAT 基础概念 3.1. Heap Dump 3.2. Shallow Heap 3.3. Retained Set 3.4. Retained Heap 3.5. Dominator Tree 3.6. OQL 3.7. references 四. MAT 功能概述 4.1. 内存分布 4.2. 对象间依赖 4.3. 对象状态 4.4…

【交流】PHP生成唯一邀请码

目录 前言&#xff1a; 1.随机生成&#xff0c;核对user表是否已存在 代码&#xff1a; 解析&#xff1a; 缺点&#xff1a; 2.建表建库&#xff0c;每次从表中随机抽取一条&#xff0c;用完时扩充 表结构 表视图 代码 解析 缺点 结论&#xff1a; 前言&#xff1a; …

【rabbitMQ】rabbitMQ的下载,安装与配置

目录 1. 下载Erland 安装步骤&#xff1a; 配置环境变量&#xff1a; 校验环境变量配置是否成功 2.下载MQ 安装步骤&#xff1a; 添加可视化插件 &#xff1a; 启动&#xff1a; 拒绝访问 1. 下载Erland 因为rabbitMQ是基于Erland,所以在安装rabbitMQ之前需要安装Erla…

距离度量(各距离含义)

欧氏距离 在n维空间中两点的真实距离&#xff0c;向量的自然长度 由于欧几里得几何学的关系称为欧氏距离 二维空间两点计算公式&#xff1a; d ( x 1 − x 2 ) 2 ( y 1 − y 2 ) 2 d \sqrt{(x_1 - x_2)^2 (y_1 - y_2)^2} d(x1​−x2​)2(y1​−y2​)2 ​ 三维空间两点计算…

7.MySQL 存储过程

目录 概述 概念&#xff1a; 特性&#xff1a; 变量 局部变量 定义方法&#xff1a; 语法1: 语法2: 用户变量 语法&#xff1a; 系统变量 全局变量 会话变量 参数传递 in out inout 流程控制 分支语句 if case 循环语句 循环控制: while while while…

Java面试遇到的一些常见题

目录 1. Java语言有几种基本类型&#xff0c;分别是什么&#xff1f; 整数类型&#xff08;Integer Types&#xff09;&#xff1a; 浮点类型&#xff08;Floating-Point Types&#xff09;&#xff1a; 字符类型&#xff08;Character Type&#xff09;&#xff1a; 布尔类…