張偉, 黃娟, 顧寄南, 黃則棟, 李興家, 劉星
(江蘇大學機械工程學院, 鎮(zhèn)江 212000)
立體匹配是計算立體彩色圖像對的對應點偏差以獲得密集視差圖的過程。它廣泛應用于雙目測距[1]、自動駕駛[2]、三維重建[3]、機器人導航等領域。作為雙目視覺系統(tǒng)的核心技術,立體匹配精度決定著整個系統(tǒng)的性能。傳統(tǒng)算法將立體匹配過程分為代價計算、代價聚合、視差計算和視差優(yōu)化四個步驟。但隨著深度學習在計算機視覺領域的廣泛應用與快速發(fā)展,基于卷積神經網絡(convolutional neural network,CNN)的端到端立體匹配算法逐漸代替了傳統(tǒng)算法。相比于傳統(tǒng)算法,立體匹配算法有著更高的匹配精度且不需要繁雜的手動操作步驟。
Mayer等[4]提出Disp-Net(disparity network),構造了第一個端到端的立體匹配網絡,提出用卷積代替WTA(winner take all)直接回歸視差。Kendall等[5]提出GC-Net(geometry and context network),第一次利用3D卷積的概念去獲得更多的上下文信息,并采用回歸的方法去預測視差值。Chang等[6]]提出PSM-Net(pyramid stereo matching network),首次引入了金字塔池化模塊[7]將全局環(huán)境信息結合到圖像特征中并提出了一個堆疊的沙漏3D CNN來擴展匹配代價卷中的上下文信息。Guo等提出Gwc-Net(group-wise correlation stereo network)[8],在構建代價體時采用分組相關和通道拼接兩種方法,組成聯合代價提并簡化3D聚合網絡。此時立體匹配網絡的匹配精度達到最高。
上述方法均致力于研究聚合更多上下文信息,解決反射、弱紋理等不適定區(qū)域的匹配精度問題。但隨著3D聚合網絡的提出,使得深度學習立體匹配網絡參數量劇增,模型運行時間長。因此,Xu等[9]提出的AA-Net(adaptive aggregation network)用同尺度聚合模塊(intra-scale cost aggregation,ISA)和跨尺度聚合模塊(cross-scale cost aggregation,CSA)代替原網絡模型中的3D卷積聚合模塊;Xiao等[10]將輕量化shuffle net應用于3D聚合網絡,提出了一種高效的輕量級體系結構。最近的研究趨勢偏向于輕量級立體匹配網絡,但帶來的問題是其匹配精度也隨之減低。
針對上述問題,現嵌入聯合注意力機制和空洞金字塔池化(atrous spatial pyramid pooling,ASPP)[11]模塊,用3D深度可分離卷積代替標準3D卷積,提出一種新的輕量級高精度算法CAS-Net。嵌入的卷積塊注意力機制先將提取特征在空間和通道維度進行加權,從而提高重要特征的表征能力并抑制不必要的特征,在利用空洞金字塔池化(ASPP)模塊選擇不同膨脹率的空洞卷積來擴大感受野,提取多尺度的上下文信息。最終將多尺度特征通過組相關和級聯的方式形成聯合代價體,送入新的輕量級特征聚合網絡對聯合代價體進行學習。從而生成一個性能更好的特征提取網絡和更加輕量的特征聚合網絡。
本文所提出的CSA-Net算法以Gwc-Net為基準,此模型在特征提取部分運用二維標準卷積,在3D聚合網絡部分運用三維深度可分離卷積。根據參數量計算原理:F×F×F×Cin×Cout(F為卷積核大小,Cin為輸入通道,Cout為輸出通道),本模型運用三維深度可分離卷積,在模型復雜度上優(yōu)于基準網絡。
算法模型如圖1(a)所示。整體網絡模型分為4個部分:特征提取,構建代價體,特征聚合,視差回歸。具體算法流程為:將兩張左右RGB圖像輸入特征提取網絡進行權重共享特征提取,隨后在視差維度整合左右特征,利用級聯(Concat)和組相關(Group-wise correlation)的方式形成聯合4D匹配代價體(cost volume),再將4D匹配代價體送入特征聚合網絡,聚合空間和通道維度的信息,學習匹配成本(cost)估計,最后將學習到的cost進行上采樣恢復原圖大小后通過SoftMax回歸預測視差,輸出最終視差圖。
圖1 網絡模型結構圖Fig.1 Network model structure diagram
鑒于很多立體匹配算法的特征提取網絡并未對輸入圖像的通道和空間維度進行加權關注與抑制,且對于現實場景中的反射和遮擋等不適定區(qū)域,原網絡并未能夠提供多尺度的上下文信息。因此本文所提出的網絡針對上述問題上加入了聯合注意力機制[圖2(a)]與空洞金字塔池化(ASPP)模塊[圖2(b)]。
聯合注意力機制如圖2(a)所示,由通道注意力[12]和空間注意力[13]組成。聯合注意力機制根據空間和通道的兩個維度分別計算相應的特征圖,從而引導模型更加關注圖像中最具辨別力的區(qū)域,以提高模型任務的準確性。通道注意力模塊Mc提取對目標具有高貢獻的通道注意力圖,空間注意力模塊Ms以級聯方式提取空間注意力圖,以獲得最終輸出。全局最大池化操作可以獲得目標之間最多樣的特征,這有助于推斷更精確的渠道注意力。因此,同時對于空間和通道注意力均同時使用全局平均池化[14]和全局最大池化[14]。對于大小為C×H×W(C為通道數,H為特征圖高,W為特征圖寬)的特征圖F,經過最大池化層和平均池化層,將特征圖在空間維度壓縮為C×1×1,然后經過共享全連接模塊得到兩個結果并進行相加,再通過一個sigmoid激活函數得到通道注意力的輸出結果Mc,表達式為
Mc=?{FC[max(F)]+FC[avg(F)]}
(1)
式(1)中:FC為全連接操作;?()為sigmoid函數;max()和avg()為最大池化和平均池化操作。最后將輸出結果乘以輸入特征F得到F′,即
F′=McF
(2)
并作為空間注意力的輸入。F′通過全局最大池化和全局平均池化得到兩個1×H×W的特征圖,然后經過拼接操作對兩個特征圖進行拼接,通過7×7卷積變?yōu)橥ǖ罃禐?的特征圖,再經過一個sigmoid得到空間注意力的輸出結果Ms,即
圖2 聯合注意力機制和空間金字塔池化模塊Fig.2 Joint attention mechanism and spatial pyramid pooling module
Ms=?{conv7×7[max(F′);avg(F′)]}
(3)
式(3)中:conv7×7為大小為7×7的卷積操作。最后乘以空間注意力的輸入F′得到聯合注意力的最終輸出特征圖F″,即
F″=MsF′
(4)
空洞金字塔池化(ASPP)模塊如圖2(b)所示,對輸入特征圖以擴張率分別為1、6、12、18的空洞卷積同時進行稀疏采樣,然后將采樣得到的特征圖在通道維度進行拼接,擴大通道數;最后通過1×1的卷積將通道數調整為理想輸出通道數??斩淳矸e在不引入額外參數的情況下設置卷積擴張率,增大卷積的感受野可以捕獲多尺度上下文信息,進一步利用學到的上下文來提高特征的可辨識度。
特征提取網絡如圖1(b)所示,先通過一個由3組3×3卷積+BN層+ReLU組成的first conv 進行左右圖像特征預提取,隨后將得到的特征輸入聯合注意力機制進行不同維度的加權操作,關注不同維度的有效特征。經過聯合注意力機制加權后的特征圖將被送入4組類ResNet[15]網絡進行深度特征提取,將最后3組特征圖在通道維度進行拼接得到320通道的特征圖,將320通道的特征圖輸入空洞金字塔模塊進行多尺度上下文信息的提取,最終的輸出特征圖保持320通道。
許多其他計算機視覺問題需要3D卷積來對4D數據進行操作,最近出現了使用3D卷積進行立體匹配的前景,其中3D卷積用于處理4D成本數據。但是3D卷積的使用會造成網絡參數量激增,例如一個2D卷積的參數量為F×F×Cin×Cout,而一個3D卷積的參數量為F×F×F×Cin×Cout(F為卷積核大小,Cin為輸入通道,Cout為輸出通道)。因此相同情況下一個3D卷積的參數量為2D卷積的F倍,這導致了網絡模型復雜化,運行時間長。
在本文中,構建的匹配代價體(cost volume)在C×H×W的基礎上增加了深度維度,即為一個C×D×H×W的4D數據,因此也需要用3D卷積聚合網絡來處理4D匹配代價體數據。3D聚合網絡如圖1(c)所示,該網絡由一個預沙漏模塊(4個標準卷積)和3個堆疊的3D沙漏網絡組成。本文主要目的是將立體匹配網絡輕量化,運用標準3D卷積構成沙漏模塊會增加網絡模型參數量,所以本文提出將2D輕量級深度可分離卷積[16]提升到3D,代替原來聚合網絡沙漏模塊中的標準3D卷積從而降低參數量減少運行時間。
2D深度可分離卷積如圖3(a)所示,3D深度可分離卷積如圖3(b)所示。由于輸入卷積操作的數據由3D變?yōu)?D,因此其卷積核大小也由原來的F×F變?yōu)镕×F×F。3D深度可分離卷積由一個3D深度卷積和一個3D點卷積組成。首先,利用深度卷積在通道維度進行逐一特征卷積,其次利用一個點卷積實現通道維度的特征信息融合,且通過一個1×1×1的卷積降低參數量。3D深度可分離卷積的參數量為F×F×F×Cin+1×1×1×Cin×Cout(F為卷積核大小,Cin為輸入通道,Cout為輸出通道)。假設F=3,Cin=32,Cout=16,將數據代入上述標準3D卷積與3D深度可分離卷積,可得標準3D卷積參數量為13 824,3D深度可分離卷積參數量為1 376。因此可知在相同輸入與輸出的情況下,3D深度可分離卷積參數量僅約為3D標準卷積參數量的1/10,基于此實現網絡的輕量化。
圖3 2D和3D可分離卷積Fig.3 2D and 3D depth separable convolution
4D匹配代價體(cost volume)由特征聚合網絡聚合后得到匹配代價cost,將匹配代價送入視差回歸模塊,通過兩個標準3D卷積將通道維度壓縮至1通道, 在使用進行上采樣操作將視差圖恢復到原圖大小。由網絡結構圖可看出本網絡共輸出4個預測視差圖,通過SoftMax函數運算預測匹配代價,計算在最大視差范圍內每個視差值的概率。本文采用soft-Argmin 回歸方法得到預測視差圖,即每個視差圖的預測視差Dpre被計算為每個視差d的總和,由其概率加權表示為
(5)
式(5)中:Dpre為預測視差;Dmax為最大視差值;d為范圍內視差值;Pd為d的概率。
本文采用平均絕對誤差L1[17]來評估視差預測效果。與均方誤差L2相比,平均絕對誤差L1的魯棒性更強,對異常點不敏感,所以使用L1的模型的誤差會比使用L2的模型對異常點敏感度更低。平均絕對誤差L1計算公式為
(6)
式(6)中:smoothL1(·)為損失函數;x為函數變量。每個輸出視差圖的平滑損失L1可表示為
(7)
式(7)中:N為視差圖像素總數;Dt,i為第i個像素的視差真值;Dpre,i為第i個像素預測視差值。為了充分利用輸出的4個預測視差圖,在計算損失時對每個輸出視差圖output 0,1,2,3分別分配不同的權重,則加權之后的模型總損失表示為
本文以CNKI為數據來源,在高級檢索中選擇“期刊檢索”,以“網絡信息行為”為檢索詞進行主題檢索,共檢索到322篇文獻,剔除不符合研究主題或者重復的文獻,共得到310篇文獻。
(8)
式(8)中:Kj為賦予預測視差圖的權重,j=0,1,2,3。
依據本實驗室現有硬件環(huán)境,本文實驗操作系統(tǒng)為Ubantu18.04,GPU型號為個 NVIDIA RTX 2080Ti,顯存大小為11 GB。算法在 Python3.8,Pytorch1.8框架下訓練,模型在訓練時采用Adam優(yōu)化器(β1=0.9,β2=0.999)進行梯度下降。為了驗證本文所提算法的性能,將算法在兩個常用數據集SceneFlow和KITTI上進行訓練測試驗證。
本文模型先使用SceneFlow數據集作為網絡的預訓練數據集進行預訓練,設置訓練迭代輪次為10輪。依據GPU顯存大小設置批量大小為2,初始學習率為0.001,當網絡迭代到第4輪和第6輪時,學習率分別下降一半,防止訓練過程中學習率過高導致模型過擬合。SceneFlow預訓練完成之后,得到的預訓練權重用于訓練KITTI數據集。對于KITTI數據集,設置訓練輪次為300輪,批量大小為2,初始學習率為0.001。當訓練到200輪后,網絡學習率下降為原來的10倍。參數設置完成后加載預訓練權重對KITTI數據集進行訓練。
2.2.1 SceneFlow
SceneFlow[18]數據集是一個大型的合成數據集,用來訓練立體匹配網絡。由Flyingthings3D、Driving和Monkaa三部分組成,共有35 454張訓練圖像和4 370張測試圖像,圖像大小為960×540。SceneFlow有Finalpass和Cleanpass兩個版本,在本文方法中使用Finalpass進行預訓練,因為它包含更多的運動模糊和散焦,比Cleanpass更接近真實世界。在深度學習立體匹配網絡中SceneFlow由于其樣本數量足夠大,通常被當作預訓練數據集增強網絡泛化性,以用于后期真實數據集的訓練。
2.2.2 KITTI12&15
KITTI 2012[19]和KITTI 2015數據集是一個面向自動駕駛場景的室外真實數據集。KITTI 2012提供194個訓練和195個測試圖像對,KITTI 2015提供200個訓練和200個測試圖像配對,圖像大小均為1 240×376。在訓練KITTI數據集錢前,需先將圖片在空間維度進行補“0”操作,將圖片大小擴充為1 248×384在訓練時,將訓練集按照80%和20%的比例劃分為訓練集和驗證集。
對于SceneFlow數據集,評估指標通常是端點誤差(end-point-error,EPE),即像素中的平均視差誤差,EPE可表示為
(9)
對于KITTI 2012,報告了非遮擋(noc)區(qū)域像素和所有(all)像素的預測誤差值超過設定閾值像素占像素百分比。對于KITTI 2015,針對背景(bg)、前景(fg)和所有(all)像素評估視差異常值D1的百分比(異常值D1即為誤差大于初定誤差閾值的預測視差。)本文中對于KITTI12誤差閾值設置均為2像素、3像素、5像素,KITTI15誤差閾值設置為3像素,以利于與其他算法進行實驗結果對比。
為了驗證CSM模塊、ASPP模塊和3D深度可分離卷積對于網絡匹配精度和運行速度的影響,在KITTI12和KITTI15數據集上測試3像素的誤差率,以此進行消融實驗。
如表1所示,當分別使用CSM模塊和ASPP模塊時,模型在兩個測試數據集上的匹配精度均比同時使用的精度低,且CSM模塊對匹配精度的影響較大。由表中運行時間可看出,CSM模塊和ASPP模塊對模型運行速度影響較小。
表1 不同模塊對網絡性能的影響Table 1 The impact of different modules on network performance
當使用本文所提出的3D深度可分離卷積時,模型匹配精度并未明顯降低,但是運行時間比使用標準3D卷積快了1/3。
本文旨在于在不損失網絡模型匹配精度的情況下降低網絡的參數量,減少網絡的運行時間。為驗證本文方法的有效性,分別利用KITTI12和KITTI15測試集在網絡訓練模型上進行測試得到預測視差圖。由于KITTI數據集官方未向使用者提供視差真值,所以將KITTI12的195張預測視差圖與KITTI15的200張預測視差圖上傳至KITTI官方得到匹配誤差值。
如表1所示,本文模型在KITTI15測試集上測試時,在全部像素(all)區(qū)域,背景異常值(D1,bg)相較于基準網絡模型GwcNet降低了0.05%,前景異常值(D1,fg)降低了0.49%。在非遮擋像素(noc)區(qū)域,背景異常值(D1,bg)降低了0.02%,前景異常值(D1,fg)降低了0.05%其可視化結果如圖4所示,從預測視差圖可看出對于如石桿、廣告牌等細節(jié)部位有較好的匹配精度。如表2所示,本文模型在KITTI12測試集上測試時,在誤差閾值為2 px和3 px時,其誤差率均優(yōu)于GwcNet,且在本文對比算法中達到最低。
如表3所示,本文模型的參數量相比于GwcNet大大減少,3D聚合網絡的參數量僅約為原算法的5/13,模型總參數量僅約為原算法的3/4。如表4所示,在運行時間上,本文模型訓練KITTI15數據集的一個迭代的時間約為1.01 s,原算法運行一個迭代的時間約為1.47 s,降低了約1/3,在訓練總時間上也減少了2.8 h,由此可看出本文所提出的算法相較于原算法實現了輕量化的目的。
圖4 KITTI15可視化結果Fig.4 Visualization Results of KITTI15
表2 不同方法在KITTI 15測試集上的結果比較Table 2 Comparison of results of different methods on KITTI 15 test set
表3 不同算法在KITTI 12測試集上的結果比較Table 3 Comparison of results of different algorithms on KITTI 12 test set
表4 不同算法模型參數量與運行時間的結果比較Table 4 Comparison of parameters and running time of different algorithm models
本文提出了基于聯合注意力(CSM)、空洞金字塔池化(ASPP)和3D深度可分離卷積的立體匹配算法來估計雙目圖像對的視差圖。通過實驗得出以下結論。
(1)由于在特征提取網絡引入聯合注意力可以在空間和通道兩個維度進行加權關注,且空洞金字塔池化(ASPP)利用不同膨脹率的卷積來擴大感受野,提取對尺度上下文信息,這提升了網絡對于不適定區(qū)域特征提取能力,進而將模型在KITTI 2012和2015數據集上在三像素匹配誤差率提高為1.44%和2.24%。
(2)在特征聚合網絡利。用3D深度可分離卷積代替標準卷積降低了網絡的參數量,減少了運行時間。通過最終利用網絡模型在不同數據集上測試的實驗結果表明,本文所提出的算法在不減少精度的情況下減少了模型參數量,運行時間降低了近1/3,解決了高精度與輕量化不能共存的問題。