Inception系列之Batch Normalization函數
導言:3d
MobileNet_v2提出了一些MobileNet_v1存在的一些問題,並在此基礎上提出了改進方案。其主要貢獻爲提出了線性瓶頸(Linear Bottlenecks)和倒殘差(Inverted Residuals)。orm
01 Linear Bottlenecksblog
如上圖所示,MobileNet_v2提出ReLU會破壞在低維空間的數據,而高維空間影響比較少。所以,在低維空間使用Linear activation代替ReLU。以下圖所示,通過實驗代表,在低維空間使用linear layer是至關有用的,由於它能避免非線性破壞太多信息。token
此外,若是輸出是流形的非零空間,則使用ReLU至關因而作了線性變換,將沒法實現空間映射,所以MobileNet_v2使用ReLU6實現非零空間的非線性激活。get
上方提出使用ReLU會破壞信息,這裏提出ReLU6實現非零空間的非線性激活。看起來有些難以理解。這裏提出我本身的理解。
根據流形學習的觀點,認爲咱們所觀察到的數據其實是由一個低維流形映射到高維空間的。因爲數據內部特徵的限制,一些高維中的數據會產生維度上的冗餘,實際上這些數據只要比較低的維度的維度就能惟一的表示。
圖像分佈是在高維空間,神經網絡中使用非線性激活函數實現將高維空間映射回低維流形空間。而這裏提出使用ReLU6即增長了神經網絡對非零空間的映射,不然,在非零空間使用ReLU至關於線性變換,沒法映射回流形低維空間。而前文提出的使用線性激活函數來代替ReLU是在已經映射後的流形低維空間。
區別就是ReLU6是在將高維空間映射到流形低維空間時使用,Linear layer是在映射後的流形低維空間中使用。
其使用的以下表所示
02 Inverted Residuals
MobileNet_v1中的結構以下左圖,MobileNet_v2以下右圖。、
MobileNet_v2是在2018年發表的,此時ResNet已經出來了,通過幾年的普遍使用代表,shortcut connection和Bottlenck residual block是至關有用的。MobileNet_v2中加入了這兩個結構。
但不一樣的是,ResNet中的bottleneck residual是沙漏形的,即在通過1x1卷積層時降維,而MobileNet_v2中是紡錘形的,在1x1卷積層是升維。這是由於MobileNet使用了Depth wise,參數量已經極少,若是使用降維,泛化能力將不足。
此外,在MobileNet_v2中沒有使用池化來降維,而是使用了步長爲2的卷積來實現降維,此外如上圖所示,步長爲2的block沒有使用shortcut connection。
這裏的t是膨脹因子,取6。
Inverted residuals block 與ResNet中的residuals block對好比下圖所示:
圖來源於網絡
ResNet中residual block是兩端大,中間小。而MobileNet_v2是中間大,兩端小,恰好相反,做者把它取名爲Inverted residual block。
總體結構以下圖所示:
論文裏提到Bottleneck有19層,但其給出的結構圖中卻只有17層。
MobileNet_v2相比與MobileNet_v1,參數量有所增長,主要增長在於Depth wise前使用1x1升維。此外,在CPU上的推理速度也比後者慢,但精度更高。
本文來源於微信公衆號「 CV技術指南 」 。如有錯誤或疑問,歡迎在公衆號中留言指出。
歡迎關注公衆號「CV技術指南」,主要進行計算機視覺方向的論文解讀,最新技術跟蹤,以及CV技術的總結。