- ICML 2019
- Making Convolutional Networks Shift-Invariant Again
ICML 2019
Making Convolutional Networks Shift-Invariant Again
如果筆記不正常顯示,請到https://github.com/FangYang970206/PaperNote/tree/master/Shift-Invariant查看
什么是平移等方差(Shift-equivariance)?
答:\(Shift _{\Delta h, \Delta w}(\widetilde{\mathcal{F}}(X))=\widetilde{\mathcal{F}}\left(\text { Shift }_{\Delta h, \Delta w}(X)\right) \quad \forall(\Delta h, \Delta w)\),可以看到輸入在\((\Delta h, \Delta w)\)變化,輸出對應的輸出在\((\Delta h, \Delta w)\)變化。
什么是平移不變性(Shift-invariance)?
答:\(\widetilde{\mathcal{F}}(X)=\widetilde{\mathcal{F}}\left(\text { Shift }_{\Delta h, \Delta w}(X)\right) \quad \forall(\Delta h, \Delta w)\), 輸入在\((\Delta h, \Delta w)\)變化,不改變最后的結果。
大多數現代的卷積網絡是不具有平移不變性的(如上所示,右邊是作者提出的方法BlurPool),而不具有平移不變性的原因是因為maxpooling,strided-convolution以及average-pooling這些下采樣方法忽略了抽樣定理,在信號處理方法中,通過在下采樣前會通過一個低通濾波來消除混疊(這里的混疊是指高頻分量會混疊成低頻分量),然而,簡單地將此模塊插入深度網絡會降低性能。早期確實是使用模糊下采樣(average-pooling算低通濾波),但隨着maxpooling的提出並表現出很大的性能,就用得不多了,通常認為模糊下采樣和最大池化是相互競爭的方法,作者則展示了將兩者有效地結合起來,作者把最大池化看為兩步,如下所示:
最大池化第一步是先計算區域的最大值,然后進行采樣,而BlurPool則將低通濾波的操作嵌入到中間,在采樣前先經過一個模糊低通濾波的作用,然后采樣,如下所示:
這樣就將模糊下采樣和最大池化相結合起來,減小了混疊效應,提升了網絡的平移不變性能力。相應地,其他下采樣的方法也需要變化。如下所示:
論文中舉了一個事例幫助我們理解,如下圖所示:
原信號是\([0,0,1,1,0,0,1,1]\),經過最大池化將得到\([0, 1, 0, 1]\)(對應藍色的小方塊),但如果簡單移動輸入一個單位,將導致非常不同的結果(如紅色的小方塊所示),結果為\([1, 1, 1, 1]\),相反如果是MaxBlurPool,則不一樣,原先得到的是\([.5,1, .5,1]\),平移后,得到的是\([.75, .75, .75, .75]\),它們之間的距離更近,中間信號的表示也更好。
論文中還給出了可視化的平移等方差熱力圖,如下所示:
藍色表示完全平移等方差;紅色表示偏差較大。原先的VGG在經過最大池化后,方差越來越大,混疊得越來越厲害,而作者提出來的方法更好地維持了平移等方差,輸出結果也將更加平移不變性。
最后來看看作者最后的實驗結果:
可以看到使用BlurPool,精度還上升了不少,更別說對物體平移有很強的魯棒性了,很好的結果。上面的Rect-2,Tri-3,Bin-5是不同的卷積核,分別對應於[1, 1],[1, 2, 1]和[1, 4, 6, 4, 1](這里只是一維卷積,需要對自身卷積,形成二維卷積核)
更多結果:
在image-to-image任務中,對於baseline方法(頂部),輸入偏移會導致出現不同的窗口模式,而作者的方法平穩了輸出,生成相同的窗口模式,對輸入平移不敏感,更好。
如何使用作者方法,參考https://github.com/adobe/antialiased-cnns#2-antialias-your-own-architecture。