桑海偉,徐 孩,熊偉程,左 羽,趙 勇,
(1.貴州師范學(xué)院數(shù)學(xué)與大數(shù)據(jù)學(xué)院,貴州 貴陽 550018;2.北京大學(xué)深圳研究生院信息工程學(xué)院,廣東 深圳 518055;3.貴州大學(xué)計算機(jī)科學(xué)與技術(shù)學(xué)院,貴州 貴陽 550025)
立體匹配是指從立體彩色圖像對中計算對應(yīng)點偏差,獲取稠密視差圖的過程,在自動駕駛[1]、三維重建[2]、機(jī)器人導(dǎo)航[3]等領(lǐng)域有著廣泛的應(yīng)用。Scharstein等[4]將立體匹配算法進(jìn)行歸納總結(jié),并分為4個步驟:匹配值計算、匹配值累積、視差選擇與優(yōu)化以及視差精確化。傳統(tǒng)的立體匹配算法可分為局部[5 - 7]、全局[8]和半全局[9]3種類型,其中全局立體匹配算法準(zhǔn)確性最高,代表性全局立體匹配算法有圖割[10]、信念傳播[11]等。傳統(tǒng)算法將立體匹配問題分解成若干個子問題,存在求解子問題最優(yōu)并不代表全局最優(yōu)的問題。另外,傳統(tǒng)算法需要手工設(shè)計特征描述算子和代價聚合策略。
卷積神經(jīng)網(wǎng)絡(luò)具有強(qiáng)大的特征表示能力,能夠直接從視覺圖像中有效地學(xué)習(xí)和理解高級語義,在目標(biāo)識別[12]、目標(biāo)檢測[13]、語義分割[14]等計算機(jī)視覺領(lǐng)域取得較大突破[15]。立體匹配算法也受到越來越多的關(guān)注,?bontar等[16]利用CNN來預(yù)測左圖與右圖的匹配程度,并使用CNN來計算立體匹配值。Luo等[17]采用平滑目標(biāo)分布來學(xué)習(xí)所有視差值的概率分布,隱含地捕獲不同視差之間的相關(guān)性。上述方法僅用神經(jīng)網(wǎng)絡(luò)替代立體匹配中的一部分步驟,Mayer等[18]首次提出完全采用神經(jīng)網(wǎng)絡(luò)實現(xiàn)端到端的立體匹配、編解碼結(jié)構(gòu)和跳躍連接恢復(fù)特征細(xì)節(jié)。跳躍連接是將低層的特征圖連接到高層特征圖,從而保留圖像細(xì)節(jié)。但是,低層特征圖包含一些無用甚至對最終匹配效果造成負(fù)面影響的信息,因而有必要進(jìn)行特征選擇,過濾掉低層特征中的無用信息和負(fù)面信息。
Figure 1 PASNet structure圖1 PASNet結(jié)構(gòu)
深度學(xué)習(xí)中注意力機(jī)制與人類選擇性視覺注意力機(jī)制類似,讓網(wǎng)絡(luò)可以選擇某些特征,抑制一些無用或負(fù)面的特征。引入注意力機(jī)制可以讓其自適應(yīng)地選擇有用的特征,抑制那些無用的或者負(fù)面的特征。本文引入像素級注意力機(jī)制,用于篩選像素粒度的特征,提出了基于像素注意力的立體匹配模型PASNet(Pixel Attention Siamese neural Network)。該模型由2部分組成:雙通道注意力沙漏型紋理特征提取子網(wǎng)絡(luò)和注意力U型上下文代價聚合子網(wǎng)絡(luò),具體結(jié)構(gòu)如圖1所示。
給定2幅立體圖像,即左彩色圖IL和右彩色圖IR,網(wǎng)絡(luò)的目的是輸出對應(yīng)的視差圖DG。先通過CNN對立體圖像對進(jìn)行初步的特征提取,CNN包含6個卷積層(Conv),并將圖像降采樣到原來圖像尺寸的1/4大小,減少參數(shù),提升運(yùn)算速度。利用不同步長(stride)和大小的卷積(Conv)和反卷積(Decnv)操作,引入像素注意力進(jìn)一步提取特征,實現(xiàn)雙通道注意力沙漏型網(wǎng)絡(luò),輸出高層語義特征圖FL和FR。接著,匹配代價(Cost Volume)則是通過對應(yīng)層,將左特征圖FL和右特征圖FR級聯(lián),獲得代價矩陣C。隨后,基于不同步長(stride)卷積、高層次引導(dǎo)和跳躍連接等方式實現(xiàn)注意力U型網(wǎng)絡(luò)(Attention U-Net),其主要目的是進(jìn)行代價調(diào)整,重新調(diào)整像素間的匹配關(guān)系,調(diào)整后的代價矩陣為C′。最后,通過視差回歸層計算并輸出的視差圖DG。
Brandao等[20]將研究目標(biāo)聚焦于立體匹配的特征提取上,研究表明,標(biāo)準(zhǔn)的卷積神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)可以用來提升特征提取的質(zhì)量。對于立體匹配任務(wù)而言,特征提取的目的是提取像素之間的對應(yīng)關(guān)系。文獻(xiàn)[20]通過池化操作和反卷積操作來增大感受野,但是池化操作會丟失大量細(xì)節(jié)信息,作者使用跳躍連接可以彌補(bǔ)一定的細(xì)節(jié)損失。本文采用設(shè)定卷積步長的方式來對特征圖降采樣,盡可能減少細(xì)節(jié)特征的丟失。
注意力可以解釋為重要性權(quán)重的向量,在文本處理領(lǐng)域為了預(yù)測一個元素,例如句子中的單詞,使用注意力向量來估計它與其他元素的相關(guān)程度,并將其值的總和作為目標(biāo)的近似值。在圖像處理領(lǐng)域,將當(dāng)前目標(biāo)隱藏狀態(tài)與所有先前的源狀態(tài)一起使用,以導(dǎo)出注意力權(quán)重,用于給先前序列中的信息分配不同的注意力大小[21]。SE-net[19]利用全局池化獲得通道注意力向量,對各層輸出的特征圖進(jìn)行通道選擇。不同通道的特征是不同的濾波器輸出的,對于像素級預(yù)測的任務(wù)來說,理論上應(yīng)該考慮像素級的特征。像素級的特征包含像素粒度的信息,因此有必要對像素粒度信息進(jìn)行精確篩選。
雙通道注意力沙漏型子網(wǎng)絡(luò)基于文獻(xiàn)[20],將其中的池化層,用步長(stride)為2、卷積核大小為3×3的卷積層替代。PASNet結(jié)構(gòu)如圖1所示,包括1個主分支和2個輔分支。主分支先通過2組卷積模塊,將輸入圖像尺寸降采樣到當(dāng)前的1/4,再經(jīng)過3個核大小為3×3的卷積層,得到引導(dǎo)特征圖的輸出。引導(dǎo)特征圖具有較大感受野和高層語義信息的特點。再通過2個步長為2的轉(zhuǎn)置卷積,將圖像恢復(fù)到原來大小。2個輔分支用于像素注意力機(jī)制的引入,第1個輔分支的輸入為低層特征圖,目的是補(bǔ)充豐富的細(xì)節(jié)信息;第2個輔分支的輸入為引導(dǎo)特征圖,通過像素注意力跳躍模塊PAS(Pixel Attention Skip),輸出具有像素注意力作用的特征。
PAS模塊的2個輸入分別為高層特征圖和低層特征圖,具體結(jié)構(gòu)如圖2所示。
Figure 2 PAS structure圖2 PAS結(jié)構(gòu)
高層特征圖經(jīng)過卷積層、批量歸一化層BN(Batch Normalization)和非線性層ReLU之后,進(jìn)行Sigmoid變換,如式(1)所示:
(1)
其中,x表示輸入特征。Sigmoid的物理意義在于輸出1個決定每個特征權(quán)重的概率圖。概率圖與經(jīng)過了1個卷積層后的低層特征圖相乘,再與輸入的低層特征圖相加,即可得到在像素注意力下的低層特征圖。
MC-CNN[15]通過級聯(lián)左彩色圖和右彩色圖的特征圖,使深度神經(jīng)網(wǎng)絡(luò)自動學(xué)習(xí)代價估計。借鑒文獻(xiàn)[22]的思想,本文使用注意力U型子網(wǎng)絡(luò),在最大視差范圍內(nèi),通過級聯(lián)對應(yīng)像素的左特征圖和右特征圖,得到一個四維的代價矩陣。設(shè)左、右彩色圖分別為IL和IR,大小為W×H,最大視差為D,經(jīng)過特征提取子網(wǎng)絡(luò)后特征圖的尺寸是(H,W,c),其中c為通道數(shù),2個特征向量經(jīng)過級聯(lián)操作后的尺寸為(H,W,2c),則最終獲得的代價矩陣尺寸為(D+1,H,W,2c)。
注意力U型子網(wǎng)絡(luò)通過像素注意力機(jī)制和跳躍連接,提高了立體匹配紋理特征提取的精度。為了同時在視差維度和空間維度進(jìn)行代價調(diào)整,本文基于三維卷積設(shè)計一個U型網(wǎng)絡(luò),如圖1所示,U型子網(wǎng)絡(luò)結(jié)構(gòu)有3個層級,分別對應(yīng)原圖大小的1/8,1/16,1/32 3種不同尺度的圖像,每一個尺度都基于上一層的輸出,通過3層三維卷積組合得到。三維卷積組合包括1個核大小為3×3×3、步長為2的三維卷積和2個核大小為3×3×3、步長為1的三維卷積。上采樣過程均通過1個核大小為3×3×3、步長為2的三維轉(zhuǎn)置卷積實現(xiàn)。
為了在四維的特征圖上同樣使用像素注意力,本文設(shè)計了三維像素注意力跳躍連接模塊SDPAS(Simplified 3D Pixel Attention Skip),具體結(jié)構(gòu)如圖3所示。SDPAS的2個輸入分別為高層特征圖和低層特征圖。高層特征圖經(jīng)過三維卷積層、三維量歸一化BN和非線性層ReLU之后,進(jìn)行Sigmoid變換,輸出1個概率圖,自動優(yōu)化每個特征層中像素的權(quán)重。概率圖與使用卷積層后的低層特征圖相乘,獲得在像素注意力下的低層特征圖。網(wǎng)絡(luò)模型使用SDPAS模塊得到所有尺度,將該模塊的輸出與來自上一層的反卷積結(jié)果級聯(lián)到一起,從而完成像素級注意力特征的引入與融合。
Figure 3 SDPAS structure圖3 SDPAS結(jié)構(gòu)
注意力U型子網(wǎng)絡(luò)的所有尺度都會輸出1個視差圖,由于每層的視差圖尺度不一樣,本文通過三線性插值,將得到的視差圖上采樣到與原圖大小一致。由于這個網(wǎng)絡(luò)有3個輸出,因而對應(yīng)地有3個損失,分別是Loss1、Loss2、Loss3。在訓(xùn)練階段,視差匹配最終損失由3個損失加權(quán)求和得到。在測試階段,左右圖最終視差圖是圖1中最上面一層的輸出,如圖1所示。
(2)
其中,D為最大視差,表示對應(yīng)點可能出現(xiàn)在右圖中的位置的最大偏移量。
本文利用具有標(biāo)準(zhǔn)視差圖的數(shù)據(jù)集KITTI,通過隨機(jī)初始化的方式訓(xùn)練整個網(wǎng)絡(luò)。由于KITTI數(shù)據(jù)集的標(biāo)準(zhǔn)視差圖是稀疏的,因此需要在有標(biāo)簽的像素集合內(nèi)平均所有像素的損失。本文提出的網(wǎng)絡(luò)有3個視差輸出,采用絕對值誤差訓(xùn)練整個網(wǎng)絡(luò):
(3)
為了測試本文網(wǎng)絡(luò)的效果,本文在KITTI2015立體視覺數(shù)據(jù)集上進(jìn)行評估。KITTI2015數(shù)據(jù)集是從汽車視角采集的真實圖像數(shù)據(jù),包含200對訓(xùn)練立體圖像對和對應(yīng)的稀疏視差圖,以及200對測試圖像對,其中測試圖像對不包含對應(yīng)的視差圖。圖像寬為1 240像素,高為376像素。本文取80%的訓(xùn)練圖像作為訓(xùn)練集,20%的圖像作為驗證集。網(wǎng)絡(luò)基于PyTorch實現(xiàn),采用Adam優(yōu)化方法,其中β1取0.9,β2取0.999。訓(xùn)練時對整個數(shù)據(jù)集進(jìn)行顏色歸一化預(yù)處理,圖像尺寸隨機(jī)裁剪成256×512大小,最大視差數(shù)D取192。訓(xùn)練階段網(wǎng)絡(luò)采用相同的學(xué)習(xí)率,前200次迭代過程中,學(xué)習(xí)率設(shè)為0.001,后續(xù)迭代過程中,學(xué)習(xí)率降為0.000 1。網(wǎng)絡(luò)訓(xùn)練的最大迭代數(shù)為1 000,在一塊NVIDIA 1080Ti GPU上訓(xùn)練耗時約36 h。
所有實驗使用像素誤差(Pixel Error)作為評價指標(biāo)。像素誤差是預(yù)測視差值與標(biāo)準(zhǔn)視差值的誤差,超過某個閾值的像素所占的百分比。本文將閾值分別設(shè)為2,3,5,分別對應(yīng)2px-error,3px-error,5px-error。
3.2.1 網(wǎng)絡(luò)結(jié)構(gòu)實驗對比分析
為了驗證本文提出的網(wǎng)絡(luò)結(jié)構(gòu)的有效性,本文設(shè)置4種不同的結(jié)構(gòu)進(jìn)行消融實驗,在KITTI驗證集上進(jìn)行對比。實驗結(jié)果如表1所示,表中‘All’表示在計算錯誤率時考慮所有的像素,‘Non-Occ’表示在計算錯誤率時僅考慮非遮擋區(qū)域的像素。特征提取階段和代價聚合階段分別采用雙通道注意力沙漏型子網(wǎng)絡(luò)和注意力U型子網(wǎng)絡(luò)。實驗結(jié)果如表1所示,代價聚合階段采用注意力U型子網(wǎng)絡(luò),3px-error降低了4.2%,說明了U型網(wǎng)絡(luò)用于代價聚合可以提高立體匹配的精度。在特征提取階段,引入像素注意力機(jī)制,錯誤率進(jìn)一步降低,證明了注意力機(jī)制的引入,能在像素粒度進(jìn)行特征篩選,最終提升立體匹配的效果。
3.2.2 網(wǎng)絡(luò)對比分析
本文與MC-CNN-acrt[16]、Content-CNN[17]、Siamese-CNN[20]、DDR[23]4種網(wǎng)絡(luò)進(jìn)行比較,訓(xùn)練集與驗證集的比例均為4∶1。其中,MC-CNN網(wǎng)絡(luò)是沒有進(jìn)行視差后處理的實驗結(jié)果。本文網(wǎng)絡(luò)以及Content-CNN和Siamese-CNN都沒有進(jìn)行視差后處理。實驗結(jié)果如表2所示,與其他網(wǎng)絡(luò)相比,本文網(wǎng)絡(luò)的3px-error、5px-error錯誤率最低,2px-error錯誤率低于前3種網(wǎng)絡(luò)。DRR是在MC-CNN的基礎(chǔ)上進(jìn)行視差后處理的網(wǎng)絡(luò)。本文的網(wǎng)絡(luò)在3px-error和5px-error錯誤率上,低于加了后處理的結(jié)果。
Table 1 Comparison of different structures on KITTI validation set
Table 2 Performance comparison on KITTI validation set
Figure 4 Results on test set圖4 測試集效果圖
對KITTI2015中的200對立體圖像對進(jìn)行視差圖計算,并將結(jié)果提交至KITTI評估網(wǎng)站,結(jié)果如表3所示,表中“D1-bg”“D1-fg”“D1-all”分別表示背景、前景、所有區(qū)域的像素,即“D1-bg”表示計算錯誤率時只考慮背景部分的像素。PSANet的3px-error是3.97%,優(yōu)于大部分網(wǎng)絡(luò)。
圖4是利用本文提出的PSANet生成的視差圖樣例。從圖4中可以看出,PASNet能夠生成平滑的視差圖,尤其是路面區(qū)域具有重復(fù)紋理,屬于比較常見的病態(tài)區(qū)域,是立體匹配中的難點之一,但PASNet的像素誤差很低。圖4中第1行圖像存在反光路面,幾乎沒有明顯的紋理特性能夠輔助尋找對應(yīng)匹配點,屬于病態(tài)區(qū)域中的反射表面問題,但是本文的網(wǎng)絡(luò)得到了較好的視差圖。第4行圖像中,中間的草叢由于存在重復(fù)紋理的病態(tài)區(qū)域情況,誤匹配率較高,誤差較大,本文提出的網(wǎng)絡(luò)在重復(fù)紋理下具有較低的誤差。本文提出的網(wǎng)絡(luò)在上述幾種病態(tài)區(qū)域得到了精確的測試結(jié)果,一方面驗證了本文提出的網(wǎng)絡(luò)具有魯棒性,另一方面驗證了本文提出的網(wǎng)絡(luò)能更好地描述匹配點之間的相關(guān)性,能有效改善立體匹配精度,特別是在病態(tài)區(qū)域,能夠得到精度較高的視差圖。
Table 3 Performance on KITTI test set
本文提出的基于像素注意力的雙通道立體匹配卷積神經(jīng)網(wǎng)絡(luò)PASNet,將注意力機(jī)制引入到特征提取與代價聚合步驟中。首先,通過雙通道注意力沙漏型子網(wǎng)絡(luò)對輸入圖像進(jìn)行特征提取,實驗驗證了注意力機(jī)制可以提取有效特征并抑制無效特征;其次,根據(jù)特征提取得到的特征圖,通過關(guān)聯(lián)層得到代價矩陣,獲取初步視差圖;最后,利用注意力U型子網(wǎng)絡(luò)對代價矩陣進(jìn)行代價聚合,實驗表明該子網(wǎng)絡(luò)可以優(yōu)化輸出結(jié)果,最終輸出高精度的視差圖。在KITTI立體視覺數(shù)據(jù)集上的實驗結(jié)果表明,所提出的網(wǎng)絡(luò)能更好地描述匹配點之間的相關(guān)性,有效地解決病態(tài)區(qū)域精度較低等問題,提高立體匹配精度。PAS和SDPAS模塊還可以應(yīng)用到其它利用像素級預(yù)測的網(wǎng)絡(luò)模型中,以提高匹配精度。