• 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的随机失活比例

     

     

  • 相关阅读:
    Better And Better连Mac OS都在效仿的软件
    【Qt之json文件】json文件介绍及相关读写类介绍、示例
    物料主数据的建设过程分享
    从旧金山到上海, HTTP/3 非常快!
    网络与信息安全基础知识--网络的协议与标准
    中华保险面试题记录
    vue 预览视频
    苹果高管迷惑发言:“侧载应用是网络罪犯最好的朋友”
    经管博士科研基础【19】齐次线性方程组
    「Java核心面试系列」面试竟然连这MySQL面试核心25问,都不会?
  • 原文地址:https://blog.csdn.net/LJH_laura_li/article/details/127119900