EfficientNet笔记

news2025/1/11 9:06:22

请添加图片描述

前言

论文

EfficientNet 是一系列卷积神经网络架构,它旨在在计算资源受限的情况下实现更好的性能。EfficientNet 的设计思想是在网络的深度、宽度和分辨率方面进行均衡的调整,以获得高效且高性能的模型。

以下是 EfficientNet 的主要特点和设计原则:

  1. 复合系数(Compound Scaling):EfficientNet 使用了复合系数来平衡网络的深度、宽度和分辨率。它通过对网络的不同维度(例如深度、宽度、分辨率)应用统一的缩放因子来确保网络各个部分之间的平衡。这种方法使得网络可以在不同的任务和计算资源条件下进行调整。

  2. 宽度乘数(Width Multiplier):EfficientNet 使用宽度乘数来控制每个层级的通道数,从而降低了网络的计算复杂度。较小的宽度乘数将减少参数量,使模型更轻量,而较大的宽度乘数则可以增加模型的性能。

  3. 深度乘数(Depth Multiplier):深度乘数控制网络的深度。较小的深度乘数会减少层级数,使模型更浅,而较大的深度乘数则会增加网络深度,提高模型的表征能力。

  4. 分辨率乘数(Resolution Multiplier):分辨率乘数用于控制输入图像的分辨率。较小的分辨率乘数会降低输入图像的分辨率,从而减少计算复杂度,而较大的分辨率乘数则会增加输入图像的分辨率,提高模型的视觉表征能力。

  5. EfficientNet 版本:EfficientNet 提供了不同版本(如 B0、B1、B2、B3、B4、B5、B6、B7),这些版本具有不同的复杂度和性能,可以根据任务的要求选择合适的版本。

模型架构

img

EfficientNets显著优于其他ConvNets。特别是,EfficientNet-B7实现了最先进的84.3%的顶级精度,但比GPipe小8.4倍,快6.1倍。EfficientNet-B1比ResNet-152小7.6倍,快5.7倍。

网络对比(宽度-channel、深度-堆叠、分辨率-大小)

img

(a) 是一个基线网络示例;(b) -(d)是仅增加网络宽度、深度或分辨率的一个维度的常规缩放。(e) 是我们提出的以固定比率均匀缩放所有三维的复合缩放方法。

单独增加效果对比

img

放大具有不同网络宽度(w)、深度(d)和分辨率(r)系数的基线模型。宽度、深度或分辨率越大的网络往往会获得更高的精度,但精度增益在达到80%后迅速饱和,这表明了一维缩放的局限性。

单独提升这些指标,都能使得效果有所提升,但是会遇到瓶颈

(FLOPS:例如卷积计算量=HWKKM*N,HW为输出长宽,K是卷积核大小,M为输入特征图的通道数,N为卷积核个数)

综合提升效果

img

所以综合考虑:缩放不同基线网络的网络宽度。线中的每个点表示具有不同宽度系数(w)的模型。所有基线网络均来自下表。第一个基线网络(d=1.0,r=1.0)具有分辨率为224x224的18个卷积层,而最后一个基线(d=2.0,r=1.3)具有分辨率299x299的36个层

EfficientNet-B0 Network

img

EfficientNet-B0基线网络–每行描述一个阶段i,具有Li层(堆叠),输入分辨率为Hi,Wi(分辨率)和输出通道Ci(宽度)

网络结构细节

EfficientNet-B0 是 EfficientNet 系列中最小的一个版本,它的网络结构相对较简单,但仍然具有高效性能。以下是 EfficientNet-B0 的主要网络结构细节:

