EfficientNet
EfficientNet: Rethinking Model Scaling for Convolutional Neural Networks
Last updated
EfficientNet: Rethinking Model Scaling for Convolutional Neural Networks
Last updated
Mingxing Tan and Quoc V Le. 2019. EfficientNet: Rethinking Model Scaling for Convolutional Neural Networks. Arxiv (2019). DOI:https://doi.org/10.48550/arxiv.1905.11946
最主要的就是快,模型小,而且还维持了比较好的结果;不像一般的卷积不断去堆深度,广度,或者解析度之类的来消耗大量的计算资源达到更好的结果;而是对深度,广度,分辨率进行全部的协调,合成系数?平衡网络的宽度、深度和分辨率,让推理更快。最后就是提出了一个简单而高效的复合扩展方法 compound scaling method,再根据这个方法提出了一个模型,EfficientNet。
如上图中(e)所示,就是用一些固定的参数,同时对宽度,深度,解析度进行放大,这个固定的参数通过对原先的模型进行一个小的网格搜索来确定。
首先定义一个卷积神经网络可以是:
然后目标是保持模型结构不变,调整网络每一层的长度和宽度以及解析度(向量的长宽),然后就是一个优化问题,通过最大化模型的准确率,找出对所有网络层进行缩放的这些参数。
深度:公认的就是越深提取到的特征就越多,但是容易出现梯度爆炸的问题,也有一些方法像skip connection,batch normalization
宽度:一般就是为了更小的模型。
分辨率:分辨率越高,特征越细节,精细度越高。
作者想要提出者方法是因为观察的问题:
keras / TensorFlow + Keras: https://github.com/qubvel/efficientnet
放大网络的这三个参数去提高准确率,有时候会因为更大的模型而导致准确度下降。
单独对这 三个参数去改变,以及同时改变会有不同的结果。
这些问题,发现前人已经有人做了,但是前人的方法是任意的对 去改变。
所以提出了一种新的复合的方法,用一个复合系数 统一对 去进行均匀的缩放。具体的方法就是:
depth: d=
width: w=
resolution: r=