魯志敏,袁 勛,陳 松
(中國科學(xué)技術(shù)大學(xué) 信息科學(xué)技術(shù)學(xué)院,安徽 合肥 230026)
立體視覺作為計(jì)算機(jī)視覺最為熱門的研究領(lǐng)域,廣泛應(yīng)用于車輛的自動(dòng)駕駛、機(jī)器人導(dǎo)航、三維重建、物體檢測和識別等方面。立體匹配作為立體視覺系統(tǒng)中的核心技術(shù),其匹配的精確度決定著整個(gè)系統(tǒng)的性能。由于拍攝的立體圖像大多存在噪聲干擾、重復(fù)紋理、低紋理和遮擋區(qū)域等問題,并且受到光照條件的影響,如何高效快速地獲取精準(zhǔn)的視差圖仍存在著諸多挑戰(zhàn)。
立體匹配算法的典型流程包含匹配代價(jià)計(jì)算、代價(jià)聚合、視差計(jì)算和視差優(yōu)化四個(gè)步驟[1],其又分為全局算法和局部算法。局部算法通常使用固定大小的窗口或可變的窗口來計(jì)算初始代價(jià),例如Census算法等,實(shí)現(xiàn)都比較簡便,但是在視差突變區(qū)域存在諸多弊端,對低紋理和遮擋區(qū)域匹配效果差。全局匹配算法通過建立全局能量函數(shù),利用最小化全局能量函數(shù)來獲取最優(yōu)的視差值[2]。常用的全局匹配算法包含動(dòng)態(tài)規(guī)劃、圖割法、置信傳播法、遺傳算法等。全局匹配算法隨著計(jì)算復(fù)雜度的提升,匹配效果較局部算法有所提升,但數(shù)據(jù)依賴性大導(dǎo)致運(yùn)行速度慢,需要花費(fèi)很長的時(shí)間進(jìn)行計(jì)算。
為了解決傳統(tǒng)立體匹配算法在低紋理、遮擋區(qū)域的匹配效果差的問題,本文研究了一種端到端的基于卷積神經(jīng)網(wǎng)絡(luò)的立體匹配算法,并利用了空洞空間金字塔池化(ASPP)[3]網(wǎng)絡(luò)獲取圖像的上下文信息和多尺度的三維卷積網(wǎng)絡(luò)來擴(kuò)大圖像的感受野。最終獲得的視差圖的精度遠(yuǎn)高于傳統(tǒng)匹配算法,對圖像的邊緣、遮擋區(qū)域的匹配效果都非常優(yōu)異。
近年來,隨著計(jì)算能力的大幅提升,深度學(xué)習(xí)成為計(jì)算機(jī)視覺領(lǐng)域發(fā)展最為迅速的一種主流算法,在目標(biāo)識別、物體跟蹤、檢測等方面大幅優(yōu)于傳統(tǒng)的圖像算法。卷積神經(jīng)網(wǎng)絡(luò)(CNN)作為深度學(xué)習(xí)的熱門研究方向,在計(jì)算機(jī)視覺領(lǐng)域取得了很多突破性成果。CNN的一個(gè)重要方面就是獲取輸入向更深層傳播時(shí)的抽象特征。卷積操作過程如式(1)所示:
(1)
其中,Z代表輸出,x代表輸入,w代表一個(gè)卷積核,b代表偏置項(xiàng)。卷積操作完成之后,對輸出的結(jié)果通常會(huì)進(jìn)行非線性激活,再作為下一層的輸入。常用的非線性激活函數(shù)有修正線性單元(Rectified Linear Unit, ReLU)。卷積神經(jīng)網(wǎng)絡(luò)通過層層傳播,并結(jié)合反向傳播算法,可以提取出圖像的抽象特征。
立體匹配的目標(biāo)是計(jì)算出參考圖像中的每個(gè)像素的視差值d。假設(shè)給定一對經(jīng)過校正的立體圖像,左圖像中的像素點(diǎn)為p(x,y),在右圖像上的對應(yīng)點(diǎn)為p′(x-d,y),則該像素的深度可以由fB/d計(jì)算而來,其中f為相機(jī)的焦距,B為左右相機(jī)光心之間的距離。目前,基于深度學(xué)習(xí)的立體匹配方法主要有三種,其中包含匹配代價(jià)學(xué)習(xí)、正則學(xué)習(xí)、端到端視差學(xué)習(xí)。ZBONTAR J和LECUN Y[4]于2015年首次將卷積神經(jīng)網(wǎng)絡(luò)(CNN)應(yīng)用于立體匹配,該網(wǎng)絡(luò)設(shè)計(jì)了一個(gè)深層的Siamese網(wǎng)絡(luò)去計(jì)算匹配代價(jià),在KITTI2015[5]測試平臺上的誤匹配率為3.89%,引起了廣泛關(guān)注。LUO W[6]等人提出了一個(gè)更快的Siamese網(wǎng)絡(luò),其中匹配代價(jià)的計(jì)算被視為多標(biāo)簽的分類問題。SGM-Net[7]學(xué)習(xí)預(yù)測半全局匹配(Semi-Global Matching,SGM)的懲罰項(xiàng)來代替人工調(diào)整規(guī)則化的懲罰項(xiàng)。近期,MAYER N[8]等人提出一個(gè)端到端的網(wǎng)絡(luò)來估算視差(DispNet)和光流(FlowNet),并提供了一個(gè)大型合成數(shù)據(jù)集(Scene Flow)用于網(wǎng)絡(luò)訓(xùn)練。PANG J H[9]等人拓展了DispNet并引入了一種兩級網(wǎng)絡(luò),稱為級聯(lián)殘差學(xué)習(xí)(Cascade Residual Learning,CRL)。第一級和第二級網(wǎng)絡(luò)分別計(jì)算視差圖和多尺度的殘差,然后兩級網(wǎng)絡(luò)的輸出相加構(gòu)成最終的視差圖。KENDALL A[10]等人介紹了GC-Net網(wǎng)絡(luò),使用了3D卷積神經(jīng)網(wǎng)絡(luò)來調(diào)整匹配代價(jià)空間。上述的端到端方法都利用多尺度特征去估算視差圖。CHANG J R[11]等人提出了一個(gè)全新的金字塔立體匹配(Pyramid Stereo Matching,PSM)網(wǎng)絡(luò),利用了空間金字塔池化(Spatial Pyramid Pooling,SPP)來獲取多尺度的特征,并結(jié)合三個(gè)沙漏堆疊網(wǎng)絡(luò)獲得了更好的匹配效果。
與傳統(tǒng)的求視差圖的步驟不同,本文利用深度學(xué)習(xí)的方式來學(xué)習(xí)從輸入圖像到視差圖之間的端到端的映射。這種方式可以減少很多工程設(shè)計(jì)的復(fù)雜性,避免了視差優(yōu)化等步驟。圖1展示了ASPP-Net模型的體系架構(gòu)。左右圖像分別輸入到兩個(gè)權(quán)重共享的殘差卷積神經(jīng)網(wǎng)絡(luò)[12]中用來提取特征,ASPP模塊用來獲取圖像的上下文信息。然后將左右圖像特征連接形成4維的代價(jià)空間,之后通過多尺度的3D CNN網(wǎng)絡(luò)進(jìn)行代價(jià)規(guī)整并最終通過視差回歸得到精確的視差圖。
首先,本文學(xué)習(xí)了一種用于表示立體匹配代價(jià)的深度表示。采用特征圖表示來取代使用原始像素強(qiáng)度計(jì)算而來的立體匹配代價(jià)。這樣做的動(dòng)機(jī)是比較一個(gè)描述符,該描述符對光學(xué)歧義更為魯棒,而且可以結(jié)合局部上下文信息。在本文的模型中,使用了殘差卷積網(wǎng)絡(luò)來學(xué)習(xí)深度表示。因?yàn)闅埐罹W(wǎng)絡(luò)不會(huì)隨著網(wǎng)絡(luò)層數(shù)的增多而出現(xiàn)梯度消失的現(xiàn)象。每個(gè)卷積層之后是批處理歸一化層(Batch Normalization,BN)和非線性激活函數(shù)層(采取的是ReLU函數(shù))。為了減少計(jì)算需求,該網(wǎng)絡(luò)首先應(yīng)用三個(gè)3×3的卷積濾波器對輸入進(jìn)行降采樣處理。PSM-Net[11]設(shè)計(jì)的殘差卷積網(wǎng)絡(luò)深達(dá)28層。但是,文獻(xiàn)[10]中僅采取了11層殘差卷積網(wǎng)絡(luò)也取得了高精度的視差圖。因此,可推測PSM-Net中可能存在大量冗余參數(shù)?;诖耍疚膬H使用了15層殘差卷積網(wǎng)絡(luò)。其中每個(gè)殘差卷積模塊由兩個(gè)串聯(lián)的卷積濾波器短接組成。為了減少網(wǎng)絡(luò)的參數(shù),卷積核的大小均為3×3。左右圖像通過網(wǎng)絡(luò)參數(shù)共享,來更有效地學(xué)習(xí)相對應(yīng)的特征,最后提取出各自對應(yīng)的特征圖。
圖1 所提出的ASPP-Net的體系架構(gòu)
在PSM-Net中,使用空間金字塔池化(SPP)模塊從多個(gè)尺度進(jìn)行特征提取。受此啟發(fā),本文所提出的空洞空間金字塔池化(ASPP)模塊使用空洞卷積來提取稠密特征圖并捕獲圖像中長范圍的上下文信息。具體來說,為了編碼多尺度信息,該網(wǎng)絡(luò)提出的級聯(lián)模塊逐漸使空洞率加倍,而帶圖像級特征增強(qiáng)的空間金字塔匯聚模塊則使用多個(gè)采樣速率來獲取特征。在網(wǎng)絡(luò)解碼上對于不同尺度用不同大小的空洞率去抓取多尺度信息,每個(gè)尺度作為一個(gè)獨(dú)立的分支,最后把它們合并起來再接一個(gè)卷積層輸出最終的特征圖。如圖1所示,ASPP模塊包含空洞率分別為6、12、18的空洞卷積,然后結(jié)合全局平均池化層以及殘差網(wǎng)絡(luò)提取出的特征,合并在一起之后通過兩個(gè)卷積層獲取最終的特征圖。實(shí)驗(yàn)結(jié)果表明,ASPP模塊可以有效避免在編碼過程中冗余信息的獲取,并有效提升視差圖的精度。
將左圖像與右圖像提取出的特征圖經(jīng)過相應(yīng)的平移處理之后連接起來,并且打包到4維代價(jià)空間中。這種方式可以保留根據(jù)立體視覺幾何學(xué)知識的方式來約束模型。對于每個(gè)立體圖像,代價(jià)空間的維度為1/4W×1/4H×C×1/4D,其中W和H分別代表立體圖像的寬和高,C代表融合后特征圖的通道數(shù),D表示視差的最大范圍。這種操作保留了特征圖的維度,與采取點(diǎn)積操作來抽取特征圖的維度方法不同,這使模型可以通過特征圖來學(xué)習(xí)上下文信息。研究發(fā)現(xiàn),與級聯(lián)特征或使用距離度量相比,形成具有級聯(lián)特征的代價(jià)空間可以顯著提高性能。
給定視差代價(jià)空間后,現(xiàn)在需要學(xué)習(xí)一個(gè)正則化函數(shù),該函數(shù)可以考慮代價(jià)空間中的上下文關(guān)系從而優(yōu)化視差估計(jì)。即使使用深層特征表示,一元之間的匹配代價(jià)也無法做到完美。例如,在像素強(qiáng)度均勻的區(qū)域(例如天空)中,基于固定的局部上下文的任何特征的代價(jià)曲線都將是平坦的。研究發(fā)現(xiàn),像這樣的區(qū)域會(huì)導(dǎo)致整個(gè)視差維度上的多模式匹配代價(jià)曲線,需要學(xué)習(xí)正則化函數(shù)并提高這一數(shù)量。因此,采取三維卷積運(yùn)算來過濾和完善此表示。
3D卷積能夠從高度、寬度和視差維度學(xué)習(xí)特征表示。3D卷積的困難在于額外的維度,在推理和訓(xùn)練階段都帶來了計(jì)算時(shí)間的負(fù)擔(dān)。因此,代價(jià)空間在高度、寬度以及視差維度上分別縮減至原來的1/4, 從而減少計(jì)算量。針對密集預(yù)測任務(wù)的深度編譯碼任務(wù),本文通過在編碼器中對特征圖進(jìn)行降采樣,然后在解碼器中進(jìn)行上采樣來減少參數(shù)。在編碼上首先進(jìn)行兩次降采樣處理,然后使用兩個(gè)3D轉(zhuǎn)置卷積網(wǎng)絡(luò)對編碼器中的輸出進(jìn)行上采樣。利用多尺度的特征可以充分利用上下文信息,并且極大地減少網(wǎng)絡(luò)規(guī)模,從而減輕計(jì)算負(fù)擔(dān)。最后通過雙線性插值算法進(jìn)行上采樣,得到維度為H×W×D的輸出結(jié)果。
(2)
這個(gè)操作是完全可微的,可以進(jìn)行訓(xùn)練和回歸視差估計(jì)。根據(jù)文獻(xiàn)[10]中論述,上述視差回歸比基于分類的立體匹配方法更穩(wěn)健。
平滑的L1損失函數(shù)常用于目標(biāo)檢測的邊界框回歸問題中。與L2損失函數(shù)相比,平滑的L1損失函數(shù)魯棒性更好,并且對異常值的敏感性較低。由于存在視差回歸,因此平滑的L1損失函數(shù)可用于本文的模型訓(xùn)練,其公式如下所示:
(3)
其中,
(4)
本文在Scene Flow、KITTI2015兩個(gè)圖像數(shù)據(jù)集上評估了所提出的方法。Scene Flow是一個(gè)合成的數(shù)據(jù)集,其中包含35 454個(gè)訓(xùn)練圖像和4 370個(gè)測試圖像。這個(gè)場景提供了精確稠密的真實(shí)視差圖信息。KITTI2015是汽車駕駛時(shí)拍攝街景的真實(shí)路況數(shù)據(jù)集,包含200幅帶有地面真實(shí)視差的訓(xùn)練圖像對,以及200幅沒有地面真實(shí)視差的測試圖像對。圖像大小為(H=375,W=1 242)。將整個(gè)訓(xùn)練數(shù)據(jù)分為訓(xùn)練集(80%)和驗(yàn)證集(20%)。
ASPP-Net的體系結(jié)構(gòu)是使用PyTorch平臺實(shí)現(xiàn)的。所有模型均端到端地進(jìn)行訓(xùn)練,其中采取了Adam優(yōu)化器,參數(shù)設(shè)置為β1=0.9,β2=0.999。在4臺1080Ti GPU服務(wù)器集群上進(jìn)行了訓(xùn)練。整個(gè)數(shù)據(jù)集在訓(xùn)練過程中進(jìn)行了數(shù)據(jù)歸一化、裁剪等預(yù)處理。其中圖片被隨機(jī)裁剪成H=256,W=512。最大視差D設(shè)置為192。首先使用Scene Flow數(shù)據(jù)集從零開始訓(xùn)練模型,學(xué)習(xí)率為0.001且持續(xù)訓(xùn)練10輪。訓(xùn)練后的模型可直接用于測試。測試結(jié)果如表1所示。
表1 不同網(wǎng)絡(luò)在Scene Flow平臺終點(diǎn)誤差的比較
從表1可以看出,本文提出的網(wǎng)絡(luò)模型在Scene Flow平臺下的終點(diǎn)誤差(End-Point-Error,EPE)為1.05,比PSM-Net低0.04,遠(yuǎn)低于GC-Net的終點(diǎn)誤差。
對于KITTI2015數(shù)據(jù)集,則采取了遷移學(xué)習(xí)的方法,將Scene Flow訓(xùn)練的模型在KITTI2015訓(xùn)練集上進(jìn)行500個(gè)周期的微調(diào),得到新的網(wǎng)絡(luò)模型。學(xué)習(xí)率在前200個(gè)周期設(shè)置為0.001,剩下的300個(gè)周期設(shè)置為0.000 1,防止出現(xiàn)過擬合。將訓(xùn)練好的模型最終用于測試集,得到測試結(jié)果,如表2所示。
表2 不同網(wǎng)絡(luò)在KITTI2015平臺誤匹配率的比較
表2中,All-all代表全像素級別下的平均誤匹配率,誤匹配率表示預(yù)測視差與真實(shí)視差超過3個(gè)像素的錯(cuò)誤匹配點(diǎn)的比例;Noc-all代表去除掉遮擋區(qū)域下的其余所有像素的平均誤匹配率。本文提出的算法的All-all為2.42%,Noc-all為2.24%,在1080Ti GPU服務(wù)器上處理一張圖片的平均時(shí)間為0.45 s。本文提出模型的精度僅比PSM-Net低0.10%, 但是PSM-Net的參數(shù)總量為5.2×106,比本文所提出的網(wǎng)絡(luò)模型參數(shù)多出17%。對比GC-Net,視差圖的誤匹配率降低了0.45%,并且運(yùn)行速度提升了一倍。
為了更加突出本文所提出算法在低紋理以及遮擋區(qū)域的匹配效果,與GC-Net進(jìn)行了對比。如圖2所示,從上往下依次為左視圖、視差圖和錯(cuò)誤圖??梢钥闯鲈谝恍┑图y理區(qū)域(如車窗)的匹配效果本文算法明顯優(yōu)于GC-Net,而且對物體邊緣輪廓的展現(xiàn)更加精確。
圖2 對KITTI2015測試平臺上圖片5的效果展示
此外,本文對所提出的ASPP模塊做了對比實(shí)驗(yàn),實(shí)驗(yàn)結(jié)果如表3所示。
表3 基于KITTI2015平臺ASPP模塊對精度的影響
從實(shí)驗(yàn)結(jié)果分析來看,ASPP模塊通過多尺度提取特征,充分獲取了圖像的上下文信息,將視差圖的錯(cuò)誤率降低了0.15%,網(wǎng)絡(luò)模型的參數(shù)增加了14%。
本文介紹了一種基于卷積神經(jīng)網(wǎng)絡(luò)的立體匹配算法的實(shí)現(xiàn)。重點(diǎn)介紹了空洞金字塔池化(ASPP)模塊,通過實(shí)驗(yàn)證明了ASPP模塊能夠有效提升視差圖的精度。所提出的網(wǎng)絡(luò)模型通過利用多尺度的3D卷積神經(jīng)網(wǎng)絡(luò),能夠大大減少參數(shù)總量,從而降低模型規(guī)模。最終的實(shí)驗(yàn)結(jié)果表明在KITTI2015測試平臺下,本文的算法精度相較于GC-Net提升了0.45%,對低紋理和遮擋等區(qū)域的匹配效果起到了相應(yīng)的提升作用。