CNN中的平移不變性、相等性、位置信息感知

前言

前段時間看到了幾篇有意思的文章,也參考了一些相關的討論,這裏想對CNN中的平移和尺度的不變性和相等性,以及CNN對於目標相對和絕對位置、深度的預測原理進行探討。這些內容對於一些特定任務很重要,好比目標檢測、目標分割、深度估計、分類/識別以及單目標跟蹤中的置信圖預測等。

1 CNN是否存在平移和尺度的不變性和相等性

1.1 不變性和相等性的定義

在介紹卷積神經網絡(CNN)以前,咱們對於不變性和相等性的理解可能來自於傳統圖像處理算法中的,平移、旋轉、光照和尺度等不變性,好比HOG梯度方向直方圖,因爲cell的存在,其對於平移、旋轉有必定的不變性,另外因爲對圖像局部對比度歸一化的操做,使其對於光照也有着必定的不變性。又好比說SIFT特徵提取,其對於以上四點都有着不變性,其中因爲尺度金字塔,使得對尺度也有不變性。這裏咱們對於不變性的理解就是,同一對象發平生移、旋轉、光照變化、尺度變換甚至形變等,其屬性應該一致。下面咱們給出具體的不變性和相等性的定義。git

其中不變性(invariance)的定義正如上文所說,所以其形式爲:github

而對於相等性(equivalence),顧名思義,就是對輸入進行變換以後,輸出也發生相應的變換:算法

不過若是咱們只考慮輸出對於輸入不變性和相等性的狀況,則會難以理解,由於咱們更多地是想象着特徵層面的映射,好比:網絡

那麼特徵層面對於輸出的影響咱們可能考慮得比較少,可是卻實質存在,好比目標在圖像中的平移和尺度等變換,在目標檢測任務中,必需要使得網絡具備相關的變換相等性,由此捕捉目標的位置和形狀變化。而在圖像分類、目標識別、行人重識別等任務中,又必須使得網絡具備相關變換的不變性。這兩點也是目標檢測和行人檢索領域中一個經典的矛盾問題,目前好像尚未特別好的解決,更多地是分階段地執行不一樣的任務,防止特徵共用。好比:經典的兩階段目標檢測任務中,第一階段是粗檢測和前景背景分類,第二階段是精修和具體類別分類,有必定的偏重。行人檢索算法則大可能是先檢測後識別的策略。固然除了不變性和相等性的問題,還存在類內差別的問題,好比不一樣的人對於檢測而言都是行人類別,對於識別而言則是不一樣的人,這對於特徵提取也存在挑戰。app

1.2 CNN網絡的執行過程

我記得我幾年前第一次接觸到深度學習的時候,對於全鏈接和CNN的局部鏈接形式,都有平移、尺度不變性的說法。對於全鏈接網絡,因爲下一層的每一個節點都會與上一層進行鏈接:框架

所以不管輸入發生了平移、尺度等什麼變換,只要其屬性沒變,全鏈接網絡更能捕捉其中的不變性。而對於卷積神經網絡,咱們都知道兩個特色:局部鏈接和權值共享。ide

對於局部鏈接,由於全鏈接參數太多,容易形成過擬合,而且圖像領域更多地關注局部細節信息,因此局部鏈接方式有效。至於權值共享,也有減小參數的做用,很像圖像處理中的濾波器。咱們早期對於其不變性的理解更可能是遵循一個宏觀的感覺,即因爲卷積核的移位濾波,上一層的特徵到下一層的特徵相對位置宏觀不變,直到最後輸出,相似於全鏈接的效果,從而得到不變性。學習

1.3CNN網絡潛在問題與改進

正由於我剛說的宏觀不變,使得輸入在通過屢次卷積、池化以後,微觀/細節的變化累積放大,從而失去了這種不變性,接下來我會結合兩篇論文進行介紹。測試

第一個是爲了解決CNN平移不變性對抗性攻擊的一篇ICML2019論文《Making Convolutional Networks Shift-Invariant Again》。這篇文章主要討論了CNN網絡中的降採樣對於平移不變性的影響:ui

上圖是對於一個窗戶分別採用從0~7的平移量,其特徵圖與不平移的差別,能夠明顯看到,特徵圖出現了波動。相應地,上半部分是利用pix2pix生成的圖像,咱們能夠看到隨着平移量的增大,窗戶中的豎直線從兩根變成了一根。這一點就代表傳統的CNN網絡並不具備平移不變性。

