【论文解读】EfficientNet强在哪里
文章共3200字,預計閱讀時間12min
什么是EfficientNet
模型復合縮放方法
把問題用數學來描述
實驗內容
模型復合縮放方法
EfficientNet的基線模型
英語過關的小伙伴也許可以挑戰一下?哈哈
模型擴展Model scaling一直以來都是提高卷積神經網絡效果的重要方法。
比如說,ResNet可以增加層數從ResNet18擴展到ResNet200。這次,我們要介紹的是最新的網絡結構——EfficientNet,就是一種標準化的模型擴展結果,通過下面的圖,我們可以i只管的體會到EfficientNet b0-b7在ImageNet上的效果:對于ImageNet歷史上的各種網絡而言,可以說EfficientNet在效果上實現了碾壓
什么是EfficientNet
一般我們在擴展網絡的時候,一般通過調成輸入圖像的大小、網絡的深度和寬度(卷積通道數,也就是channel數)。在EfficientNet之前,沒有研究工作只是針對這三個維度中的某一個維度進行調整,因為沒錢啊!!有限的計算能力,很少有研究對這三個維度進行綜合調整的。
EfficientNet的設想就是能否設計一個標準化的卷積網絡擴展方法,既可以實現較高的準確率,又可以充分的節省算力資源。因而問題可以描述成,如何平衡分辨率、深度和寬度這三個維度,來實現拘拿及網絡在效率和準確率上的優化
模型復合縮放方法
compound scaling methd
EfficientNet給出的解決方案是提出了這個模型復合縮放方法
在這里插入圖片描述圖a是一個基線網絡,也就是我們所說的baseline,圖b,c,d三個網絡分別對該基線網絡的寬度、深度、和輸入分辨率進行了擴展,而最右邊的e圖,就是EfficientNet的主要思想,綜合寬度、深度和分辨率對網絡進行符合擴展。
把問題用數學來描述
首先,我們把整個卷積網絡稱為N,他的第i個卷積層可以看作下面的函數映射:
在這里插入圖片描述Yi是輸出張量,Xi是輸入張量,假設這個Xi的維度是<Hi,Wi,Ci>(這里省略了Batch的維度),那么這個整個卷積網絡N,是由k個卷積層組成的,因此可以表示為:
在這里插入圖片描述通常情況,一個神經網絡會有多個相同的卷積層存在,因此,我們稱多個結構相同的卷積層為一個stage。舉個例子:ResNet可以分為5個stage,每一個stage中的卷積層結構相同(除了第一層為降采樣層),前四個stage都是baseblock,第五個stage是fc層。現在構建神經網絡也講究模塊化嘛。
總之,我們以stage為單位,將上面的卷積網絡N改成為:其中,下表1...s表示stage的訊號,Fi表示對第i層的卷積運算,Li的意思是Fi在第i個stage中有Li個一樣結構的卷積層。<Hi, Wi, Ci>表示第i層輸入的shape。為了減小搜索空間,作者先固定了網絡的基本結構,而只改變上面公式中的三個縮放維度。還記得之前我們提高的分辨率,寬度,深度嗎?
Li就是深度,Li越大重復的卷積層越多,網絡越深;
Ci就是channel數目,也就是網絡的寬度
Hi和Wi就是圖片的分辨率
就算如此,這也有三個參數要調整,搜索空間也是非常的大,因此EfficientNet的設想是一個卷積網絡所有的卷積層必須通過相同的比例常數進行統一擴展 ,這句話的意思是,三個參數乘上常熟倍率。所以個一個模型的擴展問題,就用數學語言描述為:
在這里插入圖片描述其中,d、w和r分別表示網絡深度、寬度和分辨率的倍率。這個算式表現為在給定計算內存和效率的約束下,如何優化參數d、w和r來實現最好的模型準確率。
實驗內容
上面問題的難點在于,三個倍率之間是由內在聯系的,比如更高分辨率的圖片就需要更深的網絡來增大感受野的捕捉特征。因此作者做了兩個實驗(實際應該是做了很多的實驗)來說明:(1) 第一個實驗,對三個維度固定了兩個,只方法其中一個,得到的結果如下:
在這里插入圖片描述從左到右分別是只放大了網絡寬度(width,w為放大倍率)、網絡深度(depth,d為放大倍率)和圖像分辨率(resolution, r為放大倍率)。我們可以看到,單個維度的放大最高精度只有80左右,本次實驗,作者得出一個管帶你:三個維度中任一維度的放大都可以帶來精度的提升,但是隨著倍率的越來越大,提升越來越小。
(2)于是作者做了第二個實驗,嘗試在不同的d,r組合下變動w,得到下圖:從實驗結果來看,最高精度相比之前已經有所提升,突破了80大關。而且組合不同,效果不同。作者又得到了一個觀點:得到了更高的精度以及效率的關鍵是平衡網絡的寬度,網絡深度,網絡分辨率三個維度的縮放倍率
模型復合縮放方法
這時候作者提出了這個方法 EfficientNet的規范化復合調參方法使用了一個復合系數,來對三個參數進行符合調整:其中的都是常數,可以通過網格搜索獲得。復合系數通過人工調節。考慮到如果網絡深度翻番那么對應的計算量翻番,網絡寬度和圖像分辨率翻番對應的計算量會翻4番,卷積操作的計算量與,成正比,。在這個約束下,網絡的計算量大約是之前的倍
以上就是EfficientNet的復合擴展的方式,但是這僅僅是一種模型擴展方式,我們還沒有講到EfficientNet到底是一個什么樣的網絡。
EfficientNet的基線模型
EfficientNet使用了MobileNet V2中的MBCConv作為模型的主干網絡,同時也是用了SENet中的squeeze and excitation方法對網絡結構進行了優化。
總之呢,綜合了MBConv和squeeze and excitation方法的EfficientNet-B0的網絡結構如下表所示:
對于EfficientNet-B0這樣的一個基線網絡,如何使用復合擴展發對該網絡進行擴展呢?這里主要是分兩步走:還記得這個規劃問題嗎?
(1)第一步,先將復合系數固定為1,先假設有兩倍以上的計算資源可以用,然后對進行網絡搜索。對于EfficientNet-B0網絡,在約束條件為
時,分別取1.2,1.1和1.15時效果最佳。第二步是固定,通過復合調整公式對基線網絡進行擴展,得到B1到B7網絡。于是就有了開頭的這一張圖片,EfficientNet在ImageNet上的效果碾壓,而且模型規模比此前的GPipe小了8.4倍。
在這里插入圖片描述普通人來訓練和擴展EfficientNet實在過于昂貴,所以對于我們來說,最好的方法就是遷移學習,稍后我會寫一個Pytorch如何使用EfficientNet進行遷移學習的教程:
- END -往期精彩回顧適合初學者入門人工智能的路線及資料下載機器學習及深度學習筆記等資料打印機器學習在線手冊深度學習筆記專輯《統計學習方法》的代碼復現專輯 AI基礎下載機器學習的數學基礎專輯獲取一折本站知識星球優惠券,復制鏈接直接打開:https://t.zsxq.com/662nyZF本站qq群1003271085。加入微信群請掃碼進群(如果是博士或者準備讀博士請說明):總結
以上是生活随笔為你收集整理的【论文解读】EfficientNet强在哪里的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【面试招聘】 美团提前批通关之旅
- 下一篇: 【Python基础】什么是Python的