基於卷積神經網絡的匹配代價算法


1、問題分析

  立體匹配問題,即根據雙目攝像頭拍攝到的參考圖像和目標圖像,確定參考圖像上每個點在目標圖像上對應位置的一個過程。一般展示效果通過輸出視差灰度圖或偽彩色圖像表示實際物體遠近程度。直觀上人眼可以直接評判立體匹配效果的好壞,客觀上可以根據數據庫提供的真實視差圖計算匹配錯誤率,錯誤率越低說明模型的准確度越高。

  近年來,隨着深度學習的發展,卷積神經網絡在越來越多的計算機視覺任務上大展身手,取得了驚人的進步,大幅提高了各項視覺任務挑戰賽的最高水平。與傳統方法不同,深度學習依賴於深層神經網絡對問題進行建模,相對於淺層結構,深層結構能學習到更為復雜的非線性關系。同時,卷積神經網路直接以圖像為輸入,減少了認為設計特征的工作量。與此同時,大規模的訓練樣本和高性能訓練設備也顯得尤為重要。

  研究的該篇論文采用KITTI2012數據集訓練卷積神經網絡,用於訓練的圖片只有194對,其中還有一部分需要用於驗證模型訓練程度和參數,若直接使用原始圖像對作為訓練輸入,樣本數量過少,無法得到較好的效果。因此考慮從原始圖像上截取圖像塊作為網絡訓練樣本,因此接下來所述網絡本質上屬於局部匹配方法

  該論文中考慮將問題限定為一個有監督的機器學習問題,其訓練過程如圖3.3所示,將數據分為訓練集和測試集,訓練集由訓練圖片對和真實視差獲得,通過不斷地迭代過程使得本文提出的模型收斂,並存儲整個模型的參數,方便對后續的圖片進行測試和驗證。

  論文中所使用的數據集、網絡結構及訓練方法將在后文詳細介紹。

2、訓練數據

  該論文采用的每條訓練數據由兩個圖片塊組成,記做<Ps×sR ,Ps×sT>,圖像塊的大小s與網絡中卷積層的數量n成線性關系,具體為:

                                                      s = 2xn+1                                                              (3.14)

  這樣設定的目的是即使改變網絡結構,也可以輕松地自動生成對應的圖像塊。Ps×sR (p)表示從參考圖像IR 截取的大小為s x s,中心為p的圖像塊,Ps×sT (q)表示從目標圖像IT截取的大小為sxs,中心為q的圖像塊。

  由於對於訓練數據,p處的真實視差d已知,我們可以根據真實視差分別生成一組正樣本和負樣本。令q = (xp -d + Oneg,yp),其中Oneg 是負樣本補償參數,它從中隨機選取,則<Ps×sR (p),Ps×sT(q) >是一個負樣本。類似地,令q = (x-d + Opos,yp),其中Opos是正樣本補償參數,它從中隨機選取,則<Ps×sR (p),Ps×sT(q) >是一個正樣本。同時,記正樣本的輸出標注為1,負樣本的輸出標注為0.根據以上分析,可以認為該論文所提出的卷積神經網絡在立體匹配任務中實現了計算匹配代價的功能。

  值得注意的是由於對網絡輸出結果還需要進行后續步驟的精煉,網絡的輸出結果應該與經典的局部匹配方法輸出具有相同的形式,即正樣本輸出結果應小於負樣本輸出結果。因此在網絡訓練完成后進行測試時,網絡輸出結果要乘以-1使其符合匹配代價的形式

  本文在訓練網絡時,使用KITTI2012數據集進行網絡的訓練。KITTI2012數據集共含有194組訓練圖像對及其真實視差。為了避免過擬合及參數調優,本文使用1/4的有效點作為驗證集。

  為了使網絡具有更好的泛化能力,本文使用了縮放、調整對比對、調整亮度等手段人為地對圖像塊進行了預處理。

  上面提到的Nlo,Nhi,Phi 是獨立於網絡結構的超參數,一般通過結合驗證集合經驗法確定。