\1. 骨干网络(Backbone:
- EfficientNet-B0 使用了一个经过缩放的骨干网络,该骨干网络基于 MobileNetV2 的架构。MobileNetV2 是一种轻量级卷积神经网络,通常用于移动设备和嵌入式系统。它具有分离卷积、残差连接和批量归一化等特性。

\2. 深度和宽度参数:
- EfficientNet-B0 的深度参数为 1.0,宽度参数为 1.0。这些参数控制网络的深度和通道数,EfficientNet 系列中的不同版本通过调整这些参数来实现不同的网络大小和性能。

\3. 输入分辨率:
- EfficientNet-B0 的默认输入图像分辨率为 224x224 像素。这是一种相对较低的分辨率,适用于移动设备和资源受限的场景。

\4. 特征提取:
- 骨干网络通过一系列卷积层和池化层来提取图像特征。这些特征在后续的任务中用于分类、检测或其他视觉任务。

\5. 全局平均池化:
- EfficientNet-B0 在骨干网络之后通常使用全局平均池化层,将特征图的每个通道进行平均,生成一个固定大小的特征向量,作为最终的图像表示。

\6. 分类头部:
- 最后,EfficientNet-B0 使用一个全连接层或卷积层作为分类头部,将图像特征映射到输出类别的概率分布。

img

关于shortcut连接,仅当输入MBConv结构特征矩阵与输出的特征矩阵shape相同的时才存在

depthwise convolution

img

MBConv 模块

img

SE

img

计算特征图的权重:首先对输入特征矩阵的feature map的每一个channel进行平均池化操作
,然后在分别通过两个全连接层,先降维再升维,省参数,最后sigmoid把权重分配到01之间,按维相乘

EfficientNet-B0~ EfficientNet-B7网络参数
def efficientnet_params(model_name):
    """ Map EfficientNet model name to parameter coefficients. """
    params_dict = {
        # Coefficients:   width,depth,res,dropout
        'efficientnet-b0': (1.0, 1.0, 224, 0.2),
        'efficientnet-b1': (1.0, 1.1, 240, 0.2),
        'efficientnet-b2': (1.1, 1.2, 260, 0.3),
        'efficientnet-b3': (1.2, 1.4, 300, 0.3),
        'efficientnet-b4': (1.4, 1.8, 380, 0.4),
        'efficientnet-b5': (1.6, 2.2, 456, 0.4),
        'efficientnet-b6': (1.8, 2.6, 528, 0.5),
        'efficientnet-b7': (2.0, 3.1, 600, 0.5),
        'efficientnet-b8': (2.2, 3.6, 672, 0.5),
        'efficientnet-l2': (4.3, 5.3, 800, 0.5),
    }
    return params_dict[model_name]

模型对比

img

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

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

相关文章

VS2022创建控制台应用程序后没有Main了,如何显示Main?

文章目录 问题描述原因解决方案简单的顶级语句试用计算器 其他文章 问题描述 用VS2022创建一个控制台应用后,没有名称空间和Main函数了,只有一个WriteLine,如下所示。 // See https://aka.ms/new-console-template for more information Co…

今日学习 Mybatis 的关联映射

关联映射的三种关系: 我们首先绘制一个简化的 E-R 图来表示三种关联关系。 上图表示的三种关系: 一对一:一个班主任只属于一个班级,一个班级也只能有一个班主任一对多:一个班级有多个学生,一个学生只属于…

全网最细讲解如何实现导出Excel压缩包文件

写在前面的话 接下来我会使用传统的RESTful风格的方式结合MVC的开发模式给大家介绍一下如何去实现标题的效果。 基本思路讲解 先从数据库中查询出一组人员信息记录,保存在List list中。遍历这个列表,对于每一个人员信息,将其填充到一个Excel…

小白学Python:提取Word中的所有图片,只需要1行代码

#python# 大家好,这里是程序员晚枫,全网同名。 最近在小破站账号:Python自动化办公社区更新一套课程:给小白的《50讲Python自动化办公》 在课程群里,看到学员自己开发了一个功能:从word里提取图片。这个…

pytorch安装教程

写在前面:配置pytorch着实有很多坑,不过最终结果算好的,话不多说,直接上干货。其中想要知道如何解决torch.cuda.is_available()返回false的,直接跳到步骤5pytorch安装。python版本至少是3.6及以上。 1、前…

API 设计/开发/测试工具:Apifox与怎么通过拦截器

目录 一、测试接口如何创建? 二、如何添加body和header? 三、如果项目设置的有拦截器? 四、拦截器概念: 4.1使用拦截器概念 4.2 先写一个配置类WebMvcConfig.java 4.3 AuthInitInterceptor拦截器中实现 一、测试接口如何创建…

Linux 内存workingset Refault Distance算法源码及源码解析

概述 内核mm子系统中有一个workingset.c实现了refault distance算法,发现网络逻辑介绍该算法的文章主要是复制自奔跑吧内核一书中的内容,均比较雷同,讲述的角度比较难以理解,我第一看到的时候琢磨了2天才明白,本文希望…

Python中使用EMD(经验模态分解)

在Python中使用EMD(经验模态分解)进行信号分解时,通常可以设置信号分解的数目。EMD算法的目标是将信号分解成多个称为“本征模态函数”(Intrinsic Mode Functions,简称IMF)的成分,每个IMF都代表…

调试(修复错误)

什么是一个软件bug? ● 软件错误:计算机程序中的缺陷或问题。基本上,计算机程序的任何意外或非预期的行为都是软件缺陷。 ● bug在软件开发中是完全正常的! ● 例如,现在我们存在数组,我们现在需要将这个数组颠倒排序 意外的结…

7.15 SpringBoot项目实战 【学生入驻】(上):从API接口定义 到 Mybatis查询 串讲

文章目录 前言一、service层 和 dal层方式一、Example方式方式二、Mybatis XML方式方式三、Mybatis 注解方式 二、web层 StudentController最后 前言 接下来我们实战【学生入驻】,对于C端学生端,一切交互开始于知道 当前学生是否入驻、是否有借阅资格&a…

【重新定义matlab强大系列十五】非线性数据拟合和线性拟合-附实现过程

🔗 运行环境:Matlab 🚩 撰写作者:左手の明天 🥇 精选专栏:《python》 🔥 推荐专栏:《算法研究》 #### 防伪水印——左手の明天 #### 💗 大家好🤗&#x1f91…

人绒毛膜促性腺激素(HCG)介绍

人绒毛膜促性腺激素 HCG)是妊娠期产生的一种肽类激素,由受孕后不久的胚胎产生,随后由合胞体滋养层(胎盘的一部分)合成。它的作用是防止卵子黄体的解体,从而维持孕酮的分泌,而孕酮对人类怀孕至关…

