EfficientNetV2: Smaller Models and Faster Training

EfficientNetV2: Smaller Models and Faster Training

1.Abstract

本文提出了一种训练速度快、参数量少、模型小的卷积神经网络EfficientNetV2。
训练采用了NAS感知技术与缩放技术对训练速度与参数数量进行联合优化。

NAS感知技术: 全名是神经架构搜索,比如自动构建网络框架,选择最优参数。
缩放技术: 训练过程中,逐步提升图像大小,提出了一种渐进学习方式,根据图像大小,自适应的调整正则化因子(比如:dropout、数据增强)

2.网络的通病

训练图像的尺寸很大时,训练速度非常慢,但是又想要大尺寸。比如:
imageSize:224x224 batch:32
imageSize:512x512 batch:32
imageSize:764x764 batch:32 (显存不够)
但所本文batch不变,训练过中不断增大图像尺寸

3.网络设计

在这里插入图片描述MBConv和Fused-MBConv的区别主要是卷积大小不同,depthwise conv3x3
网络浅层中使用Depthwise convolutions速度会很慢,无法充分利用现有的一些加速器,所以浅层网路的模块会少用depthwise conv3x3,但是放在最后,速度会加快

3.1 depthwise conv3x3

在这里插入图片描述
深网络,能够提取复杂特征,但是网络容易退化
宽网络,训练速度快,参数少,但复杂特征不容易提取

3.2 SE

SE本质就是全连接

3.3 MBConv代码实现

self.convs = torch.nn.Sequential(torch.nn.Conv2d(inc, midc, 1, bias = False),torch.nn.BatchNorm2d(midc),torch.nn.SiLU(),torch.nn.Conv2d(midc, midc, 3, padding=1, stride=stride, groups=midc, bias=False),torch.nn.BatchNorm2d(midc),torch.nn.SiLU(),SELayer(inc, midc),torch.nn.Conv2d(midc, outc, 1, bias=False),torch.nn.BatchNorm2d(outc))

SELayer:

self.fc = torch.nn.Sequential(torch.nn.Linear(outc, midc),torch.nn.SiLU(),torch.nn.Linear(midc, outc),torch.nn.Sigmoid())

3.4 Fused-MBConv

self.convs = torch.nn.Sequential(torch.nn.Conv2d(inc, midc, 3, stride = stride, padding = 1, bias = False),torch.nn.BatchNorm2d(midc),torch.nn.SiLU(),torch.nn.Conv2d(midc, outc, 1, bias = False),torch.nn.BatchNorm2d(outc))

4.整体网络

在这里插入图片描述

def efficientnetv2_s(num_classes=2, width_mult=1, dropout=0, p=0.2):config = [[FusedMBConv, 2,  1, 1, 24, p],[FusedMBConv, 4,  2, 4, 48, p],[FusedMBConv, 4,  2, 4, 64, p],[MBConv,      6,  2, 4, 128, p],[MBConv,      9,  1, 6, 160, p],[MBConv,      15, 2, 6, 256, p]]

第二列堆叠层数
第三列步长
第四列扩张率 比如:100*4做进一步操作,让通道变成8的倍数
第五列输入通道数
第六列倍率因子

网络模型还有efficientnetv2_M,efficientnetv2_L,只是参数量更大,堆叠的层数更多

5.亮点

渐进学习策略

训练图像的尺寸对训练模型的效率有很大的影响,如果使用动态的图像尺寸(比如一开始用很小的图像尺寸,后面再增大)来加速网络的训练,但通常会导致Accuracy降低。
原因:Accuracy的降低是不平衡的正则化导致的。在训练不同尺寸的图像时,应该使用动态的正则方法(之前都是使用固定的正则方法)。
操作:当训练的图片尺寸较小时,使用较弱的数据增强能够达到更好的结果;
当训练的图像尺寸较大时,使用更强的数据增强能够达到更好的接果。
当Size=128,RandAugmagnitude=5时效果最好;当Size=300,RandAugmagnitude=15时效果最好
在这里插入图片描述
训练早期使用较小的训练尺寸以及较弱的正则方法(weak regularization),网络快速学习到简单的表达能力。
接着逐渐提升图像尺寸,增大学习难度,同时增强正则方法(adding stronger regularization)。
regularization包括dropout rate,RandAugment magnitude以及mixup ratio
dropout rate:主要是影响通道数量
RandAugment magnitude:主要是数据增强
mixup ratio:数据增强是一种数据扩充方法,可分为同类增强(如:翻转、旋转、缩放、移位、模糊等)和混类增强(如mixup)两种方式
在这里插入图片描述在这里插入图片描述