首先,做者作了這樣一個小實驗,即採用maxpooling對一維向量[0011001100]進行池化,由此獲得向量[01010]:

接着,若是將輸入向右平移一個單位,則獲得向量[111111]:

很明顯,平移相等性和不變性都丟失了。接着做者作了進一步實驗,利用餘弦距離來刻畫平移相等性,採用VGG網絡對Cifar數據集進行試驗:

其中顏色越深說明差別越大,能夠看到每次maxpooling都增長了特徵的差別性,不過做者將max和pool操做分開了,爲了區分取最大值和降採樣的影響:

很明顯,降採樣對於平移相等性的影響更大,而CNN中涉及到降採樣的操做有:池化(maxpooling和average pooling)和帶步長的卷積(strided convolution)。對此做者提出了一種名爲Anti_aliasing方法,中文叫作抗鋸齒處理。傳統信號處理領域中對於抗鋸齒的技術,通常要麼增大采樣頻率,但因爲圖像處理任務通常都須要降採樣,這一點不適合。要麼採用圖像模糊(bluring)技術,根據Nyquist採樣理論,是給定採樣頻率,經過下降原始信號的頻率來使得信號可以被重構出來,以下圖所示。對模糊化處理和未處理的原圖像進行下采樣,獲得圖中底部的兩張圖,模糊化處理的原圖像下采樣的圖像還能看出一些輪廓,而未處理的原圖像下采樣的圖像就顯得更加混亂。

做者就是採用了模糊的方式,提出了三種不一樣的blur kernel

  • Rectangle-2:[1, 1],相似於均值池化和最近鄰插值;
  • Triangle-2:[1, 2, 1],相似於雙線性插值;
  • Binomial-5:[1, 4, 6, 4, 1],這個被用在拉普拉斯金字塔中。

每一個核都須要歸一化,即除以核內全部元素之和,而後加入到降採樣過程,即在降採樣以前使用blur kernel進行卷積濾波:

能夠看到其效果很不錯:

代碼和模型見:richzhang.github.io/ant或者github.com/adobe/antial

第二篇是同年發表在JMLR的一篇論文《Why do deep convolutional networks generalize so poorly to small image transformations?》。做者首先給出了幾組示例,分別表示了平移、尺度以及輕微圖像差別對網絡預測分類置信度的影響:

做者認爲CNN忽視了採樣定理,這一點以前Simoncelli等人已經在論文Shiftable multiscale transforms中驗證了二次採樣在平移不變性上的失敗,他們在文中說:

咱們不能簡單地把系統中的平移不變性寄但願於卷積和二次採樣,輸入信號的平移不意味着變換系數的簡單平移,除非這個平移是每一個二次採樣因子的倍數。

咱們現有的網絡框架中,越深的網絡,降採樣次數越多,所以出現的問題更多。緊接着,做者提出了幾點論述:

  • 若是 r(x) 是通過卷積操做且知足平移不變性的特徵,那麼全局池化操做 也知足平移不變性;
  • 對於特徵提取器 r(x) 和降採樣因子 s ,若是輸入的平移均可以在輸出上線性插值反映出來:

    由香農-奈奎斯特定理知,r(x) 知足可移位性,要保證採樣頻率至少爲最高信號頻率的2倍。

接下來,做者對這些問題作了一些改進嘗試:

  • 抗鋸齒,這個就是咱們剛剛介紹的方法;
  • 數據加強,當前在不少圖像任務中,咱們基本都會採用隨機裁剪、多尺度、顏色抖動等等數據加強手段,的確也讓網絡學習到了部分不變性;
  • 減小降採樣,也就是說只依賴卷積對於輸入尺度的減少來變化,這一點只對小圖像適用,主要是由於計算代價過高。

2 CNN對於位置和深度信息的預測

2.1CNN如何獲取目標的位置信息

最先接觸神經網絡和深度學習相關任務時,個人感受就是這類算法本質是作的分類任務,好比圖像分割是對前景背景的分類和具體類別分類,識別任務就是類間類內的區分任務。其中圖像分割任務就利用了CNN中的部分相等性,那麼對於目標檢測任務中的目標位置迴歸是怎麼獲取的呢?咱們能夠知道的是一樣是對目標位置的搜索,在單目標跟蹤任務中,存在有置信圖:

可是置信圖本質上是對區域進行搜索獲得的,所以能夠近似爲對多個子區域的識別過程,因此單目標跟蹤中的目標定位也能夠用分類的理解,可是目標檢測則很差用分類來理解了。