常用圆圈字符“圆圈字符替换器”

本文收录了162个常用圆圈字符,文内有“圆圈字符自动替换器”。 (本笔记适合熟悉字符串数据类型的 coder 翻阅) 【学习的细节是欢悦的历程】 Python 官网:https://www.python.org/ Free:大咖免费“圣经”教程《 python 完全自学教程》&#x…

分享从零开始学习网络设备配置--任务3.6 使用默认及浮动路由实现网络连通

任务描述 某公司随着规模的不断扩大,现有北京总部和天津分部2个办公地点,分部与总部之间使用路由器互联。该公司的网络管理员经过考虑,决定在总部和分部之间的路由器配置默认路由和浮动路由,减少网络管理,提高链路的可…

PHP8中伪变量“$this->”和操作符“::”的使用-PHP8知识详解

对象不仅可以调用自己的变量和方法,也可以调用类中的变量和方法。PHP8通过伪变量“$this->”和操作符“::”来实现这些功能。 1.伪变量“$this->” 在通过对象名->方法调用对象的方法时,如果不知道对象的名称,而又想调用类中的方法…

互联网医院|互联网医院系统引领医疗科技新风潮

互联网的迅速发展已经改变了人们的生活方式,而医疗领域也不例外。近年来,互联网医院应运而生,为患者和医生提供了更便捷、高效的医疗服务。本文将深入探讨互联网医院的系统特点、功能以及未来的发展方向,为您展现医疗行业的新时代…

代码随想录算法训练营第23期day4| 24. 两两交换链表中的节点 、19.删除链表的倒数第N个节点、面试题 02.07. 链表相交、142.环形链表II

目录 一、(leetcode 24)两两交换链表中的节点 二、(leetcode 19)删除链表的倒数第N个节点 思路 三、(leetcode 160)链表相交 四、(leetcode 142)环形链表II 思路 一、&#xf…

使用华为eNSP组网试验⑴-通过Vlan进行网络设备间通讯

在2019年学习网络的时候是从思科产品开始学的,那个时候接触了思科的6506、4506、3750、3550、2950,因为网络设备多,基本上是在多余的设备上直接操作,掌握后再上现场设备中去操作。当时使用了思科的模拟器CISCO Packet Tracer&…

驱动开发练习,platform实现如下功能

实验要求 驱动代码 #include <linux/init.h> #include <linux/module.h> #include <linux/platform_device.h> #include <linux/mod_devicetable.h> #include <linux/of_gpio.h> #include <linux/unistd.h> #include <linux/interrupt…

google sitemap Sitemap could not be read

google一直也不提示具体原因。直到换个域名&#xff0c;发现可以提交sitemap。去别就是没有www的可以&#xff0c;带www的不行。应为sitemap的地址带www&#xff0c;但是sitemap里面的url内容是不带www&#xff0c;属于非法格式&#xff0c;所以一直报错。更正了sitemap地址后&…