你知道目前在 ImageNet 上的影像分類上最精確的前十名是那些模型嗎?從 Papers With Code 網站上,我們可以瀏覽他們維護的一個排名表(註一),以下是 2020/09/15 台灣時間上午所撈出的前 10 名列表:
前 10 名中有 8 個是以 EfficientNet (或是其變形)所實作的,另外兩個是以 ResNet 來實作。從中可以看出,EfficientNet 這個後起之秀已經襲捲 ImageNet 排行榜!它到底是何方神聖?其強大的分類能力由何而來?
由 arXiv.org 上的資料(註二),EfficientNet 的論文是由 Google Research Brain Team 的 Mingxing Tan 及 Quoc V. Le 於 2018 年 5 月首次上傳,其間幾過幾次的修改,截至今日,最新的版本為 2020 年 9 月 11 日的第 5 版。在此老頭就依據這第 5 版的內容,為大家簡介 EfficientNet,行文的方式是依據論文內容的段落,依序地摘要出論文的重點,並加上一點老頭自己的想法。
先來看看論文的標題:
EfficientNet: Rethinking Model Scaling for Convolutional Neural Networks
論文的標題開宗明義,說明這篇論文要探討的是「如何有效率地縮小放大 CNN 模型」。實務上當我們在處理影像 (image) 相關的問題時,我們先依照問題複雜的程度,以自身的經驗先選用或設計適當複雜度的 CNN 模型,再經過反覆的訓練及測試,來調整我們的模型。
通常我們從 3 個維度來調整模型:CNN 網路的深度 (Network Depth),網路的寬度 (Network Width),及輸入的解析度 (Resolution)。這篇論文研究的第一個主題,即是找出一個簡明的公式,依循這個公式來調整 CNN,即可較有效率的縮放模型。
論文的第二個主題,是依據找出的模型縮放公式,設計一組由簡單到複雜的 CNN 網路模型,這一組新設計的模型,即是 EfficientNets。論文中指出,EfficientNets 比其他類似的 CNN 模型小了 8.4 倍並快了 6.8 倍。也有出色的遷移學習 (Transfer Learning) 能力。
由 ImageNet 排行榜的結果來看,論文作者之所言不虛呀!
老頭之所以想要把 EfficientNet 介紹給 AI 人,除了它優異的表現之外,另外一個原因,是從論文之中,我們可以學到設計 CNN 模型的系統化流程:先有一個基礎模型 (Baseline Network),然後依公式把模型放大,一直到模型達到所要求的性能。稍後在讀完這篇論文之後,大家即可領會其中的奧義。
(註一:排名列表的網址連結
(註二:論文 arXiv 號碼 1905.11946 及連結