3、網絡結構

   本文使用的網絡結構如圖3.4所示。網絡含有4個隱含層,且為全卷積結構,因此在測試階段可以很方便地使用各種尺寸的輸入圖像進行測試。4個卷積層對應的網絡輸入為1x9x9的圖像塊,第一維為1表示灰度圖像。第一層卷積層(C1)的卷積核尺寸為64x1x3x3,第二到四個卷積層(C2,C3,C4)均由64x1x3x3的卷積核構成。第四個卷積層(C4)的輸出為左右兩個64x1的特征列向量,第五層網絡輸出層為第四層輸出向量內積的累加和。除最后一個卷積層(C4)外,每個卷積層輸出結果經過一個ReLU層,最近一些研究證明,ReLU層在訓練CNN時能夠提高收斂速度。

  由於網絡第一層64x1x3x3的卷積核,因此本網絡輸入只能使用灰度圖像,但只要簡單地將第一層卷積核改為64x3x3x3的卷積核,本網絡即可接受RGB彩色圖像作為輸入。

  由於該網絡結構輸出可以作為匹配代價用戶后續步驟的處理,故將此卷積神經網絡命名為代價卷積神經網絡(Cost Convolutional Neural Network,簡稱CCNN).方便后文的理解。

4、網路的訓練過程

  該論文網絡訓練流程圖如圖3.5所示。

  首先將KITTI2012數據集194組訓練圖片隨機打亂,選取其中160組圖像作為訓練集,用於訓練網絡參數,剩余34組作為驗證數據集,用於驗證模型參數。

  KITTI2012數據集提供的真實視差圖為稀疏視差圖,即其中有部分點的真實視差未知,另外由於攝像頭視野限制,左圖中左側部分區域無法匹配右圖中對應位置,即無法通過計算獲得其視差,因此需要對有效訓練點進行篩選。給定參考圖像中一點p和真實視差d,篩選條件如下:1)d為0的點;2)p在目標圖像中對應點pd的橫坐標小於0.

  通常訓練一個深度神經網絡需要大規模的數據,而當訓練數據不足時,常用的策略是使用ImageNet數據集對網絡參數進行預訓練(Pre-train),使網絡參數能有一個較好的初始值,加快收斂速度。故目前大部分使用深度學習完成視覺任務的項目,常常會使用ImageNet數據集對網絡進行預訓練,再用當前任務的數據集對模型參數進行微調(Finetune)。

 如前2中所述,使用該論文准備數據的方法可以獲得近1500萬個有效點,每個有效點可以生成一組正樣本和一組負樣本,共約3000萬組樣本,已經足夠用於一般的學習任務,故不需要進行預訓練步驟。 卷積層的卷積核參數采用均值為0,方差為0.01的高斯分布隨機初始化。該論文使用SGD算法更新權重,mini-batch為128個樣本,momentum為0.9,前12次迭代時學習率為0.00002,共20次迭代。

5、網絡測試過程

   網絡測試流程與訓練流程略有不同。如前所述,訓練時網絡輸入為2組9x9的灰度圖像塊,卷積層的填充寬度為0,故經過多個卷積層后輸出1個實數,表示兩個圖像塊的匹配程度。由於網絡是全卷積結構,所以卷積核尺寸都是3x3,根據下圖所示(3.4)公式,通過將填充寬度設置為1,可以使得網絡的輸入輸出的尺寸相同。即輸入參考圖像和目標圖像,卷積層C4輸出尺寸與輸入相同,再將向量內積改為第二維逐像素列向量的內積,可獲得負匹配代價-C(p,d)。

  一般來說,局部匹配算法包含代價計算、代價聚合、視差計算、后處理四個步驟,為了簡化實驗步驟,該章實驗並未進行代價聚合,直接用網絡輸出的視差空間圖進行視差計算並輸出結果。

  另外,若以左圖為參考圖像,左圖上一點p在視差d的匹配代價,與以右圖為參考圖像,右圖上點pd在視差d的匹配代價相同,因此CCNN可以分別獲得以左右圖作為參考圖像的匹配代價,可用於后處理。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM