1. 程式人生 > >[論文閱讀] Going Deeper with Convolutions

[論文閱讀] Going Deeper with Convolutions

  • 一般來說更深的網路具有更好效果,更深的網路也面臨兩個問題。
    • 更深的網路擁有更多的引數,更容易過擬合。
    • 更深的網路對計算的要求也更高。
  • 針對上述問題的一個解決方法就是使用稀疏連線(convolutional layer),而不是dense connection。
  • 此外,同一類的物體在不同圖片中的大小差距也比較大,如下圖所示,從左到右影象需要的kernel size依次遞減。
    在這裡插入圖片描述
  • 為了解決這個問題,作者創新性的提出了不僅僅more deeper而且可以讓網路更wider。也就是最原始的Inception Module,如下圖所示。
    在這裡插入圖片描述
  • 但是上面結構有一個致命的問題就是channel的個數會爆炸式增長,這就限制了我們網路結構不能太深,因為我們在設計網路的時候總要在channel的個數和網路的深度之間平衡。,為了解決該問題,作者使用了 1 1 1*1 的卷積來做dimension reduction。⚠️ 1
    1 1*1
    的卷積也跟的有ReLU,這樣可以提高整個模型的非線性。
    在這裡插入圖片描述
  • 這裡其實還有一個問題就是為什麼不統一在filter concatenation後跟一個1x1的卷積,而是在module內的每個branch跟了一個1x1的卷積,個人感覺是因為這樣更適合multi-scale的初衷。通過這樣可以使得每個scale可以提取到適合自己的特徵。
  • 作者還在開始的兩個convolutional layer跟了LRN Block(Local Response Normalization)。他是Alex net中使用的歸一化方法,定義如下
    b
    x , y i = a x , y i / ( k + j = m a x ( 0 , i n / 2 ) m i n ( N 1 , i + n / 2 ) ( a x , y j ) 2 ) β b^i_{x,y} = a^i_{x,y} / (k + \sum_{j=max(0, i-n/2)}^{min(N-1, i+n/2)}(a^j_{x, y})^2)^\beta
    其中N表示channel的個數,n表示adjacent的個數。x,y表示座標。總的來說就是對每個位置的特徵,計算他在相同位置先後多個特徵下的歸一化後的值。也是計算的特徵之間的歸一化。每個位置之間是獨立的。
  • ensemble,作者使用了multi-crop,multi-modelensemble的方式來進一步改善測試集上的效果
    • multi-model, 作者用相同的網路結構,引數初始化方式訓練來7個模型,他們之間的不同僅僅在於隨機打亂來輸入的順序,以及sampleing的方法不同。
    • multi-crop,作者最多crop出來144個影象。首先將最短邊放縮到256, 288,320和352。然後再提取square從left,center 或者是right(或者對稱的top, center或者是right)。再然後將square的四個角,中間crop出224x224或者是將square resize到224x224。所以每幅影象crop得到影象的個數是436*2=144。
    • 最後ensemble的方式也是對得到的softmax probabilities計算平均值。
    • 效果如下表所示,我們可以看到通過test階段的multi-scale,效果還是有顯著提升的。
      在這裡插入圖片描述