GoogLeNet Inception v3 結構 及 pytorch、tensorflow、keras、paddle實現UC Merced Land Use Dataset識別

背景

google在InceptionV1之後,又發表文章《Batch Normalization: Accelerating Deep Network Training by Reducing Internal Covariate Shift》、《Rethinking the Inception Architecture for Computer Vision》,前者提出了廣泛使用的Batch Normalization方法,後者提出了InceptionV2、InceptionV3結構,通過在InceptionV1的基礎上逐步改進得到V2,最後彙總所有的改進策略得到V3。

使用RMSprop優化器,而非SGD優化器

使用Batch Normalization,將每一層的輸入儘量規範化,在輔助分類器中也使用BN

分步卷積,將大尺寸的卷積核分解爲多個小卷積核,減少計算量、提升計算速度

卷積與池化並行進行降維,減少參數量的同時 避免表徵瓶頸(representational bottlenecks)

使用Label Smoothing進行訓練,減輕預測中非最大概率值的懲罰

 

網絡結構

                 

網絡結構如上圖,在Inception部分,表格與文字部分不一致,儘量圖片部分爲準,同時借鑑tensorflow官方實現代碼 

文字表述

在35*35部分有3個傳統模塊,每個模塊有288個filters;這部分使用768個filters進行卷積與池化並行降維操作(見Section5,即圖10,但是5*5未分解),將35*35降至17*17

之後,接上5個分解後的模塊,結構如圖5(在InceptionV1模塊的基礎上講5*5分解爲兩個3*3),並使用卷積與池化並行降維操作,如圖10,降至8*8*1280

最後,使用圖6所示的兩個模塊,輸出2048個filters

本文實現的Inception部分結構

35*35*288 ——> 33Inception a ——> 33Inception b ——> 33Inception c(並行降維)——>

17*17*768 ——> 17Inception a ——> 17Inception b ——> 17Inception c ——> 17Inception d ——> 17Inception b (並行降維)——>

8*8*1280——> 13Inception a ——> 13Inception b ——> 8*8*2048

 

代碼:

pytorch實現

tensorflow實現

keras實現

paddle實現

 

注:
以上代碼在alexnet的基礎上,實現了:

1)調用框架api讀取數據集

2)進行train、val的流程

3)在train時可以輸出各層shape

4)保存最優loss模型,並在結束時輸出最優loss及對應epoch

5)在訓練結束後查看loss、acc變化曲線

 

(實驗數據集):UC Merced Land Use Dataset,常用的遙感場景分類數據集,21class * 100pic = 2100張圖片,統一爲256*256pix大小

http://weegee.vision.ucmerced.edu/datasets/landuse.html

(在pytorchtensorflow、keras、paddle目前不收斂)

 

文件結構:my_utils.py文件存放通用函數

 

 

 

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