Inception系列之Inception_v1

 

 Inception系列之Inception_v2-v3html

Inception系列之Batch-Normalization網絡

目前,神經網絡模型爲了獲得更好的效果,愈來愈深和愈來愈寬的模型被提出。然而這樣會帶來如下幾個問題:google

    1)參數量,計算量愈來愈大,在有限內存和算力的設備上,其應用也就越難以落地。orm

    2)對於一些數據集較少的場景,太大的模型反而容易過擬合,但模型過小則泛化能力不夠。htm

    3)容易出現梯度消失的問題。blog

 

    解決這些問題比較直觀的方法就是採用稀疏鏈接來代替全鏈接層,但很明顯,因爲底層是經過矩陣計算的,稀疏鏈接在參數量上減小了,但並無減小計算量。內存

  所以,google提出了Inception系列Inception_v1 ….Inception_v4,使得模型在增長深度和寬度時不會帶來參數量的巨大增長,同時也保證了計算量。get

 

    Inception體系結構的主要思想是考慮如何才能經過容易得到的密集組件來近似和覆蓋卷積視覺網絡的最佳局部稀疏結構。假設平移不變意味着網絡將由卷積塊構建,那咱們所須要的只是找到最佳的局部構造並在空間上進行重複,最後將它們彙集在一塊兒進行輸出。爲此,剛開始google提出了以下圖Figure 1所示的結構io

 

 Figure 1:這裏的Filter concatenation是指在通道上疊加。table

 

  正如每一個卷積塊表明一塊局部區域,在高層的空間集中度將下降(換句話說,感覺野增大),這代表在高層將須要儘量多的使用3x3, 5x5卷積核。所以這個原始版本的Inception模塊將會產生一個問題,因爲每層都是在通道上堆疊累加,所以在高層時通道數將很是大,即使是少許的5x5的卷積核,也可能在高層帶來巨大的計算量,而加入池化層一樣會增長巨大的計算量。

    所以,第二個想法爲減小通道數。Inception_V1採用了Network-in-Network 中提到的使用1x1 卷積來改變通道數的方法,提出在3x3或5x5卷積前先進行1x1卷積,減小通道數。

    其結構圖Figure 2以下:

 

 

  下面的例子說明添加了1x1卷積是如何減小參數的。假設Previous layer爲112x112x64, 1x1的尺寸爲1x1x64, 取32個這樣的1x1x64卷積。而輸出的尺寸爲112x112x128。則使用1x1卷積後的參數爲64x1x1x32+32x5x5x128 = 104448, 而在此以前須要的參數量爲64x5x5x128 = 204800,減小了將近一倍的參數。這裏減小的倍數接近等於輸入通道數與1x1的數量的比值。

    這個結構比較有用的一個方面是,經過1x1卷積的引入,即使在每層顯著地增長了單元的數量,也不會在後面的層中形成沒法控制的計算量。論文中提到,這個結構比那些非Inception模型快了3-10倍,雖然在精度上比別的模型可能差一點點,但計算量卻少了很是多。

 

    完整的網絡結構圖table 1以下:

 

 table 1: 這裏的3x3 reduce,5x5 reduce指的是在其前面添加了1x1。

    其結構圖以下:

 

 

Figure3:

      (1)圖中有3個softmax輸出位置,有兩個是在中間位置,這樣方便在中間層輸出分類,同時經過加權(中間0.3)的方式加到最終的分類結果中。同時,還能給模型增長反向傳播的梯度信號,緩解了梯度消失問題,在必定程度上也有正則化的效果。在推理階段,這兩個softmax將會去除。

      (2)使用了平均池化來代替全鏈接層,論文提到這樣能夠提升0.6%的準確率,但仍是添加了一層FC,這是爲了方便對輸出進行調整,而且也使用了Dropout。

      (3)關於table1中的Inception 3a 3b 4a 4b 4c等,區分方式是匯合的MaxPool層和DepthConcat。

      (4)圖像輸入都通過了去均值,即每一個位置減去總體均值。

 

若有錯誤或不合理之處,歡迎在評論中指正。

歡迎關注公衆號「CV技術指南」,主要進行計算機視覺方向的論文解讀,最新技術跟蹤,以及CV技術的總結。

 

相關文章
相關標籤/搜索