接下來咱們思考一個問題,咱們所設計的網絡究竟包含了哪些信息?圖像特徵、網絡結構(卷積核大小、padding)。從上一章咱們能夠知道,網絡能夠學習到必定的相等性:

所以,經過不斷地訓練,網絡在最後的特徵輸出中是能夠經過對應的特徵數值和區域大小,結合必定的倍數(降採樣大小)估計目標尺度的。可是對於目標的位置,咱們人眼對於目標位置的斷定是經過座標系的,即目標距離圖像的邊緣距離,可是網絡是如何瞭解這一信息的呢?《How much Position Information Do Convolutional Neural Networks Encode?》這篇文章作出了回答。

做者首先作了一組實驗:

對於不一樣的輸入圖像,採用多種mask擾動,H、V、G分別表明水平、豎直和高斯等分佈,用這種方式生成多種groundtruth,對於這點咱們可能對單目標跟蹤中以目標中心爲均值的高斯分佈比較熟悉。結果發現:

GT是三種分佈生成的groundtruth,PosENet是做者提出的網絡,沒有padding。咱們能夠看到PosENet並無獲得位置分佈信息,而是保持了相等性。而存在padding的VGG和ResNet則都預測出了位置分佈。因而可知padding對於位置的做用,也對上一章的內容做了補充,padding對於平移不變性和相等性也有影響。

不過這裏咱們可能很差理解,我作了個小測試,不過不必定是這麼作的,僅僅方便我理解:

上面是兩個不一樣位置「目標」的卷積結果,能夠看到,從輸出結果得不到什麼位置反映,若是加入padding:

首先咱們能夠知道的是,加入了zero-padding以後,目標邊緣相對中心的輸出更小了,其次目標距離圖像邊緣距離越遠,其特徵映射中出現0的次數越多。因此我猜網絡就是在訓練過程當中讓padding和這個相對的關係對應上了,若是沒有padding,目標距離邊緣越遠,一樣出現0的次數也會越多,但問題在於沒法跟padding形成的邊緣數值小,中心數值大的特殊分佈相比。固然,以上僅僅是我我的的理解,爲了幫助我加深印象罷了。也有人說加入了padding影響了CNN的平移相等性,從而使得CNN學到了位置信息,但這個不大好解釋。

不過有關padding的問題,在CVPR2019的一片單目標跟蹤算法SiamRPN++中也作了探討。其出發點在於爲什麼Siamese網絡沒法擴展爲大型網絡,其緣由就在於padding影響了平移相等性,從而讓目標位置的分佈發生了偏移。因此做者經過對目標中心的隨機擾動,使得網絡克服自身的偏移:

也有一些研究探索瞭如何讓CNN結合絕對位置信息,比較出名的應該是當前很熱門的SOLO單階段實力分割算法。SOLO的出發點很簡單,咱們都知道語義分割只須要分割出不一樣類別的目標,而實力分割對於同一類別的個體還須要區分。可是顯而易見,同一類別的目標只要位置和形狀不一樣則能夠區分。所以SOLO就是將位置和形狀(用尺寸簡化)信息結合進來。具體而言,就是將輸入系統的圖像統一劃分爲S x S的網格,若是對象的中心落入網格單元,那麼這個網格單元就負責預測語義類別以及分割該對象實例。

特別地,SOLO算法中採用CoordConv策略(代碼:github.com/uber-researc),該算法將每一個特徵區域的座標信息結合進來,從而讓網絡顯示地學會記憶特徵的絕對位置信息。SOLO經過這個策略提高了3.6AP,而且論證只須要一層提供該信息便可達到穩定的提高。

2.2CNN如何預測目標的深度信息

深度估計也是一個相似的問題,不一樣的是,圖像中並無包含深度信息,可是網絡是如何獲取深度信息的呢。How Do Neural Networks See Depth in Single Images?這篇文章給出了回答,關於這篇文章NaiyanWang老師已經在博客裏討論過,我這裏也就再整理下。

咱們能夠看到,物體的絕對深度與相機位姿有着很大關係,那麼CNN如何學習到這種須要幾何先驗的絕對信息的呢?做者作了這樣一個實驗:

上圖中做者作了三組實驗:同時變化目標位置和尺寸、只變化位置以及只變化尺寸,咱們從上面的定性結果好像看不出什麼問題,下面是定量的結果:

