首先看下表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的随机失活比例