解 宇,周 越
(上海交通大學(xué) 自動化系,上海 200240)
計算機(jī)視覺與圖形仿真技術(shù)的不斷進(jìn)步,使得無論通過真實(shí)相機(jī)還是仿真場景中的相機(jī)所采集的圖像,都可以用于訓(xùn)練各種視覺感知任務(wù)的網(wǎng)絡(luò)模型。其中,在進(jìn)行三維立體重建、行人或障礙物深度檢測、視覺導(dǎo)航等復(fù)雜感知任務(wù)時,如何獲取具有場景深度信息精準(zhǔn)標(biāo)注的數(shù)據(jù),成為最需要解決的問題。
當(dāng)前,公開真實(shí)深度數(shù)據(jù)集普遍存在兩個主要問題:一是場景種類缺乏。以KITTI數(shù)據(jù)集[1]和NYU Depth V2數(shù)據(jù)集[2]為例,真實(shí)數(shù)據(jù)的采集主體以人類和汽車為主,采集方式也是手持?jǐn)z像機(jī)或車載圖像采集設(shè)備,場景分別以道路駕駛場景和室內(nèi)場景為主。由于采集時的客觀條件限制,因此真實(shí)數(shù)據(jù)集很難對許多特殊情況進(jìn)行針對性采集,比如雨雪天氣、夜晚場景等[3];二是深度信息標(biāo)注不準(zhǔn)確。由于真實(shí)數(shù)據(jù)集人工標(biāo)注為主,只能對有限物體進(jìn)行精細(xì)標(biāo)注,很難達(dá)到深度圖與彩色圖像的像素級別信息對齊。
如今隨著虛擬現(xiàn)實(shí)技術(shù)的發(fā)展,可以使用如Unity3D、Unreal Engine等虛擬仿真引擎,以可控和定向的方式在搭建場景的同時生成準(zhǔn)確的深度標(biāo)注數(shù)據(jù),從而避免在現(xiàn)實(shí)世界中采集和注釋數(shù)據(jù)時的困難與成本問題。因而虛擬仿真數(shù)據(jù)集擁有以下幾個明顯優(yōu)勢:①引擎的渲染所需要的計算時間遠(yuǎn)小于人工標(biāo)注所花費(fèi)的時間;②整個渲染與采集流程可以提取到關(guān)于場景中物體的所有完美信息;③渲染引擎還可以生成罕見的示例,從而控制訓(xùn)練數(shù)據(jù)集的場景分布。此外,在整個仿真系統(tǒng)中并不依賴于任何私人數(shù)據(jù),也不涉及侵犯他人隱私。
使用虛擬仿真引擎構(gòu)建場景生成深度數(shù)據(jù)的另一個優(yōu)勢是資源的可重復(fù)利用性。在為所有的視覺資源創(chuàng)建好環(huán)境后,可以通過動態(tài)改變隨機(jī)化參數(shù)以及相機(jī)位置,將變化引入采集場景。從而使得生成的數(shù)據(jù)集和計算機(jī)視覺模型可以進(jìn)行更快的迭代。綜上所述,構(gòu)建深度仿真數(shù)據(jù)集成為了獲取深度數(shù)據(jù)的新穎且優(yōu)越的解決方案。
本文除了在數(shù)據(jù)集層面上對深度真實(shí)數(shù)據(jù)集和現(xiàn)有深度仿真數(shù)據(jù)集進(jìn)行補(bǔ)充與改進(jìn)以外,還希望通過特定數(shù)據(jù)的補(bǔ)充訓(xùn)練,有針對性地對目前單目深度網(wǎng)絡(luò)的訓(xùn)練結(jié)果進(jìn)行改進(jìn)。
單目深度估計是指從單張輸入圖像中自動推斷出具有稠密深度信息的預(yù)測圖[4]。在提供足夠的圖像信息和相對姿態(tài)信息的前提下,即使給定場景可能存在許多不同的深度構(gòu)建方式,利用單目視覺信息對場景進(jìn)行單目深度估計也是可以解決的問題。而這一特殊性也導(dǎo)致單目深度估計網(wǎng)絡(luò)對訓(xùn)練數(shù)據(jù)的需求十分顯著,尤其是基于監(jiān)督學(xué)習(xí)算法的單目視覺神經(jīng)網(wǎng)絡(luò)。在缺少訓(xùn)練數(shù)據(jù)的情況下使用監(jiān)督學(xué)習(xí)算法對單目估計深度模型進(jìn)行訓(xùn)練顯然具有挑戰(zhàn)性。
本文首先使用公開真實(shí)數(shù)據(jù)對一些目前常用的單目深度估計網(wǎng)絡(luò)進(jìn)行訓(xùn)練,使用包含特殊情況的圖像數(shù)據(jù)對模型訓(xùn)練結(jié)果進(jìn)行測試,可視化結(jié)果顯示,模型在對包含特定情況的圖像進(jìn)行深度測試時,存在非常明顯的誤差。分析得出這是由于訓(xùn)練數(shù)據(jù)中缺少包含特殊情況的場景數(shù)據(jù),因此,最終得到的模型訓(xùn)練結(jié)果缺少對于這些特殊情況中包含的圖像特征的有效學(xué)習(xí)[5]。如圖1所示,這些特殊情況大部分出現(xiàn)在雨霧天氣、夜晚環(huán)境和室內(nèi)環(huán)境中。
為了解決以上問題,本文設(shè)計并實(shí)現(xiàn)一個完整的基于Unity3D的虛擬仿真數(shù)據(jù)采集系統(tǒng),提出了一套完整的仿真數(shù)據(jù)集制作管線,系統(tǒng)架構(gòu)圖如圖2所示。本文首先搭建了豐富的仿真場景,涵蓋了真實(shí)世界中有深度數(shù)據(jù)采集需求的場景;基于非線性深度緩沖設(shè)計圖形著色器,實(shí)現(xiàn)對場景中物體深度信息更加精準(zhǔn)的獲取;提出一種復(fù)雜運(yùn)動模式的全自動數(shù)據(jù)采集方法,以實(shí)現(xiàn)大體量高質(zhì)量仿真數(shù)據(jù)采集。
最后實(shí)驗(yàn)部分對本文仿真數(shù)據(jù)進(jìn)行兩個方面的驗(yàn)證。
首先,對最終采集的仿真數(shù)據(jù)的優(yōu)越性加以驗(yàn)證。使用本文仿真數(shù)據(jù)訓(xùn)練所得的單目深度估計網(wǎng)絡(luò)模型,以及使用真實(shí)數(shù)據(jù)和其他仿真數(shù)據(jù)訓(xùn)練網(wǎng)絡(luò)模型的結(jié)果,在相同的公開數(shù)據(jù)集上進(jìn)行測試,結(jié)果表明,本文數(shù)據(jù)訓(xùn)練所得的模型在各項(xiàng)常用深度估計指標(biāo)上優(yōu)于其他訓(xùn)練模型。
此外,本文仿真數(shù)據(jù)涵蓋更豐富的特殊場景數(shù)據(jù),因此,本文使用特殊場景數(shù)據(jù)對單目深度估計網(wǎng)絡(luò)進(jìn)行補(bǔ)充訓(xùn)練。實(shí)驗(yàn)結(jié)果表明,特殊場景仿真數(shù)據(jù)的補(bǔ)充可以有效增強(qiáng)模型訓(xùn)練結(jié)果在特殊場景下的深度預(yù)測表現(xiàn)。
本文使用Unity3D 2019.4 LTS平臺對仿真場景進(jìn)行搭建。選擇計算機(jī)圖形引擎Unity3D的優(yōu)勢在于,使用公開圖形引擎使本方法更易遷移使用,并且Unity3D擁有豐富的圖形資源和強(qiáng)大的功能插件儲備,作為目前最為常用的游戲引擎之一,可以近乎實(shí)現(xiàn)對真實(shí)場景的全部還原。因此,本文在場景構(gòu)建時,考慮到了所有現(xiàn)實(shí)生活中所需用到的視覺任務(wù)應(yīng)用場景,而不僅僅是大多公開數(shù)據(jù)集因客觀條件所限而選擇的駕駛場景或室內(nèi)場景等。完整的場景構(gòu)建主要分為場景物體搭建、動態(tài)行人車輛運(yùn)動規(guī)劃以及晝夜天氣系統(tǒng)設(shè)計。
首先,本文以購買或建模的方式廣泛收集人物、建筑物以及生活雜物等三維模型,在進(jìn)行特定更改和組合后成為Unity中的預(yù)設(shè)體(Prefab),比如,車輛和人物以及燈光組成夜晚中行駛的車、樹木和圍欄以及雜物組合成為街邊的景觀樹等,這樣可以大幅加速場景搭建的速度。在擁有足夠豐富的基礎(chǔ)模型以后,本文編寫腳本實(shí)現(xiàn)選取四個點(diǎn)后可以自動閉合形成擁有道路、路邊雜物、靜態(tài)人物車輛和位置不變的動態(tài)人物以及建筑物的城市街區(qū)。
建立好靜態(tài)街區(qū)模型以后,本文在部分路口的斑馬線和人行道上手動放置以固定巡邏路線行走的行人,以及在主要街道上以固定路線巡航的車輛。
最后在晝夜變化上,本文編寫腳本使得場景主光源(Directional Light)可以隨初始設(shè)定好的場景內(nèi)相對時間動態(tài)變化。白天時模擬日光,光照強(qiáng)度較強(qiáng),為暖黃色;夜晚時模擬月光,光照強(qiáng)度較低,為冷藍(lán)色。配合時間與光照的變化,本文設(shè)計使用動態(tài)天空盒(Dynamic Skybox),隨全天時間的變化,太陽和月亮?xí)谔炜战惶嫫鹇?,云層也會動態(tài)變化,并且場景中的所有建筑物燈光、路燈以及車燈等燈光會在夜晚亮起,白天熄滅。天氣效果則是使用Unity自帶的粒子系統(tǒng)(Particle System),可以調(diào)節(jié)雨滴或雪花的大小、位置、濃密度等等,但是需要配合天氣為客觀場景增加細(xì)節(jié),如雨傘、積水、人物變化等等,因此,特殊天氣并不能自動生成,需要手動建立與調(diào)整。
本文通過上述方法實(shí)現(xiàn)快速建立城區(qū)場景,如圖3所示。圖3(a)為根據(jù)選取的四個點(diǎn)快速建立街區(qū)的雛形,圖3(b)和圖3(c)為更換其他的模型組合以及附加晝夜變化以后實(shí)現(xiàn)的效果。
圖3 利用模型資源快速建立街區(qū)場景
除了搭建常見的城區(qū)場景外,還有自然場景和室內(nèi)場景。自然場景方面,本文使用Unity引擎公開的自然環(huán)境插件Gaia進(jìn)行地形的構(gòu)造,并在此基礎(chǔ)上豐富細(xì)節(jié);室內(nèi)場景則是在建筑物內(nèi)進(jìn)行室內(nèi)物體模型的簡單擺放,因?yàn)槭覂?nèi)場景往往比較小,且種類有限,如住宅、辦公區(qū)域、商場,因此,只需建好基礎(chǔ)環(huán)境,并對環(huán)境內(nèi)物體進(jìn)行隨機(jī)化設(shè)置即可。
由于虛擬仿真數(shù)據(jù)集中資源的可重復(fù)利用性,以及自動化腳本的輔助,在收集足夠多的模型資源以后,能夠以省時、省力的方式快速建立不同的場景,每次只需更新建筑物、人物、車輛以及場景細(xì)節(jié)等模型即可。單個場景從收集模型資源到場景構(gòu)建到最終采集,平均只需不到一天的時間,可以采集上萬張深度數(shù)據(jù),并且通過更改資源和隨機(jī)化參數(shù),理論上可以采集更多;而人工標(biāo)注由于深度數(shù)據(jù)的特殊性,需要在深度檢測相機(jī)獲取的未標(biāo)注圖像上利用算法進(jìn)一步計算丟失部分的深度數(shù)據(jù),并進(jìn)行手工標(biāo)注,效率非常低。以NYU Depth V2數(shù)據(jù)集為例,其精準(zhǔn)標(biāo)注數(shù)據(jù)僅占總數(shù)據(jù)量的1/40,并且補(bǔ)充新的數(shù)據(jù)十分困難。
本文最終選取的20個仿真場景作為仿真數(shù)據(jù)集制作素材,圖4展示了這些場景中的截圖。這些場景不僅覆蓋了生活中較為常見的場景,如車輛較多、人員較少的駕駛場景,人群密集的街區(qū)場景,平靜的海邊場景等等;更包含了真實(shí)數(shù)據(jù)集中難以覆蓋的復(fù)雜情況場景,如雨雪天氣的自然場景,空間狹小的室內(nèi)場景,燈光復(fù)雜的霓虹夜景等等。并且最終場景擁有非常豐富的細(xì)節(jié),采集相機(jī)視野內(nèi)至少擁有500萬個三角面(Triangles)和400萬個頂點(diǎn)(Vertex),最多時可高達(dá)2000萬個三角面和1400個頂點(diǎn)。
圖4 廣泛覆蓋真實(shí)情況的20個仿真場景
本仿真數(shù)據(jù)采集系統(tǒng)提供場景內(nèi)物體的多模態(tài)信息標(biāo)注,包括分割信息、類別信息和深度信息等。由于本系統(tǒng)主要用于采集深度估計任務(wù)所需要的視差信息,因此,本文聚焦于綜合效果更好的深度圖生成方式,提出一種更為精準(zhǔn)的逐像素點(diǎn)提取物體到視點(diǎn)相對深度信息算法,利用非線性深度緩沖重建像素點(diǎn)世界空間深度信息。
計算機(jī)圖形引擎中所有的圖形渲染工作均由渲染管線(Render Pipeline)所決定,而在Unity引擎中,圖形的最終渲染效果由其自帶的圖形著色器(Shader)所定義,因此,本系統(tǒng)中場景物體的深度信息獲取由定義物體圖形著色器所實(shí)現(xiàn)。
對于獲取采集相機(jī)采集圖像中的像素點(diǎn)視差信息而言,本文從圖形渲染管線中的最后用于計算深度信息的深度測試部分進(jìn)行切入。深度測試的計算過程需要用到深度緩沖信息,利用深度緩沖信息來計算場景中各物體的深度[6]。深度緩沖可以防止非相關(guān)物體的渲染面遮擋到感興趣對象的渲染面前,即只渲染采集相機(jī)中最靠前的像素點(diǎn)深度值,可以節(jié)省渲染其他多余三角面,甚至感興趣物體的背面的開銷,是較為直接的深度計算方法。采集相機(jī)由遠(yuǎn)平面(Far Plane)與近平面(Near Plane)來決定相機(jī)內(nèi)采集對象的視差范圍,與視點(diǎn)距離大于遠(yuǎn)平面或小于近平面的片元不進(jìn)行渲染。因此,深度測試常規(guī)使用的線性深度緩沖是將片元對應(yīng)像素點(diǎn)的z坐標(biāo),在遠(yuǎn)近平面范圍內(nèi)線性映射到[0,1],也是最為簡單、直接的計算方法。然而,采取線性映射深度緩沖的深度圖像對網(wǎng)絡(luò)模型進(jìn)行訓(xùn)練實(shí)驗(yàn)發(fā)現(xiàn),以線性方式創(chuàng)建深度緩沖區(qū)所得到的深度圖像中,物體的視差信息精度在近平面和遠(yuǎn)平面沒有差別,導(dǎo)致深度尺度不明顯,最后網(wǎng)絡(luò)訓(xùn)練模型深度估計結(jié)果較差。
因此,本文選擇使用一種非線性映射的方法建立深度測試方程,以遠(yuǎn)平面物體的低精度深度信息為代價,換取近平面附近感興趣區(qū)域精度更高的視覺差異信息。此外,本文對遠(yuǎn)平面以一定閾值進(jìn)行截斷,以最大程度保留截斷范圍內(nèi)的深度精度信息。本文采用的非線性深度計算方程如公式(1)
(1)
其中,本文對距離為65.535 m的遠(yuǎn)平面進(jìn)行了截斷,舍棄更遠(yuǎn)的物體,因此,深度測試計算公式中所有near表示近平面裁剪距離取0.3 m,far表示遠(yuǎn)平面裁剪距離取65.535 m,z表示像素點(diǎn)z坐標(biāo)值。選擇距離為65.535 m的遠(yuǎn)平面進(jìn)行截斷,是因?yàn)楸鞠到y(tǒng)希望最終采集的深度圖像編碼為16位PNG格式的灰度圖像,其像素值區(qū)間為[0,216],即[0, 65 535],因此,深度值區(qū)間取[0, 65.535] m,使得深度圖像中的像素強(qiáng)度1對應(yīng)到相機(jī)視點(diǎn)的距離為1 mm。圖5為深度值非線性轉(zhuǎn)換函數(shù)圖像,x軸為該點(diǎn)z坐標(biāo)值,y軸為映射后的深度值Fdepth。
圖5 深度值非線性轉(zhuǎn)換函數(shù)圖
建立在非線性深度緩沖計算函數(shù)的基礎(chǔ)上,本文能夠利用從攝像機(jī)指向屏幕像素點(diǎn)的向量重建該像素點(diǎn)的世界空間位置,再計算該點(diǎn)到觀察視點(diǎn)的距離作為深度值。
此像素點(diǎn)深度值計算方法通過圖形著色器進(jìn)行實(shí)現(xiàn)。所獲取的深度圖像最終以PFM和PNG兩種圖像編碼方式,與對應(yīng)的RGB真值圖像一同保存。
數(shù)據(jù)采集方面,在對真實(shí)數(shù)據(jù)集中連續(xù)幀序列進(jìn)行分析時,發(fā)現(xiàn)以KITTI數(shù)據(jù)集[1]和RobotCar數(shù)據(jù)集[7]為代表的常用公開真實(shí)數(shù)據(jù)集,以及SYNTHIA等[8]仿真數(shù)據(jù)集中,無論采集主體是車輛還是機(jī)器人,其運(yùn)動模式均較為簡單,具體表現(xiàn)為采集路線單一,并且采集相機(jī)在工作時只擁有細(xì)微的旋轉(zhuǎn)、傾斜等角度調(diào)整。過于規(guī)律的運(yùn)動模式導(dǎo)致前后幀圖像相似度較大,數(shù)據(jù)集整體重復(fù)性較高,導(dǎo)致數(shù)據(jù)集實(shí)際有效圖像數(shù)量和質(zhì)量下降。因此,使用復(fù)雜運(yùn)動模式進(jìn)行數(shù)據(jù)采集是十分必要的[9]。
在場景中以復(fù)雜運(yùn)動模式進(jìn)行單次采集雖然簡單,只需設(shè)定好采集主體在場景中的移動線路與相機(jī)位姿變動方式和頻率即可。然而對于數(shù)量較多的場景和場景中復(fù)雜的物體空間布局,每次采集都需要手動設(shè)置采集線路。花費(fèi)十分龐大且不切實(shí)際的工作量。因此,考慮到對于仿真數(shù)據(jù)龐大的、有質(zhì)量保障的采集需求,本文利用場景內(nèi)物體空間信息,提出一種基于三維搜索算法的采集路徑自動生成方法。在給定場景空間信息和采集起點(diǎn)的情況下,實(shí)現(xiàn)采集相機(jī)在任意場景內(nèi)以復(fù)雜運(yùn)動模式進(jìn)行全自動協(xié)程數(shù)據(jù)采集。
本系統(tǒng)在進(jìn)行場景搭建時,場景內(nèi)的物體均基于由物體模型片元構(gòu)成的柵格渲染器(Mesh Renderer)信息建立柵格碰撞體(Mesh Collider),因此,可以獲取所有物體的三維空間位置信息,如圖6所示。本文利用空間柵格信息在局部空間中進(jìn)行建模,得到一個三維坐標(biāo)地圖,將空間中物體柵格碰撞體所占據(jù)的坐標(biāo)點(diǎn)視為地圖中的障礙物,確認(rèn)采集主體在場景中的三維可活動范圍。每單次采集時,在給定采集起點(diǎn)的情況下,本系統(tǒng)在采集主體可活動空間內(nèi)隨機(jī)生成一個采集終點(diǎn),使用三維搜索算法,得到從采集起點(diǎn)到采集終點(diǎn)的規(guī)劃好的避障路線。
圖6 利用場景中物體的柵格信息構(gòu)建三維地圖
對于尺寸較大的仿真地圖來說,空間內(nèi)的物體信息過多可能使三維空間建模過于緩慢,甚至建模錯誤。因此,在實(shí)際路徑規(guī)劃時,會對場景按固定大小進(jìn)行分區(qū),在初始分區(qū)進(jìn)行路線生成以后,會根據(jù)具體采集需求對其他分區(qū)再進(jìn)行采集路線生成。
在采集主體的位移線路規(guī)劃完成后,系統(tǒng)還需設(shè)置一個擾動系數(shù),使采集相機(jī)在特定范圍內(nèi)以固定頻率發(fā)生角度偏轉(zhuǎn),包括相機(jī)法向量平面的鏡頭轉(zhuǎn)動(Rotate)以及視平面上的鏡頭傾斜(Lean),并對所有采集相機(jī)進(jìn)行同步處理。其中,隨機(jī)擾動的系數(shù)設(shè)定處于合理范圍內(nèi),最終效果如圖7所示。
圖7 簡單模式采集與復(fù)雜模式采集圖像對比
在以復(fù)雜運(yùn)動模式連續(xù)自動采集時,采集相機(jī)同時對彩色圖像及其對應(yīng)深度圖像進(jìn)行數(shù)據(jù)采集,可能會由于渲染時間較長,或數(shù)據(jù)處理量大,編碼時間較長,而出現(xiàn)數(shù)據(jù)存儲延時的問題,導(dǎo)致同一幀彩色圖像和對應(yīng)深度信息標(biāo)注圖像中各像素?zé)o法對齊,這也是仿真數(shù)據(jù)生成最常見的問題。對此,本系統(tǒng)自定義迭代器接口創(chuàng)建多個協(xié)程(Coroutine)分別對不同數(shù)據(jù)的編碼和圖像存儲進(jìn)行處理,每一次存儲當(dāng)前幀的圖像都需要等待上一幀的圖像存儲完成。這種方法可能導(dǎo)致存儲頻率不穩(wěn)定,但是可以有效解決同一幀對應(yīng)的多個數(shù)據(jù)圖像實(shí)現(xiàn)像素對齊的問題。本系統(tǒng)已實(shí)現(xiàn)全自動采集,因此,對數(shù)據(jù)采集頻率穩(wěn)定性不過高要求,只要數(shù)據(jù)信息精確,可以憑較慢的速度進(jìn)行采集。
至此,系統(tǒng)理論上可為每個構(gòu)建好的場景提供無數(shù)種復(fù)雜運(yùn)動模式的采集線路,從而對場景內(nèi)的數(shù)據(jù)信息進(jìn)行最大程度的提取。在實(shí)際進(jìn)行仿真數(shù)據(jù)采集時,也需要對數(shù)據(jù)進(jìn)行最后的簡單篩查,以避免出現(xiàn)質(zhì)量太差的連續(xù)視頻序列。但總體來說,復(fù)雜運(yùn)動模式的自主路徑規(guī)劃明顯提升了采集效率,實(shí)現(xiàn)了對任意場景的全自動同步深度數(shù)據(jù)采集。
為進(jìn)行后續(xù)仿真數(shù)據(jù)質(zhì)量驗(yàn)證實(shí)驗(yàn)內(nèi),本文基于Unity3D 2019.4 LTS平臺,在20個場景以每秒20幀的速率進(jìn)行長視頻序列采集,在駕駛場景、人員密集場景、室內(nèi)場景和夜晚場景等場景中,以簡單運(yùn)動模式和復(fù)雜運(yùn)動模式分別采集分辨率為640×480的雙目立體圖像對,覆蓋本文所考慮到的現(xiàn)實(shí)中可能存在的真實(shí)情況,以進(jìn)行最后的實(shí)驗(yàn)探究。最終每個場景、每種運(yùn)動模式分別采集到序列數(shù)大于5個,每個視頻序列圖像數(shù)量多于1000張的長視頻序列,經(jīng)過篩選最終保留總計20萬對分辨率為640×480的雙目立體圖像對,一個雙目立體圖像對包括固定基線的左右兩個采集相機(jī)的彩色圖像及其對應(yīng)的深度真值圖,并同時記錄采集時相機(jī)的位置姿態(tài)信息和內(nèi)參矩陣信息。
本文采集時雙目基線長度與相機(jī)內(nèi)參矩陣均與KITTI數(shù)據(jù)集對應(yīng),為比較數(shù)據(jù)集間數(shù)據(jù)訓(xùn)練質(zhì)量,盡量保證訓(xùn)練參數(shù)相近,而且KITTI數(shù)據(jù)集的相機(jī)內(nèi)外參數(shù)更貼近現(xiàn)實(shí)使用需求。因此,雙目灰度采集相機(jī)基線平均長度設(shè)置為0.54 cm(會在特殊情況下存在波動),內(nèi)參矩陣設(shè)為
(2)
最終所得深度仿真數(shù)據(jù)集與現(xiàn)有公開深度數(shù)據(jù)集進(jìn)行對比,如表1所示。本系統(tǒng)在深度數(shù)據(jù)方面,不僅支持單目與雙目立體數(shù)據(jù)的同時采集,還可以實(shí)現(xiàn)多種特殊場景內(nèi)的數(shù)據(jù)采集。其中,以密集動態(tài)人物和復(fù)雜光照為主,其他無論是真實(shí)數(shù)據(jù)集還是仿真數(shù)據(jù)集,均難以提供動態(tài)人群的密集情況。
表1 現(xiàn)有公開數(shù)據(jù)集和公共平臺上的數(shù)據(jù)采集系統(tǒng)與本文采集系統(tǒng)對比
由于本文希望驗(yàn)證最終所得到的深度仿真數(shù)據(jù)集的質(zhì)量與使用價值,因此,實(shí)驗(yàn)部分選擇使用在單目視覺領(lǐng)域較為常用的單目深度估計網(wǎng)絡(luò)MonoDepth2[13]。
訓(xùn)練時,本文參考Eigen等[14]和Zhou等[15]提出的以分割(Split)的方式將仿真數(shù)據(jù)集劃分成了多個子集,以進(jìn)行不同的訓(xùn)練實(shí)驗(yàn)。MonoDepth2的網(wǎng)絡(luò)模型使用深度學(xué)習(xí)工具PyTorch實(shí)現(xiàn)的,使用Adam優(yōu)化方式[15],默認(rèn)訓(xùn)練20個迭代周期(Epochs),批處理大小(Batch Size)為12,輸入和輸出分辨率均為640×192。MonoDepth2會對前15個迭代周期使用10-4的學(xué)習(xí)率(Learning Rate),然后對其余的迭代周期使用10-5的學(xué)習(xí)率。對于驗(yàn)證集,取訓(xùn)練集大小10%的數(shù)量作為專用驗(yàn)證集。平滑參數(shù)λ=0.001。
在進(jìn)行單目訓(xùn)練時,選擇左側(cè)相機(jī)對應(yīng)的彩色圖像與對應(yīng)深度圖像作為單目訓(xùn)練數(shù)據(jù);進(jìn)行雙目訓(xùn)練時,使用雙目立體圖像對數(shù)據(jù)進(jìn)行訓(xùn)練;在進(jìn)行單目和雙目混合訓(xùn)練時,單目數(shù)據(jù)與雙目立體圖像對以一定比例進(jìn)行訓(xùn)練,默認(rèn)為1∶1。
對于定量實(shí)驗(yàn)所用的測試指標(biāo),本文選擇以下常用的量化指標(biāo)對最終單目深度估計結(jié)果進(jìn)行評價。
(3)
(4)
(5)
對于定量實(shí)驗(yàn)結(jié)果,通過測試指標(biāo)比較,誤差值指標(biāo)AbsRel和SqRel越小,說明模型測試結(jié)果越好; 準(zhǔn)確度指標(biāo)越高,說明模型深度估計能力越好。
定性實(shí)驗(yàn)結(jié)果使用視差圖進(jìn)行展示,如圖8所示,顏色越深表示深度值越高,離視點(diǎn)更遠(yuǎn); 顏色越淺表示深度值越低,離視點(diǎn)更近。定性實(shí)驗(yàn)檢驗(yàn)通過對可視化結(jié)果進(jìn)行主觀分析完成。
圖8 原圖與對應(yīng)視差圖示意圖
Virtual KITTI 2數(shù)據(jù)集[10]是單目和雙目立體視覺深度估計常用公開虛擬數(shù)據(jù)集之一,該數(shù)據(jù)集利用仿真技術(shù)對KITTI數(shù)據(jù)集的所有涉及的參數(shù)及圖像內(nèi)容進(jìn)行了完整還原。
本文首先分別使用真實(shí)數(shù)據(jù)集KITTI、仿真數(shù)據(jù)集Virtual KITTI 2以及本文所得到的仿真數(shù)據(jù)對MonoDepth2默認(rèn)單目深度估計模型進(jìn)行訓(xùn)練,并分別用單目數(shù)據(jù)單獨(dú)訓(xùn)練和單目與雙目數(shù)據(jù)混合訓(xùn)練的方式進(jìn)行訓(xùn)練,然后以KITTI數(shù)據(jù)集以Eigen的分割子集作為測試集,對訓(xùn)練所得的模型進(jìn)行測試,按深度估計常用指標(biāo)對模型的訓(xùn)練結(jié)果進(jìn)行對照分析。
從表2實(shí)驗(yàn)結(jié)果中可以看出,在KITTI駕駛場景測試集中,本文使用仿真數(shù)據(jù)訓(xùn)練得到的模型在四個指標(biāo)中均獲得了最佳深度預(yù)測效果。
表2 不同數(shù)據(jù)訓(xùn)練結(jié)果模型在KITTI測試集上的性能表現(xiàn)
此外,為驗(yàn)證在特殊場景下本文仿真數(shù)據(jù)對模型訓(xùn)練效果的提升,本文分別使用真實(shí)數(shù)據(jù)集KITTI、室內(nèi)深度數(shù)據(jù)集NYU Depth V2以及本文所得到的仿真數(shù)據(jù)對MonoDepth2默認(rèn)單目深度估計模型進(jìn)行單目數(shù)據(jù)訓(xùn)練,并在NYU Depth V2數(shù)據(jù)集上測試。
實(shí)驗(yàn)結(jié)果如表3所示,在NYU Depth V2室內(nèi)數(shù)據(jù)集上測試的對照實(shí)驗(yàn)結(jié)果表明,本文仿真數(shù)據(jù)訓(xùn)練的模型在四個指標(biāo)中再次獲得了最佳效果。本文所得的仿真數(shù)據(jù)可以有效提升訓(xùn)練模型對室內(nèi)場景的深度感知能力。
表3 不同數(shù)據(jù)訓(xùn)練結(jié)果模型在NYU Depth V2室內(nèi)測試集上的性能表現(xiàn)
在對MonoDepth2單目深度估計網(wǎng)絡(luò)模型訓(xùn)練結(jié)果使用不同數(shù)據(jù)進(jìn)行測試時,發(fā)現(xiàn)使用真實(shí)數(shù)據(jù)訓(xùn)練所得到的通用模型訓(xùn)練結(jié)果,在許多特殊情況下表現(xiàn)失常。
本文歸納了三種具有代表性且模型預(yù)測失常概率較大的特殊場景,分別是雨霧天氣、夜晚以及室內(nèi)場景。本文使用包含這些特殊因素的一定數(shù)量的仿真數(shù)據(jù),對網(wǎng)絡(luò)模型訓(xùn)練結(jié)果進(jìn)行針對性微調(diào)(Finetune),以驗(yàn)證使用特定仿真數(shù)據(jù)補(bǔ)充訓(xùn)練對模型結(jié)果有所改善。最后,再使用公開數(shù)據(jù)和自采數(shù)據(jù)對改進(jìn)前的通用模型訓(xùn)練結(jié)果和針對性改進(jìn)后的增強(qiáng)模型訓(xùn)練結(jié)果再使用同樣特殊情況的數(shù)據(jù)進(jìn)行測試,對可視化對比結(jié)果進(jìn)行分析。
使用包含特殊情況的本文深度仿真數(shù)據(jù)對模型進(jìn)行訓(xùn)練以后,再用訓(xùn)練模型對夜晚圖像和濃霧圖像進(jìn)行單目深度估計,可視化結(jié)果如圖9所示。從實(shí)驗(yàn)結(jié)果可以看出,補(bǔ)充包含特殊情況的深度仿真數(shù)據(jù)作為訓(xùn)練數(shù)據(jù),無論是在公開數(shù)據(jù)上還是在自采數(shù)據(jù)上進(jìn)行深度估計,均可以有效地增強(qiáng)模型在特殊場景中對物體的深度感知能力。
圖9 本文數(shù)據(jù)訓(xùn)練的模型深度估計能力提升
本文主要研究的內(nèi)容是基于虛擬仿真技術(shù)建立一個完整的深度仿真數(shù)據(jù)采集系統(tǒng),提供大體量的高質(zhì)量深度仿真數(shù)據(jù),以解決目前由于真實(shí)深度數(shù)據(jù)集在數(shù)量和質(zhì)量上的明顯缺陷,導(dǎo)致基于單目深度學(xué)習(xí)算法的深度估計網(wǎng)絡(luò)因訓(xùn)練數(shù)據(jù)缺乏而深度預(yù)測能力下降的問題。
本文首先利用虛擬仿真技術(shù)完成真實(shí)感增強(qiáng)的仿真環(huán)境搭建;在數(shù)據(jù)生成方面,基于計算機(jī)圖形學(xué)原理,實(shí)現(xiàn)更豐富和更精準(zhǔn)的深度數(shù)據(jù)標(biāo)注;在數(shù)據(jù)采集方面,提出一種具有復(fù)雜運(yùn)動模式的全自動數(shù)據(jù)采集方案,有效減小數(shù)據(jù)冗余,提高整個數(shù)據(jù)集迭代效率。最終完整構(gòu)成深度仿真數(shù)據(jù)采集系統(tǒng),在數(shù)據(jù)體量上對真實(shí)數(shù)據(jù)集形成擴(kuò)充,并在綜合質(zhì)量上實(shí)現(xiàn)超越。最后通過相關(guān)實(shí)驗(yàn),驗(yàn)證了本文仿真數(shù)據(jù)能夠?qū)文可疃裙烙嬀W(wǎng)絡(luò)訓(xùn)練模型的深度預(yù)測能力實(shí)現(xiàn)顯著增強(qiáng)。