6.渐进学习策略可以用于我们的网络吗?

在这里插入图片描述可以

6.值得学习的点

1.动态改变尺寸
2.动态正则化策略

实践:直接使用EfficientNetV2-S进行模糊和清晰分类:
1-100 epoch的准确率80%
101-200 epoch的准确率89%
200-350 epoch的准确率94%

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

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

相关文章

quartus工具篇——ROM ip核

quartus工具篇——ROM ip核 1、ROM简介 FPGA中的ROM(Read-Only Memory)是一种只读存储器,主要用来存储固化的初始化配置数据。FPGA ROM的特性主要有: 预编程初始化 - ROM在FPGA编程时就已经写入了初始值,这些值在整个工作周期保持不变。初始化配置 - ROM通常用来存储FPGA的初…

Flutter的开发环境搭建-图解

前言:Flutter作为一个移动应用开发框架,具有许多优点和一些局限性。最大的优点就是-跨平台开发:Flutter可以在iOS和Android等多个平台上进行跨平台开发,使用一套代码编写应用程序,节省开发时间和成本。 Flutter可以编…

JVM运行时数据区——方法区、堆、栈的关系

方法区存储加载的字节码文件内的相关信息和运行时常量池,方法区可以看作是独立于Java堆的内存空间,方法区是在JVM启动时创建的,其内存的大小可以调整,是线程共享的,并且也会出现内存溢出的情况,也可存在垃圾…

2023JAVA 架构师面试 130 题含答案:JVM+spring+ 分布式 + 并发编程》...

此文包含 Java 面试的各个方面,史上最全,苦心整理最全 Java 面试题目整理包括基JVM算法数据库优化算法数据结构分布式并发编程缓存等,使用层面广,知识量大,涉及你的知识盲点。要想在面试者中出类拔萃就要比人付出更多的…

3.18 Bootstrap 列表组(List Group)

文章目录 Bootstrap 列表组(List Group)向列表组添加徽章向列表组添加链接向列表组添加自定义内容 Bootstrap 列表组(List Group) 本章我们将讲解列表组。列表组件用于以列表形式呈现复杂的和自定义的内容。创建一个基本的列表组的…

Debug Stable Diffusion webui

文章目录 SD前期预备一些惊喜TorchHijackForUnet Txt2Img 搭配 Lora 使用单独运行 txt2img.py获取所有资源代码地址参数sd model 主程序代码地址参数(同上)模型InferenceLORA应用重构并使用LORA模型用Lora重构后的网络 做 sampler后处理 以下内容是最近的学习笔记,如…

MySQL基础语法(DDL、DQL、DML、DCL)

目录 SQL通用语法以及分类 SQL通用语法 SQL语句的分类 数据库/表/列的命名规则 DDL语句 DDL设计的数据类型 数据库操作 表操作(必须先进入到数据库) DQL语句 DQL的执行顺序 基本查询 SELECT 条件查询 WHERE 分组查询 GROUP BY 排序查询 OR…

Python Flask构建微信小程序订餐系统 (十)

🔥 编辑会员信息 🔥 编辑会员信息可以通过点击会员列表操作,也可以点击会员信息详情点击进行操作 🔥 修改编程会员信息列表布局 🔥 修改 web/templates/member/index.html 文件,添加跳转到编辑会员信息的页面 web/templates/member/set.html 🔥 创建用于会员…

python机器学习(四)线性代数回顾、多元线性回归、多项式回归、标准方程法求解、线性回归案例

回顾线性代数 矩阵 矩阵可以理解为二维数组的另一种表现形式。A矩阵为三行两列的矩阵,B矩阵为两行三列的矩阵,可以通过下标来获取矩阵的元素,下标默认都是从0开始的。 A i j : A_{ij}: Aij​:表示第 i i i行,第 j j j列的元素。…

在虚拟机中安装anaconda和pytorch

首先我用的是VMware&#xff0c;ubuntu16.04. 首先建议安装anaconda,登录官网Free Download | Anaconda 下载完成后&#xff0c;来到安装文件目录处&#xff0c;打开终端&#xff0c; 然后在终端输入bash <anaconda文件名> 然后就一直enter和yes到底&#xff0c;直到安…

服务器中了Locked勒索病毒怎么解决,勒索病毒解密恢复方式与防护措施

服务器是企业重要数据存储和处理的关键设备&#xff0c;然而&#xff0c;众所周知&#xff0c;服务器系统并非完全免受网络攻击的。其中一种常见的威胁是勒索病毒&#xff0c;其中一种恶名昭彰的变种是Locked勒索病毒。Locked勒索病毒采用了对称AES与非对称RSA的加密形式&#…

曲线长度预测神经网络设计与实现

在本文中&#xff0c;我们使用深度神经网络 (DNN) 解决几何中的一个基本问题&#xff1a;曲线长度的计算。 我们从监督学习方法的示例中学习了几何属性。 由于最简单的几何对象是曲线&#xff0c;因此我们重点学习平面曲线的长度。 为此&#xff0c;重建了基本长度公理并建立了…

Microsoft发布用于 AutoML 算法和训练的 NNI v1.3

将传统的机器学习方法应用于现实世界的问题可能非常耗时。自动化机器学习 &#xff08;AutoML&#xff09; 旨在改变这种状况——通过对原始数据运行系统流程并选择从数据中提取最相关信息的模型&#xff0c;使构建和使用 ML 模型变得更加容易。 为了帮助用户以高效和自动的方…

【雕爷学编程】Arduino动手做(170)---LGT8F328P 开发板

37款传感器与模块的提法&#xff0c;在网络上广泛流传&#xff0c;其实Arduino能够兼容的传感器模块肯定是不止37种的。鉴于本人手头积累了一些传感器和执行器模块&#xff0c;依照实践出真知&#xff08;一定要动手做&#xff09;的理念&#xff0c;以学习和交流为目的&#x…

【C++ 程序设计】第 1~9 章:常见知识点汇总

目录 一、C 语言简介 二、面向对象的基本概念 三、类和对象进阶 四、运算符重载 五、类的继承与派生 六、多态与虚函数 七、输入/输出流 八、文件操作 九、函数模板与类模板 一、C 语言简介 知识点名称内容C语言的发展简史★★1. C 语言是 C 语言的前身 &…

PyTorch深度学习实战(6)——神经网络性能优化技术

PyTorch深度学习实战&#xff08;6&#xff09;——神经网络性能优化技术 0. 前言1. 数据准备1.1 数据集分析1.2 数据集加载 2. 使用 PyTorch 训练神经网络2.1 神经网络训练流程2.2 PyTorch 神经网络训练 3. 缩放数据集4. 修改优化器5. 构建深层神经网络小结系列链接 0. 前言 …

C#之事件

目录 一、发布者和订阅者 &#xff08;一&#xff09;概述 &#xff08;二&#xff09;有关事件的重要事项 &#xff08;三&#xff09;有关事件的私有委托需要了解的重要事项 二、源代码组件概览 三、声明事件 事件是成员 四、订阅事件 五、触发事件 六、标准事件的…

【Zerotier】通过docker自建PLANET服务器

在如今全球互联的时代&#xff0c;我们对于互联网的依赖程度越来越高。然而&#xff0c;传统的网络连接方式在某些情况下可能会受到一些限制&#xff0c;例如局域网的范围限制、防火墙的阻断或者设备所处的多层NAT等。但是&#xff0c;现在有一个名为ZeroTier的工具出现了&…

【C语言进阶】文件操作

&#x1f525;博客主页&#xff1a;小王又困了 &#x1f4da;系列专栏&#xff1a;C语言 &#x1f31f;人之为学&#xff0c;不日近则日退 ❤️感谢大家点赞&#x1f44d;收藏⭐评论✍️ 目录 一、什么是文件 1.1程序文件 1.2数据文件 1.3文件名 二、文件的打开和关闭 2…

银河麒麟服务器v10 sp1 nginx 部署项目

上一篇&#xff1a;银河麒麟服务器v10 sp1 nginx开机自动启动_csdn_aspnet的博客-CSDN博客 由于项目为前后端分离&#xff0c;前端项目使用nginx部署&#xff0c;VUE项目打包后上传至银河麒麟服务器&#xff1a; 8063 为前端项目文件目录&#xff0c;修改配置 &#xff0c;默认…