• EfficientNet笔记


    请添加图片描述

    前言

    论文

    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]
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16

    模型对比

    img

  • 相关阅读:
    若依如何实现添加水印功能
    电压检测芯片如何发挥作用,保护电路?纳米软件为您介绍工作原理
    基于SpringBoot+Vue的在线外卖管理系统
    虚拟机Ubuntu操作系统最基本终端命令(安装包+详细解释+详细演示)
    Shell:判断当前用户
    你应该知道的数仓安全:都是同名Schema惹的祸
    AgileConfig-1.9.0 发布,支持 MongoDB 存储
    [HTML]HTML5新增标签
    vue2 - SuperMap3D加载基于Nginx服务生成的3DTileset模型切片服务地址
    RAMday9
  • 原文地址:https://blog.csdn.net/weixin_62403633/article/details/133255027