李 航 宋 燕 宋天中 于修成
(上海理工大學(xué)光電信息與計(jì)算機(jī)工程學(xué)院 上海 200093)
立體視覺技術(shù)廣泛應(yīng)用于三維場(chǎng)景重建、目標(biāo)跟蹤、機(jī)器人導(dǎo)航以及智能駕駛等領(lǐng)域。自20 世紀(jì)80 年代Marr[1]首次提出了一種視覺計(jì)算理論并應(yīng)用在雙目匹配上,使兩張有視差的平面圖產(chǎn)生具有深度的立體圖形,從而奠定了雙目立體視覺發(fā)展的理論基礎(chǔ)。Szeliski[2]等將立體視覺分為一下四個(gè)步驟:圖像獲取、立體矯正、立體匹配和三維重建。立體匹配為其中最關(guān)鍵也是最困難的一個(gè)環(huán)節(jié),逐漸成為計(jì)算機(jī)視覺中的研究熱點(diǎn)和焦點(diǎn)。立體匹配的核心是從兩個(gè)視點(diǎn)觀察同一景物以獲取立體像對(duì),匹配出相應(yīng)像點(diǎn),從而計(jì)算出視差并獲得三維信息。然而,由于遮擋、光照等多種因素的影響,如何從立體圖像信息中得到稠密精準(zhǔn)的深度信息成為困擾國(guó)內(nèi)外研究者的一個(gè)難題。
由于匹配的不確定性,立體匹配問題始終沒有統(tǒng)一的解決方式,對(duì)此許多研究人員作了大量研究,Scharstein[3]等深入研究了一些典型的立體匹配算法,將立體匹配劃分為匹配代價(jià)計(jì)算、代價(jià)聚合、視差計(jì)算和視差精化四個(gè)步驟。傳統(tǒng)立體匹配算法主要可劃分為局部方法和全局方法兩類:局部方法利用窗口內(nèi)鄰域信息來(lái)進(jìn)行單像素匹配,具有速度快,易于實(shí)現(xiàn)的優(yōu)點(diǎn),但是支持窗口大小的選取和匹配代價(jià)的計(jì)算是個(gè)難題;全局方法通過能量函數(shù)最小化來(lái)獲得匹配結(jié)果,精度較高但效率較低,不能滿足實(shí)時(shí)性應(yīng)用。
近年來(lái),我們見證了深度學(xué)習(xí)在計(jì)算機(jī)視覺中的“革命”,卷積神經(jīng)網(wǎng)絡(luò)(CNN)在目標(biāo)檢測(cè)、圖像分割等任務(wù)中得到了良好的應(yīng)用。最近,CNNs 已被應(yīng)用于立體匹配中的匹配代價(jià)計(jì)算中。Zbontar和LeCun[4]提出了匹配代價(jià)計(jì)算網(wǎng)絡(luò)(MC-CNN),用于計(jì)算圖像塊之間的準(zhǔn)確關(guān)系,通過計(jì)算塊與塊之間的相似度確定視差。網(wǎng)絡(luò)主體框架為孿生網(wǎng)絡(luò)結(jié)構(gòu)(Siamese Network),左、右輸入分別為來(lái)自左圖和右圖的尺寸相等的圖像塊。他們根據(jù)不同的應(yīng)用需求設(shè)計(jì)了快速結(jié)構(gòu)(fast MC-CNN)和準(zhǔn)確結(jié)構(gòu)(acrt MC-CNN)。Z.Chen[5]等借鑒了文獻(xiàn)[18]中的中心環(huán)繞雙流網(wǎng)絡(luò)框架的思想,提取兩個(gè)網(wǎng)絡(luò)分流的特征進(jìn)行相似性度量,兩個(gè)分流輸入分別為圖像中心信息和圖像下采樣信息。W.Luo[6]等為減少計(jì)算冗余,避免正負(fù)樣本不均衡現(xiàn)象,以點(diǎn)乘操作替代全連接層,并設(shè)置左右輸入圖像塊尺寸不一致,使網(wǎng)絡(luò)可以一次性提取所有視差對(duì)應(yīng)圖像塊的特征。Jiaren Chang[7]等提出了一種新的金字塔立體匹配網(wǎng)絡(luò)(PSMNET),將像素級(jí)特征擴(kuò)展到具有不同接收域尺度的區(qū)域級(jí)特征,利用得到的全局和局部特征組合形成用于可靠視差估計(jì)的代價(jià)空間。
上述相關(guān)文獻(xiàn)均是將CNN 用于匹配代價(jià)計(jì)算步驟,盡管CNN 在精度和速度方面都比傳統(tǒng)方法有顯著的提高,但是在諸如遮擋區(qū)域、重復(fù)圖案、無(wú)紋理區(qū)域和反射表面等固有不適定區(qū)域中仍然難以找到精確的對(duì)應(yīng)點(diǎn)。僅僅應(yīng)用不同視點(diǎn)之間的強(qiáng)度一致性約束通常不足以在這種不適定區(qū)域中進(jìn)行精確的對(duì)應(yīng)估計(jì),并且在無(wú)紋理區(qū)域中是無(wú)用的。因此,必須將全局信息納入立體匹配的計(jì)算中。Jiaren Chang[7]設(shè)計(jì)了一種網(wǎng)絡(luò)結(jié)構(gòu)(stacked hourglass 3D CNN),將3D CNN 用于視差精化,以自底向上的方式重復(fù)處理代價(jià)空間,進(jìn)一步提高全局上下文信息的利用率。
受到文獻(xiàn)[8]的啟發(fā),針對(duì)于代價(jià)聚合,我們提出了一種基于改進(jìn)3D卷積神經(jīng)網(wǎng)絡(luò)的立體匹配視差精化算法。本文的主要貢獻(xiàn)有以下三點(diǎn):
1)采用3D卷積對(duì)匹配代價(jià)進(jìn)行聚合;
2)將3D 殘差網(wǎng)絡(luò)和3D 密集連接網(wǎng)絡(luò)模型用于代價(jià)聚合;
3)通過實(shí)驗(yàn)驗(yàn)證了3D 卷積神經(jīng)網(wǎng)絡(luò)對(duì)代價(jià)聚合的有效性,并且基于3D 卷積神經(jīng)網(wǎng)絡(luò)的視差精化算法相比傳統(tǒng)方法準(zhǔn)確率更高、運(yùn)行速度更快。
本文采用帶有反卷積的孿生網(wǎng)絡(luò)(Siamese Network)作為獲取代價(jià)空間的基本網(wǎng)絡(luò)[19],其結(jié)構(gòu)如圖1所示。
圖1 匹配代價(jià)計(jì)算網(wǎng)絡(luò)結(jié)構(gòu)框架
該網(wǎng)絡(luò)框架前半部分為一個(gè)共享參數(shù)的特征提取模塊,保證左圖與右圖提取相同特征,特征提取模塊由若干層卷積、池化、反卷積組成。左圖與右圖的輸入尺寸不相同,以減少冗余計(jì)算,提高匹配準(zhǔn)確率。
代價(jià)空間是具有一定深度的代價(jià)圖的集合,為三維的特征圖,3DCNN 可以沿著視差維度和空間維度聚合特征信息。
深度殘差網(wǎng)絡(luò)(Deep Residual Network)是何愷明等在2016 年提出的一種極深的卷積神經(jīng)網(wǎng)絡(luò)模型,可以有效避免傳統(tǒng)卷積神經(jīng)網(wǎng)絡(luò)模型的梯度消失或爆炸以及模型退化問題[9]。深度殘差網(wǎng)絡(luò)中的殘差結(jié)構(gòu)如圖2(b)所示,深度殘差網(wǎng)絡(luò)由一系列該殘差結(jié)構(gòu)堆砌而成。假設(shè)最優(yōu)解映射表示為H(X)=X,傳統(tǒng)卷積神經(jīng)網(wǎng)絡(luò)是直接擬合H(X)=X,而殘差網(wǎng)絡(luò)則是去擬合殘差映射:
在殘差網(wǎng)絡(luò)訓(xùn)練過程中,只要使得F(X)=0,即完成了一個(gè)恒等映射H(X)=X。顯然,用網(wǎng)絡(luò)去擬合一個(gè)確定的函數(shù)F(X)=0相較于逼近某個(gè)不確定的函數(shù)H(X)更加容易[10]。因此,深度殘差網(wǎng)絡(luò)更容易優(yōu)化,在增加網(wǎng)絡(luò)深度時(shí),深度殘差網(wǎng)絡(luò)性能也能明顯提升。
密集連接網(wǎng)絡(luò)(Densely connected convolution network)是由Huang 等在2017 年提出的一種新型的卷積神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)[11]。密集連接網(wǎng)絡(luò)的核心思想是每一層卷積都接受其之前所有卷積層的輸出作為輸入。密集連接網(wǎng)絡(luò)中的第l層的輸入可以表示為
其中[ ]x0,x1,…,xl-1表示0,1,…,l-1 層的輸出。H表示串聯(lián)操作,將0,1,…,l-1 層的輸出串聯(lián)到一起后作為第l層的輸入。密集連接結(jié)構(gòu)如圖2(c)所示。由于密集連接網(wǎng)絡(luò)所有層都是兩兩相連的,卷積特征得到了大量的復(fù)用,網(wǎng)絡(luò)的特征提取能力得到極大提升,提高了卷積神經(jīng)網(wǎng)絡(luò)的參數(shù)利用率[11]。除此之外,Huang 等還通過減少密集連接網(wǎng)絡(luò)每層卷積的卷積核數(shù)目,加快網(wǎng)絡(luò)的計(jì)算速度。
為了沿視差維度和空間維度聚合特征信息,我們提出了三種用于計(jì)算視差的3D卷積神經(jīng)網(wǎng)絡(luò)模型:普通3D 卷積神經(jīng)網(wǎng)絡(luò)、3D 殘差網(wǎng)絡(luò)以及3D 密集連接網(wǎng)絡(luò),總體模型如圖2 所示。普通3D 卷積神經(jīng)網(wǎng)絡(luò)包含5 層3×3×3 的3D 卷積用于聚合特征,然后通過雙線性插值將特征圖尺寸恢復(fù)到輸入尺寸大小,最后我們使用視差回歸計(jì)算最終的輸出視差圖。3D 殘差網(wǎng)絡(luò)由5 個(gè)3D 殘差結(jié)構(gòu)組成,3D密集連接網(wǎng)絡(luò)由5 個(gè)3D 密集連接殘差結(jié)構(gòu)組成,然后將它們用于聚合特征,后續(xù)步驟與普通3D 卷積神經(jīng)網(wǎng)絡(luò)保持一致。
本文使用文獻(xiàn)[12]提出的視差回歸方法來(lái)估計(jì)視差圖。通過計(jì)算得到的匹配代價(jià)值和softmax算法計(jì)算每個(gè)視差d對(duì)應(yīng)的概率值。視差預(yù)測(cè)值d'通過下式計(jì)算獲得:
其中Dmax表示最大視差,在本文實(shí)驗(yàn)中取為128;cd表示匹配代價(jià)模塊計(jì)算得到的代價(jià)值;σ表示softmax 函數(shù)。根據(jù)文獻(xiàn)[12]所述,該視差回歸方法優(yōu)于一般的基于分類的立體匹配方法。
圖2 基于3D卷積神經(jīng)網(wǎng)絡(luò)的視差精化網(wǎng)絡(luò)結(jié)構(gòu)
根據(jù)視差回歸的結(jié)果,我們參考文獻(xiàn)[7]采用Smooth L1loss作為網(wǎng)絡(luò)的損失函數(shù)。 由于Smooth L1損失函數(shù)具有良好的魯棒性以及一定的抗噪聲能力,因此被廣泛用于邊界框回歸任務(wù)中[13]。Smooth L1損失函數(shù)定義如下:
其中N表示標(biāo)注的像素點(diǎn)總數(shù),d表示該像素點(diǎn)的真實(shí)視差值,d'表示預(yù)測(cè)得到的視差值。
本文的實(shí)驗(yàn)環(huán)境如下,CPU:Intel Xeon E5-1630 v4;內(nèi)存:32G DDR4;GPU:Nvidia Geforce GTX1080 Ti;操作系統(tǒng):Ubuntu16.04 LTS;利用Py?thon 語(yǔ)言對(duì)所提算法進(jìn)行編程實(shí)現(xiàn),實(shí)驗(yàn)框架為Keras(TensorFlow backend)開源框架。本文的測(cè)試實(shí)驗(yàn)皆在此環(huán)境下完成。
本文的實(shí)驗(yàn)數(shù)據(jù)集采用了KITTI2012 和KITTI 2015立體匹配數(shù)據(jù)集。
KITTI 2012[14]是一個(gè)以真實(shí)行駛中的車輛視角獲取的街道視圖。它由使用激光雷達(dá)獲取的具有視差標(biāo)注的194 對(duì)立體圖像組成,所有圖像的尺寸為376*1240。在本文實(shí)驗(yàn)中,我們將整個(gè)數(shù)據(jù)集分為訓(xùn)練集(160 個(gè)圖像對(duì))和驗(yàn)證集(34 個(gè)圖像對(duì))。
KITTI 2015[15]也是一個(gè)以真實(shí)行駛中的車輛視角獲取的街道視圖。它包含200 對(duì)由激光雷達(dá)獲得的具有視差標(biāo)注的立體圖像對(duì)和另外200 對(duì)沒有標(biāo)注的測(cè)試圖像,所有圖像的尺寸為376*1240。在本文實(shí)驗(yàn)中,我們進(jìn)一步將整個(gè)訓(xùn)練數(shù)據(jù)中80%的樣本作為訓(xùn)練集,20%樣本作為驗(yàn)證集,以此來(lái)進(jìn)行實(shí)驗(yàn)。
數(shù)據(jù)處理方面,首先通過Siamese network 計(jì)算圖像代價(jià)空間,然后采用與文獻(xiàn)[7]中對(duì)KITTI 數(shù)據(jù)集一致的處理方式:在訓(xùn)練階段,從每個(gè)代價(jià)空間塊中隨機(jī)裁剪出大小為256*512 的子代價(jià)空間塊對(duì)作為視差精化網(wǎng)絡(luò)的輸入。在測(cè)試階段,測(cè)試樣本均以原始尺寸輸入到視差精化網(wǎng)絡(luò)中。
本文使用Adam[16]優(yōu)化方法對(duì)網(wǎng)絡(luò)進(jìn)行優(yōu)化,初始學(xué)習(xí)率設(shè)為0.001,在迭代12000 次后將學(xué)習(xí)率降為0.0001,之后再迭代訓(xùn)練12000 次得到最終模型。在訓(xùn)練過程中,網(wǎng)絡(luò)輸入樣本的批大?。╞atch size)固定為4。
圖3 本文算法進(jìn)行視差精化的視差結(jié)果
由于本文算法是基于文獻(xiàn)[7]的改進(jìn),將本文算法與其的誤差指標(biāo)結(jié)果比較列在表1,其中傳統(tǒng)方法為KITTI 數(shù)據(jù)集中準(zhǔn)確率排名最高的SPS-St,MC-CNN 系列[4]是指以MC-CNN 獲取的匹配代價(jià)進(jìn)行傳統(tǒng)方法的代價(jià)聚合和視差精化后最優(yōu)結(jié)果。值得一提的是,傳統(tǒng)方法[17]每對(duì)圖像的運(yùn)行速度為200s,本文算法運(yùn)行時(shí)間只需0.22s。為保證文獻(xiàn)[7]的視差精化的輸入與本文方法相同,我們使用上述代價(jià)空間獲取方法得到的代價(jià)空間作為文獻(xiàn)[7]輸入。
表1 不同方法的匹配錯(cuò)誤率對(duì)比
經(jīng)過視差精化的視差圖如圖3 所示。從上至下分別是原始輸入左圖以及普通3DCNN、3D ResNet、3D DenseNet 對(duì)應(yīng)的預(yù)測(cè)視差圖。從預(yù)測(cè)的視差圖可以看出,在真實(shí)道路場(chǎng)景下,本文算法均能得到光滑稠密的視差圖,特別是在目標(biāo)物邊緣區(qū)域,較為明顯地保留了原目標(biāo)的邊緣信息,匹配效果較好。
本文提出了一種基于改進(jìn)3D 卷積神經(jīng)網(wǎng)絡(luò)的立體匹配方法,以孿生網(wǎng)絡(luò)為基礎(chǔ)提取圖像對(duì)的代價(jià)空間,然后用3D 卷積神經(jīng)網(wǎng)絡(luò)對(duì)代價(jià)空間進(jìn)行聚合,并在此基礎(chǔ)上將3D 殘差網(wǎng)絡(luò)3D 密集連接網(wǎng)絡(luò)引入代價(jià)聚合的計(jì)算中。最后使用視差回歸對(duì)經(jīng)過3D卷積處理得到的特征圖估計(jì)出視差圖。
實(shí)驗(yàn)結(jié)果表明,在KITTI2012 和KITTI2015 數(shù)據(jù)集上本文算法的平均匹配率優(yōu)于當(dāng)前主流的局部匹配算法和全局匹配算法,并且本文算法在GPU平臺(tái)的運(yùn)行速度遠(yuǎn)遠(yuǎn)優(yōu)于傳統(tǒng)方法,因此本文算法具有良好的應(yīng)用前景。