EfficientNetV2:谷歌又来了,最小的模型,最高的准确率,最快的训练速度 | ICML 2021

 论文基于training-aware NAS和模型缩放得到EfficientNetV2系列,性能远优于目前的模型。另外,为了进一步提升训练速度,论文提出progressive learning训练方法,在训练过程中同时增加输入图片尺寸和正则化强度。从实验结果来看,EfficientNetV2的效果非常不错。

来源:晓飞的算法工程笔记 公众号

论文: EfficientNetV2: Smaller Models and Faster Training

  • 论文地址:https://arxiv.org/abs/2104.00298
  • 论文代码:https://github.com/google/automl/tree/master/efficientnetv2

Introduction


 随着模型大小和数据集规模的增加,训练效率成了深度学习中很重要的一环。近期也有越来越多致力于提高训练效率的研究,但很难有兼顾准确率、训练效率和参数规模的网络。

 论文尝试分析了参数高效的EfficientNet的训练瓶颈,主要有三点:1)图片输入尺寸过大会导致训练较慢。2)深度卷积放在网络前部分会较慢。3)对网络所有stage进行同等scaling并不是最优的。基于上面的分析,论文设计了更精简的搜索空间,使用training-aware NAS(neural architecture search)和scaling来同时提高模型准确率、训练效率和参数效率,提出了EfficientNetV2系列网络。
 在训练速度方面,论文通过在训练过程逐步提高输入尺寸来进一步加速训练。先前也有类似的在训练过程逐步增加输入图片尺寸来加速的研究,但这些研究在修改输入图片尺寸的同时没有改变训练设置,导致准确率下降。论文认为,输入图片尺寸不同的网络的容量不同,应该使用不同程度的正则化方法。为此,论文提出了progressive learning,在训练初期使用较小的图片尺寸和较弱的正则化,然后逐步提高图片尺寸和正则化强度,可以做到加速训练又不掉点。
 论文的主要贡献如下:

  • 组合training-aware NAS和scaling提出EfficientNetV2系列网络,比之前的网络的规模更小、速度更快。
  • 提出progressive learning自适应根据图片尺寸调整正则化强度,加速训练的同时提高准确率。
  • 在多个训练集上进行实验,验证训练效率能提高11倍,模型规模能降低6.8倍。

EfficientNetV2 Architecture Design

Review of EfficientNet

 EfficientNet是优化计算量和参数量的系列网络,先通过NAS搜索准确率和速度折中的基线模型EfficientNet-B0,再通过混合缩放策略获得B1-B7模型。

 尽管现在很多研究声称在训练或推理速度上取得很大进步,但他们通常在计算量和参数量上差于EfficientNet,而本文正是想同时提升训练速度和优化模型参数量。

Understanding Training Efficiency

 论文对EfficientNetV1的训练瓶颈进行了分析,发现以下几个主要问题。

  • Training with very large image sizes is slow

 输入图片尺寸过大会导致显存占用的显著提高,由于GPU的显存是固定的,导致必须减少batch size和增加迭代次数进行训练,训练也就变慢了。

 如表2所示,较小的尺寸大约能提升2.2倍训练速度,还能小幅提升模型性能。为此,论文参考FixRes的动态增加训练图片尺寸提出更高效的训练方法,在训练过程逐步增加图片尺寸以及正则化强度。

  • Depthwise convolutions are slow in early layers but effective in later stages

 EfficientNet的另一个训练瓶颈在于depthwise卷积的使用,depthwise卷积虽然有更少的参数和计算量,但不能使用目前的GPU加速方案。

 最近有研究提出MBConv的替代结构Fused-MBConv,如图2所示,将depthwise conv3x3和conv1x1合并为常规的conv3x3。为了对比两者的性能差异,论文逐步替换stage进行实验。从表3的结果可以看出,恰当地使用Fused-MBConv可以在不带来过多参数量和计算量的前提下提升训练速度。至于如何是恰当,就靠NAS来自动搜索了。

  • Equally scaling up every stage is sub-optimal

 EfficientNet使用简单的混合缩放规则相等地放大所有stage,但实际上不同的stage对训练速度和参数量的影响是不同的。为此,论文只放大网络后面的stage,同时减小输入图片尺寸的放大比例。

