1. 程式人生 > >『計算機視覺』輕量化網路之MobileNet_v1

『計算機視覺』輕量化網路之MobileNet_v1

論文原址:MobileNets: Efficient Convolutional Neural Networks for Mobile Vision Applications

 

Mobilenet v1是Google於2017年釋出的網路架構,旨在充分利用移動裝置和嵌入式應用的有限的資源,有效地最大化模型的準確性,以滿足有限資源下的各種應用案例。Mobilenet v1也可以像其他流行模型(如VGG,ResNet)一樣用於分類、檢測、嵌入和分割等任務提取影象卷積特徵。

一、Mobilenet v1 對卷積網路的拆分

Mobilenet v1核心是把卷積拆分為Depthwise+Pointwise兩部分。

普通卷積層

假設有 N\times H\times W \times C 的輸入,同時有 k3\times3 的卷積。如果設定 pad=1stride=1 ,那麼普通卷積輸出為 N\times H\times W \times k



Depthwise卷積

Depthwise是指將 N\times H\times W \times C 的輸入分為 group=C 組,然後每一組做 3\times3 卷積。這樣相當於收集了每個Channel的空間特徵,即Depthwise特徵。

Pointwise卷積

Pointwise是指對 N\times H\times W \times C 的輸入做 k 個普通的 1\times1 卷積。這樣相當於收集了每個點的特徵,即Pointwise特徵。Depthwise+Pointwise最終輸出也是 N\times H\times W \times k



Depthwise+Pointwise

Depthwise+Pointwise可以近似看作一個卷積層:

  • 普通卷積:
    3x3 Conv+BN+ReLU
  • Mobilenet卷積:3x3 Depthwise Conv+BN+ReLU 和 1x1 Pointwise Conv+BN+ReLU



 

對比一下不同卷積的乘法次數:

  • 普通卷積計算量為: H\times W \times C\times k \times 3\times 3
  • Depthwise計算量為: H\times W \times C \times 3\times 3
  • Pointwise計算量為: H\times W\times C\times k

通過Depthwise+Pointwise的拆分,相當於將普通卷積的計算量壓縮為:

\frac{depthwise+pointwise}{conv}=\frac{H\times W \times C \times 3\times 3 + H\times W\times C\times k}{H\times W \times C\times k \times 3\times 3}=\frac{1}{k} +\frac{1}{3\times 3}

二、Mobilenet v1基本架構

 

還可以對所有卷積層 kernel 數量統一乘以縮小因子 \alpha (其中 \alpha\in(0,1],典型值為1,0.75,0.5和0.25 )以壓縮網路。這樣Depthwise+Pointwise總計算量可以進一降低為:

H\times W \times \alpha C \times 3\times 3 + H\times W\times \alpha C\times \alpha k

當然,壓縮網路計算量肯定是有代價的。下圖展示了 \alpha 不同時Mobilenet v1在ImageNet上的效能。可以看到即使 \alpha=0.5 時Mobilenet v1在ImageNet上依然有63.7%的準確度。

下圖展示Mobilenet v1 \alpha=1.0 與GoogleNet和VGG16的在輸入解析度 224\times 224 情況下,準確度差距非常小,但是計算量和引數量都小很多。同時原文也給出了以Mobilenet v1提取特徵的SSD/Faster R-CNN在COCO資料集上的效能。