EfficientNetv1:Rethinking Model Scaling for Convolutional Neural Networks
使用"神经结构搜索技术"搜索网络的深度(网络层数)、宽度(channel数量)、分辨率(网络输入),以在有限硬件资源的情况下,得到准确度最高的模型
什么是 EfficientNet ?
- 模型缩放:指根据不同的资源限制(例如计算量、内存、延迟等),调整网络结构的过程,如深度(网络层数)、宽度(channel 数量)、分辨率 (网络输入),但是传统的缩放策略只调整其中的一项,而忽略不同项之间的影响
- 复合模型缩放:在给定资源预算的情况下,同时均匀地缩放网络的深度、宽度和分辨率,使得每个维度都能得到合理的增长。具体来说,EfficientNet 定义了一个复合系数用来控制缩放的程度。例如,如果我们想要使用2N 倍的计算资源,那么我们可以将网络深度乘以1.8,将网络宽度乘以1.1,将分辨率乘以1.2
EfficientNet 如何确定“复合系数”?
- 如果彻底的去搜索宽度、深度、图片分辨率的各种组合,搜索空间将无限大,EfficientNet 按照以下公式定义这三个维度的缩放,可以看出使用相同系数 缩放宽度、深度、图片分辨率,其中 。基准模型 EfficientNet-B0就是 的参数上搜索得到,
- 为啥要约束 ? 这是因为这三个变量和计算量的关系如下公式,当约束 时,可以很好控制计算量的增长,比如要增加到10 倍计算力时,令 即可求出缩放因子 ,
EfficientNet 的网络结构?
EfficientNet-b0的结构[[MobileNetv2]]很类似,MBCConv借鉴Mobilev2“倒残差”瓶颈,并结合SEBlock
EfficientNet 有8个系列,分别从 b0-b7,,其中 b0是 baseline, b1-b7都是在 b0基础上对深度、宽度和分辨率进行调整
1
2
3
4
5
6
7
8
9# 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 的 MBCConv 结构?
- 类似 MobileV2“倒残差”瓶颈 ( Inverted Residuals Bottlenecks)结构,一样使用深度可分离卷积,有3个改变:(1)将 ReLU 激活函数缓存 Swish 激活函数;(2)不同的是在短连接部分使 SEBlock;(3)使用 DropConnect 方法来代替传统的 drop 方法
EfficientNet 的 NAS Search?
- EfficientNet 通过复合的缩放方式,优化模型的准确率、显存占比和速度
参考: