Making Convolutional Networks Shift-Invariant Again

abstract



本篇論文是解決卷積網路平移不變性的問題,即便訓練出一個準確率很高的網路,但往往圖片稍微移動一下,圖片的預測就會差很多,如下圖所示,橫軸代表對角線往下移動的元素,縱軸代表該類別輸出的機率,由圖可以發現沒有經過blur pool網路的輸出特別的不穩定,但使用本篇論文所提出的blur pool解決方法後就穩定許多。

main method

下圖是作者用一維空間來解釋為什麼會有上述現象發生的原因,如下圖所示,訊號源為[0,0,1,1,0,0,1,1],經過s=2,k=2的max pool後訊號會變成[0 1 0 1],但經過一個小小的shift之後,訊號就會變成[1 1 1 1],造成上述現象產生的原因就是因為有stride的原因

下圖是作者提出的解決方法

  • 首先對原訊號做dense max(k=2,s=1)的動作

    [0 1 1 1 0 1 1 1 0]
  • 再來使用blur pool (k=3,s=2)

    每層k的元素為[1 2 1]/4

    因此訊號前面補齊周邊的1就變成了 1 0 1 1 1 0 1 1 1 0

    做blur pool(shift 0)後就變成了 0.5 1 0.5 1 0.5 1

    做blur pool(shift 1)後就變成了 0.75 0.75 0.75 0.75

    這麼做的原因就會使得輸出變的平滑,有偏移與沒有偏移所產生的結果都會很相近,如同圖上灰色虛線所表示的

因此,套用到二維的圖片後也是相同的原理,前面先做一個dense max,後面再使用blur pool,作者提供了各種不同kernel size的卷積核,分別是

  • k=2, [1,1]/2
  • k=3, [1,2,1]/4
  • k=4, [1,3,3,1]/8
  • k=5, [1,4,6,4,1]/16

experiment

下圖是作者針對Imagenet這個資料集分別對不同模型去加上blur pool後的效果圖,橫軸代表模型準確率,縱軸代表一致性,也就是說將圖片向對角線移動觀察輸出類別的變動,數值越高代表越一致,反之亦然,由圖可以觀察到加了blur pool後的效果不只一致性提高了連準確率也上升了。

作者在最後也放置個補充實驗說明blur pool應用在cifar網路上的效果,evaluation採取兩種方式,一種是正常的evaluation寫作None,另一種是將圖片random shift後再採取evaluation,寫作Rand,由表可以發現沒有做augmentation的實驗加上blur pool後效果改善很多,而原本有加augmentation的實驗加了blur pool後只有改善consistency,準確率沒有明顯的增加趨勢

0 0 votes
Article Rating
Subscribe
Notify of
guest

0 Comments
Inline Feedbacks
View all comments