<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          談談CNN中的位置和尺度問題

          共 7166字,需瀏覽 15分鐘

           ·

          2022-06-24 10:50

          點擊上方小白學視覺”,選擇加"星標"或“置頂

          重磅干貨,第一時間送達

          來自 | 知乎   作者 | 黃飄
          鏈接 | https://zhuanlan.zhihu.com/p/113443895
          本文僅供學術交流,如有侵權,請聯(lián)系刪除。

           


             前言

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


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

          1.1 不變性和相等性的定義

          在介紹卷積神經(jīng)網(wǎng)絡(CNN)之前,我們對于不變性和相等性的理解可能來自于傳統(tǒng)圖像處理算法中的,平移、旋轉、光照和尺度等不變性,比如HOG梯度方向直方圖,由于cell的存在,其對于平移、旋轉有一定的不變性,另外由于對圖像局部對比度歸一化的操作,使其對于光照也有著一定的不變性。又比如說SIFT特征提取,其對于以上四點都有著不變性,其中由于尺度金字塔,使得對尺度也有不變性。這里我們對于不變性的理解就是,同一對象發(fā)生平移、旋轉、光照變化、尺度變換甚至形變等,其屬性應該一致。下面我們給出具體的不變性和相等性的定義。
          其中不變性(invariance)的定義正如上文所說,因此其形式為:
           而對于相等性(equivalence),顧名思義,就是對輸入進行變換之后,輸出也發(fā)生相應的變換:
           不過如果我們只考慮輸出對于輸入不變性和相等性的情況,則會難以理解,因為我們更多地是想象著特征層面的映射,比如:
          那么特征層面對于輸出的影響我們可能考慮得比較少,但是卻實質存在,比如目標在圖像中的平移和尺度等變換,在目標檢測任務中,必須要使得網(wǎng)絡具有相關的變換相等性,由此捕捉目標的位置和形狀變化。而在圖像分類、目標識別、行人重識別等任務中,又必須使得網(wǎng)絡具有相關變換的不變性。這兩點也是目標檢測和行人檢索領域中一個經(jīng)典的矛盾問題,目前好像還沒有特別好的解決,更多地是分階段地執(zhí)行不同的任務,防止特征共用。比如:經(jīng)典的兩階段目標檢測任務中,第一階段是粗檢測和前景背景分類,第二階段是精修和具體類別分類,有一定的偏重。行人檢索算法則大多是先檢測后識別的策略。當然除了不變性和相等性的問題,還存在類內差異的問題,比如不同的人對于檢測而言都是行人類別,對于識別而言則是不同的人,這對于特征提取也存在挑戰(zhàn)。

          1.2 CNN網(wǎng)絡的執(zhí)行過程

          我記得我?guī)啄昵暗谝淮谓佑|到深度學習的時候,對于全連接和CNN的局部連接形式,都有平移、尺度不變性的說法。對于全連接網(wǎng)絡,由于下一層的每個節(jié)點都會與上一層進行連接:
          因此無論輸入發(fā)生了平移、尺度等什么變換,只要其屬性沒變,全連接網(wǎng)絡更能捕捉其中的不變性。而對于卷積神經(jīng)網(wǎng)絡,我們都知道兩個特點:局部連接和權值共享。
          對于局部連接,因為全連接參數(shù)太多,容易造成過擬合,并且圖像領域更多地關注局部細節(jié)信息,所以局部連接方式有效。至于權值共享,也有減少參數(shù)的作用,很像圖像處理中的濾波器。我們早期對于其不變性的理解更多是遵循一個宏觀的感受,即由于卷積核的移位濾波,上一層的特征到下一層的特征相對位置宏觀不變,直到最后輸出,類似于全連接的效果,從而獲得不變性。

          1.3CNN網(wǎng)絡潛在問題與改進

          正因為我剛說的宏觀不變,使得輸入在經(jīng)過多次卷積、池化之后,微觀/細節(jié)的變化累積放大,從而失去了這種不變性,接下來我會結合兩篇論文進行介紹。
          第一個是為了解決CNN平移不變性對抗性攻擊的一篇ICML2019論文《Making Convolutional Networks Shift-Invariant Again》。這篇文章主要討論了CNN網(wǎng)絡中的降采樣對于平移不變性的影響:
          上圖是對于一個窗戶分別采用從0~7的平移量,其特征圖與不平移的差異,可以明顯看到,特征圖出現(xiàn)了波動。相應地,上半部分是利用pix2pix生成的圖像,我們可以看到隨著平移量的增大,窗戶中的豎直線從兩根變成了一根。這一點就表明傳統(tǒng)的CNN網(wǎng)絡并不具有平移不變性。
          首先,作者做了這樣一個小實驗,即采用maxpooling對一維向量[0011001100]進行池化,由此得到向量[01010]:
          接著,如果將輸入向右平移一個單位,則得到向量[111111]:
          很明顯,平移相等性和不變性都丟失了。接著作者做了進一步實驗,利用余弦距離來刻畫平移相等性,采用VGG網(wǎng)絡對Cifar數(shù)據(jù)集進行試驗:
          其中顏色越深說明差異越大,可以看到每次maxpooling都增加了特征的差異性,不過作者將max和pool操作分開了,為了區(qū)分取最大值和降采樣的影響:
          很明顯,降采樣對于平移相等性的影響更大,而CNN中涉及到降采樣的操作有:池化(maxpooling和average pooling)和帶步長的卷積(strided convolution)。對此作者提出了一種名為Anti_aliasing方法,中文叫做抗鋸齒處理。傳統(tǒng)信號處理領域中對于抗鋸齒的技術,一般要么增大采樣頻率,但由于圖像處理任務一般都需要降采樣,這一點不適合。要么采用圖像模糊(bluring)技術,根據(jù)Nyquist采樣理論,是給定采樣頻率,通過降低原始信號的頻率來使得信號能夠被重構出來,如下圖所示。對模糊化處理和未處理的原圖像進行下采樣,得到圖中底部的兩張圖,模糊化處理的原圖像下采樣的圖像還能看出一些輪廓,而未處理的原圖像下采樣的圖像就顯得更加混亂。
          作者就是采用了模糊的方式,提出了三種不同的blur kernel
          • Rectangle-2:[1, 1],類似于均值池化和最近鄰插值;

          • Triangle-2:[1, 2, 1],類似于雙線性插值;

          • Binomial-5:[1, 4, 6, 4, 1],這個被用在拉普拉斯金字塔中。

          每個核都需要歸一化,即除以核內所有元素之和,然后加入到降采樣過程,即在降采樣之前使用blur kernel進行卷積濾波:
          可以看到其效果很不錯:
          代碼和模型見:
          https://richzhang.github.io/antialiased-cnns 或者
          https://github.com/adobe/antialiased-cnns
          第二篇是同年發(fā)表在JMLR的一篇論文《Why do deep convolutional networks generalize so poorly to small image transformations?》。作者首先給出了幾組示例,分別表示了平移、尺度以及輕微圖像差異對網(wǎng)絡預測分類置信度的影響:
          作者認為CNN忽視了采樣定理,這一點之前Simoncelli等人已經(jīng)在論文Shiftable multiscale transforms中驗證了二次采樣在平移不變性上的失敗,他們在文中說:
          我們不能簡單地把系統(tǒng)中的平移不變性寄希望于卷積和二次采樣,輸入信號的平移不意味著變換系數(shù)的簡單平移,除非這個平移是每個二次采樣因子的倍數(shù)。
          我們現(xiàn)有的網(wǎng)絡框架中,越深的網(wǎng)絡,降采樣次數(shù)越多,因此出現(xiàn)的問題更多。緊接著,作者提出了幾點論述:
          • 如果  是經(jīng)過卷積操作且滿足平移不變性的特征,那么全局池化操作  也滿足平移不變性;

          • 對于特征提取器  和降采樣因子  ,如果輸入的平移都可以在輸出上線性插值反映出來:

            由香農-奈奎斯特定理知,  滿足可移位性,要保證采樣頻率至少為最高信號頻率的2倍。

          接下來,作者對這些問題做了一些改進嘗試:
          • 抗鋸齒,這個就是我們剛剛介紹的方法;

          • 數(shù)據(jù)增強,當前在很多圖像任務中,我們基本都會采用隨機裁剪、多尺度、顏色抖動等等數(shù)據(jù)增強手段,的確也讓網(wǎng)絡學習到了部分不變性;

          • 減少降采樣,也就是說只依賴卷積對于輸入尺度的減小來變化,這一點只對小圖像適用,主要是因為計算代價太高。

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

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

          最早接觸神經(jīng)網(wǎng)絡和深度學習相關任務時,我的感覺就是這類算法本質是做的分類任務,比如圖像分割是對前景背景的分類和具體類別分類,識別任務就是類間類內的區(qū)分任務。其中圖像分割任務就利用了CNN中的部分相等性,那么對于目標檢測任務中的目標位置回歸是怎么獲取的呢?我們可以知道的是同樣是對目標位置的搜索,在單目標跟蹤任務中,存在有置信圖:
          但是置信圖本質上是對區(qū)域進行搜索得到的,因此可以近似為對多個子區(qū)域的識別過程,所以單目標跟蹤中的目標定位也可以用分類的理解,但是目標檢測則不好用分類來理解了。
          接下來我們思考一個問題,我們所設計的網(wǎng)絡究竟包含了哪些信息?圖像特征、網(wǎng)絡結構(卷積核大小、padding)。從上一章我們可以知道,網(wǎng)絡可以學習到一定的相等性:
          因此,通過不斷地訓練,網(wǎng)絡在最后的特征輸出中是可以通過對應的特征數(shù)值和區(qū)域大小,結合一定的倍數(shù)(降采樣大?。┕烙嬆繕顺叨鹊?。但是對于目標的位置,我們人眼對于目標位置的判定是通過坐標系的,即目標距離圖像的邊緣距離,但是網(wǎng)絡是如何了解這一信息的呢?《How much Position Information Do Convolutional Neural Networks Encode?》這篇文章做出了回答。
          作者首先做了一組實驗:
          對于不同的輸入圖像,采用多種mask擾動,H、V、G分別代表水平、豎直和高斯等分布,用這種方式生成多種groundtruth,對于這點我們可能對單目標跟蹤中以目標中心為均值的高斯分布比較熟悉。結果發(fā)現(xiàn):
          GT是三種分布生成的groundtruth,PosENet是作者提出的網(wǎng)絡,沒有padding。我們可以看到PosENet并沒有得到位置分布信息,而是保持了相等性。而存在padding的VGG和ResNet則都預測出了位置分布。由此可見padding對于位置的作用,也對上一章的內容作了補充,padding對于平移不變性和相等性也有影響。
          不過這里我們可能不好理解,我做了個小測試,不過不一定是這么做的,僅僅方便我理解:
          上面是兩個不同位置“目標”的卷積結果,可以看到,從輸出結果得不到什么位置反映,如果加入padding:
          首先我們可以知道的是,加入了zero-padding之后,目標邊緣相對中心的輸出更小了,其次目標距離圖像邊緣距離越遠,其特征映射中出現(xiàn)0的次數(shù)越多。所以我猜網(wǎng)絡就是在訓練過程中讓padding和這個相對的關系對應上了,如果沒有padding,目標距離邊緣越遠,同樣出現(xiàn)0的次數(shù)也會越多,但問題在于無法跟padding造成的邊緣數(shù)值小,中心數(shù)值大的特殊分布相比。當然,以上僅僅是我個人的理解,為了幫助我加深印象罷了。也有人說加入了padding影響了CNN的平移相等性,從而使得CNN學到了位置信息,但這個不大好解釋。
          不過有關padding的問題,在CVPR2019的一片單目標跟蹤算法SiamRPN++中也做了探討。其出發(fā)點在于為何Siamese網(wǎng)絡無法擴展為大型網(wǎng)絡,其原因就在于padding影響了平移相等性,從而讓目標位置的分布發(fā)生了偏移。所以作者通過對目標中心的隨機擾動,使得網(wǎng)絡克服自身的偏移:
          也有一些研究探索了如何讓CNN結合絕對位置信息,比較出名的應該是當前很熱門的SOLO單階段實力分割算法。SOLO的出發(fā)點很簡單,我們都知道語義分割只需要分割出不同類別的目標,而實力分割對于同一類別的個體還需要區(qū)分。但是顯而易見,同一類別的目標只要位置和形狀不同則可以區(qū)分。因此SOLO就是將位置和形狀(用尺寸簡化)信息結合進來。具體而言,就是將輸入系統(tǒng)的圖像統(tǒng)一劃分為S x S的網(wǎng)格,如果對象的中心落入網(wǎng)格單元,那么這個網(wǎng)格單元就負責預測語義類別以及分割該對象實例。
          特別地,SOLO算法中采用CoordConv策略(代碼:github.com/uber-researc),該算法將每個特征區(qū)域的坐標信息結合進來,從而讓網(wǎng)絡顯示地學會記憶特征的絕對位置信息。SOLO通過這個策略提升了3.6AP,并且論證只需要一層提供該信息即可達到穩(wěn)定的提升。

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

          深度估計也是一個類似的問題,不同的是,圖像中并沒有包含深度信息,但是網(wǎng)絡是如何獲取深度信息的呢。How Do Neural Networks See Depth in Single Images?這篇文章給出了回答,關于這篇文章NaiyanWang老師已經(jīng)在博客里討論過,我這里也就再整理下。
          我們可以看到,物體的絕對深度與相機位姿有著很大關系,那么CNN如何學習到這種需要幾何先驗的絕對信息的呢?作者做了這樣一個實驗:
          上圖中作者做了三組實驗:同時變化目標位置和尺寸、只變化位置以及只變化尺寸,我們從上面的定性結果好像看不出什么問題,下面是定量的結果:
          可以發(fā)現(xiàn),尺度對于深度信息的預測沒有什么影響,也就是說CNN網(wǎng)絡是通過目標縱坐標來估計深度的,所以說網(wǎng)絡實際上是在過擬合訓練集,從中學習到一些固定場景下的深度和相對位置的對應關系。
          作者又討論了相機運動對于深度預測的影響,既然深度與目標縱坐標有關系,那么pitch角的影響應該很大:
          可以發(fā)現(xiàn),pitch的確影響比較大,相對的roll的影響就比較小了:
          最后作者還討論了顏色和紋理對深度估計的影響:
          可以發(fā)現(xiàn),僅僅是改變目標的顏色紋理,深度估計的效果也會下降,可將CNN網(wǎng)絡在訓練時有多“偷懶”,不知道如果將上述實驗變成數(shù)據(jù)增強的手段的話會讓深度估計網(wǎng)絡失效還是變強。

             2020.3.18更新

          昨天碰巧看到一篇CVPR2020的文章《On Translation Invariance in CNNs: Convolutional Layers can Exploit Absolute Spatial Location》,其中也提到了CNN中的平移不變性問題和絕對位置信息編碼問題,其切入點是CNN中的邊界問題。
          作者首先以三種卷積方式為例,full/same/valid,各自的區(qū)別在于padding的大小,具體方式我就不細說了,給個示意圖:
          其中紅色部分表示padding,綠色部分表示邊界區(qū)域。很明顯,valid模式下卷積核最右邊的1永遠無法作用于綠色部分的1,same模式下的卷積核最右邊 1永遠無法作用于綠色部分的1 。作者以zero-padding和circular-padding兩種模式做了一個例子說明:
          可以看到Class-1中前兩個例子都沒有檢測到1,validsame+zero-padding模式對于待卷積區(qū)域的絕對位置比較敏感。緊接著作者又分析了每個位置被卷積的次數(shù):
          由此引出距離圖像邊界多遠時某一固定像素可以被檢測到這一問題,于是作者通過給圖片四周添加不同大小的黑色邊界進行試驗:
          有意思的是,增加了黑色邊界之后分類的準確率都出現(xiàn)了明顯的下滑,只不過不同的訓練策略和不同的backbone的抗干擾能力不同罷了。
          為了定量分析各個卷積策略對于邊界的處理區(qū)別,建了一個分類數(shù)據(jù)集,特殊點都分布在邊界:
          結果差別很大:
          可以發(fā)現(xiàn),跟之前的觀察結果一樣,前兩種策略的泛化能力很差,而基于Circular padding和full convolution的模式效果最好。接著作者為了降低邊界的影響,采用了前文介紹卷積平移不變性里面提到的blur pooling+Tri3卷積核。然后對比S-conv+circular padding和F-conv兩種策略對于不同的圖像對角平移的魯棒性:
          結果顯示Full conv模式效果更好,在后續(xù)實驗中還說明了其有助于降低過擬合風險,對于小數(shù)據(jù)集更有效。
          代碼即將開源:github.com/oskyhn/CNNs-Without-Borders

          好消息!

          小白學視覺知識星球

          開始面向外開放啦??????




          下載1:OpenCV-Contrib擴展模塊中文版教程
          在「小白學視覺」公眾號后臺回復:擴展模塊中文教程,即可下載全網(wǎng)第一份OpenCV擴展模塊教程中文版,涵蓋擴展模塊安裝、SFM算法、立體視覺、目標跟蹤、生物視覺、超分辨率處理等二十多章內容。

          下載2:Python視覺實戰(zhàn)項目52講
          小白學視覺公眾號后臺回復:Python視覺實戰(zhàn)項目,即可下載包括圖像分割、口罩檢測、車道線檢測、車輛計數(shù)、添加眼線、車牌識別、字符識別、情緒檢測、文本內容提取、面部識別等31個視覺實戰(zhàn)項目,助力快速學校計算機視覺。

          下載3:OpenCV實戰(zhàn)項目20講
          小白學視覺公眾號后臺回復:OpenCV實戰(zhàn)項目20講,即可下載含有20個基于OpenCV實現(xiàn)20個實戰(zhàn)項目,實現(xiàn)OpenCV學習進階。

          交流群


          歡迎加入公眾號讀者群一起和同行交流,目前有SLAM、三維視覺、傳感器、自動駕駛、計算攝影、檢測、分割、識別、醫(yī)學影像、GAN算法競賽等微信群(以后會逐漸細分),請掃描下面微信號加群,備注:”昵稱+學校/公司+研究方向“,例如:”張三 + 上海交大 + 視覺SLAM“。請按照格式備注,否則不予通過。添加成功后會根據(jù)研究方向邀請進入相關微信群。請勿在群內發(fā)送廣告,否則會請出群,謝謝理解~



          瀏覽 50
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          評論
          圖片
          表情
          推薦
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  亚洲国产AV网站 | 天堂网成人 | 久久伊人国产一区 | 免费A片完整视频 | 99久久精品人妻无码一区二区蜜桃 |