論文筆記——MobileNets(Efficient Convolutional Neural Networks for Mobile Vision Applications)

論文地址:MobileNets: Efficient Convolutional Neural Networks for Mobile Vision Applicationsgit

  • MobileNet由Google提出的一種新的卷積計算方法,旨在加速卷積計算過程。
  • 爲了減少網絡模型大小,提出了兩種比較暴力的裁剪方法。

(1) 直接對channel進行裁剪,這種隨機砍掉一些channel,也太暴力了吧,砍多了效果確定很差,想一想都知道。github

(2) 減小輸入圖像的分辨率,也就是減少輸入的尺寸大小。網絡

  • 咱們仍是關注新的卷積計算方法,要作壓縮的話,仍是另闢蹊徑。

1. Full convolution VS. Depthwise separable convolution

1.1 Full convolution

  • M表示輸入的channel, N表示輸出的channel,Dk表示kernel size.
  • 咱們能夠看到輸出的每個channel,都跟全部的輸入channel有關,也就是說,對於輸出的一個channel,都是M個kernel與M個channel卷積之後的求和結果。
  • 差異就在這裏!在depthwise separable中,每個輸出的channel,只和一個輸入的channel有關。

1.2 Depthwise separable convolution

  • 輸入M個channel,那麼輸出也是M個channel,每個channel都是由一個kernel在一個channel卷積之後獲得的結果,不在是和全部的輸入相關了。這也就是爲何名字叫作depthwise separable(深度級的分離,channel的分離)。google

  • 可是咱們發現輸出只有M個channel,而咱們想要輸出N個channel,這個時候咱們應該想到1*1的convolution,這個時候的卷積就是full convolution。這個時候輸出的每個channel都和輸入有關了,至關於輸入的加權求和。因此1x1的卷積有聯合(combine)的做用。3d

2. 計算量對比

  • 只要理解了兩個的差異,不難算出計算直接的差異。

  • Dk表示kernel size, M表示輸入的channel,也就是feature map的個數,N表示輸出的channel。Df表示feature map的大小,也就是width和height, 上面這個式子再一次驗證了咱們上面說的,輸出的每個channel都和輸入的全部channel有關。

  • 求和的左半部分,表示depthwise separable的計算量,能夠看到輸出爲M個channel,每一個輸出channel只和一個channel有關。blog

  • 求和的有半部分,表示1x1 pointwise convolution,能夠看到每個輸出channel,都和M個輸入有關(M個輸入的加權求和)。ci

  • 計算量較少比例get

3. 模型壓縮

上面公式能夠看到直接對輸入的M個channel進行的壓縮(隨機採樣)it

上面公式能夠看到對不只對輸出的channel進行了採樣,對輸入圖像的分辨率也進行了減少。io

4. 對比實驗

4.1 參數量的對比

4.2 實驗結果

5. 實現

6. 總結

  • 根據實踐經驗的總結,這種新的卷積計算方式,對運算速度的改進仍是比較明顯的,精度影響不是很大,至於文中說的兩個裁剪方法,我以爲仍是慎重使用比較好。
  • 如今市面上已經有不少裁剪方法了,不必用這麼暴力的進行裁剪來壓縮模型大小。
相關文章
相關標籤/搜索