EfficientNet模型的完整細節

AIBigbull2050發表於2020-09-23
2020-09-14 09:12:40

作者:Vardan Agarwal

編譯:ronghuaiyang

導讀

深入研究所有不同EfficientNet結構的細節。

我在一個Kaggle競賽中翻閱notebooks,發現幾乎每個人都在使用EfficientNet 作為他們的主幹,而我之前從未聽說過這個。谷歌AI在這篇文章中:介紹了它,他們試圖提出一種更高效的方法,就像它的名字所建議的那樣,同時改善了最新的結果。一般來說,模型設計得太寬,太深,或者解析度太高。剛開始的時候,增加這些特性是有用的,但很快就會飽和,然後模型的引數會很多,因而效率不高。在EfficientNet中,這些特性是按更有原則的方式擴充套件的,也就是說,一切都是逐漸增加的。

EfficientNet模型的完整細節

不明白髮生了什麼?不要擔心,一旦看到了架構,你就會明白了。但首先,讓我們看看他們得到了什麼結果。

EfficientNet模型的完整細節

由於引數的數目相當少,這個模型族是非常高效的,也提供更好的結果。現在我們知道了為什麼這些可能會成為標準的預訓練模型,但是缺少了一些東西。

共同之處

首先,任何網路都以它為主幹,在此之後,所有對架構的實驗都以它為開始,這在所有8個模型和最後的層中都是一樣的。

EfficientNet模型的完整細節

之後,每個主幹包含7個block。這些block還有不同數量的子block,這些子block的數量隨著EfficientNetB0到EfficientNetB7而增加。要視覺化模型層,程式碼如下:


!pip 
install tf-nightly-gpu

import tensorflow  as tf
IMG_SHAPE = ( 2242243)
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個模組和上面的主幹組成。

EfficientNet模型的完整細節

我們使用這5個模組來構建整個結構。

  • 模組1 — 這是子block的起點。
  • 模組2 — 此模組用於除第一個模組外的所有7個主要模組的第一個子block的起點。
  • 模組3 — 它作為跳躍連線到所有的子block。
  • 模組4 — 用於將跳躍連線合併到第一個子block中。
  • 模組5 — 每個子block都以跳躍連線的方式連線到之前的子block,並使用此模組進行組合。

這些模組被進一步組合成子block,這些子block將在block中以某種方式使用。

EfficientNet模型的完整細節

  • 子block1 — 它僅用於第一個block中的第一個子block。
  • 子block2 — 它用作所有其他block中的第一個子block。
  • 子block3 — 用於所有block中除第一個外的任何子block。

到目前為止,我們已經指定了要組合起來建立EfficientNet模型的所有內容,所以讓我們開始吧。

EfficientNet-B0

EfficientNet模型的完整細節

EfficientNet-B0架構。(x2表示括號內的模組重複兩次)

EfficientNet-B1

EfficientNet模型的完整細節

EfficientNet-B1的結構

EfficientNet-B2

它的架構與上面的模型相同,唯一的區別是特徵圖(通道)的數量不同,增加了引數的數量。

EfficientNet-B3

EfficientNet模型的完整細節

EfficientNet-B3的結構

EfficientNet-B4

EfficientNet模型的完整細節

EfficientNet-B4的結構

EfficientNet-B5

EfficientNet模型的完整細節

EfficientNet-B5的結構

EfficientNet-B6

EfficientNet模型的完整細節

EfficientNet-B6的結構

EfficientNet-B7

EfficientNet模型的完整細節

EfficientNet-B7的結構

很容易看出各個模型之間的差異,他們逐漸增加了子block的數量。如果你理解了體系結構,我鼓勵你將任意的模型列印出來,並仔細閱讀它以更徹底地瞭解它。下面的表表示了EfficientNet-B0中卷積操作的核心大小以及解析度、通道和層。

EfficientNet模型的完整細節

此表已包含在原始論文中。對於整個模型族來說,解析度是一樣的。我不確定卷積核的大小是否改變了。層的數量已經在上面的圖中顯示了。通道數量是不同的,它是根據從每個型號的摘要中看到的資訊計算出來的,如下所示:

EfficientNet模型的完整細節

在結束之前,我附上了另一個影像,來自它的研究論文,顯示了它與其他的SO他的performance的比較,還有減少的引數的數量和所需的FLOPS。

EfficientNet模型的完整細節

英文原文:




https://blog.csdn.net/weixin_42137700/article/details/108735114



來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69946223/viewspace-2723254/,如需轉載,請註明出處,否則將追究法律責任。

相關文章