MobileNet系列之MobileNet_v2
Inception系列之Batch Normalization
導言:
MobileNet_v2提出了一些MobileNet_v1存在的一些問題,並在此基礎上提出了改進方案。其主要貢獻為提出了線性瓶頸(Linear Bottlenecks)和倒殘差(Inverted Residuals)。
關注公眾號CV技術指南,及時獲取更多電腦視覺技術總結文章。
01Linear Bottlenecks
如上圖所示,MobileNet_v2提出ReLU會破壞在低維空間的數據,而高維空間影響比較少。因此,在低維空間使用Linear activation代替ReLU。如下圖所示,經過實驗表明,在低維空間使用linear layer是相當有用的,因為它能避免非線性破壞太多資訊。
此外,如果輸出是流形的非零空間,則使用ReLU相當於是做了線性變換,將無法實現空間映射,因此MobileNet_v2使用ReLU6實現非零空間的非線性激活。
上方提出使用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是沙漏形的,即在經過1×1卷積層時降維,而MobileNet_v2中是紡錘形的,在1×1卷積層是升維。這是因為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前使用1×1升維。此外,在CPU上的推理速度也比後者慢,但精度更高。
本文來源於公眾號 CV技術指南 的模型解讀系列。
歡迎關注公眾號 CV技術指南 ,專註於電腦視覺的技術總結、最新技術跟蹤、經典論文解讀。
在公眾號中回復關鍵字 「技術總結」 可獲取以下文章的匯總pdf。
其它文章