• Efficientnet网络


     首先看下表b0的参数, B1-7都是下表调整的, 表中的卷积层后默认都跟着BN以及swish激活函数

    stage2-8都在堆叠卷积层, stage9一个1*1卷积层, 一个平均池化层, 一个全连接

    Resolution(分辨率):, 表示我们输入每个stage时, 特征矩阵的高度和宽度

    channels:每个stage输出特征矩阵的个数

    layers:将MBconv重复几次

    stride(步距):可以通过分辨率信息得到, eg:stage1输入特征矩阵时224*224, stage2为112*112, 则stride为2, stride只是指的每个stage的第一个operator 

     MBConv:

    主分支第一个卷积1*1, 用来升维的, 卷积核的个数时输入特征矩阵channel的N倍, 也就是上表中MBConv后面跟着的倍率因子 1、6, 当N等于1时, 相当于并没有升维, 所以时不需要第一个1*1的卷积的, 也就是stage2没有第一个卷积操作, 紧跟着一个BN和Swish激活函数

    紧接着一个DW卷积, 卷积核在上方每个stage的operator中显示出来, 可能为3, 可能为5, s1/s2表示步距, 可能为1或2, 紧跟着一个BN和Swish激活函数

    下面时SE模块(注意力机制):对输入特征矩阵的每一个channel做一个全局平均池化操作, 分别通过两个全连接层, 第一个激活函数为swish, 第二个全连接层为sigmoid, 第二个全连接层节点个数必须和输入特征矩阵feature map的channel保持一致, 也就是大图的DW卷积输出特征矩阵, 第一个全连接层节点个数等于输入MBConv的特征矩阵channel的1/4

     

    在一个1*1卷积, 降维作用, 卷积核个数是上方大表中的channels中的数字, 紧跟着的只有BN没有激活函数

    紧接着一个Droupout操作, 在源码中只有使用到shortcut连接的MBConv模块才有Dropout层

    然后将输入特征矩阵用捷径分支引过去, 与输出特征矩阵相加得到输出, 仅当输入MBConv结构的特征矩阵与输出的特征矩阵shape形同时, 才会有捷径分支相加(shortcut连接)

    下面为B0-B7参数, 第一列为输入的size, 第二列为宽度倍率因子, 第三列为深度倍率因子

    宽度倍率因子:调整网络的宽度就是调整卷积核的个数, 调整卷积核的个数, 输出特征矩阵的channle就会发生变化, 将宽度倍率因子乘以B0的channels就得到对应的Bn的输出特征矩阵的channels, 例如b6宽度倍率因子为1.8*32 = 57.6, 取整到最近的8的整数倍得到56, 其他的同理

    深度倍率因子:只针对stage2-stage8, 我们将深度倍率因子*layers得到所对应的layers, b0的L=4, B6中就时4*2.6 = 10.4, 向上取整, 得到11

    drop_connect_rate:就是dropout的随机失活比例

    dropout_rate:对应stage9最后一个全连接层前的dropout的随机失活比例

     

     

  • 相关阅读:
    MySQL 是否大小写敏感
    ElasticSearch7.3学习(三十)----ES7.X SQL新特性解析及使用Java api实现sql功能
    多级缓存基础架构组件设计
    YOLOv7改进:极简的神经网络模型 VanillaNet---VanillaBlock助力检测,实现暴力涨点 | 华为诺亚2023
    JSON.parse 和 JSON.stringify 详解
    工厂模式(Factory Pattern)
    算法探索-切面条(CSDN算法技能树第一题)
    vue之组件传值---父传子(属性)---子传父(emit,sync,v-model)
    Opencv项目实战:16 虚拟拖拽系统
    我们怎样制作照片拼图?简单实用的拼图方法来了
  • 原文地址:https://blog.csdn.net/LJH_laura_li/article/details/127119900