本文已参与「新人创作礼」活动,一起开启掘金创作之路。
EfficientNetV1:arxiv.org/abs/1905.11…
EfficientNetV1
卷积后都默认跟有BN和swish激活函数
网络亮点
EfficientNetV1
利用网络搜索技术,同时探索输入分辨率、网络的深度、宽度的影响
网络结构
EfficientNetV1
MBConv模块
- 第一个升维的1x1卷积层,它的卷积核个数是输入特征矩阵channel的n倍
- 当n=1时,不要第一个升维的1x1卷积层,即Stage2中的MBConv结构都没有第一个升维的1x1卷积层(这和MobileNetV3网络类似)
- 关于shortcut连接,仅当输入MBConv结构的特征矩阵与输出的特征矩阵shape相同时才存在
在源码中只有使用到shortcut连接的MBConv模块才用Dropout,这里n倍就是MBConv1或者MBConv6的1和6,也就是倍率因子
SE模块
SE模块如图所示,由一个全局平均池化,两个全连接层组成。第一个全连接层的节点个数是输入该MBConv特征矩阵channels的1/4,且使用Swish激活函数。第二个全连接层的节点个数等于Depthwise Conv层输出的特征矩阵channels,且使用Sigmoid激活函数。
其他大小模型参数设置
- width_coefficient代表channel维度上的倍率因子,比如在EfficientNetB0中Stage1的3x3卷积层所使用的卷积核个数是32,那么在B6中就是32×1.8=57.6接着取整到离它最近的8的整数倍即56,其它Stage同理。
- depth_coefficient代表depth维度上的倍率因子(仅针对Stage2到Stage8),比如在EfficientNetB0中Stage7的L=4,那么在B6中就是4×2.6= 10.4,接着向上取整即11.
drop_connect_rate是指MBConv中的dropout的随机失活比例,源码中是从0开始慢慢增长到该数值,drop_rate是指FC前的dropout的随机失活比例