論文在此:
2019 ICML Making Convolutional Networks Shift-Invariant Again
項目主頁:
https://richzhang.github.io/antialiased-cnns/
開源代碼:
https://github.com/adobe/antialiased-cnns#1-quickstart-load-an-antialiased-model
古往今來淑际,大家都知道:只要圖像一平移,CNN就認(rèn)不出來了淡溯。
原因就在降采樣身上米间。不管是最大池化屈糊,跨步卷積,還是平均池化昧诱,都對平移太敏感:
比如,0、0稚配、1、1愤惰、0扇单、0施流、1、1……這樣的周期银受,最大池化是這樣:
但如果平移一格,最大池化完全變了一個樣子:
雖然,有著名的抗鋸齒(Anti-Aliasing蓝厌,AA) 方法,致力解決這個問題崎苗。但把這種模塊直接插進(jìn)網(wǎng)絡(luò),會嚴(yán)重影響模型的表現(xiàn)。
現(xiàn)在判莉,來自Adobe的Richard Zhang (簡稱“理查”) ,讓抗鋸齒和各種降采樣和平共處了锰镀。
在保留平移不變性的情況下,還能提升ImageNet上的分類準(zhǔn)確率。VGG古拴、ResNet、DenseNet……各種架構(gòu)都適用。
不止如此油额, 面對其他干擾更穩(wěn)定了崇众,如旋轉(zhuǎn)如縮放;面對輸入圖像的損壞芹扭,還更魯棒了队萤。
研究登上了ICML 2019,代碼已經(jīng)開源,還有演講可以看。Reddit熱度已經(jīng)超過了250互拾,觀眾紛紛表達(dá)了謝意:
論文很厲害,演講也很好。
怎樣和解的箍铭?
想知道怎樣幫助CNN保留平移不變形,就要了解平移不變性是怎樣打破的。
理查觀察了VGG的第一個卷積層,發(fā)現(xiàn)它對平移毫無波瀾授翻,并不是在這里打破的翎蹈。
但再觀察第一個池化層,對平移有了反應(yīng):平移偶數(shù)個像素,表征還不改變低剔,平移奇數(shù)個像素猜欺,表征就完全變了。
向網(wǎng)絡(luò)深處走,經(jīng)過的池化層越多挽鞠,問題就越嚴(yán)重均抽。
△抗鋸齒
想解決這個問題,就要把抗鋸齒和降采樣友好地結(jié)合到一起。
于是,理查又仔細(xì)查看了降采樣過程沽讹,把它 (按順序) 分成了兩個部分:
一是取最大值盲链,用密集的方式排拷。
二是在中間特征圖 (Intermediate Feature Map) 上做子采樣 (Sub-Sampling) 。
第一步?jīng)]有問題,完全不會出現(xiàn)鋸齒。
第二步就要改了吧雹。理查給中間特征圖丁鹉,加了個模糊濾波器(Blur Filter) 來抗鋸齒,然后再做子采樣:
△(2)為濾波器
那么记靡,“抗鋸齒版最大池化”效果怎么樣?
平移不變性與準(zhǔn)確率兼得
理查用ImageNet分類任務(wù)測試了一下進(jìn)化后的VGG,原以為會損失一些準(zhǔn)確率兵罢,結(jié)果:
△右為抗鋸齒
△空心為抗鋸齒
在解鎖平移不變性的同時裆赵,準(zhǔn)確率還提升了。
如果降采樣方法不是最大池化,又怎么樣呢?
所以,理查還測試了ResNet和MobileNetv2,它們用的是跨步卷積血当;以及DenseNet离熏,它用的是平均池化:
△空心為抗鋸齒
這些架構(gòu)也獲得了類似的提升奸鸯。全面成功。
上面只講了分類這一項任務(wù)申窘。而進(jìn)化后的降采樣,在圖到圖翻譯任務(wù)上也同樣有效。
不懼各種變換,以及圖像損壞
不只是平移,像旋轉(zhuǎn)侥锦、縮放這樣的干擾番挺,都可以應(yīng)對自如懂扼;另外瑰妄,面對輸入圖像損壞(Image Corruption) 竹宋,也變得更加魯棒了莫矗。
ImageNet-P數(shù)據(jù)集里,有受到各類干擾的圖像;而ImageNet-C數(shù)據(jù)集里,包含了系統(tǒng)性損壞的圖像。
△mCE=Mean Corruption Rate, mFR=Mean Flip Rate
左邊一欄 (除了Baseline) 之外区转,是不同的濾波器,從上到下依次變強柿扣。mCE和mFR析桥,都是越小越好。
數(shù)據(jù)顯示,各種濾波器都能有效增強旦事,應(yīng)對干擾的穩(wěn)定性卖鲤,和應(yīng)對圖像損壞的魯棒性。其中,最強的過濾器Bin-5表現(xiàn)最佳。