CNN的平移不變性回來了,ImageNet準確度還提升了:Adobe開源新方法,登上ICML

 2019-07-31

古往今來,大家都知道:只要圖像一平移,CNN就認不出來了

原因就在降採樣身上。不管是最大池化,跨步卷積,還是平均池化,都對平移太敏感:

比如,0、0、1、1、0、0、1、1……這樣的週期,最大池化是這樣:



但如果平移一格,最大池化完全變了一個樣子:


雖然,有著名的抗鋸齒 (Anti-Aliasing,AA) 方法,致力解決這個問題。但把這種模塊直接插進網絡,會嚴重影響模型的表現。

而現在,來自Adobe的Richard Zhang (簡稱「理查」) ,讓抗鋸齒和各種降採樣和平共處了

在保留平移不變性的情況下,還能提升ImageNet上的分類準確率。VGG、ResNet、DenseNet……各種架構都適用。

不止如此, 面對其他干擾更穩定了,如旋轉如縮放;面對輸入圖像的損壞,還更魯棒了。



研究登上了ICML 2019,代碼已經開源,還有演講可以看。Reddit熱度已經超過了250,觀衆紛紛表達了謝意:

論文很厲害,演講也很好。

怎樣和解的?

想知道怎樣幫助CNN保留平移不變形,就要了解平移不變性是怎樣打破的。

理查觀察了VGG的第一個卷積層,發現它對平移毫無波瀾,並不是在這裏打破的。

但再觀察第一個池化層,對平移有了反應:平移偶數個像素,表徵還不改變,平移奇數個像素,表徵就完全變了。

向網絡深處走,經過的池化層越多,問題就越嚴重。


△抗鋸齒


想解決這個問題,就要把抗鋸齒降採樣友好地結合到一起。

於是,理查又仔細查看了降採樣過程,把它 (按順序) 分成了兩個部分:

一是取最大值,用密集的方式。
二是在中間特徵圖 (Intermediate Feature Map) 上做子採樣 (Sub-Sampling) 。

第一步沒有問題,完全不會出現鋸齒。

第二步就要改了。理查給中間特徵圖,加了個模糊濾波器 (Blur Filter) 來抗鋸齒,然後再做子採樣:


△(2)爲濾波器


那麼,「抗鋸齒版最大池化」效果怎麼樣?

平移不變性與準確率兼得

理查用ImageNet分類任務測試了一下進化後的VGG,原以爲會損失一些準確率,結果:


△右爲抗鋸齒


△空心爲抗鋸齒


在解鎖平移不變性的同時,準確率還提升了。

如果降採樣方法不是最大池化,又怎麼樣呢?

所以,理查還測試了ResNetMobileNetv2,它們用的是跨步卷積;以及DenseNet,它用的是平均池化:


△空心爲抗鋸齒


這些架構也獲得了類似的提升。全面成功。

上面只講了分類這一項任務。而進化後的降採樣,在圖到圖翻譯任務上也同樣有效。

不懼各種變換,以及圖像損壞

不只是平移,像旋轉、縮放這樣的干擾,都可以應對自如;另外,面對輸入圖像損壞 (Image Corruption) ,也變得更加魯棒了。

ImageNet-P數據集裏,有受到各類干擾的圖像;而ImageNet-C數據集裏,包含了系統性損壞的圖像。


△mCE=Mean Corruption Rate, mFR=Mean Flip Rate


左邊一欄 (除了Baseline) 之外,是不同的濾波器,從上到下依次變強。mCEmFR,都是越小越好。

數據顯示,各種濾波器都能有效增強,應對干擾的穩定性,和應對圖像損壞的魯棒性。其中,最強的過濾器Bin-5表現最佳。

One More Thing

如果小夥伴們沒有看夠,可以點開演講視頻:

https://www.zhihu.com/video/1139957074610950144

然後,還有一大波傳送門。

論文在此:
arxiv.org/abs/1904.1148

項目主頁:
richzhang.github.io/ant

開源代碼:
github.com/adobe/antial

— 完 —

文章來源:量子位