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

news2024/11/25 2:40:01

 论文基于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.coloradmin.cn/o/1559349.html

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

相关文章

西南交大swjtu算法实验3.3|穷举法

1.实验目的 通过具体例子学习排列这种典型的穷举算法的求解过程以及程序框架,分析其算法的求解过程,以及如何设计穷举法解决实际问题。通过本实验,理解穷举法的特点以及实际应用中的局限性。 2.实验任务 有n (n>1)个任务需要…

Java- maven下载jar包,提示找不到,Could not find artifact

1、执行下面命令行 mvn install:install-file -Dfile/home/quangang/桌面/isv-sdk-2.0.jar -DgroupIdcom.jd -DartifactIdisv-sdk -Dversion2.0 -Dpackangjar 2、然后这里要加上jar包

初识C++ · 入门(2)

目录 1 引用 1.1引用的概念 1.2 引用的特性 2 传值,传引用的效率 3 引用和指针的区别 4 内联函数 4.1 内联函数的定义 4. 2 内联函数的特性 5 关键字auto 5.1关于命名的思考 5.2 关于auto的发展 5.3 auto使用规则 6 范围for的使用 7 空指针 1 引用 …

leetcode刷题---链表

目录 1.删除链表的倒数第N个节点两两交换链表中的节点反转链表2 1.删除链表的倒数第N个节点 根据题目描述,第一个思路是存到数组中对数组进行操作,想到数组我们就可以想到下标和倒数第N个的关系,所以我们可以不额外开空间,可以直接…

阿里云2核4G5M云服务器ECS u1实例性能测评

阿里云服务器ECS u1实例,2核4G,5M固定带宽,80G ESSD Entry盘优惠价格199元一年,性能很不错,CPU采用Intel Xeon Platinum可扩展处理器,购买限制条件为企业客户专享,实名认证信息是企业用户即可&a…

Python问题列表

文章目录 1、使用pip安装的模块都存放到哪里了?2、安装fitz包报错,如何解决?3、python代码运行时,控制台输出乱码如何解决。4、vscode中第三方库不自动补齐 1、使用pip安装的模块都存放到哪里了? 答: pip是…

数据库安全(redis、couchdb、h2database)CVE复现

redis服务默认端口:6379;我们可以通过端口扫描来判断是否存在该服务。 Redis 是一套开源的使用ANSI C 编写、支持网络、可基于内存亦可持久化的日志型、键值存储数据库,并提供多种语言的API。 Redis 如果在没有开启认证的情况下,…

基于STM32的武警哨位联动报警系统设计,支持以太网和WIFI通信

1.功能 本文提出的武警报警信息系统终端,可实现报警和联动响应,支持以太网和WIFI两种通信模式,可实现移动哨位报警和固定哨位报警,语音和显示报警信息用户可自行定制。 本终端主要由STM32F103处理器模块和C8051F340处理器模块构…

Linux中断管理:(一)中断号的映射

文章说明: Linux内核版本:5.0 架构:ARM64 参考资料及图片来源:《奔跑吧Linux内核》 Linux 5.0内核源码注释仓库地址: zhangzihengya/LinuxSourceCode_v5.0_study (github.com) 1. 中断控制器 Linux 内核支持众多…

K8S之Configmap的介绍和使用

Configmap Configmap概述Configmap的简介Configmap能解决的问题Configmap应用场景局限性 Configmap创建方法通过命令行直接创建通过文件创建指定目录创建编写Configmap资源清单Yaml文件 Configmap的使用案例通过环境变量引入:使用configMapKeyRef通过环境变量引入&a…

QSpice-(2) 添加外部库和波形操作

Hi,uu们,是不是发现QSpice的库元器件比较少,和其他仿真工具相比少的不是一星半点,所以我们可以用外部下载的库文件去补齐这个缺陷,不知道去哪里下载库?可以看看eeworld的这个网址,里面我放了一些库下载的路径,以及LTspice仿真教程. EEworld LtSpice的库文件下载地址: http:/…

记录阿里云服务器VNC登录一直显示Login Incorrect的问题

想要尝试通过VNC实例登录,结果一直提示Login Incorrect 怀疑自己忘记密码后,重置了几次密码还是登录不上去 解决: 发现阿里云把我小键盘的 ""识别为了 “” 号 但是主键盘区域的 键就没有错位 等就是等 加就是加 而小键盘区…

ROS中IMU惯性测量单元

一、IMU惯性测量单元消息包 IMU 是安装在机器人内部的一种传感器模块,用于测量机器人的空间姿态。 IMU的消息包定义在sensor_msgs包中的Imu中。头部是header,记录了消息发送的时间戳和坐标系ID。第二个是角速度。第三个是矢量加速度。三个数据成员都各…

深度学习网络缝合模块学习

主干网络缝合模块------>缝模块对其通道数 1缝合模块只看通道数 2把模块复制到模型中 3在forward中查看通道数是多少 4在init中进行实例化,注意通道数是上一步forward的通道数 5在forward中加载init中的实例化 6模型实例化测试模块是否加入 模块和模块之前…

【OS探秘】【虚拟化】【软件开发】VirtualBox 虚拟化软件卸载和重装

往期OS系列博文: 【OS探秘】【虚拟化】【软件开发】在Windows 11上安装mac OS虚拟机 【OS探秘】【虚拟化】【软件开发】在Windows 11上安装Kali Linux虚拟机 一、事出有因 近日,笔者的Oracle VM VirtualBox突然抽风了,虚拟机无法启动&…

【Spring Security】 快速入门

文章目录 一、 身份认证Demo1、创建工程2、代码编写2.1、Controller2.2、Html2.3、application.properties配置 3、启动项目并访问 二、Spring Security 默认做了什么二、底层原理1.概述2.FiltersDelegatingFilterProxyFilterChainProxySecurityFilterChainSecurity Filters 三…

CAJViewer7.3 下载地址及安装教程

CAJViewer是中国学术期刊(CAJ)全文数据库的专用阅读软件。CAJViewer是中国知识资源总库(CNKI)开发的一款软件,旨在方便用户在线阅读和下载CAJ数据库中的学术论文、期刊和会议论文等文献资源。 CAJViewer具有直观的界面…

蓝桥杯刷题第五天(昨天刷了忘记更了)

思路: 用dp来记录最短消耗时间 dp[坐标][zhuangtai] 状态0表示在底部,状态1表示在传送门处; 先初始化dp[1][0] 和dp[1][1]然后循环遍历到dp[n][0] 和dp[n][1],用动态规划方程去赋值; ps:易错点在于要开…

正弦实时数据库(SinRTDB)的使用(8)-过滤查询

前文已经将正弦实时数据库的使用进行了介绍,需要了解的可以先看下面的博客: 正弦实时数据库(SinRTDB)的安装 正弦实时数据库(SinRTDB)的使用(1)-使用数据发生器写入数据 正弦实时数据库(SinRTDB)的使用(2)-接入OPC DA的数据 正弦实时数据库(SinRTDB)…

目标伪类选择器

E:target选择匹配E的所哟元素&#xff0c;且匹配元素被相关url指向 鼠标点击右边京东秒杀跳转到京东秒杀div&#xff0c;并变成黄色 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport&…