1. 程式人生 > >End-to-End Training of Hybrid CNN-CRF Models for Stereo

End-to-End Training of Hybrid CNN-CRF Models for Stereo

本文模型就是CNN+CRF。CNN提取特徵,這些特徵用在計算CRF的成本上。本文采用dual block descent 演算法來計算圖片近似最小化。雖然用的淺層CNN並且對於CRF的輸出也沒用後處理,依舊抵擋不住本文演算法的牛叉。

1.介

多層的深度結構利用區域性匹配資訊形成一個整體。然而,深度CNN模型需要很多後處理,還需要一系列的濾波器和優化啟發式的演算法才能產生一個能看的結果。

本文結合CNN和立體匹配中的離散優化模型。這就讓複雜的區域性匹配成本和引數集合在全域性優化的方法中結合到了一起,同時由資料端到端的學習。即使模型中包含CNN,這仍舊是比較容易去操作的。這就讓我們把精力放在網路的表現上。以CRF的公式代替了之前很多人工的部分。


網路結構:用unary-cnn來學習兩幅圖片的特徵。再用Correlation 層來計算特徵。匹配之後得到的cost volume成為CRF的unary cost,而CRF的pairwise cost則會由邊緣權重來引數化定義。一般邊緣權重要麼由sentitive model或者由Pairwise-CNN估計得到。Pairwise-CNN能夠額外估計constrast-sensitive pairwise cost 為了鼓勵或者阻斷標籤的跳躍。CRF嘗試在4領域中找到一種聯合優化演算法來統一優化所有學習到的unary和paiewise成本。unary-CNN代表了人為設計的匹配成本,比如基於色彩差異,樣本變化,local binary patterns。Pairwise-CNN代表了contrast-sensitive規範項。是立體匹配中MRF/CRF模型中常用到的引數。

本文故意不使用後處理就是為了證明CRF模型可以替代大多數後處理過程。

可以用SSVM公式去訓練上圖完整的模型,訓練這樣一個模型談何容易,不過可以用近似子梯度策略。

CNN-CRF網路即使僅有3-7層的淺層CNN模型依舊可以表現得很好。一個混合的模型能夠以更少的引數達到現階段模型同樣的效能。這可以得到更加精煉的模型以及訓練資料更有效的應用。

2.相關工作

CNNs for Stereo

普通cnn都是雙塔模型,分別從兩張圖片中提取特徵然後以一個固定的correlation功能(product layer)來匹配它們。模型中的unary-CNN和correlation層繼續延續了這樣的傳統。

有的演算法訓練的時候可能會採用不匹配的影象塊?(難怪有的時候loss突然詭異的變大一下)。後面又跟一些經典演算法做比較。mc-cnn以全連線NN層去進行特徵的比較。比它的快速版本mc-cnn-fast要精確但是速度更慢。所有這些方法都有後處理。

mc-cnn採用cost cross aggregation,semi-global matching,子畫素增強,中值和雙邊濾波。

efficient-deep採用基於視窗的cost aggregation,semi-global matching,左右一致性確定,亞畫素增強,中值濾波,雙邊濾波和slant plane(公司做的無後處理的efficient-deep還真不知道效果怎麼樣)。

[12](這篇沒看過,套路一樣)semi-global匹配,左右一致性確定,中值濾波和雙邊濾波。

以上的演算法加了後處理跟本文演算法比起來也是渣渣。

CNN matching

匹配網路指的是flownet和dispnet這兩個另類。它們都有correlation層。然而,這個層是作為特徵的堆疊並且後面跟著upconvolution來對密度圖進行迴歸預測。這些網路有著更多的引數需要非常多的訓練資料(哈哈哈,大膽,竟然如此看不起dispnet!不過參過多和資料損耗大確實是事實,我很好奇這篇文章的結果究竟有多厲害了)

joint Traing

這種CNN和CRF聯合訓練的模型常常用在語義分割上,後面巴拉巴拉。

3.CNN-CRF 模型

左圖一般作為參考,在右圖中找對應點。對於每個畫素,都會在任何可能的disparity的位置上進行correlate。形成一個correlation向量(這是一個匹配置信度向量)。P(x)代表的是圖1中的畫素i跟圖2中的畫素i+x有多麼的相似。

3.1 unary CNN

只用3~7層,每層100個濾波器。濾波器大小第一層3×3,其餘層2×2。啟用函式選tanh。無BN層。dispnet說tanh比ReLU更好,在correlation中的塊匹配時(????????dispnet裡面用的也是ReLU好吧)

3.2 Correlation

cross-correlation左右圖的特徵進行cross-correlation。


correlation層輸出的是對應特徵向量點乘的softmax規範化大小之後的值。常規上說,規範化固定了unary-cost的大小,有利於聯合網路的訓練(回想dispnet中的correlation,就是兩個影象之間的畫素卷積,毫無規範化可言。這個pi(k)相當於dispnet當中的cost volume取一條橫線,那個橫線上的點就是各種不同的disparity,線頭就是左圖的某個畫素,其中倆特徵的點乘對應dispnet中的兩個特徵塊卷積,只不過那個是以畫素點為中心的兩個塊卷積,而這裡是兩個畫素點的點乘。比較抽象)

3.3 CRF

關於CRF的後面一項,畫素位置差為1的懲罰P1設定成小點,而其餘懲罰都設定成P2懲罰大點,這可以防止深度跳躍,因為後面的項當畫素值大小接近時權重變大,而畫素大小相差過大時,權重變小。即找的X點更加偏向於找畫素差別較大的點,因為只看周圍位置相差為1的點就可以了,其餘位置相差2的都差不多,所以這個公式是找特徵奇點。

3.4 Pairwise CNN


pairwise-CNN(左)在水平方向上兩個相鄰畫素之間的pairwise cost的觀測值。右邊則是fixed edge-function。灰色畫素代表著改變標籤低成本而亮畫素則代表著標籤轉換時候的高成本。看好了,深色畫素follow物體的輪廓(輪廓大多就是那些深度不連續的地方)。注意那些紋理邊緣(比如地面)被抑制著。

為了估計Pairwise CNN中的邊緣權重。使用3層網路,啟用函式使用tanh。前兩層提取特徵,第三層根據兩個邊緣方向來將畫素i上的特徵對映到權重中去。保證了pairwise的cost比0大,pairwise-CNN有自由控制輸出大小的能力。讓我們可以在資料保真項和規範項中進行權衡。權重w以2通道圖片進行儲存(每個方向一個通道)。他們概括出公式5中定義的contrast-sensitive權重,fij是pairwise-terms。直觀上看,這意味著pairwise網路能夠在寬泛的領域中根據圖片內容自適應的學習到權重w。

4. Training

訓練3種模型:

pixel-wise unary-CNN:CRF被設定成0,pairwise-CNN被關了。

Joint Unary-CNN+CRF模型:pairwise-CNN用來複制contrast-sensitive模型。訓練的引數如下:unary-CNN和全域性引數P1,P2。

訓練完畢的unary-CNN和pairwise-CNN聯合模型