羅志斌, 項志宇, 劉 磊
(浙江大學 信息與電子工程學院,浙江 杭州 310007)
從圖像估計場景深度和相機位姿信息在自主導航、3D重建、增強和虛擬現(xiàn)實等中具有廣泛的應用。傳統(tǒng)方法主要是基于圖像匹配原理,利用匹配的特征點來計算場景深度和相機位姿。該類傳統(tǒng)方法對相機參數(shù)較為敏感,在部分場景如弱紋理、運動模糊以及光照變化的情況下魯棒性較低。
近年來,隨著深度學習在計算機視覺領域的巨大成功,使用深度學習的方法來實現(xiàn)單目圖像深度與位姿估計問題也逐步受到關注,主要出現(xiàn)了有監(jiān)督和無監(jiān)督兩類方法。有監(jiān)督的方法直接利用深度和位姿真值擬合回歸模型,訓練需要大量深度和位姿真值,往往是難以獲得的。無監(jiān)督方法將深度和位姿估計問題轉化為視圖重建問題,訓練不需要深度和位姿真值,克服了訓練真值難以獲得的問題。2018年,Babuv M等人[1]提出的UnDEMoN模型是無監(jiān)督方法的典型代表,并且取得了該類方法當時最好的效果。
本文在UnDEMoN模型的基礎上,保持其基本網(wǎng)絡模型不變,提出了三種優(yōu)化改進措施:一是低尺度視差上采樣重建;二是增加前后幀深度一致性約束;三是引入多種掩模。實驗效果顯示,通過這些優(yōu)化改進措施,模型預測的精度得到了有效提升。
優(yōu)化模型以UnDEMoN為基本框架,框架如圖1,包含深度預測網(wǎng)絡DispNet(圖2 上)和位姿預測網(wǎng)絡PoseNet(圖2)兩個子網(wǎng)絡。深度預測子網(wǎng)絡輸入左視圖,輸出左右視圖相對視差圖,進而可以分別重構出左右視圖。位姿預測子網(wǎng)絡輸入左視圖序列,輸出相鄰視圖之間的相對位姿,結合深度預測網(wǎng)絡預測的視差圖,可以實現(xiàn)前后視圖間的重構??蚣芡瑫r利用左右和前后的視圖重構誤差作為約束訓練網(wǎng)絡。模型訓練時兩個網(wǎng)絡耦合訓練,但預測時可以單獨使用。模型使用立體圖像對序列進行訓練,訓練好的模型預測的深度和位姿是具有尺度的。
圖1 UnDEMoN框架
圖2 網(wǎng)絡結構[1]
UnDEMoN的損失函數(shù)主要包括視圖重建損失、視差圖平滑損失和左右視差一致性損失三部分,三分部損失按一定權重相加。
1)視圖重建損失定義為結構相似性和光度誤差的加權組合形式
(1)
式中Iij,ij分別為原視圖和重構的視圖,SSIM為結構相似性函數(shù),是一種度量圖像之間相似度的方法。是Babuv M等人[1]引入的一個Charbonnier penalty目標函數(shù),是絕對值范數(shù)的一個可微變體,這個目標函數(shù)對異常值和噪聲具有較強的魯棒性??偟囊晥D重建損失同時包括左右圖像重建損失和前后圖像重建損失,按一定權重相加。
2)具有邊緣感知的視差圖平滑損失
(2)
式中Iij為原視圖,dij為相應視差圖,i,j為視圖的某一像素坐標,N為像素總數(shù)。
3)左右視差一致性損失
(3)
以視圖重建損失作為約束訓練網(wǎng)絡是無監(jiān)督訓練的核心思想,視圖重建主要分為像素坐標投影和雙線性圖片采樣兩個步驟完成。
1)基于視差的左右?guī)袼刈鴺送队暗耐队瓣P系為
(4)
2)基于深度和位姿的前后幀像素坐標投影關系為
(5)
(6)
圖3 雙線性插值圖像采樣
由于雙線性圖片采樣具有梯度局部性,為了防止訓練目標陷入局部極小點,UnDEMoN模型采用多尺度視差預測和圖像重建,在計算重建誤差時將各個尺度上的重建誤差相加求平均值。這樣低尺度的視圖重建在場景有大面積平滑區(qū)域時容易造成視差圖“孔洞”問題。為此,借鑒Godard等人[2]的方法將低尺度的視差上采樣到原始圖片大小,然后進行原始尺寸的視圖重建和計算損失。
由于UnDEMoN模型主要依靠重建光度損失約束訓練網(wǎng)絡,要求場景具有光度不變性。在光照變化的情況下,魯棒性變差。為此,受文獻[3]的啟發(fā),通過約束前后幀之間深度的一致性來增加幾何空間一致性約束。如圖4所示。
圖4 深度一致性約束和掩模[3]
(7)
在計算重建誤差時,一些像素的重建誤差可能不利于模型的訓練,如投影越界,場景不符合靜態(tài)假設等像素。通過掩模優(yōu)化來屏蔽或減小這些像素對模型訓練的影響。
2.3.1 投影有效性掩模
由于相機自運動,相鄰幀之間進行投影重建時,有些像素投影的坐標可能超過了視圖的坐標范圍。采用一個投影有效性掩模Mp來標記每一個像素坐標。當某像素投影坐標在視圖范圍內時,標記Mp的值為1,否則為0。利用這個投影掩模Mp,在計算重建誤差時,可以屏蔽掉投影越界的像素的重建誤差。
2.3.2 靜態(tài)像素掩模
自監(jiān)督訓練的前提假設是相機運動和場景靜態(tài)。當這一假設被打破時,例如相機靜態(tài)或場景中有動態(tài)物體,模型效果會受到很大影響。觀察發(fā)現(xiàn),相鄰幀之間同一位置像素值保持不變的情況,通??赡苡腥N情況造成:1)相機本身靜止;2)物體與相機保持相對靜止運動;3)像素處于弱紋理區(qū)域。這三種情況都不利于網(wǎng)絡的訓練。為此,設計了一個掩模Ms將前后幀中像素值沒有明顯變化的像素在計算重建誤差時屏蔽掉。主要的做法是如果前后幀經(jīng)過重投影的光度誤差小于前后幀直接計算的光度誤差,則該像素的Ms的值為1,反之為0。Ms的元素取值μ定義如下
在華山醫(yī)院的努力和支持下,上海市腦卒中臨床救治網(wǎng)絡的建設有效地推進了腦卒中救治工作,也進一步推動了全市腦卒中救治能力的整體攀升。
μ=[pe(It,It′→t) (8) 式中 []為艾佛森括號,如果方括號內的條件滿足則為1,不滿足則為0。 2.3.3 深度一致掩模 增加深度一致性約束后,通過實驗發(fā)現(xiàn)Ddiff值比較大往往出現(xiàn)在三種情況下:1)場景中有動態(tài)物體;2)場景中存在遮擋;3)困難區(qū)域的錯誤預測,這三種情況都不利于網(wǎng)絡的訓練。為此,基于Ddiff設計了一個深度不一致掩模Mdiff。定義Mdiff=1-Ddiff,Mdiff每一個元素的取值范圍在[0,1]之間。當Ddiff很大時,Mdiff權重則很小,從而減少上述三種不利情況對重建誤差的影響。 本文模型基于Tensorflow框架進行實現(xiàn),總共有大約3 500萬個參數(shù),使用一塊GeForce GTX顯卡,訓練3萬張圖片,經(jīng)過20萬次訓練迭代,大約35 h達到基本收斂。使用Adam優(yōu)化器進行訓練,設置參數(shù)β1=0.9,β2=0.99。初始化學習速率為0.000 1,經(jīng)過3/5的迭代后,學習速率降低了50 %并且在下一個4/5的迭代之后進一步減少50 %。 本文采用KITTI原始數(shù)據(jù)集進行訓練,數(shù)據(jù)集采用Eigen等人[4]的方法進行分割。訓練集包括21 055張圖片,驗證集包括2 123張圖片。在訓練集圖像上應用不同類型的數(shù)據(jù)增強,隨機概率為0.5,提高訓練集圖像的多樣性。數(shù)據(jù)增強主要包括圖像翻轉和色彩增強。顏色增強包括在[0.5,2.0]范圍內應用隨機亮度采樣,在[0.8,1.2]范圍內應用隨機伽馬和改變顏色。 本文采用文獻[4]中所提的指標對深度預測進行評估。為了驗證各項優(yōu)化措施的有效性,進行了剝離實驗,在基本框架UnDEMoN的基礎上,逐步加入各項優(yōu)化改進措施,實驗結果見表1。從表中可以看出各項優(yōu)化改進措施對模型都有一定的提升。 表1 剝離實驗誤差比較 表2是與當前主要方法比較的結果,其中,單/雙表示訓練過程中用了單目還是雙目圖像。從表2可以看出,優(yōu)化模型精度大幅超越當前主要方法的精度。 表2 深度評估性能 為了直觀地顯示深度網(wǎng)絡的效果,將網(wǎng)絡預測的視差進行可視化,如圖5,從視差圖的顯示效果來看,本文的方法顯示的視差圖細節(jié)表現(xiàn)更好,預測的物體邊緣更鋒銳。 圖5 視差圖可視化 本文模型是在KITTI數(shù)據(jù)集Eigen分割[4]上進行深度估計訓練的,發(fā)現(xiàn)具有真值的4個視覺里程計序列沒有包含在訓練集中,因此可以用來測試位姿估計性能。位姿估計采用絕對軌跡誤差(ATE)來量化姿態(tài)估計的性能。表3為本文模型、UnDEMoN[1]、SfMLearner[5]和一種傳統(tǒng)的位姿估計方法VISO[6]的性能比較。由于SfMLearner是基于單目視頻數(shù)據(jù)訓練的模型,網(wǎng)絡預測的結果是缺少尺度的,需要經(jīng)過后處理恢復尺度。在表3中,SfMLearner_PP是經(jīng)過尺度后處理的結果,SfMLearner_noPP是沒有經(jīng)過尺度后處理的結果。VISO_S是雙目版本的結果,VISO_M是單目版本的結果。表格顯示的結果表現(xiàn)超過了UnDEMoN,SfMLearner_noPP和VISO_M,并且可以和SfMLearner_PP和VISO_S 使用立體圖像進行位姿估計的方法相媲美。由于KITTI訓練數(shù)據(jù)集具有旋轉變化的場景非常少,深度網(wǎng)絡不能很好地學習旋轉變量,導致長距離積累較大的位姿誤差,如圖6所示。 表3 位姿性能 圖6 位姿預測軌跡 本文對無監(jiān)督單目圖像的深度和位姿估計問題進行了深入研究。在模型UnDEMoN的基礎上,通過優(yōu)化損失函數(shù),增加約束條件,引入多種掩模等手段,進行集成優(yōu)化,有效提高了模型預測效果。雖然引入掩模在一定程度上緩解了場景不滿足靜態(tài)假設的問題,但要完全解決場景中動態(tài)物體對模型的影響,還需要進一步做深入的研究。此外,由于KITTI數(shù)據(jù)集旋轉變化并不多,本文模型在姿態(tài)的估計方面效果還并不是很好。分析是通過對具有更多旋轉變化的數(shù)據(jù)集進行訓練,可以進一步提高網(wǎng)絡的姿態(tài)估計性能。下一步考慮利用單目圖像和有噪聲的IMU數(shù)據(jù)來訓練深度網(wǎng)絡,以消除網(wǎng)絡目前需要的立體圖像對的需要,這些問題將指導今后的研究方向。3 實驗與評估
3.1 實驗設置
3.2 KITTI原始數(shù)據(jù)集
3.3 在KITTI數(shù)據(jù)集上的深度評估
3.4 在KITTI數(shù)據(jù)集上的位姿評估
4 結束語