墨塵的神經網絡3--Xception 模型代碼復現及要點記錄

什麼是Xception模型
Xception是谷歌公司繼Inception後,提出的InceptionV3的一種改進模型,其改進的主要內容爲採用depthwise separable convolution來替換原來Inception v3中的多尺寸卷積核特徵響應操作。
在講Xception模型之前,首先要講一下什麼是depthwise separable convolution。
對於一個卷積點而言:
假設有一個3×3大小的卷積層,其輸入通道爲16、輸出通道爲32。具體爲,32個3×3大小的卷積核會遍歷16個通道中的每個數據,最後可得到所需的32個輸出通道,所需參數爲16×32×3×3=4608個。

應用深度可分離卷積,用16個3×3大小的卷積核分別遍歷16通道的數據,得到了16個特徵圖譜。在融合操作之前,接着用32個1×1大小的卷積核遍歷這16個特徵圖譜,所需參數爲16×3×3+16×32×1×1=656個。
可以看出來depthwise separable convolution可以減少模型的參數。

通俗地理解就是卷積核厚度只有一層,然後在輸入張量上一層一層地滑動,所以一個卷積核就對應了一個輸出通道,當卷積完成後,在利用1x1的卷積調整厚度。

不過Xception模型中的depthwise separable convolution和普通的不太一樣,普通的depthwise separable convolution是先進行3x3操作再進行1x1操作(就好像mobileNet中的一樣),而Xception模型中則是先進行1x1操作然後再進行3x3操作,中間爲了保證數據不被破壞,沒有添加relu層,而mobileNet添加了relu層。在建立模型的時候,可以使用Keras中的SeparableConv2D層建立相應的功能。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章