Training-Aware NAS and Scaling

  • NAS Search

 论文跟EfficientNet一样利用MnasNet的多目标神经结构搜索进行网络搜索,调整评价指标同时优化准确率、参数量和训练速度。以EfficientNet作为主干,构造stage-based的搜索空间来对每个stage进行搜索。搜索的选项包括卷积类型{MBConv, Fused-MBConv}、层数、卷积核大小{3x3, 5x5},block中间的膨胀比例{1, 4, 6}。
 另外,论文也从以下几点减少了搜索空间大小:

  • 去掉不必要的搜索选项,比如pooling skip算子,这个没有在EfficientNet用到过。
  • 复用主干网络的每个stage的channel数,这部分已经在EfficientNet中搜索过了。

 由于搜索空间精简了,可以直接用强化学习和随机搜索来生成跟EfficientNet-B4差不多大小的网络。论文共采样1000个网络结构,每个训练大概10个周期。搜索的平均指标包含模型准确率 A A A、归一化的训练耗时 S S S和参数量 P P P,使用加权乘积 A ⋅ S w ⋅ P w A\cdot S^w\cdot P^w ASwPw进行最终得分计算,其中 w = − 0.07 w=-0.07 w=0.07 v = − 0.05 v=-0.05 v=0.05是通过实验确定的平衡超参数。

  • EfficientNetV2 Architecture

 EfficientNetV2-S结构如表4所示,Conv后接的数字是膨胀率。对比EfficientNet,主要有以下区别:

  • 使用MBConv的同时,在网络前几个阶段也使用了fused-MBConv。
  • EfficientNetV2倾向于选择较小的膨胀比例,这样能减少内存访问耗时。
  • EfficientNetV2比较喜欢较小的3x3卷积,但会添加更多的层数来弥补减少的感受域。
  • 去掉EfficientNet中最后stride-1的stage,可能由于其参数量和计算量太大了。

 这里有一点比较奇怪,上面NAS部分说会复用EfficientNet的通道数来缩小搜索空间,但是看表4的通道数貌似跟EfficientNet没有关系。这要等作者补充更多的NAS细节看看,具体各模型的参数可以去github看看。

  • EfficientNetV2 Scaling

 论文通过放大EfficientNetV2-S得到EfficientNetV2-M/L,使用类似于EfficientNet的混合缩放策略来,有以下区别:

  • 限制最大的推理图片尺寸为480,节省内存和训练速度消耗。

  • 逐步添加更多的层给后面的stage,比如表4中的stage5和stage6,在增加网络容量的同时不会带来过多运行消耗。

  • Training Speed Comparison

 图3对比了各网络的训练耗时,其中EfficientNet有原版和训练时缩小30%图片尺寸的版本,缩小版本的输入尺寸跟EfficientNetV2以及NFNet一致。使用相同训练周期和固定图片尺寸进行训练,EfficientNet仅缩小训练尺寸就能得到很大的性能提升,而EffcientNetV2凭借论文提出training-aware NAS和缩放策略,性能远超其它网络。

Progressive Learning


  • Motivation

 如之前所描述的,图片尺寸对训练效率的影响非常大。除了FixRes,还有很多其他在训练期间动态调整图片尺寸的研究,但这些研究通常都会出现性能下降的情况。论文认为,性能下降的主要原因在于正则化没有匹配动态调整的图片尺寸。较小的输入尺寸应该使用较弱的正则化强度,相反,较大的输入尺寸则应该使用较强的正则化强度。

 为了验证这个猜想,论文将不同输入图片尺寸和不同正则化强度进行组合测试。从表5的结果来看,基本验证了论文的猜想。于是论文提出了progressive learning,在训练过程中根据动态调整的图片尺寸自适应正则化强度。

  • Progressive Learning with adaptive Regularization

 论文提出的progressive learning如图4所示,先用较小的图片尺寸和较弱的正则化进行训练,随后逐步增加图片尺寸和正则化强度。

 假设完整的训练共 N N N次迭代,目标图片尺寸为 S e S_e Se,目标正则化超参数为 Φ e = { ϕ e k } \Phi_e=\{\phi^k_e\} Φe={ϕek},其中 k k k表示其中一种正则化方法,比如dropup比例或mixup比例。将训练分为 M M M个阶段,对于每个阶段 1 ≤ i ≤ M 1\le i\le M 1iM,模型训练的图片尺寸为 S i S_i Si,正则化超参数为 Φ i = { ϕ i k } \Phi_i=\{\phi^k_i\} Φi={ϕik},最后一个阶段 M M M的图片尺寸为 S e S_e Se和正则化超参数为 Φ e \Phi_e Φe。为了简单化,初始化图片尺寸和正则化超参数为 S O S_O SO Φ 0 \Phi_0 Φ0,通过线性插值来决定每个阶段对应参数,整体逻辑如算法1所示。

 论文共使用三种正则化方法:Dropout、RandAugment和Mixup,各网络的参数设置如表6所示。

