EfficientNet介绍

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了EfficientNet介绍相关的知识,希望对你有一定的参考价值。

参考技术A

EfficientNet 的设想就是能否设计一个标准化的卷积网络扩展方法,既可以实现较高的准确率,又可以充分的节省算力资源。因而问题可以描述成,如何平衡分辨率、深度和宽度这三个维度,来实现网络在效率和准确率上的优化

谷歌给出的调整方法,以此来实现三个维度上的平衡,让网络的准确率最大化

首先,我们把整个卷积网络称为N,他的第i个卷积层可以看作下面的函数映射:

Y_i是输出张量,X_i是输入张量,假设这个X_i的维度是<Hi,Wi,Ci>

最后,我们可以把讲卷积网络N定义为:

其中,下表1…s表示stage的讯号,F_i表示对第i层的卷积运算,L_i的意思是F_i在第i个stage中有Li个一样结构的卷积层。<Hi, Wi, Ci>表示第i层输入的shape。

为了减小搜索空间,作者先固定了网络的基本结构,而只改变上面公式中的三个缩放维度

就算如此,这也有三个参数要调整,搜索空间也是非常的大,因此EfficientNet的设想是 一个卷积网络所有的卷积层必须通过相同的比例常数进行统一扩展 ,这句话的意思是,三个参数乘上常数倍率。所以个一个模型的扩展问题,可以转化为一个 规划问题

其中,优化的目标为模型的准确率,而约束条件为计算资源。这个算式表现为在给定计算内存和效率的约束下,如何优化参数d、w和r来实现最好的模型准确率。

对于需要调整的三个维度:

结论:三个维度中任一维度的放大都可以带来精度的提升,但是随着倍率的越来越大,提升越来越小。

从实验结果来看,最高精度相比之前已经有所提升,而且组合不同,效果不同。作者又得到了一个观点:得到了更高的精度以及效率的关键是 平衡网络的宽度,网络深度,网络分辨率三个维度的缩放倍率

之后,作者提出了 模型复合缩放方法

考虑到如果网络深度翻番那么对应的计算量翻倍,网络宽度和图像分辨率翻番对应的计算量会翻4倍,卷积操作的计算量与d,w^2, r^2 成正比。在这个约束下,网络的计算量大约是之前的2^ϕ 倍.

EfficientNet使用了MobileNet V2中的 MBCConv 作为模型的主干网络,同时也是用了SENet中的 squeeze and excitation 方法对网络结构进行了优化。

对于EfficientNet-B0这样的一个基线网络,如何使用复合扩展发对该网络进行扩展呢?主要就是分两步走:

最后,作者便由此扩展出了一系列的网络结构,如下所示:

而对于普通人来说做扩展的代价过于昂贵,所以最好的方法便是进行迁移学习

以上是关于EfficientNet介绍的主要内容,如果未能解决你的问题,请参考以下文章

Pytorch CIFAR10图像分类 EfficientNet v1篇

Pytorch CIFAR10图像分类 EfficientNet v1篇

以下 Pyhthon CNN 架构库:EfficientNet & DenseNet 169 EfficientNet 导入问题

EfficientNet

图像识别—EfficientNet算法详细总结

EfficientNet代码解读笔记