深度学习_经典网络_Efficientnet论文及系列网络详解

2023-10-11 23:08

本文主要是介绍深度学习_经典网络_Efficientnet论文及系列网络详解,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

EfficientNet论文链接

EfficientNet开源代码

Efficientnet是通过使用深度(depth)、宽度(width)、输入图片分辨率(resolution)共同调节技术搜索得来的模型。

EfficientNet结构

模型构建方法:

  1. 使用强化学习算法实现的MnasNet模型生成基线模型EfficientNet-B0。(MnasNet模型是Google 团队提出的一种资源约束的终端 CNN 模型的自动神经结构搜索方法。该方法使用强化学习的思路进行实现。)
  2. 采用复合缩放的方法,在预先设定的内存和计算量大小的限制下,对EfficientNet-B0模型的深度、宽度(特征图的通道数)、图像大小这三个维度同时进行缩放,这三个维度的缩放比例由网络搜索得到。最终输出了EfficientNet模型。

下图是一些参数调节示意图:

在这里插入图片描述

MBConv卷积块

EfficientNet模型的内部是通过多个MBConv卷积块实现的,每个MBConv卷积块的具体结构如下:

在这里插入图片描述
MBConv卷积块也使用了类似残差结构的结构,不同的是在短连接部分使用了SE层。另外使用了drop_connect方法来代替传统的drop方法。

DropConnect与Dropout不同的地方是在训练神经网络过程中,它不是对隐层节点的输出进行随机的丢弃,而是对隐层节点的输入进行随机的丢弃:

在这里插入图片描述

在深度神经网络中DropConnect与Dropout的作用都是防止模型产生过拟合的情况。相比之下DropConnect的效果会更好一些。

不同版本之间的区别

EfficientNet系列模型中从EfficientNet-B0到EfficientNet-L2版本,模型的精度越来越高,规模越来越大,同样,对内存的需求也会随之变大。

模型的规模主要是由宽度、深度、分辨率这三个维度的缩放参数决定的。这三个维度并不是相互独立的,对于输入的图片分辨率更高的情况,需要有更深的网络来获得更大的感受视野。同样的,对于更高分辨率的图片,需要有更多的通道来获取更精确的特征。在EfficientNet的论文中,也用公式介绍了三者之间的计算原则。

下面的表格展示了每个版本的缩放参数:

在这里插入图片描述

从上表中可以看到,随着模型缩放参数的逐渐变大,其dropout的丢弃率参数也在增大。这是因为模型中的参数越多,模型的拟合效果越强,也越容易产生过拟合。

模型性能

作者将EfficientNet系列网络与ImageNet 上其他现有的模型进行了比较。 一般来说,EfficientNet模型比现有的其他模型具有更高的精度和更高的效率,减少了参数大小和 FLOPS 数量级。 在高精度体系中, EfficientNet-B7在 imagenet 上的精度达到了最高水平的84.4% ,而在 CPU 使用方面比以前的 Gpipe 小8.4倍,快6.1倍。 与广泛使用的 ResNet-50相比,作者提出的 net-b4使用了类似的 FLOPS,同时将准确率从 ResNet-50的76.3% 提高到82.6% (+ 6.3%)。

Reference

技术解读EfficientNet系列模型——图片分类的领域的扛把子

这篇关于深度学习_经典网络_Efficientnet论文及系列网络详解的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/191485

相关文章

python管理工具之conda安装部署及使用详解

《python管理工具之conda安装部署及使用详解》这篇文章详细介绍了如何安装和使用conda来管理Python环境,它涵盖了从安装部署、镜像源配置到具体的conda使用方法,包括创建、激活、安装包... 目录pytpshheraerUhon管理工具:conda部署+使用一、安装部署1、 下载2、 安装3

详解Java如何向http/https接口发出请求

《详解Java如何向http/https接口发出请求》这篇文章主要为大家详细介绍了Java如何实现向http/https接口发出请求,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 用Java发送web请求所用到的包都在java.net下,在具体使用时可以用如下代码,你可以把它封装成一

JAVA系统中Spring Boot应用程序的配置文件application.yml使用详解

《JAVA系统中SpringBoot应用程序的配置文件application.yml使用详解》:本文主要介绍JAVA系统中SpringBoot应用程序的配置文件application.yml的... 目录文件路径文件内容解释1. Server 配置2. Spring 配置3. Logging 配置4. Ma

mac中资源库在哪? macOS资源库文件夹详解

《mac中资源库在哪?macOS资源库文件夹详解》经常使用Mac电脑的用户会发现,找不到Mac电脑的资源库,我们怎么打开资源库并使用呢?下面我们就来看看macOS资源库文件夹详解... 在 MACOS 系统中,「资源库」文件夹是用来存放操作系统和 App 设置的核心位置。虽然平时我们很少直接跟它打交道,但了

关于Maven中pom.xml文件配置详解

《关于Maven中pom.xml文件配置详解》pom.xml是Maven项目的核心配置文件,它描述了项目的结构、依赖关系、构建配置等信息,通过合理配置pom.xml,可以提高项目的可维护性和构建效率... 目录1. POM文件的基本结构1.1 项目基本信息2. 项目属性2.1 引用属性3. 项目依赖4. 构

Rust 数据类型详解

《Rust数据类型详解》本文介绍了Rust编程语言中的标量类型和复合类型,标量类型包括整数、浮点数、布尔和字符,而复合类型则包括元组和数组,标量类型用于表示单个值,具有不同的表示和范围,本文介绍的非... 目录一、标量类型(Scalar Types)1. 整数类型(Integer Types)1.1 整数字

Java操作ElasticSearch的实例详解

《Java操作ElasticSearch的实例详解》Elasticsearch是一个分布式的搜索和分析引擎,广泛用于全文搜索、日志分析等场景,本文将介绍如何在Java应用中使用Elastics... 目录简介环境准备1. 安装 Elasticsearch2. 添加依赖连接 Elasticsearch1. 创

Redis缓存问题与缓存更新机制详解

《Redis缓存问题与缓存更新机制详解》本文主要介绍了缓存问题及其解决方案,包括缓存穿透、缓存击穿、缓存雪崩等问题的成因以及相应的预防和解决方法,同时,还详细探讨了缓存更新机制,包括不同情况下的缓存更... 目录一、缓存问题1.1 缓存穿透1.1.1 问题来源1.1.2 解决方案1.2 缓存击穿1.2.1

PyTorch使用教程之Tensor包详解

《PyTorch使用教程之Tensor包详解》这篇文章介绍了PyTorch中的张量(Tensor)数据结构,包括张量的数据类型、初始化、常用操作、属性等,张量是PyTorch框架中的核心数据结构,支持... 目录1、张量Tensor2、数据类型3、初始化(构造张量)4、常用操作5、常用属性5.1 存储(st

五大特性引领创新! 深度操作系统 deepin 25 Preview预览版发布

《五大特性引领创新!深度操作系统deepin25Preview预览版发布》今日,深度操作系统正式推出deepin25Preview版本,该版本集成了五大核心特性:磐石系统、全新DDE、Tr... 深度操作系统今日发布了 deepin 25 Preview,新版本囊括五大特性:磐石系统、全新 DDE、Tree