Experiment


 在ImageNet上与其它网络进行对比。

 迁移能力对比。

 相同训练配置下的EfficientNet对比。

 缩小EfficientNetV2的模型大小与对标的EfficientNetV1,对比准确率和速度。

 对比不同网络使用progressive learning的效果。

 对比自适应正则化强度的效果。

Conclusion


 论文基于training-aware NAS和模型缩放得到EfficientNetV2系列,性能远优于目前的模型。另外,为了进一步提升训练速度,论文提出progressive learning训练方法,在训练过程中同时增加输入图片尺寸和正则化强度。从实验结果来看,EfficientNetV2的效果非常不错。



如果本文对你有帮助,麻烦点个赞或在看呗~
更多内容请关注 微信公众号【晓飞的算法工程笔记】

work-life balance.

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

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

相关文章

【docker】nexus 本地 maven配置

1、这篇文章中说明了如何搭建私服 【docker】搭建Nexus私服-CSDN博客文章浏览阅读2次。4、点击登陆(账号:admin 秘密:在容器内 /nexus-data/admin.password 文件中)注意我的端口号是 10002,注意你的端口号。7、设置maven-central…

MSTP环路避免实验(华为)

思科设备参考:MSTP环路避免实验(思科) 一,技术简介 MSTP(多生成树协议),MSTP解决了STP和RSTP没有考虑vlan的问题,STP和RSTP将所有的vlan共享为一个生成树实例,无法实现…

获取电商数据的几种方法分享

在数字化时代,电商数据已经成为企业决策的重要依据。无论是市场趋势的洞察、用户行为的分析,还是产品优化和营销策略的制定,都离不开电商数据的支持。本文将分享几种获取电商数据的有效方法,力求在干货满满的同时,也不…

Linux系统网络的实时性评估

目录 1.使用 cyclictest 测试系统实时性2.测试系统通信实时性2.1 PingPlotter2.2 使用 ping 测试通讯实时性 3. 使用 iperf 测试带宽4.网络性能测试 1.使用 cyclictest 测试系统实时性 安装cyclictest sudo apt-get update sudo apt-get install rt-testscyclictest -p 99 -i…

代码第三十六天:需要添加的硬币的最小数量

需要添加的硬币的最小数量 题目要求: 解题思路 为方便描述,把 0 也算作可以得到的数。 假设现在得到了区间 [ 0 , s − 1 ] [0,s−1] [0,s−1] 中的所有整数,如果此时遍历到整数 x c o i n s [ i ] xcoins[i] xcoins[i],那么…

win10 安装kubectl,配置config连接k8s集群

安装kubectl 按照官方文档安装:https://kubernetes.io/docs/tasks/tools/install-kubectl-windows/ curl安装 (1)下载curl安装压缩包: curl for Windows (2)配置环境变量: 用户变量: Path变…

Python之Opencv教程(2):图像边缘检测

1、什么是边缘检测 OpenCV中的边缘检测是一种常见的图像处理技术,用于检测图像中物体边缘的位置。常用的边缘检测算法包括Sobel算子、Scharr算子、Laplacian算子和Canny边缘检测算法等。下面将介绍使用OpenCV实现这些边缘检测算法的方法。 2、边缘检测的作用 边缘…

STM32 字符数组结束符 “\0”