能夠發現,尺度對於深度信息的預測沒有什麼影響,也就是說CNN網絡是經過目標縱座標來估計深度的,因此說網絡其實是在過擬合訓練集,從中學習到一些固定場景下的深度和相對位置的對應關係。

做者又討論了相機運動對於深度預測的影響,既然深度與目標縱座標有關係,那麼pitch角的影響應該很大:

能夠發現,pitch的確影響比較大,相對的roll的影響就比較小了:

最後做者還討論了顏色和紋理對深度估計的影響:

能夠發現,僅僅是改變目標的顏色紋理,深度估計的效果也會降低,可將CNN網絡在訓練時有多「偷懶」,不知道若是將上述實驗變成數據加強的手段的話會讓深度估計網絡失效仍是變強。


2020.3.18更新

昨天碰巧看到一篇CVPR2020的文章《On Translation Invariance in CNNs: Convolutional Layers can Exploit Absolute Spatial Location》,其中也提到了CNN中的平移不變性問題和絕對位置信息編碼問題,其切入點是CNN中的邊界問題。

做者首先以三種卷積方式爲例,full/same/valid,各自的區別在於padding的大小,具體方式我就不細說了,給個示意圖:

其中紅色部分表示padding,綠色部分表示邊界區域。很明顯,valid模式下卷積核最右邊的1永遠沒法做用於綠色部分的1,same模式下的卷積核最右邊 1永遠沒法做用於綠色部分的1 。做者以zero-padding和circular-padding兩種模式作了一個例子說明:

能夠看到Class-1中前兩個例子都沒有檢測到1validsame+zero-padding模式對於待卷積區域的絕對位置比較敏感。緊接着做者又分析了每一個位置被卷積的次數:

由此引出距離圖像邊界多遠時某一固定像素能夠被檢測到這一問題,因而做者經過給圖片四周添加不一樣大小的黑色邊界進行試驗:

有意思的是,增長了黑色邊界以後分類的準確率都出現了明顯的下滑,只不過不一樣的訓練策略和不一樣的backbone的抗干擾能力不一樣罷了

爲了定量分析各個卷積策略對於邊界的處理區別,建了一個分類數據集,特殊點都分佈在邊界:

結果差異很大:

能夠發現,跟以前的觀察結果同樣,前兩種策略的泛化能力不好,而基於Circular padding和full convolution的模式效果最好。接着做者爲了下降邊界的影響,採用了前文介紹卷積平移不變性裏面提到的blur pooling+Tri3卷積核。而後對比S-conv+circular padding和F-conv兩種策略對於不一樣的圖像對角平移的魯棒性:

結果顯示Full conv模式效果更好,在後續實驗中還說明了其有助於下降過擬合風險,對於小數據集更有效。

代碼即將開源:github.com/oskyhn/CNNs-

參考資料

[1] zhuanlan.zhihu.com/p/99

[2] zhuanlan.zhihu.com/p/95

[3] zhuanlan.zhihu.com/p/38

[4] Zhang R. Making Convolutional Networks Shift-Invariant Again[C]//International Conference on Machine Learning. 2019: 7324-7334.

[5] Dijk T, Croon G. How Do Neural Networks See Depth in Single Images?[C]//Proceedings of the IEEE International Conference on Computer Vision. 2019: 2183-2191.

[6]Islam M A, Jia S, Bruce N D B. How much Position Information Do Convolutional Neural Networks Encode?[C]//International Conference on Learning Representations. 2019.

[7]Wang X, Kong T, Shen C, et al. SOLO: Segmenting Objects by Locations[J]. arXiv preprint arXiv:1912.04488, 2019.

[8]Liu R, Lehman J, Molino P, et al. An intriguing failing of convolutional neural networks and the coordconv solution[C]//Advances in Neural Information Processing Systems. 2018: 9605-9616.

[9]Novotny D, Albanie S, Larlus D, et al. Semi-convolutional operators for instance segmentation[C]//Proceedings of the European Conference on Computer Vision (ECCV). 2018: 86-102.

[10]Li B, Wu W, Wang Q, et al. Siamrpn++: Evolution of siamese visual tracking with very deep networks[C]//Proceedings of the IEEE Conference on Computer Vision and Pattern Recognition. 2019: 4282-4291.

[11] Azulay, Aharon, and Yair Weiss. "Why do deep convolutional networks generalize so poorly to small image transformations?." Journal of Machine Learning Research 20.184 (2019): 1-25.

 

 





相關文章
相關標籤/搜索