唐家輝,趙 蕓,徐 興
(浙江科技學(xué)院 a.信息與電子工程學(xué)院;b.機(jī)械與能源工程學(xué)院,杭州 310023)
在過去的幾十年中,雙目立體匹配廣泛應(yīng)用于無人機(jī)[1]、自動(dòng)駕駛[2]和醫(yī)療成像[3]等三維領(lǐng)域,尤其在對(duì)三維成像獲取物體的深度有著極高精確度要求的醫(yī)療與自動(dòng)駕駛領(lǐng)域。雙目立體匹配的原理是通過模擬人眼的視覺感知,采用兩個(gè)在同一水平線上的傳感器獲取相同場(chǎng)景的圖像,通過兩張圖片對(duì)應(yīng)同一個(gè)像素之間的位置差與相機(jī)本身參數(shù)之間的關(guān)系重建三維場(chǎng)景信息。傳統(tǒng)的立體匹配流程通常包括四個(gè)步驟:代價(jià)計(jì)算、代價(jià)聚合、視差估計(jì)及視差細(xì)化[4-5],但其無法在反射、無紋理、昏暗及物體細(xì)小的情況下優(yōu)化視差圖的邊緣結(jié)構(gòu)以生成精確的視差圖。
近些年來,隨著深度學(xué)習(xí)和神經(jīng)網(wǎng)絡(luò)的發(fā)展,傳統(tǒng)的立體匹配方法逐漸發(fā)展為端到端的深度學(xué)習(xí)立體匹配方法。早期研究者如?bontar等[6]采用了孿生卷積神經(jīng)網(wǎng)絡(luò)來對(duì)代價(jià)計(jì)算進(jìn)行改進(jìn),可以高效地形成代價(jià)空間,但是在代價(jià)聚合與視差細(xì)化中仍采取了傳統(tǒng)的方法。直到Zhang等[7]提出的引導(dǎo)聚合網(wǎng)絡(luò)(guided aggregation network,GANet),才使傳統(tǒng)的半全局立體匹配算法(semi-global matching,SGM)具有可微性,構(gòu)建了端到端的立體匹配神經(jīng)網(wǎng)絡(luò),才最終實(shí)現(xiàn)了端到端的深度學(xué)習(xí)立體匹配網(wǎng)絡(luò)。Guo等[8]通過增加對(duì)低分辨率和不連續(xù)深度的超分辨率感知,提出了可學(xué)習(xí)的高效立體匹配網(wǎng)絡(luò)(efficient stereo matching network,ESMNet)。Zhang等[9]提出的領(lǐng)域不變的立體匹配網(wǎng)絡(luò)(domain-invariant stereo matching networks,DSMNet)包含兩個(gè)可以提高網(wǎng)絡(luò)魯棒性的網(wǎng)絡(luò)層。為了克服當(dāng)前無法從真實(shí)世界中大量獲取立體匹配數(shù)據(jù)集的缺點(diǎn),Mayer等[10]提出了全新的大型虛擬合成數(shù)據(jù)集場(chǎng)景流,可以有效地提升微調(diào)時(shí)網(wǎng)絡(luò)的穩(wěn)定性。Zou等[11]提出了一種通過對(duì)視頻序列中的場(chǎng)景深度及場(chǎng)景切換的差異進(jìn)行視差估計(jì)的無監(jiān)督的網(wǎng)絡(luò),以獲取更穩(wěn)定的視差結(jié)果?,F(xiàn)階段,大部分研究都采用不同的特征提取方法來獲取精確的代價(jià)空間以進(jìn)行代價(jià)聚合。Duggal等[12]采用可微塊匹配(patchmatch)[13]對(duì)局部有效區(qū)域進(jìn)行代價(jià)計(jì)算來提升視差圖的生成速度。Guo等[14]提出了分組相關(guān)的立體匹配網(wǎng)絡(luò)(group-wise correlation stereo network,GWC-Net),通過將左右特征圖分成多個(gè)相關(guān)的特征組進(jìn)行相互映射,再打包各組之間的關(guān)系圖進(jìn)行代價(jià)聚合。自從Kendall等[15]提出幾何上下文信息網(wǎng)絡(luò)(geometry and context network,GC-Net)后,人們?cè)诟倪M(jìn)代價(jià)聚合三維卷積的過程中提出了更多的方法。Liu等[16]提出了新的代價(jià)計(jì)算方法并采用了自適應(yīng)的形狀引導(dǎo)濾波器進(jìn)行代價(jià)聚合以降低大面積無紋理區(qū)域的匹配錯(cuò)誤率。Chang等[17]提出的金字塔立體匹配網(wǎng)絡(luò)(pyramid stereo matching network,PSMNet)采用了空間金字塔池化(spatial pyramid pooling,SPP)[18]進(jìn)行特征提取,并且在代價(jià)聚合過程中采用三維的堆疊沙漏,有效地提高了生成視差圖的整體精度。但是,沙漏堆疊網(wǎng)絡(luò)中多次上采樣與下采樣的操作會(huì)造成代價(jià)空間中包含的原圖像輪廓信息丟失。
在上述研究的基礎(chǔ)上,我們提出了一種多尺度引導(dǎo)聚合網(wǎng)絡(luò)(multi-scale guided aggregation network,MSGANet),在特征提取階段采用了4個(gè)大小不同的空間金字塔池化層用以消除卷積層固定大小的約束,形成代價(jià)空間,在代價(jià)聚合過程中加入了半全局聚合層,可以在代價(jià)空間的四個(gè)方向上聚合最佳代價(jià),以減少三維卷積層在上下采樣過程中帶來的三維信息的損失。為了進(jìn)一步提升網(wǎng)絡(luò)的性能,還采用了L2損失函數(shù)進(jìn)行預(yù)訓(xùn)練,獲取更加收斂的初始值參數(shù)進(jìn)行微調(diào),以提升視差圖的精度。
本研究使用了卡爾斯魯厄和豐田技術(shù)研究所(Karlsruhe Institute of Technology and Toyota Technological Institute,KITTI)提供的數(shù)據(jù)集來訓(xùn)練MSGANet。大型合成數(shù)據(jù)集場(chǎng)景流廣泛用于對(duì)真實(shí)數(shù)據(jù)集進(jìn)行微調(diào)之前,可以有效地解決因數(shù)據(jù)集過小而導(dǎo)致的泛化性差問題。場(chǎng)景流數(shù)據(jù)集由開源的三維建模軟件Blender獲取,它采用單個(gè)雙目虛擬成像傳感器以左右兩個(gè)視角拍攝圖像來獲取動(dòng)態(tài)場(chǎng)景的深度信息。該數(shù)據(jù)集采用的虛擬傳感器尺寸為高32.0 mm、寬18.0 mm,以35.0 mm的焦距獲取分辨率為540×960像素的圖像。數(shù)據(jù)集還區(qū)分為純凈版本和最終版本,純凈版本包含發(fā)光和陰影的特殊場(chǎng)景,最終版本包含動(dòng)態(tài)模糊和散焦模糊的場(chǎng)景。數(shù)據(jù)集共包含40 024對(duì)視圖,由26 760對(duì)包含懸浮物體場(chǎng)景的FlyingTing3D,8 864對(duì)包含靜態(tài)立體卡通猴子場(chǎng)景的Monkaa,以及4 400對(duì)包含合成立體交通場(chǎng)景的Driving 3個(gè)子數(shù)據(jù)集組成。KITTI數(shù)據(jù)集是一個(gè)包含真實(shí)世界道路場(chǎng)景的立體匹配數(shù)據(jù)集。該數(shù)據(jù)集由安裝在車輛中的2只彩色攝像機(jī)和2只灰度攝像機(jī)PointGray Flea2(頻率為10 Hz,分辨率為1 392×512像素,開度角為90°×35°)來獲取道路場(chǎng)景的立體視頻,并采用三維激光傳感器Velodyne HDL(頻率為10 Hz,64個(gè)激光束,范圍為100 m)來獲取稀疏度為50%的真實(shí)光流與視差值。KITTI 2012數(shù)據(jù)集于2012年提出,在2015年擴(kuò)展成為KITTI 2015,它采用不同的評(píng)價(jià)指標(biāo)對(duì)特定的測(cè)試集進(jìn)行在線視差圖評(píng)估。與其他數(shù)據(jù)集相比,KITTI數(shù)據(jù)集中包含鄉(xiāng)村、城市及高速公路等真實(shí)場(chǎng)景,數(shù)據(jù)集涵蓋了遮擋、不連續(xù)、反射、重復(fù)紋理和無紋理等場(chǎng)景,以供各種立體匹配網(wǎng)絡(luò)進(jìn)行全面評(píng)估。
本試驗(yàn)使用的測(cè)試平臺(tái)設(shè)置如下:處理器為Intel(R) Core(TM) i7-9700,處理器主頻為3.0 GHz,內(nèi)存為32 GB,顯卡為11 GB Nvidia GTX 2080Ti,操作系統(tǒng)為Win10;相關(guān)的支持軟件有Anaconda、Python3.6、Cuda10.0、Pytorch1.3.0和GCC5.3等。訓(xùn)練時(shí),所有的模型都采用了Adam優(yōu)化器,以β1=0.9,β2=0.999的參數(shù)進(jìn)行優(yōu)化,并且首先在場(chǎng)景流數(shù)據(jù)集中進(jìn)行10個(gè)周期的預(yù)訓(xùn)練,然后在KITTI數(shù)據(jù)集中預(yù)訓(xùn)練300個(gè)周期和微調(diào)50個(gè)周期??紤]到Nvidia GTX 2080Ti僅有11 GB的顯示內(nèi)存,試驗(yàn)中僅將batchsize的參數(shù)設(shè)置為2,這樣在損失值平穩(wěn)下降的過程中可以保證具有足夠的顯示內(nèi)存進(jìn)行訓(xùn)練。
多尺度引導(dǎo)聚合網(wǎng)絡(luò)(MSGANet)由金字塔池化網(wǎng)絡(luò)和沙漏堆疊網(wǎng)絡(luò)組成。輸入的樣本圖像首先經(jīng)過含有多層卷積和殘差模塊的二維特征提取網(wǎng)絡(luò),獲取更大的感受野后采用4個(gè)不同尺寸的卷積核進(jìn)行空間金字塔池化以消除卷積神經(jīng)網(wǎng)絡(luò)對(duì)尺寸的約束。對(duì)提取特征后的左右視圖進(jìn)行差異計(jì)算以生成用于代價(jià)聚合的四維代價(jià)空間。MSGANet用權(quán)重相乘的方式來替代權(quán)重累加,使半全局立體匹能加入整個(gè)神經(jīng)網(wǎng)絡(luò)進(jìn)行回歸訓(xùn)練。MSGANet在代價(jià)聚合的過程中在卷積與反卷積步驟中摻雜了多個(gè)SGA層,SGA層在4個(gè)方向上對(duì)代價(jià)進(jìn)行評(píng)估以優(yōu)化生成視差圖的邊緣部分,提高計(jì)算效率。雖然代價(jià)聚合過程中SGA能更準(zhǔn)確地定位場(chǎng)景中物體的邊緣,但由于網(wǎng)絡(luò)中多次上下采樣,不可避免地造成部分信息的損失。為了進(jìn)一步解決這個(gè)問題,我們采用了具有3個(gè)引導(dǎo)濾波器的LGA層,將濾波數(shù)組與代價(jià)空間進(jìn)行加權(quán)求和來重新定義最后獲得的視差圖邊緣。在整個(gè)網(wǎng)絡(luò)中,原本需要用戶自定義的超參數(shù)都被自適應(yīng)權(quán)重所替代,這些參數(shù)由二維引導(dǎo)子網(wǎng)絡(luò)與整個(gè)立體匹配網(wǎng)絡(luò)一起訓(xùn)練生成;子網(wǎng)絡(luò)中以原本的RGB圖像作為輸入,訓(xùn)練過程中對(duì)每個(gè)需要的參數(shù)進(jìn)行歸一化并將其重塑為SGA層與LGA層需要的權(quán)重再輸入下一個(gè)訓(xùn)練周期;最后,采用softmax得到概率乘上對(duì)應(yīng)的視差以獲得最后的真實(shí)視差,生成精確的視差圖。進(jìn)行回歸訓(xùn)練時(shí),對(duì)預(yù)訓(xùn)練與微調(diào)過程都采用了平滑的L1損失函數(shù),來評(píng)估生成視差與真實(shí)視差之間的差距,持續(xù)進(jìn)行迭代,直至獲取最準(zhǔn)確的視差圖。MSGANet結(jié)構(gòu)如圖1所示。
圖1 多尺度代價(jià)聚合網(wǎng)絡(luò)的結(jié)構(gòu)Fig.1 Architecture overview of MSGANet
為了提高M(jìn)SGANet在微調(diào)時(shí)獲取模型的效果,本研究提出了一種改進(jìn)的損失函數(shù)計(jì)算策略?,F(xiàn)階段的立體匹配方法,在整個(gè)訓(xùn)練過程中采用平滑的L1損失函數(shù)對(duì)預(yù)測(cè)值與真實(shí)值進(jìn)行差距評(píng)估。由圖2可知,在預(yù)訓(xùn)練過程中預(yù)測(cè)值與真實(shí)值之間的差距越大所對(duì)應(yīng)的L2損失函數(shù)的梯度比平滑的L1損失函數(shù)就越大,因此L2損失函數(shù)具有更快的收斂性。在該過程中L2損失函數(shù)采用平方項(xiàng)增大了預(yù)測(cè)值與真實(shí)值之間的差距,容易造成梯度爆炸。但是考慮到立體匹配預(yù)訓(xùn)練的任務(wù)的目的是獲取足夠收斂的初始模型參數(shù),并且所采用的大型場(chǎng)景流數(shù)據(jù)集中的大量樣本可以提高訓(xùn)練中損失值的穩(wěn)定性。結(jié)合以上原因,在預(yù)訓(xùn)練過程中所采用L2損失函數(shù)可以獲取更快的收斂速度,并沒有梯度爆炸的風(fēng)險(xiǎn)。在圖2中紅圈所示的微調(diào)過程中,平滑的L1損失函數(shù)相比于L2損失函數(shù)具有更小的梯度,能更好地克服微調(diào)時(shí)離群值對(duì)損失值的影響。因此本試驗(yàn)在預(yù)訓(xùn)練時(shí)采用L2損失函數(shù),在微調(diào)過程時(shí)再改為平滑的L1損失函數(shù)進(jìn)行計(jì)算。改進(jìn)的損失計(jì)算策略如式(1)所示。
圖2 平滑的L1損失函數(shù)與L2損失函數(shù)示意圖Fig.2 Diagram of smooth L1 loss and L2 loss function
(1)
MSGANet模型在KITTI數(shù)據(jù)集上采用如式(2)所示的端點(diǎn)誤差(endpoint-error,EPE)進(jìn)行性能評(píng)估,以獲取整體的像素平均錯(cuò)誤率。
(2)
為了證明我們的改進(jìn)是有效的,將我們提出的網(wǎng)絡(luò)與同樣采用了空間金字塔池化模塊但沒有采用SGA與LGA的PSMNet網(wǎng)絡(luò)進(jìn)行對(duì)比試驗(yàn)。兩個(gè)對(duì)比的網(wǎng)絡(luò)在場(chǎng)景流數(shù)據(jù)集上進(jìn)行預(yù)訓(xùn)練時(shí),圖像會(huì)隨機(jī)剪裁為高240像素和寬512像素的尺寸以達(dá)到圖像增強(qiáng)的目的,視差搜索的最大值Dmax設(shè)置為192像素。KITTI數(shù)據(jù)集僅具有200對(duì)訓(xùn)練集與200對(duì)測(cè)試集,如果直接用于訓(xùn)練容易出現(xiàn)過擬合現(xiàn)象導(dǎo)致模型的泛化性差。因此,我們將大型數(shù)據(jù)集場(chǎng)景流劃分為35 454對(duì)訓(xùn)練集、1 000對(duì)驗(yàn)證集和3 570對(duì)測(cè)試集進(jìn)行0.01的學(xué)習(xí)率的10個(gè)周期預(yù)訓(xùn)練。KITTI數(shù)據(jù)集我們采用0.01的學(xué)習(xí)率訓(xùn)練了300個(gè)周期再以0.001的學(xué)習(xí)率訓(xùn)練50個(gè)周期,以確保訓(xùn)練后的模型可以獲取最小的損失值。將PSMNet與MSGANet生成的視差圖結(jié)果上傳至KITTI官方網(wǎng)站進(jìn)行KITTI 2012與KITTI 2015指標(biāo)的評(píng)估對(duì)比,結(jié)果見表1。由表可知,在代價(jià)聚合中增加了半全局引導(dǎo)聚合層與局部引導(dǎo)聚合層的MSGANet的精度后,要比原本采用三維堆疊沙漏卷積的PSMNet在KITTI2012以3像素為閾值的所有測(cè)評(píng)結(jié)果提高0.18%,在KITTI2015的所有區(qū)域整體評(píng)估中增加了0.32%的準(zhǔn)確率。這表明半全局引導(dǎo)聚合層與局部引導(dǎo)聚合層通過考慮當(dāng)前像素周圍的代價(jià)與最后的濾波操作,解決了三維堆疊沙漏網(wǎng)絡(luò)上下采樣帶來的精度損失問題。與表1對(duì)應(yīng)的可視化對(duì)比結(jié)果如圖3所示,在可視化對(duì)比的3組中,挑選出了場(chǎng)景中包含細(xì)小物體、無紋理區(qū)域及背光區(qū)域的場(chǎng)景做對(duì)比。由圖3(b)可知,PSMNet無法保證在這些場(chǎng)景中物體的完整性,產(chǎn)生了大量的誤匹配點(diǎn);由圖3(c)可知,MSGANet由于在訓(xùn)練過程中充分考慮了全局信息,因此可以克服場(chǎng)景中包含物體不完整的缺點(diǎn)。
表1 PSMNet和MSGANet在KITTI 2012與KITTI 2015上的測(cè)評(píng)結(jié)果Table 1 Evaluation results of PSMNet and MSGANet on KITTI 2012 and KITTI 2015
圖3 KITTI數(shù)據(jù)集采用PSMNet與MSGANet獲取的可視化結(jié)果Fig.3 Visual comparison of PSMNet and MSGANet on KITTI dataset
本試驗(yàn)將改進(jìn)損失函數(shù)的多尺度引導(dǎo)聚合網(wǎng)絡(luò)(multi-scale guided aggregation network changed,MSGANet-C)與MC-CNN-art、ESMNet、GC-Net、DFNet、DSMNet、DispletC、PSMNet、Deeppruner及GWC-Net等網(wǎng)絡(luò)進(jìn)行了比較。圖4為MSGANet-C與在PSMNet、Deeppruner及GWC-Net的可視化對(duì)比。從圖4中的第1列中具有反射區(qū)域場(chǎng)景的對(duì)比結(jié)果中可以看出,大部分深度學(xué)習(xí)立體匹配依然會(huì)產(chǎn)生很多的誤匹配點(diǎn),這是由于在反光區(qū)域中沒有明顯的特征可以用來提取,因此在代價(jià)聚合期間會(huì)導(dǎo)致視差圖在這部分產(chǎn)生很多的噪聲點(diǎn)。為了解決這類問題,采用多尺度空間金字塔池化層,能有效利用不同尺度的上下文信息使獲取的特征圖更具魯棒性。在圖4的第二列包含細(xì)小物體和第三列具有背光物體的場(chǎng)景中,由于很難將前景物體與背景物體區(qū)分開,很容易導(dǎo)致生成的視差不連續(xù),因此在特征提取之后,我們采用的SGA在代價(jià)聚合過程中考慮了多個(gè)方向上的代價(jià),可以有效地抑制離群值在其他方向?qū)Υ鷥r(jià)計(jì)算的干擾以獲取更為清晰的視差圖中物體的輪廓。
圖4 4種網(wǎng)絡(luò)結(jié)構(gòu)在KITTI數(shù)據(jù)集上的可視化對(duì)比結(jié)果Fig.4 Visual comparison of four networks of KITTI dataset
表2為MSGANet-C與9種網(wǎng)絡(luò)對(duì)KITTI 2012與KITTI 2015的評(píng)估結(jié)果。MSGANet-C在以3像素為閾值的KITTI 2012數(shù)據(jù)集與所有區(qū)域進(jìn)行整體評(píng)估的KITTI 2015數(shù)據(jù)集中,比首次采用三維卷積的端到端網(wǎng)絡(luò)GC-Net精度要高0.61%與0.82%。并且在KITTI 2015的評(píng)估結(jié)果中,MSGANet-C對(duì)背景中的評(píng)估結(jié)果與近些年來提出的DFNet、DSMNet、GWC-Net的結(jié)果相似,但是對(duì)前景的深度估計(jì)比這3種網(wǎng)絡(luò)有更大的優(yōu)勢(shì),因此整體評(píng)估精度分別比這3種網(wǎng)絡(luò)高0.10%、0.09%與0.16%。這是因?yàn)椴捎昧税肴志酆蠈涌紤]了多個(gè)方向的代價(jià),可以更好地區(qū)分前景的目標(biāo)邊緣,從而有效地改善前景的精確度。
表2 MSGANet-C與9種網(wǎng)絡(luò)對(duì)KITTI 2012與KITTI 2015的評(píng)估結(jié)果Table 2 MSGANet-C evaluation results with 9 types of networks on KITTI 2012 and KITTI 2015
為了立體匹配能在雙目成像領(lǐng)域獲取更好的視差效果,我們提出了一種視差生成網(wǎng)絡(luò)MSGANet。該網(wǎng)絡(luò)采用多尺度空間“金字塔”池化進(jìn)行特征提取,生成四維代價(jià)空間,并用半全局聚合層(SGA)和局部引導(dǎo)聚合(LGA)進(jìn)行代價(jià)聚合。為了證實(shí)我們的改進(jìn)是有效的,我們?cè)诖笮秃铣蓴?shù)據(jù)集場(chǎng)景流數(shù)據(jù)集上進(jìn)行預(yù)訓(xùn)練,并在KITTI 2012和KITTI 2015上進(jìn)行微調(diào)。試驗(yàn)結(jié)果表明,MSGANet-C將KITTI 2012的準(zhǔn)確性提升至98.31%,KITTI 2015準(zhǔn)確性提升至97.95%。在未來的研究工作中,我們將側(cè)重于提升網(wǎng)絡(luò)的運(yùn)行速度,在檢測(cè)場(chǎng)景中車輛的同時(shí)獲取物體與車輛間的距離,以適應(yīng)復(fù)雜的道路狀況。