STM32 字符数组结束符 “\0” 使用字符数组使用printf,string参考 使用字符数组 使用STM32的串口发送数据,核心代码如下: char str[] "hello world!\n\r";while(1) {HAL_UART_Transmit(&huart2, str, sizeof (str), 10);HAL…

【力扣刷题日记】1173.即时食物配送I

前言 练习sql语句,所有题目来自于力扣(https://leetcode.cn/problemset/database/)的免费数据库练习题。 今日题目: 1173.即时食物配送I 表:Delivery 列名类型delivery_idintcustomer_idintorder_datedatecustomer…

Java学生管理系统(附完整代码)两个版本

目录 学生管理系统 需求: 分析: 初始菜单: 学生类: 添加功能: 删除功能: 修改功能: 查询功能: 设计图 学生管理系统(基础版)独立开发 所用方法 代码: Student类: Stud…

LabVIEW双通道太阳射电频谱观测系统

LabVIEW双通道太阳射电频谱观测系统 开发了一个基于LabVIEW平台开发的双通道高速太阳射电频谱观测系统。该系统实时监测太阳射电爆发,具有随机性、持续时间短、变化快等特点。通过高速信号采集卡实现1.5 GS/s的信号采集,时间分辨率可达4ms,频…

类的新功能

类的新功能 默认成员函数 在C11之前,一个类中有如下六个默认成员函数: 构造函数。拷贝构造函数赋值重载析构函数取地址重载函数const取地址函数 其中前四个默认成员函数最重要,后面两个默认成员函数一般不会用到,这里默认成员…

PHPCMS v9城市分站插件

PHPCMS自带的有多站点功能,但是用过的朋友都知道,自带的多站点功能有很多的不方便之处,例如站点栏目没法公用,每个站点都需要创建模型、每个站点都需要单独添加内容,还有站点必须静态化。如果你内容很多这些功能当然无…

虚函数和纯虚函数

虚函数 被virtual修饰的成员函数称为虚函数 定义一个函数为虚函数&#xff0c;是为了使用基类指针调用子类函数。虚函数&#xff0c;不代表函数不被实现。只有纯虚函数才不被实现&#xff0c;纯虚函数定义了一个接口&#xff0c;起到规范的作用。 #include <iostream>…

【AXIS】AXI-Stream FIFO设计实现(四)——异步时钟

前文介绍了几种同步时钟情况下的AXI Stream FIFO实现方式&#xff0c;一般来说&#xff0c;FIFO也需要承担异步时钟域模块间数据传输的功能&#xff0c;本文介绍异步AXIS FIFO的实现方式。 如前文所说&#xff0c;AXI-Stream FIFO十分类似于FWFT异步FIFO&#xff0c;推荐参考前…

B201-SpringBoot整合Shiro

目录 ShiroShiro核心组件SpringBoot整合Shiro1.创建新SpringBoot项目和导包2.自定义Shiro过滤器Realm3.配置类ShiroConfig编写认证和授权规则案例&#xff1a;案例思路改造ShiroConfigAccountController配置视图解析器templates下新建3个页面启动测试 登录认证设置自定义登录页…

【C++庖丁解牛】自平衡二叉搜索树--AVL树

&#x1f341;你好&#xff0c;我是 RO-BERRY &#x1f4d7; 致力于C、C、数据结构、TCP/IP、数据库等等一系列知识 &#x1f384;感谢你的陪伴与支持 &#xff0c;故事既有了开头&#xff0c;就要画上一个完美的句号&#xff0c;让我们一起加油 目录 前言1 AVL树的概念2. AVL…

探索未来的视觉智能:AI视频分析系统的崭新时代

随着人工智能技术的飞速发展&#xff0c;AI视频分析系统正逐渐成为各行业的关注焦点。这些系统不仅可以帮助安防领域实现更智能化的监控&#xff0c;还能在零售、交通、医疗等领域发挥重要作用。本文将深入探讨AI视频分析系统的崭新时代&#xff0c;揭示其未来发展的无限可能。…

2-HDFS常用命令及上传下载流程

HDFS NameNode 安全模式(safemode) 当NameNode被重启的时候&#xff0c;自动进入安全模式 在安全模式中&#xff0c;NameNode首先会触发edits_inprogress文件的滚动。滚动完成之后&#xff0c;更新fsimage文件 更新完成之后&#xff0c;NameNode会将fsimage文件中的元数据加…

基于java+SpringBoot+Vue的网上书城管理系统设计与实现

基于javaSpringBootVue的网上书城管理系统设计与实现 开发语言: Java 数据库: MySQL技术: SpringBoot MyBatis工具: IDEA/Eclipse、Navicat、Maven 系统展示 前台展示 后台展示 系统简介 整体功能包含&#xff1a; 网上书城管理系统是一个基于互联网的在线购书平台&#…