-
作者 | Vardan Agarwal
-
译者 | 柚子
论文原文:https://arxiv.org/abs/1905.11946
官方源码:https://github.com/tensorflow/tpu/tree/master/models/official/efficientnet
pytorch实现:https://github.com/lukemelas/EfficientNet-PyTorch
前言
本文可视化了EfficientnetB0~B7模型的所有结构,让你轻松拿捏Efficientnet。
介绍
我在Kaggle比赛中翻阅笔记本,发现几乎每个人都在使用EfficientNet作为他们的骨干,而在此之前我还没有听说过。EfficientNet是由谷歌人工智能提出,他们试图提出一种如其名字所暗示的更有效的方法,同时改进现有的技术成果。一般来说,模型做得太宽,太深,或者分辨率很高。增加这些特征最初有助于模型的建立,但很快就会饱和,所建立的模型只是有更多的参数,因此效率不高。在EfficientNet中,这些参数都以一种更加有效的方式逐渐增加。
(a)是一个基线网络;(b)-(d)是传统的缩放方法,只增加网络宽度、深度或分辨率的一个维度。(e)是我们提出的复合缩放方法,以一个固定的比例统一缩放所有三个维度。
不明白发生了什么?别担心,一旦看到了整个模型的架构,你就会明白。但首先,让我们看看效果怎么样。
由于参数数量大大减少,该系列的模型效率很高,也能提供更好的结果。
共有的结构
任何网络的最关键的都是它的stem,确定了之后才会进行后面的实验,这个结构在所有八个模型和最后一层都是共同的。
EfficientnetB0~B7都包含这7个区块。这些块还有不同数量的子块,当我们从EfficientNetB0到EfficientNetB7时,子块的数量会增加。
下面代码可以看清楚模型结构:
!pip install tf-nightly-gpu
import tensorflow as tf
IMG_SHAPE = (224, 224, 3)
model0 = tf.keras.applications.EfficientNetB0(input_shape=IMG_SHAPE, include_top=False, weights="imagenet")
tf.keras.utils.plot_model(model0) # to draw and visualize
model0.summary() # to see the list of layers and parameters
如果计算EfficientNet-B0的总层数,总数为237,而EfficientNet-B7的总层数为813!!。不过不用担心,所有这些层都可以由下面的5个模块和上面的stem结构组成。
- 模块1–这被用作子块的起点。
- 模块2–这被用作所有7个主要块的第一个子块的起点,除了第1个。
- 模块3–这是与所有子块的skip connection。
- 模块4–用于组合第一个子块中的skip connection。
- 模块5–每个子区块都以skip connection的方式与其前一个子区块相连,并使用该模块将它们合并。
这些模块被进一步组合成子块,这些子块将在区块中以某种方式使用。
第1子块–这只用作第一块中的第一个子块。
第2子块–这被用作所有其他区块的第一个子块。
第3子块–用于所有子块中除第一个子块外的任何子块。
到目前为止,我们已经指定了所有将被组合起来创建EfficientNet模型的内容,所以我们开始吧。
EfficientNet-B0
EfficientNet-B1
EfficientNet-B2
它的结构与EfficientNet-B1相同,它们之间唯一的区别是feature maps(通道)的数量不同,从而增加了参数的数量。
EfficientNet-B3
EfficientNet-B4
EfficientNet-B5
EfficientNet-B6
EfficientNet-B7
很容易看出所有模型之间的差异,他们逐渐增加了子块的数量。可以通过打印这个模型的summary,然后结合上面的模型结构以便于对模型有更好的了解。下表表示EfficientNet-B0中卷积运算的核大小以及分辨率、通道和层数。
所有模型的分辨率都保持一致。层数已经在上面的数字中显示了。通道的数量是不同的,它是从每个模型的summary中看到的信息计算出来的,如下所示。
Stage | B1 | B2 | B3 | B4 | B5 | B6 | B7 |
---|---|---|---|---|---|---|---|
1 | 32 | 32 | 40 | 48 | 48 | 56 | 64 |
2 | 16 | 16 | 24 | 24 | 24 | 32 | 32 |
3 | 24 | 24 | 32 | 32 | 40 | 40 | 48 |
4 | 40 | 48 | 48 | 56 | 64 | 72 | 80 |
5 | 80 | 88 | 96 | 112 | 128 | 144 | 160 |
6 | 112 | 120 | 136 | 160 | 176 | 200 | 224 |
7 | 192 | 208 | 232 | 272 | 304 | 344 | 384 |
8 | 320 | 352 | 384 | 448 | 512 | 576 | 640 |
9 | 1280 | 1408 | 1536 | 1792 | 2048 | 2304 | 2560 |
在结束之前,我再次从其研究论文中附上了另一张图片,显示了它与其他先进技术相比的性能,同时也减少了参数的数量和所需的FLOPS数量。
英文原文:https://towardsdatascience.com/complete-architectural-details-of-all-efficientnet-models-5fd5b736142
请长按或扫描二维码关注本公众号!