黃怡潔,周佩,朱江平,張建偉
(四川大學(xué)計算機學(xué)院,成都610065)
雙目立體匹配是計算機視覺領(lǐng)域非常重要的課題,其關(guān)鍵在于找到雙目立體圖像對中像素點的相關(guān)性,根據(jù)三角測量原理計算出視差,根據(jù)視差計算出目標(biāo)的深度信息。立體匹配可廣泛應(yīng)用與增強現(xiàn)實[1]、三維建模[2],以及機器智能[3]等領(lǐng)域。
傳統(tǒng)的立體匹配算法包含代價聚合、視差計算、視差優(yōu)化和視差后處理[4]四個步驟完成。近些年,很多基于卷積神經(jīng)網(wǎng)絡(luò)[5]的立體匹配算法取得較好的效果。雙目立體圖像對作為網(wǎng)絡(luò)的輸入,通過端到端的神經(jīng)網(wǎng)絡(luò),可以直接預(yù)測出一張視差圖。Zbontar 等人[6]提出使用塊匹配結(jié)合卷積神經(jīng)網(wǎng)絡(luò)計算匹配代價,且在代價聚合模塊融入半全局的方法,有助于減少遮擋區(qū)域的誤差;Kendall 等人[7]在提取特征的時候,融入幾何信息,構(gòu)建4D 的匹配代價集,代價聚合網(wǎng)絡(luò)中用3D 卷積進行多尺度特征融合,提高匹配的精度;Jie Zequn 等人[8]用遞歸的左右一致性檢查模型,該模型在視差計算階段就可進行視差一致性檢查;Khamis[9]在使用Siamese 提取特征,網(wǎng)絡(luò)先預(yù)測出低分辨率的視差圖,再以色彩輸出為導(dǎo)向,產(chǎn)生高精度的視差圖;李航等人[10]提出沿著通道以及空間維度聚合特征信息,將3D 殘差以及密集模塊融入代價聚合網(wǎng)絡(luò);馬偉等人[11]使用CNN 提取圖像特征并進行區(qū)域分割,再用CNN匹配結(jié)果構(gòu)建MRF 能量函數(shù),最后通過優(yōu)化能量函數(shù)計算視差;王玉峰等人[12]采用寬步長將右特征圖進行平移結(jié)構(gòu)建稀疏三維損失體,并結(jié)合兩種損失函數(shù)訓(xùn)練模型。盡管以上算法取得了較好的效果,但在弱紋理區(qū)域仍然存在誤匹配的問題,且3D 卷積的計算消耗過大,對實時性能有所影響。
因此,本文提出了跨尺度代價聚合網(wǎng)絡(luò)(CSSN),在特征提取模塊,使用筆者在之前研究當(dāng)中的注意力模塊,提取包含豐富語句信息的特征,將左右圖像的特征圖進行相關(guān)性操作,構(gòu)建3D 的匹配代價集,在代價聚合網(wǎng)絡(luò)部分,將不同尺度的匹配代價集進行融合產(chǎn)生低分辨率的視差圖,再經(jīng)過殘差模塊進行視差優(yōu)化,生成了最終的視差圖,減少了弱紋理區(qū)域的誤匹配問題,在KITTI[13-14]數(shù)據(jù)集上取得較好的效果。
圖1 跨尺度代價聚合網(wǎng)絡(luò)結(jié)構(gòu)
由于弱紋理區(qū)域包含的信息較少,需要通過下采樣提取到包含有效信息的特征,而在網(wǎng)絡(luò)的深層細節(jié)信息的感知較差,因此大尺度的特征恢復(fù)空間細節(jié)信息,因此,代價聚合網(wǎng)絡(luò)進行跨尺度的匹配代價集的聚合,可以預(yù)測出更加準(zhǔn)確的視差圖。本文網(wǎng)絡(luò)主要分為四個部分,特征提取、匹配代價集構(gòu)建、跨尺度代價聚合以及視差優(yōu)化。網(wǎng)絡(luò)結(jié)構(gòu)如圖1 所示。
特征提取網(wǎng)絡(luò):特征提取網(wǎng)絡(luò)中先用殘差模塊,將圖像分別下采樣到1/4H*1/4W、1/8H*1/8W、1/16H*1/16W,提取不同尺度的特征,并在第三個殘差模塊后加入筆者在之前研究中使用的注意力機制模塊,提取包含豐富語境特征的信息。細節(jié)將在1.2 小節(jié)當(dāng)中介紹匹配代價集構(gòu)建:將左右圖像提取的多尺度特征分別進行相關(guān)性操作,構(gòu)建3D 匹配代價集,其大小為D*H*W。建立三個不同尺度的匹配代價集,用于跨尺度代價聚合。
跨尺度代價聚合:代價聚合階段的特征需要包含空間細節(jié)信息且在弱紋理需要采樣得到更多的信息,因此進行不同尺度的代價聚合。首先將匹配代價集采樣到與其他匹配代價集相同的尺度,再通過卷積操作進行融合,生成三個低分辨率的視差圖,將在1.4 小節(jié)中詳細介紹。
視差優(yōu)化:將代價聚合網(wǎng)絡(luò)中低分辨率的視差圖上采樣,并利用殘差模塊,產(chǎn)生與輸入圖像相同尺度的視差圖,進一步提高了視差預(yù)測的精度。
由于在弱紋理區(qū)域、遮擋區(qū)域等信息較少,易發(fā)生誤匹配的問題,因此,提取的特征中包含豐富的上下文語境信息至關(guān)重要,本文在特征提取網(wǎng)絡(luò)使用了改進的ResNet50[15]提取局部特征以及筆者之前提出的注意力機制模塊,從空間維度和通過維度分別捕獲語境信息。注意力模塊由通道和空間注意力模塊組成,通道注意力模塊學(xué)習(xí)通道圖之間的相關(guān)性,增強了特征圖之間的依賴關(guān)系;空間注意力模塊某位置的特征融合了其他位置的特征信息,捕獲大范圍的語境信息。
特征提取網(wǎng)絡(luò)的結(jié)構(gòu)圖如圖2 所示。首先,將圖像下采樣到大小為1/2H*1/2W 的尺寸得到特征Fdown,再將其輸入到改進的殘差網(wǎng)絡(luò)ResNet50 中,提取多尺度的特征Fs=1,2,3,4,該殘差包含四層,每一層包含的殘差塊的數(shù)量分別為4、6、5、4。給淺層中分配更多的模塊,使特征中融入淺層特征中包含的細節(jié)信息。最后,F(xiàn)2,F(xiàn)3經(jīng)過3*3 的卷積層,F(xiàn)4經(jīng)過注意力模塊,得到特征提取網(wǎng)絡(luò)最終的輸出,大小分別為1/4H*1/4W、1/8H*1/8W、1/16H*1/16W。
在GCNet[7]等研究中,將左右特征圖沿著視差搜索范圍串聯(lián)起來,構(gòu)成D*C*H*W 的4D 匹配代價集,從而使用在代價聚合網(wǎng)絡(luò)中使用3D 卷積,3D 卷積會使計算量增加并且增加網(wǎng)絡(luò)中的參數(shù)。因此,為了減少網(wǎng)絡(luò)的負擔(dān),加快網(wǎng)絡(luò)推理速度,本文算法將左右特征圖進行相關(guān)性操作,構(gòu)建3D 匹配代價集,把特征提取網(wǎng)絡(luò)提取的不同尺度特征分別進行點乘操作,形成多尺度匹配代價集CVs,s=1,2,3,用于跨尺度代價聚合。
圖2 特征提取網(wǎng)絡(luò)模塊
在弱紋理區(qū)域,包含的信息較少,因此需要下采樣,提取出具有辨識度的特征,而網(wǎng)絡(luò)的一些細節(jié)信息,需要在高分辨率的特征中獲取[16]。進行不同尺度的代價聚合,聚合后的特征當(dāng)中不僅包含細節(jié)信息,還包含豐富的語境信息,有助于減少弱紋理區(qū)域的誤匹配問題。在之前的研究中,許多學(xué)者在代價聚合模塊使用3D 卷積,但3D 卷積計算消耗大且會降低網(wǎng)絡(luò)推理速度,因此,本文算法使用2D 卷積進行代價聚合,減少內(nèi)存消耗以及計算代價。跨尺度代價聚合模塊的結(jié)構(gòu)如圖3 所示。
圖3 跨尺度代價聚合模塊
如圖2 所示,首先,將大小為1/4H*1/4W、1/8H*1/8W 和1/16H*1/16W 的匹配代價集,分別進行上采樣,下采樣操作,再將相同尺度的特征圖通過3*3 的卷積層進行特征融合,得到該模塊最終輸出。該模塊類似于AANet[16]中提出的跨尺度模塊,但有兩點不同,一是不同尺度匹配代價集進行融合,采樣使用的卷積操作不同,AANet[16]中使用雙線性差值的方法進行采樣,本文使用反卷積進行上采樣,特征融合時AANet[16]中直接相加,本文算法利用卷積操作實現(xiàn)融合;二是匹配代價集的分辨率以及通道數(shù)不同。本文算法代價聚合網(wǎng)絡(luò)共使用6 個跨尺度聚合模塊,最終通過視差計算預(yù)測出三張視差圖。
在代價聚合網(wǎng)絡(luò)生成了低分辨率的視差圖,為了進一步提高立體匹配的精度,在代價聚合網(wǎng)絡(luò)后增加視差優(yōu)化模塊,使視差實現(xiàn)從粗到細的優(yōu)化。視差優(yōu)化網(wǎng)絡(luò)先將低分辨圖像上采樣到輸入圖像相同的分辨率,再經(jīng)過殘差模塊將低分辨率視差圖進一步地優(yōu)化,使得在細節(jié)處,邊緣處的匹配更加精度。在網(wǎng)絡(luò)訓(xùn)練階段,將網(wǎng)絡(luò)輸出的三張視差圖加權(quán)求和進行誤差計算,權(quán)重分別為0.5、0.7、1.0。測試階段,將最大尺度的視差圖上采樣得到的高分辨視差圖作為最終預(yù)測的視差圖。
在SceneFlow[17]以及KITTI[13-14]數(shù)據(jù)集上分別對本文提出的算法進行評估,2.1 小節(jié)是對數(shù)據(jù)集的介紹,在2.2 小節(jié)中對實驗的實現(xiàn)細節(jié),參數(shù)設(shè)定等做詳細的介紹,2.3 小節(jié)對算法在不同數(shù)據(jù)集上的實驗結(jié)果進行定量分析。
SceneFlow[17]數(shù)據(jù)集:大型的合成數(shù)據(jù)集,包含Monkaa、Driving 以及Flyingthings3D 三個數(shù)據(jù)集。數(shù)據(jù)集中包含雙目立體圖像對以及視差圖ground truth。共有39824 組數(shù)據(jù),其中35454 組為訓(xùn)練集,4370 組為測試集。圖像分辨率為960*540,該數(shù)據(jù)集常用于網(wǎng)絡(luò)的預(yù)訓(xùn)練。
KITTI[13-14]數(shù)據(jù)集:是在真實場景中生成的數(shù)據(jù)集,包含車輛、街景、路燈、路標(biāo)以及樹木等物體,共有KITTI2012[13]以及KITTI2015[14]兩個數(shù)據(jù)集。KITTI2015[14]中包含200 組訓(xùn)練數(shù)據(jù)以及200 組測試數(shù)據(jù),KITTI2012[13]中包含194 組訓(xùn)練數(shù)據(jù)以及195 組測試數(shù)據(jù)。KITTI[13-14]數(shù)據(jù)集訓(xùn)練集中包含雙目立體圖像對以及視差圖ground truth(由Lidar 生成),測試集當(dāng)中僅包含雙目立體圖像對,圖像分辨率均為1242*375。
在SceneFlow[17]數(shù)據(jù)集上,使用EPE(預(yù)測的視差與視差真值差的絕對值的平均值)評估誤差。KITTI[13-14]數(shù)據(jù)集上,3 像素(預(yù)測視差與視差真值間誤差大于3像素的點占總像素數(shù)的比例)誤差為評估標(biāo)準(zhǔn)。
本文實驗是在Ubuntu 18.0 進行,用PyTorch 框架搭建跨尺度代價聚合網(wǎng)絡(luò)(CSSN)。在訓(xùn)練過程中,使用Adam[18]優(yōu)化器,參數(shù)設(shè)置為β1=0.9、β2=0.999。訓(xùn)練網(wǎng)絡(luò)使用兩張NVIDIA 1080Ti。
網(wǎng)絡(luò)預(yù)訓(xùn)練階段使用SceneFlow[17]數(shù)據(jù)集,共訓(xùn)練64 個epoch,前32 個epoch 學(xué)習(xí)率設(shè)置為0.001,后32個epoch 學(xué)習(xí)率設(shè)置為0.0001。網(wǎng)絡(luò)輸入大小為960*540 的雙目圖像對,經(jīng)過網(wǎng)絡(luò)預(yù)測出一張同樣大小的視差圖。KITTI[13-14]數(shù)據(jù)集在SceneFlow[17]數(shù)據(jù)集預(yù)訓(xùn)練的模型上進行微調(diào),在KITTI2015[14]上訓(xùn)練1000 個epoch,前600 個epoch 的學(xué)習(xí)率設(shè)置為0.001,每隔200個epoch,學(xué)習(xí)率減半。KITTI2015[14]共200 組數(shù)據(jù),160組作為訓(xùn)練集,剩下40 組作為測試集。KITTI2012[13]中包含194 組數(shù)據(jù),其中160 組作為訓(xùn)練集,34 組作為測試集。
本文算法在KITTI[13-14]數(shù)據(jù)集上進行評估,與之前一些性能較好算法相比有一定的優(yōu)勢,如MCCNN[6]、Displets V2[19]、DRR[20]、SGM-NET[21]和PBCP[22]等,在速度上較有優(yōu)勢,可將其用于實時系統(tǒng)中。
KITTI2015[14]上的評估結(jié)果如表1 所示,all area 表示整個圖像的范圍,Noninclude area 表示圖像去掉遮擋區(qū)域的范圍,最右邊的一列表示的是預(yù)測出一張視差圖所需的時間。D1-bg、D1-fg、D1-all 分別表示圖像的前景、背景以及整個區(qū)域。
表1 KITTI2015 評估結(jié)果
從表1 當(dāng)中,可以看出本文算法在整個圖像區(qū)域的誤差較小,整體的匹配精度較高。與Displets V2[19]相比,匹配誤差減小了9%,與MCCNN[6]相比,誤差減少了24%。在時間性能上,本文算法生成一張視差圖僅需要350ms,比DRR 算法速度快約14%,且速度比MCCNN[6]算法快約190 倍。但在圖像的前景區(qū)域,由于包含有的樹木、路標(biāo)等物體,在路標(biāo)細節(jié)處易發(fā)生誤匹配的問題。
本文算法在KITTI2012[13]上的評估結(jié)果如表2 所示,Out-Noc 表示的是非遮擋區(qū)域,Out-All 表示整個圖像區(qū)域,Avg-Noc 表示非遮擋區(qū)域的平均誤差,Avg-Noc 展示整個圖像區(qū)域的平均誤差,最后一列是算法的運行時間。表2 中展示的是3 像素位置、非遮擋區(qū)域和整個圖像區(qū)域上的誤差,并與目前已有一些算法如Displets V2[19]、SGM-NET[21]、PBCP[22],以及SsSMnet[23]等優(yōu)秀算法的實驗結(jié)果對比。
表2 KITTI2012 評估結(jié)果
從表2 中可以看出,本文算法在一些指標(biāo)如非遮擋/整個圖像區(qū)域上的平均誤差、算法運行時間上有一定的優(yōu)勢,在非遮擋區(qū)域的平均誤差,本文算法的精度比Displets V2[19]精度提升了16.7%,整個圖像區(qū)域上精度提升12.5%。同時,算法運行速度縮小至SsSMnet[23]的46.5%,運行速度大大減少,可以將本文算法用于實時系統(tǒng)當(dāng)中。
本文提出了跨尺度代價聚合網(wǎng)絡(luò),使用筆者之前研究中的注意力機制模塊,分別從通道和空間維度捕獲信息,獲取上下文語境信息,在代價聚合網(wǎng)絡(luò)中,將多尺度的匹配代價集進行聚合,得到不同尺度的視差圖通過融合采樣得到最終網(wǎng)絡(luò)輸出。本文算法在速度上和精度上均實現(xiàn)較好的性能,提高了弱紋理區(qū)域的匹配精度。但在遮擋區(qū)域以及前景區(qū)域等存在誤匹配問題,未來的研究重點將提升遮擋區(qū)域的匹配上。