張燕詠 張 莎 張 昱 吉建民 段逸凡 黃奕桐 彭 杰 張宇翔
(中國科學(xué)技術(shù)大學(xué)計算機科學(xué)與技術(shù)學(xué)院 合肥 230027)yanyongz@ustc.edu.cn)
自動駕駛意味著智能系統(tǒng)逐步取代人類操縱汽車行駛,該理念早在20世紀20年代就被提及,并于20世紀80年代開始逐步發(fā)展[1].近年來,汽車數(shù)量迅速增加,據(jù)國家統(tǒng)計局統(tǒng)計(1)http://data.stats.gov.cn/easyquery.htm?cn=C01&zb=A0G0I&sj=2018,2018年底我國民用汽車保有量就已突破2.3億,汽車交通事故發(fā)生次數(shù)達到166 906起.城市道路日漸擁堵,人們“被困”在道路上的時間越來越多.而自動駕駛是最有可能解決以上問題的技術(shù).學(xué)術(shù)界和工業(yè)界對于自動駕駛技術(shù)的研究也正是如火如荼.麻省理工大學(xué)的TOYOTA-CSAIL、斯坦福大學(xué)的SISL等研究機構(gòu)紛紛入場;為自動駕駛服務(wù)的各類數(shù)據(jù)集[2-4]開始涌現(xiàn);自動駕駛物體3D檢測、目標(biāo)跟蹤等各子任務(wù)的挑戰(zhàn)榜單(2)https://motchallenge.net/results/CVPR_2019_Tracking_Challenge/;https://www.nuscenes.org/;http://www.cvlibs.net/datasets/kitti/不斷刷新;Uber、Tesla、百度等國內(nèi)外公司都成立特定部門進行自動駕駛技術(shù)研發(fā).這一系列表現(xiàn)足見自動駕駛領(lǐng)域的重要性.
用于自動駕駛的智能車與傳統(tǒng)車輛最大的不同之處在于,智能車搭載了眾多用于感知環(huán)境、計算決策的設(shè)備,用來代替人類在駕駛汽車時做出感知和決策.其中,激光雷達、攝像頭、GPS、毫米波雷達是常見的感知設(shè)備.在汽車行駛的過程中,通過處理以上傳感器的數(shù)據(jù)進行對環(huán)境的感知、對物體的識別與跟蹤、對自身的實時定位等工作,以確保汽車行駛的安全性.
在過去的幾年中,L2級別自動駕駛已經(jīng)成為比較成熟的技術(shù),高級駕駛輔助系統(tǒng)(advanced driving assistance system, ADAS)被集成到越來越多的新款車輛中.ADAS提供包括車道線偏移預(yù)警系統(tǒng)、自適應(yīng)巡航、自主泊車等在內(nèi)的可以優(yōu)化人類駕駛體驗的眾多功能.但是,ADAS仍然只能提供簡單的輔助功能,在處理突發(fā)情況或遇到罕見環(huán)境時不能保證安全,所以駕駛員仍然是交通中不可缺少的,與真正意義上的自動駕駛相去甚遠.隨著人工智能領(lǐng)域的蓬勃發(fā)展,越來越多的研究者不止?jié)M足于L2級別,而是著眼于L3甚至L4級別的自動駕駛.在這種級別的自動駕駛中,對環(huán)境的感知成為重中之重,例如對道路情況的感知、行人與車輛的識別、交通標(biāo)志的識別等.如果沒有對環(huán)境的正確認識,那控制車輛將無從談起.如何才能讓智能車精確認識環(huán)境、理解環(huán)境成為自動駕駛的一大挑戰(zhàn).
沒有一種單一傳感器的數(shù)據(jù)能提供足夠的感知精度.真實的駕駛環(huán)境變換多樣,霧、雨、雪、晴會影響激光雷達的感知,白天、黑夜等光照條件不同的情況將影響攝像頭的感知.因此,一個有效的自動駕駛系統(tǒng)必然是架構(gòu)復(fù)雜、任務(wù)繁多,不同任務(wù)依賴的感知數(shù)據(jù)不盡相同:檢測、追蹤主要依賴圖像和點云數(shù)據(jù),即時定位則需要GPS和IMU等.為了確保不同條件準(zhǔn)確感知、系統(tǒng)正常運行,自動駕駛汽車不得不搭載多種感知硬件,從不同的感知器中接收海量的、異構(gòu)的感知數(shù)據(jù).自動駕駛要求對車道線、交通標(biāo)識、可能的障礙物等駕駛環(huán)境有全面的認識,就不得不接收大量感知數(shù)據(jù)并執(zhí)行多種感知任務(wù).但這同時造成了感知任務(wù)種類多、任務(wù)量大的問題.此外,為了提升感知精度,用于感知任務(wù)的各種深度學(xué)習(xí)模型不斷加深、網(wǎng)絡(luò)結(jié)構(gòu)愈發(fā)復(fù)雜,導(dǎo)致計算量也逐漸龐大.
然而,在感知數(shù)據(jù)海量、感知任務(wù)多樣、計算量巨大的情況下,車載計算資源卻極為受限.首先,自動駕駛汽車分配給計算硬件的能源是有限的,這便極大地限制了車端計算硬件的選擇.再者,相較于系統(tǒng)所需的計算量,車載計算設(shè)備存在發(fā)展緩慢、算力不足等問題,在不做計算優(yōu)化的情況下,根本無法滿足自動駕駛實時性的要求.如何進行計算優(yōu)化才能滿足系統(tǒng)實時性是自動駕駛的另一大挑戰(zhàn).
接下來,本文將針對自動駕駛的環(huán)境感知和實時計算兩大挑戰(zhàn),從自動駕駛系統(tǒng)的整體架構(gòu)、智能感知、計算優(yōu)化3個方面對自動駕駛進行介紹和分析.之后將詳細介紹中國科學(xué)技術(shù)大學(xué)LINKE實驗室的智能小車系統(tǒng)Sonic及其感知融合算法ImageFusion和計算優(yōu)化框架MPInfer.
本文主要貢獻包括3個方面:
1) 重點回顧了自動駕駛系統(tǒng)的歷史和現(xiàn)狀,分析自動駕駛系統(tǒng)在感知和計算這2部分的重難點(第1節(jié)),之后詳細介紹了中國科學(xué)技術(shù)大學(xué)的Sonic智能小車自動駕駛系統(tǒng)(4.1節(jié));
2) 詳細剖析了自動駕駛系統(tǒng)中的感知模塊,并對其中的代表性算法進行了系統(tǒng)性的分析和比較(第2節(jié)),之后對Sonic系統(tǒng)的融合感知算法ImageFusion進行詳細介紹(4.2節(jié));
3) 針對自動駕駛系統(tǒng)的實時性問題,對感知相關(guān)的深度學(xué)習(xí)模型的計算優(yōu)化的研究進展進行了詳細的闡述和討論(第3節(jié)),并詳細介紹了Sonic系統(tǒng)中的計算優(yōu)化框架MPInfer(4.3節(jié)).
自動駕駛本身的歷史可以追溯到1920年代及1930年代間,但真正具有自動駕駛能力的汽車出現(xiàn)于1980年代.1984年,卡內(nèi)基美隆大學(xué)推動Navlab計劃與ALV計劃;1987年,梅賽德斯-奔馳與德國慕尼黑聯(lián)邦國防大學(xué)共同推行尤里卡普羅米修斯計劃.自此許多大型公司、機構(gòu)開始將目光轉(zhuǎn)向這個領(lǐng)域.在2005年的DARPA挑戰(zhàn)賽中,從Stanford,CMU,UC-Berkeley等高校為代表的15個團隊中誕生了5輛完成142英里自動駕駛挑戰(zhàn)的無人車[5].由此開始,世界各地的學(xué)術(shù)界和工業(yè)界對于自動駕駛技術(shù)的研究都在不斷加速.其中學(xué)術(shù)界有諸如斯坦福大學(xué)、卡內(nèi)基梅隆大學(xué)、麻省理工學(xué)院等研究機構(gòu).工業(yè)界著名的參與者有Uber、Aurora、Momenta、Waymo、百度、Tesla、Nvidia、Mobileye、Pony.ai等公司.根據(jù)美國DMV公布的《2019年自動駕駛接管報告》,目前在美國道路上具有運行自動駕駛車輛資格且已經(jīng)在實際環(huán)境中進行測試的公司已經(jīng)有36家以上.
從系統(tǒng)結(jié)構(gòu)上看,自動駕駛系統(tǒng)分為端到端的系統(tǒng)以及模塊化的系統(tǒng),其中端到端的自動駕駛系統(tǒng)缺少可靠的安全措施和可解釋性,因此還沒有實現(xiàn)開放環(huán)境中的城市自動駕駛[6].模塊化的系統(tǒng)在各個子系統(tǒng)中有相應(yīng)的領(lǐng)域知識[7],可以在子系統(tǒng)中利用相應(yīng)的領(lǐng)域知識,從而使整個自動駕駛系統(tǒng)變得可解釋[5],此外也可以通過各個子領(lǐng)域的發(fā)展來提高整體系統(tǒng)的性能.
下面將具體介紹模塊化的自動駕駛系統(tǒng).
一個自動駕駛系統(tǒng)的硬件主要由各類傳感器以及計算設(shè)備組成.圖1展示了典型的自動駕駛系統(tǒng)的硬件組成,主要由激光雷達、攝像頭、毫米波雷達、IMU(慣性測量單元)、高精度GPS、高性能PC等組成.其中激光雷達、攝像頭、毫米波雷達屬于感知子系統(tǒng),用于車輛感知周圍環(huán)境,為無人駕駛車輛建立一個準(zhǔn)確、穩(wěn)定的周圍環(huán)境的模型.攝像頭能獲取包括物體顏色、外形、材質(zhì)等豐富的環(huán)境信息,并且2D計算機視覺已取得很多進展,該領(lǐng)域有許多先進的算法用于信號燈檢測[8]、物體分類[9]等.但由于獲取的是二維信息,因此難以得到可靠精準(zhǔn)的距離信息,并且由于攝像頭獲取的數(shù)據(jù)對環(huán)境光照、天氣較為敏感,在環(huán)境變換時(如穿過昏暗的隧道)難以得到可靠的數(shù)據(jù).而雷達對距離感知精度較高,可獲得高精度的距離信息;但由于激光雷達的物理特性,獲取到的環(huán)境信息較為稀疏.此外,激光雷達對天氣的變化十分敏感,在霧霾、雨雪天氣性能下降十分明顯.無論是激光雷達、攝像頭,都會產(chǎn)生大量的觀測數(shù)據(jù),這往往是整個系統(tǒng)實時運行的瓶頸[9-10].毫米波雷達能夠獲取精準(zhǔn)的距離信息,穿透能力強,能夠抵抗天氣和環(huán)境變化的影響,可實現(xiàn)遠距離感知探測[11];但毫米波雷達易受金屬物品干擾.IMU、高精度GPS則用于定位子系統(tǒng),用來在環(huán)境中獲得車輛的準(zhǔn)確位置信息.高精度GPS能夠獲得車輛的全球定位信息,通常定位精度為厘米級.而在諸如隧道、地底等場景下不能獲得GPS信號時使用IMU能夠獲得車輛運動時在x,y,z三個方向的加速度信息,再加上感知子系統(tǒng)對周圍環(huán)境的感知,能夠在無法獲取GPS信號也能得到準(zhǔn)確的定位.
Fig. 1 A self-driving autonomous car with sensors圖1 裝載各種傳感器的半程自動駕駛小車
一個模塊化的自動駕駛系統(tǒng)的軟件部分主要由感知、決策規(guī)劃、控制等子模塊組成.
圖2是典型的模塊化自動駕駛系統(tǒng)的軟件結(jié)構(gòu).單獨的車輛可以通過高精度GPS的定位數(shù)據(jù)進行定位,在GPS受到干擾時通過IMU以及激光和視覺的輔助進行定位.但是,在室內(nèi)環(huán)境中,隨著時間的增長,IMU的慣性導(dǎo)航精度會下降[12],此時需要基于激光、視覺的定位,并需要離線地圖獲取當(dāng)前環(huán)境特征來進行定位[13].由于獲得了車輛的定位信息,并且事先也有環(huán)境的靜態(tài)信息,當(dāng)進行導(dǎo)航規(guī)劃時,根據(jù)車輛當(dāng)前定位信息,便可以在靜態(tài)地圖上獲得全局的路徑規(guī)劃.之后,在全局路徑的基礎(chǔ)上,隨著車輛運動,不斷獲得周圍環(huán)境的信息,再進一步地進行局部路徑規(guī)劃,即可獲得一個能夠避開環(huán)境動態(tài)物體的路徑.以上從建立全局路徑到產(chǎn)生局部路徑的過程通常由導(dǎo)航子模塊負責(zé).根據(jù)全局路徑以及局部路徑加上定位子系統(tǒng),可以獲得車輛的位置以及位姿.獲知車輛的下一步運動,并且隨著車輛的運動、周圍環(huán)境的變化更新局部路徑,再產(chǎn)生再下一步的運動.如此不斷地循環(huán),車輛就具有了從初始位置到達目標(biāo)位置的自動駕駛能力.而根據(jù)路徑進行下一步運動由車輛的運動控制子系統(tǒng)負責(zé).
Fig. 2 Overview of the autonomous driving software system圖2 自動駕駛軟件系統(tǒng)總覽
由于自動駕駛系統(tǒng)由各個復(fù)雜的模塊組成,其中感知模塊需要對大量數(shù)據(jù)進行實時處理,因此如何處理自動駕駛?cè)蝿?wù)中的感知數(shù)據(jù)是目前自動駕駛遇到的諸多挑戰(zhàn)之一.
一個成功的自動駕駛系統(tǒng)不僅需要準(zhǔn)確可靠的算法,更需要有對系統(tǒng)中產(chǎn)生的大量數(shù)據(jù)進行實時處理的能力.比如,一個64線的激光雷達產(chǎn)生的點云數(shù)據(jù)量高達3 000 KBs.作為基于激光點云的3D目標(biāo)檢測網(wǎng)絡(luò)中實時性最好的PointPillars,其在算力較充足的1080tiGPU上能達到60 Hz的執(zhí)行頻率[10].同時,視覺感知也是自動駕駛系統(tǒng)中不可或缺的一部分.基于視覺數(shù)據(jù)的目標(biāo)識別需要YOLOv3[14],Fast R-CNN[15]等基于視覺的神經(jīng)網(wǎng)絡(luò).該類神經(jīng)網(wǎng)絡(luò)的計算量更大,現(xiàn)在能達到的處理頻率在10~60 Hz.上面的點云和視覺感知都是自動駕駛感知子系統(tǒng)的主要任務(wù),即通過處理感知數(shù)據(jù)來對車自身和周圍環(huán)境進行感知.相比于自動駕駛中的其他子系統(tǒng)比如說物體追蹤和路徑規(guī)劃,感知子系統(tǒng)對計算資源的需求要遠大于其他.
然而,實際車輛能夠提供給計算設(shè)備的能源是非常有限的,這要求自動駕駛系統(tǒng)不能依靠強大的計算設(shè)備來達到滿足運行要求的感知頻率,而需要在面對大量計算任務(wù)下對任務(wù)進行合理的分配,對單個任務(wù)在不影響精度的情況下進行計算優(yōu)化.
一個自動駕駛系統(tǒng)的計算瓶頸集中在感知層面,無論是僅僅使用3D激光雷達還是攝像頭,又或者兩者同時使用,都引入了大量的數(shù)據(jù).對于RGB攝像頭的物體識別網(wǎng)絡(luò),如果識別的圖片分辨率為320×320,攝像頭產(chǎn)生數(shù)據(jù)的頻率在50 Hz,這個情況下的數(shù)據(jù)量為14 MBs.對于一個64線的激光雷達每秒產(chǎn)生的點云數(shù)據(jù)量高達3 000 KB.目標(biāo)檢測神經(jīng)網(wǎng)絡(luò)的實時性要求為處理頻率大于50 Hz,但目前還沒有計算設(shè)備能夠在無優(yōu)化、無調(diào)度的情況下滿足此計算需求.而且,無論是1080ti還是Titan X的INT8性能都超過了專門用于車輛計算的Jetson AGX Xavier,如表1所示.由此看來,為滿足實時性要求,車載計算的優(yōu)化是不可或缺的.
因此,目前自動駕駛實時性的挑戰(zhàn)主要集中在:在計算資源有限的情況下,如何在不影響各類算法精度的前提下,提升自動駕駛系統(tǒng)感知模塊的運行頻率.為了解決這個問題,我們的思路是一個以深度融合(deepfusion)為主的框架:在高層進行感知數(shù)據(jù)、模型和計算方法、調(diào)度方法的融合,以提高感知的計算時效;在感知層對不同感知模態(tài)的數(shù)據(jù)進行融合(本文中以融合攝像頭和激光雷達數(shù)據(jù)為主),以提高感知的精度.
Table 1 Performance of Devices表1 計算設(shè)備性能
在自動駕駛領(lǐng)域,對環(huán)境的感知將用于后續(xù)的路線規(guī)劃、障礙物規(guī)避等關(guān)鍵性操作,是確保行駛安全的前提.基于圖像的2D感知輸出2維結(jié)果,缺少深度信息,無法直接用于構(gòu)建立體環(huán)境,不滿足自動駕駛的要求.因此能夠獲取三維信息的3D感知成為自動駕駛感知任務(wù)中的焦點,近幾年對3D感知的研究可謂是百花齊放、百家爭鳴.其中3D目標(biāo)檢測是感知的基礎(chǔ)和重點,由于篇幅限制,本節(jié)僅對近年來基于激光雷達、攝像頭及二者融合的3D目標(biāo)檢測算法進行介紹.
ResNet[16]和PointNet[17]作為圖像處理和點云處理中最經(jīng)典的網(wǎng)絡(luò),本身及其變種經(jīng)常作為網(wǎng)絡(luò)的一部分出現(xiàn)在感知處理模塊中.由于二者在感知處理中的重要性和奠基性,本節(jié)將率先介紹PointNet和ResNet.
ResNet一面世就在當(dāng)年(2015年)的ILSVRC & COCO中斬獲包括檢測在內(nèi)的多項挑戰(zhàn)的桂冠,之后在改進的同時,不斷被其他感知處理網(wǎng)絡(luò)借鑒使用,影響深遠.ResNet針對網(wǎng)絡(luò)“退化”問題,即隨著模型層次加深,學(xué)習(xí)效果反而變差,提出了殘差結(jié)構(gòu):增加如圖3所示的恒等映射(identity mapping),將直接學(xué)習(xí)變?yōu)楦菀椎臍埐罴雍愕扔成鋵W(xué)習(xí).該結(jié)構(gòu)由shortcut connection實現(xiàn),即用一條近路將一個塊的輸入和輸出聯(lián)結(jié),該方法降低了優(yōu)化難度,提高了訓(xùn)練速度,解決了退化問題,在圖像處理中被廣泛使用.
Fig. 3 Identity mapping[16]圖3 恒等映射示意圖[16]
PointNet是直接對點云數(shù)據(jù)進行處理的深度學(xué)習(xí)模型,可以運用在點云分割、分類等任務(wù).為了克服點云數(shù)據(jù)的無序性問題,該網(wǎng)絡(luò)利用max-pooling作為對稱函數(shù),達到數(shù)據(jù)排列不同、結(jié)果仍保持一致的效果;此外,數(shù)據(jù)處理過程中不受空間變化的影響,為了確保這一點,PointNet在點云處理前使用空間變換網(wǎng)絡(luò)(spatial transformer network)進行對齊.最終,雖然網(wǎng)絡(luò)的基礎(chǔ)結(jié)構(gòu)簡單,但運行速度快、效果好,成為處理點云數(shù)據(jù)的基礎(chǔ)網(wǎng)絡(luò).
激光雷達數(shù)據(jù)包含目標(biāo)物體的距離信息以及豐富的結(jié)構(gòu)信息,相較于圖像數(shù)據(jù)能構(gòu)建出更加接近真實環(huán)境的感知結(jié)果,在目標(biāo)檢測方面有得天獨厚的優(yōu)勢.近年來,利用激光雷達數(shù)據(jù)進行3D檢測的精度相較單純利用圖像數(shù)據(jù)的方式提高不少,逐漸成為自動駕駛中的新趨勢.本節(jié)從眾多優(yōu)秀的算法中挑選PointPillars[10],PointRCNN[18],TANet[19]進行介紹.PointPillars是用體素化方法解決點云數(shù)據(jù)稀疏、無序問題的代表,同時也是典型的一階段實現(xiàn)方法,這種方式使得PointPillars檢測時間短、實時性能好;PointRCNN是兩階段操作的代表,檢測時間較長,但實現(xiàn)了更高的精度;而TANet提出多層次的特征提取,克服了點云數(shù)據(jù)應(yīng)用在行人檢測上的檢測難、誤檢多的問題.
1) PointPillars
PointPillars在檢測精度和時間上都表現(xiàn)得不錯,在時間上尤為突出.其網(wǎng)絡(luò)結(jié)構(gòu)如圖4所示,其創(chuàng)新點在于3D點云體素化編碼.作為一階段檢測方法的代表,其具體的處理流程大致如下:按照3D點云的x,y,z軸劃分成小塊,再將點云中的點按照其坐標(biāo)進行特征編碼,經(jīng)過PointNet特征提取之后形成偽圖像,該偽圖像被輸入到RPN中進行進一步的特征提取;最后將其放入2D檢測網(wǎng)絡(luò),該網(wǎng)絡(luò)輸出關(guān)于3D標(biāo)注框的相關(guān)參數(shù),由此得到感知結(jié)果.其新穎的編碼方式,是其快速性、準(zhǔn)確性的重要保障,可以以62 Hz的頻率進行識別工作,在KITTI 3D檢測數(shù)據(jù)集上運行時間僅16 ms,是目前KITTI 3D檢測排行榜上最快的算法.
2) PointRCNN
PointRCNN網(wǎng)絡(luò)結(jié)構(gòu)如圖5所示,在檢測精度上比PointPillars更勝一籌.其主要創(chuàng)新在于:在如何選擇候選區(qū)域這一問題上拋棄以往使用的待選框多、計算量大的anchor方法,創(chuàng)造了一種基于前景點的方法.該算法是典型的兩階段檢測方法,其具體處理流程大致如下:在第1階段,將所有原始點云分割成前景點和背景點,利用從下到上的網(wǎng)絡(luò)生成高質(zhì)量的3D候選區(qū)域;接著在第2階段,對候選區(qū)域的點進行池化并加上部分特征,通過全連接層學(xué)習(xí)空間信息,然后與全局特征相結(jié)合來進行邊框精度優(yōu)化以及置信度的預(yù)測.其在候選區(qū)域選取方法的創(chuàng)新,使得第一階段具有高召回率.該算法當(dāng)時在所有以點云輸入的KITTI 3D檢測排行榜(3)KITTI 3D檢測排行榜用檢測指標(biāo):3D Bbox AP中的moderate進行排名,具體計算依照PASCAL criteria.中名列第1.
Fig. 4 The structure of PointPillars[10]圖4 PointPillars網(wǎng)絡(luò)結(jié)構(gòu)圖[10]
Fig. 5 The structure of PointRCNN[18]圖5 PointRCNN網(wǎng)絡(luò)結(jié)構(gòu)圖[18]
3) TANet
TANet在行人檢測中表現(xiàn)十分突出,目前在KITTI行人3D檢測排行榜上排名第4,同時在KITTI測試中算法的運行時間僅為0.035 s.該算法網(wǎng)絡(luò)結(jié)構(gòu)如圖6所示,主要的創(chuàng)新點在于,關(guān)注多個層次的特征提取.從淺層次的語義信息到深層次的融合信息,該算法都給予充分關(guān)注.從稀疏的點云數(shù)據(jù)中挖掘出足夠多的信息,使其在行人檢測更具分辨力,實現(xiàn)高精度檢測.具體的處理流程如下:原始點云數(shù)據(jù)經(jīng)過體素化,之后通過2個相同的逐點、逐通道和逐體素的3點關(guān)注網(wǎng)絡(luò)模塊學(xué)習(xí)得到關(guān)鍵特征,并經(jīng)過全連接層和池化層調(diào)整,輸出至從簡到精的回歸模塊,多次使用上采樣和降采樣以及整合的方式得到信息豐富的特征地圖;再進行分類和位置估計,最終得到檢測結(jié)果.多層次多關(guān)注點的特征提取方法是其在行人檢測取得成功的重要保障,是實現(xiàn)強魯棒性的重要原因,同時由簡到精的回歸模塊確保了算法的快速性.
Fig. 6 The structure of TANet[19]圖6 TANet網(wǎng)絡(luò)結(jié)構(gòu)圖[19]
Fig. 7 The structure of Pseudo-LiDAR++[20]圖7 Pseudo-LiDAR++網(wǎng)絡(luò)結(jié)構(gòu)圖[20]
相機在可以獲取稠密豐富的信息的同時,仍然可以保持著低廉的價格.憑借著同時實現(xiàn)低成本與高性能的特點,計算機視覺在無人駕駛中扮演著舉足輕重的角色.從目標(biāo)檢測到目標(biāo)跟蹤,從路面識別到視覺里程計,相機幾乎可以完成所有在無人駕駛中所需要的感知任務(wù).但是,相機并非是完美無缺的選擇,相較于雷達而言,由于其缺少所獲取畫面的深度信息,所以在3D目標(biāo)檢測等任務(wù)上有著天生的缺陷,如何彌補這一缺陷成為該領(lǐng)域的重點與熱點.這里我們在近期取得的研究進展中選擇了3項思路不同的工作進行簡單介紹.Pseudo-LiDAR++[20]為雙目視覺的代表工作;D4LCN[21]從深度圖學(xué)習(xí)知識,以改進基礎(chǔ)的2D全卷積;SMOKE[22]通過結(jié)合單一特征點的估計值與回歸3D變量的思路來預(yù)測目標(biāo)物體的3D邊框.
1) Pseudo-LiDAR++
基于雙目圖像的偽激光雷達(Pseudo-LiDAR)是一種有前途的替代雷達進行檢測的方案,但是在性能方面仍然存在著很大差距.傳統(tǒng)的方法首先估計像素在左右兩攝像頭中的視差,從而間接估計像素的深度,這種方法在近距離表現(xiàn)良好,但在遠距離效果不佳.而Pseudo-LiDAR++的創(chuàng)新點在于:其首先使用立體深度網(wǎng)絡(luò)(stereo depth network, SDN)從左右圖像中構(gòu)建costvolumn,該操作使3D卷積在正確的比例上進行深度估計,對相鄰的深度產(chǎn)生相同的影響.此外本文還提出一種使用廉價的4線激光雷達來彌補偽激光雷達中不足的方法,稱為基于圖的深度矯正算法(graph-based depth correction, GDC).將雷達產(chǎn)生的點云少量與圖片中的像素進行匹配,以獲取圖像中幾個節(jié)點的精確深度,最后使用標(biāo)簽擴散機制將準(zhǔn)確的深度信息傳播到整張圖片,其網(wǎng)絡(luò)結(jié)構(gòu)如圖7所示.這種方法以極其低廉的價格而取得與64線激光雷達類似的效果.
2) D4LCN
一種比較流行的3D目標(biāo)檢測方法是估計2D圖像的深度圖,將2D圖像轉(zhuǎn)化為點云進行表示,以模仿雷達的信號,但是這種方法的性能取決于2D圖像深度圖估計的準(zhǔn)確度.D4LCN提出一種稱之為Depth-guided Dynamic-Depthwise-Dilated Local Convolutional Network的卷積神經(jīng)網(wǎng)絡(luò).其創(chuàng)新點在于:不僅解決了2D卷積尺度敏感的問題,還充分利用了RGB的語義信息.如圖8所示,卷積核由深度圖生成,局部地運用于各個圖像的像素和通道(而不是使用全局卷積核應(yīng)用于整個圖像)來區(qū)分物體與背景.整體的網(wǎng)絡(luò)結(jié)構(gòu)由3個關(guān)鍵組件組成:網(wǎng)絡(luò)主干、深度引導(dǎo)的濾波模塊、2D-3D的檢測頭,依次完成RGB特征提取與卷積核生成,橋接2D卷積與3D點云,輸出3D標(biāo)注框的工作.D4LCN不僅解決了2D卷積尺度不敏感和局部結(jié)構(gòu)無意義的問題,還利用了RGB圖像中的語義信息,最終經(jīng)過KITTI數(shù)據(jù)集的比對也取得了良好的效果.
Fig. 8 The structure of D4LCN[21]圖8 D4LCN網(wǎng)絡(luò)結(jié)構(gòu)圖[21]
Fig. 9 The structure of SMOKE[22]圖9 SMOKE網(wǎng)絡(luò)結(jié)構(gòu)圖[22]
3) SMOKE
SMOKE從另一個角度實現(xiàn)了新的創(chuàng)意.其創(chuàng)新點在于:提出一種單步的3D對象檢測方法;將每個對象與關(guān)鍵點配對,預(yù)測圖像上的3D投影點,并且并行地進行3D邊框參數(shù)的回歸,以此消除2D檢測帶來的噪聲,實現(xiàn)端到端3D邊框的預(yù)測.在網(wǎng)絡(luò)結(jié)構(gòu)上,如圖9所示,SMOKE采用DLA-34作為backbone,從下采樣過后的圖像中提取特征.再由2個單獨的分支進行關(guān)鍵點分類和3D邊框的回歸,綜合2個分支的信息,獲取3D邊框值.其中提取關(guān)鍵點的分支將每個對象由一個特定的關(guān)鍵點表示,這個關(guān)鍵點代表著對象在圖像平面上的投影3D中心.回歸分支將3D邊框表示為8個參數(shù),依次推出3D邊框的位姿.SMOKE舍棄了常規(guī)方法的各種步驟,采用簡單的網(wǎng)絡(luò)結(jié)構(gòu),提高了3D對象檢測的準(zhǔn)確度與速度,并在相應(yīng)的KITTI排行榜中名列前茅.
上述3種方法的測試結(jié)果在表2中得到展示,可以看到其效果距基于雷達數(shù)據(jù)的方法仍有較大差距,說明基于視覺的3D檢測仍然有著很大的進步空間.
Table 2 Comparison of Performance for 3D Car Category on KITTI Dataset
Fig. 10 The structure of PointFusion[23]圖10 PointFusion網(wǎng)絡(luò)結(jié)構(gòu)圖[23]
圖像數(shù)據(jù)擁有豐富稠密的物體信息,但是缺少畫面的深度信息;而雷達數(shù)據(jù)恰好可以彌補此缺陷,給出精確的深度信息和物體的結(jié)構(gòu)信息.在3D目標(biāo)檢測的過程中,將2類數(shù)據(jù)中的信息相融合在理論上應(yīng)該可以達到更高的精度.但是在哪些或者哪個階段,以何種方式將2種不同的數(shù)據(jù)進行融合才能獲得更好的效果,這是以融合的方式解決3D檢測問題的重點和難點.依據(jù)在什么階段執(zhí)行融合步驟被分為前融合和后融合2種,前者先將數(shù)據(jù)進行融合之后再執(zhí)行感知任務(wù),后者則是先進行感知,之后對結(jié)果進行融合.本文我們選取其中最具代表性的工作Pointfusion[23]進行簡單的介紹.
Pointfusion是典型的前融合模型,執(zhí)行特征級別的數(shù)據(jù)融合.它使用簡單的網(wǎng)絡(luò)結(jié)構(gòu)(如圖10所示)實現(xiàn)通用的融合模型,不需要進行特定數(shù)據(jù)集的模型調(diào)優(yōu),在KITTI和SUN-RGBD相應(yīng)的排行榜上都取得不錯的成績用不同的網(wǎng)絡(luò)分別從圖像和點云數(shù)據(jù)中學(xué)習(xí)特征,再將特征進行融合用來預(yù)測3D邊框.鑒于3D點云數(shù)據(jù)轉(zhuǎn)換成圖像格式或者體素化都會導(dǎo)致信息的丟失,Pointfusion將利用PointNet的變種直接從原始激光雷達點云數(shù)據(jù)中學(xué)習(xí)特征,同時利用ResNet學(xué)習(xí)圖像的特征;之后密集融合子網(wǎng)絡(luò)會結(jié)合2類不同特征進行融合,再將融合特征傳入MLP,估計3D邊框的偏移和置信度,最終實現(xiàn)3D邊框的預(yù)測.
第2節(jié)提到的7種網(wǎng)絡(luò)模型在KITTI 3D檢測數(shù)據(jù)集的測試結(jié)果如表2,3所示:
Table 3 Comparison of Performance for 3D Pedestian Category on KITTI Dataset
自動駕駛依賴各種傳感器感知環(huán)境信息.為了提升感知精度,感知模型的深度不斷增加、模塊間依賴關(guān)系也愈發(fā)復(fù)雜,模塊內(nèi)計算量不斷攀升.同時,感知任務(wù)的響應(yīng)時延能否達到自動駕駛系統(tǒng)的實時性要求關(guān)乎道路安全,必須嚴格限制.但與此矛盾的是車端計算設(shè)備的算力發(fā)展相對緩慢,主要關(guān)注感知精度的實驗室研究成果直接部署很難滿足系統(tǒng)的實時性要求.自動駕駛普遍要求從數(shù)據(jù)采集傳輸、數(shù)據(jù)感知到控制決策的端到端時延在100 ms以內(nèi)[2,24-26],其中留給感知任務(wù)的時間在幾十毫秒量級,相應(yīng)的基于圖像的感知任務(wù)要達到30FPS的速度[27].表4分別展示了視覺模型和點云模型常用的骨干網(wǎng)絡(luò)ResNet50和PointNet的參數(shù)量和計算量.因此,需要通過各種計算優(yōu)化手段,削減模型中潛在的無效計算,仔細調(diào)度計算資源占用,實現(xiàn)感知任務(wù)的實時響應(yīng).
Fig. 11 Computational optimization method diagram圖11 計算優(yōu)化方法的脈絡(luò)圖
本節(jié)剩余部分按照圖11所示的脈絡(luò)詳細介紹近年來涌現(xiàn)的計算優(yōu)化方法.模型層次上,輕量網(wǎng)絡(luò)設(shè)計(lightweight model design)、模型蒸餾(model distillation)和時空連續(xù)性優(yōu)化(temporal-spatial persistence optimization)等方法利用應(yīng)用領(lǐng)域知識將計算復(fù)雜度降低.在深度學(xué)習(xí)框架層次上,模型調(diào)度(model scheduling)、模型量化(model quantiza-tion)和算子融合(operator fusion)與調(diào)優(yōu)(operator tuning)等方法僅從系統(tǒng)層次上降低無效計算,提升計算硬件利用率,降低運行時開銷.由于不改變應(yīng)用的高層邏輯,這些方法擁有廣泛的適用性.
模型調(diào)度是指對智能車系統(tǒng)上的各類感知任務(wù)進行調(diào)度,從而使得有限的計算資源得到充分利用,達到系統(tǒng)要求的吞吐率和延遲,可分為多任務(wù)、多實時幀流的感知計算、同一幀流的計算復(fù)用等.
多任務(wù)是指多個模型在CPU和GPU上并行執(zhí)行.NVIDIA的CUDA編程模型[28]提供了多種GPU并行模式:1)同一CUDA context下多CUDA stream并行模式,不同的CUDA stream上的GPU操作可以并行執(zhí)行,這種方式對于GPU的利用率較高,但模型的推理延遲波動較大.2)多CUDA context并行模式,這種模式以時間片的方式共享GPU資源,不同CUDA context的資源相互獨立,但GPU的利用率較低.在Multi-Process Service(MPS)服務(wù)的支持下,多CUDA context模式以類似于多CUDA stream的方式運行.
多實時幀流的感知計算往往采用相同的模型處理多個實時輸入幀流,例如同時對多個攝像頭的視頻流進行模型推理.動態(tài)批量化方式[29]將在一段時間內(nèi)到達的或者達到一定閾值數(shù)量的輸入數(shù)據(jù)進行批量(batch)化,產(chǎn)生一個多維向量,交由模型統(tǒng)一處理,這種方式有利于提高吞吐率,但對于每一幀圖片有額外的等待延遲開銷,而且在較小的批量化數(shù)目下處理延遲會隨著批量化數(shù)目的增加近似線性增長.流水線方式[30]將包含數(shù)據(jù)前處理在內(nèi)的模型推理切分為一個個階段,對輸入的數(shù)據(jù)進行流水處理,這種方式使得CPU和GPU并發(fā)執(zhí)行,在CPU的計算延遲低于GPU延遲的情況下,可以掩蓋CPU端的計算延遲,提高系統(tǒng)整體的吞吐率.由于單個模型對于GPU的利用率不能達到100%,在每個流水階段使用多線程的話,還會有一定的GPU并行收益.
模型量化是將模型中的32位單精度浮點數(shù)(FP32)替換為低精度整型數(shù)(如INT8),來改變存儲與計算的一種模型壓縮技術(shù).目前主流量化方案是INT8[29],此外,根據(jù)使用位寬的不同還有二值量化[31-32]與三值量化[33]等.量化后的模型對存儲和帶寬的需求降低,在大多數(shù)處理器上整型計算速度更快,從而實現(xiàn)網(wǎng)絡(luò)模型的加速計算.使用整型數(shù)替換浮點數(shù)意味著計算精度丟失,不過網(wǎng)絡(luò)模型對精度丟失引入的噪聲足夠魯棒,合理控制量化位寬并調(diào)整量化參數(shù),可以在帶來計算加速的同時避免嚴重的精度損失.以ResNet50網(wǎng)絡(luò)為例,采用8 b量化可以帶來3倍左右的性能提升[34],而ImageNet目標(biāo)分類任務(wù)Top1精度降低小于2%.
考慮INT8量化,F(xiàn)P32浮點數(shù)x和INT8整型數(shù)y滿足關(guān)系y=S(x-Z),其中參數(shù)S為量化縮放系數(shù)(FP32表示),參數(shù)Z為量化后零值(INT8表示).這2個參數(shù)需要根據(jù)x的取值分布仔細設(shè)置以保證網(wǎng)絡(luò)模型精度.
根據(jù)參數(shù)設(shè)置時機的不同,量化可以分為訓(xùn)練后量化和訓(xùn)練時量化.訓(xùn)練后量化指網(wǎng)絡(luò)模型使用FP32表示完成訓(xùn)練后再量化到INT8表示.TensorRT[29]在calibration數(shù)據(jù)集上應(yīng)用訓(xùn)練好的FP32模型統(tǒng)計各層激活值的直方圖,通過嘗試不同x的值域邊界來評估量化前后的KL散度.HAQ[35]則直接將這個問題抽象為強化學(xué)習(xí)問題,反復(fù)在實際設(shè)備上運行量化模型得到精度與時延作為反饋來調(diào)整參數(shù).訓(xùn)練時量化指在訓(xùn)練網(wǎng)絡(luò)模型的同時調(diào)整量化參數(shù).典型工作[34]在網(wǎng)絡(luò)模型的計算圖中插入量化模擬結(jié)點來模擬量化的影響,但是所有計算仍舊使用FP32完成.
根據(jù)量化粒度大小的不同,量化分為逐層量化(layer-wise)和逐通道量化(channel-wise)兩種.逐層量化把參數(shù)張量作為一個整體來選擇量化參數(shù),而逐通道量化把參數(shù)張量視為多個通道參數(shù)的集合,為每個通道選擇獨立的量化參數(shù).文獻[36]表明量化粒度越小,量化對精度的影響越小.考慮到逐通道量化的實現(xiàn)復(fù)雜化,各主流框架優(yōu)先支持逐層量化.
知識蒸餾(knowledge distillation)將復(fù)雜的教師網(wǎng)絡(luò)(teacher network)的知識遷移到一個較小的學(xué)生網(wǎng)絡(luò)(student network)來實現(xiàn)網(wǎng)絡(luò)的壓縮,能夠幾乎不損失精度地減少模型計算量.具體來說,學(xué)生網(wǎng)絡(luò)在訓(xùn)練時學(xué)習(xí)2個目標(biāo):1)硬目標(biāo)(hard target)為數(shù)據(jù)標(biāo)簽;2)軟目標(biāo)(soft target)為教師網(wǎng)絡(luò)預(yù)測的概率分布.因為軟目標(biāo)蘊含了數(shù)據(jù)上更多的相似性結(jié)構(gòu)的信息,使學(xué)生網(wǎng)絡(luò)學(xué)到教師網(wǎng)絡(luò)在更大數(shù)據(jù)集上習(xí)得的潛在內(nèi)部結(jié)構(gòu),避免學(xué)生網(wǎng)絡(luò)過擬合,使其有更好的泛化能力.但是如何選擇一個簡單又不至于欠擬合的學(xué)生網(wǎng)絡(luò)仍是一個問題.
Hinton等人[37]在2015年提出知識蒸餾時,教師網(wǎng)絡(luò)使用的是學(xué)生網(wǎng)絡(luò)的集成模型,即多個模型的平均,并指出可以通過分布式地訓(xùn)練集成模型,然后蒸餾到單個模型的方式加速模型訓(xùn)練.后來的研究者又基于知識蒸餾的思想提出了一些衍生工作,比如設(shè)計其他的訓(xùn)練函數(shù)以提取教師網(wǎng)絡(luò)的更多信息,將教師網(wǎng)絡(luò)中間層的結(jié)果也用于對學(xué)生網(wǎng)絡(luò)的監(jiān)督訓(xùn)練[38-40]或者使用更小的學(xué)生網(wǎng)絡(luò)以提高模型壓縮的效果,如量化蒸餾中用量化模型作為蒸餾學(xué)習(xí)的學(xué)生網(wǎng)絡(luò)[36].
深度學(xué)習(xí)框架提供各種算子來組合表達模型的計算邏輯,這些算子每個都對應(yīng)獨立的GPU核函數(shù)實現(xiàn),通常由第三方的GPU計算庫提供,如人們熟知的cuDNN[41]計算庫.模型訓(xùn)練或推理過程中,這些算子對應(yīng)的核函數(shù)被分別地發(fā)射到GPU端運行.因此一個算子完整的執(zhí)行開銷包括發(fā)射核函數(shù)的CPU端的運行時開銷(算子調(diào)度開銷與GPU驅(qū)動開銷)和GPU端的實際計算開銷.
算子融合是指將多個算子的核函數(shù)融合為一個核函數(shù)一并發(fā)射到GPU端運行.算子融合可以減少算子發(fā)射的運行時開銷,同時如果融合的算子間存在數(shù)據(jù)依賴關(guān)系,通過在GPU的高層存儲(如GPU上的共享內(nèi)存或寄存器)上精心排布不同核函數(shù)的輸入輸出可以大幅提升算子間的數(shù)據(jù)傳輸效率,進一步提升計算性能.以LSTM單元為例,文獻[42]聲稱算子融合操作可以將LSTM單元的運行時間從27 ms降至8.3 ms左右,性能提升3.25倍.
各種深度學(xué)習(xí)框架編譯器對自動算子融合支持已經(jīng)逐步完善,如XLA[43],Torch Script[44],Relay[45]和TensorRT[29]等.模型會檢測計算圖中是否存在子圖符合預(yù)置的算子融合模式,如連續(xù)多個逐點操作、復(fù)雜操作緊接逐點操作和矩陣乘法批量化等,根據(jù)模型預(yù)估性能收益決策是否執(zhí)行融合[46].融合后算子的計算邏輯可能沒有第三方計算庫函數(shù)能夠直接支持,需要編譯器后端自動生成對應(yīng)的GPU核函數(shù)代碼.
面向深度學(xué)習(xí)領(lǐng)域,支持自動生成高效的GPU核函數(shù)的后端編譯器典型代表是TVM[47].它將張量計算中硬件無關(guān)的計算邏輯與硬件相關(guān)的調(diào)度邏輯解耦,并將常用的調(diào)度手段抽象為一組原語.開發(fā)人員使用原語為融合后的算子描述參數(shù)化的調(diào)度模板,搭配基于深度學(xué)習(xí)的自動調(diào)優(yōu)器AutoTVM[48]對模板參數(shù)進行調(diào)優(yōu)得到最優(yōu)調(diào)度策略,最終由代碼生成器綜合計算邏輯與調(diào)度策略生成最終高效的GPU核函數(shù)代碼.Tensor Comprehensions[49]和Tiramisu[50]則采用多面體模型來進行自動調(diào)度,進一步減少調(diào)度策略搜索中人工的介入.
不同于模型壓縮方法在訓(xùn)練好的網(wǎng)絡(luò)中進行壓縮,輕量網(wǎng)絡(luò)設(shè)計的思路是直接構(gòu)建一個輕量、高效的網(wǎng)絡(luò)結(jié)構(gòu).這些設(shè)計可大致分為2種:1)直接人工構(gòu)建一個輕量網(wǎng)絡(luò);2)使用NAS(neural architecture search)自動搜索輕量網(wǎng)絡(luò)結(jié)構(gòu).
由于深度學(xué)習(xí)網(wǎng)絡(luò)之中卷積層占據(jù)著大多數(shù)的計算量,人工設(shè)計輕量網(wǎng)絡(luò)主要關(guān)注于降低卷積操作的計算復(fù)雜度.一種方法是修改常規(guī)卷積的基本參數(shù),如將一些卷積核大小為3×3的卷積替換為1×1的卷積[51],3×3的卷積是1×1的卷積參數(shù)量的19.另一種是對常規(guī)卷積的分解,以達到降低計算量的目的.深度可分離卷積將卷積操作分解為Depthwise卷積和Pointwise卷積.常規(guī)卷積將卷積核應(yīng)用到輸入特征圖的每個通道,而Depthwise卷積只將卷積核應(yīng)用到輸入特征圖的單個通道.Pointwise卷積則是卷積核大小為1×1的常規(guī)卷積.MobileNets[52]使用的3×3深度可分離卷積是常規(guī)卷積的19~18的計算量.還有一種方法是從卷積的原理和產(chǎn)生的作用上研究如何減低計算復(fù)雜度.GhostNets[53]發(fā)現(xiàn)了卷積所生成的不同特征圖之間的冗余信息(部分特征圖比較相似),在保留部分常規(guī)卷積生成的特征圖之后,使用計算復(fù)雜度較低的線性操作(如Depthwise卷積)來生成冗余信息,這樣在降低計算復(fù)雜度的同時,保持了模型的精度.卷積計算可以看做是計算卷積核與輸入的相似度操作,常規(guī)卷積用點積計算互相關(guān),AdderNet[54]將其換成L1距離,可以實現(xiàn)只使用加法進行CNN網(wǎng)絡(luò)的構(gòu)建.
由于人工設(shè)計網(wǎng)絡(luò)難以很好地平衡在受限資源下網(wǎng)絡(luò)的性能和精度,NAS的方法自動搜索輕量網(wǎng)絡(luò)結(jié)構(gòu),使得網(wǎng)絡(luò)的性能和精度能夠更好地取得平衡.NAS的基本流程是:1)定義一個搜索空間;2)使用一個包含搜索參數(shù)的模型生成器從搜索空間中取樣一個或幾個模型;3)評估這些模型的性能,取其中最好的一個模型;4)使用評估結(jié)果調(diào)整搜索參數(shù);5)重復(fù)2)~4)直到取得結(jié)果.其中比較關(guān)鍵的問題就是搜索空間的定義、搜索算法的設(shè)計以及模型的評估方法.MnasNet[55]定義了一個較為全面的模型搜索空間(對整個網(wǎng)絡(luò)結(jié)構(gòu)進行搜索),使用強化學(xué)習(xí)的方法搜索整個網(wǎng)絡(luò)結(jié)構(gòu),并在搜索過程中使用實際設(shè)備進行模型推理延遲的測試.DARTS[56]定義了一個連續(xù)的可微分的搜索空間(搜索的是cell,網(wǎng)絡(luò)由cell堆砌而成),使得可以使用梯度下降的方法進行參數(shù)更新.不同于強化學(xué)習(xí)或可微分的方法,AmoebaNet-A[57]使用了演化(evolution)算法進行模型搜索.
自動駕駛場景下,車輛周圍環(huán)境是連續(xù)變化的,傳感器感知周圍環(huán)境的相鄰兩幀數(shù)據(jù)在時間和空間2個維度上也會呈現(xiàn)出連續(xù)且規(guī)律的變化.以檢測任務(wù)為例,目標(biāo)的空間位置、運動特征和外觀特征在間隔足夠短的兩幀感知數(shù)據(jù)中可能會有微小變化,但不會出現(xiàn)突變的情況.對于需要高頻連續(xù)感知的任務(wù),這種時空連續(xù)性使得模型利用歷史感知數(shù)據(jù)提升感知精度、優(yōu)化計算性能成為可能.
當(dāng)前,感知數(shù)據(jù)的時空連續(xù)性更多地被編碼為上下文信息輸入感知網(wǎng)絡(luò)來提升感知任務(wù)的精度,而從計算優(yōu)化角度出發(fā),討論利用時空連續(xù)性來減少無效計算的工作比較少,主要集中在離線視頻流的目標(biāo)檢測任務(wù)上,方法特征可以分為2類:1)基于關(guān)鍵幀的信息傳播.文獻[58]對視頻流采樣關(guān)鍵幀并對其應(yīng)用較為復(fù)雜目標(biāo)檢測模型得到目標(biāo)位置,將相鄰2個關(guān)鍵幀圖像的相關(guān)特征和檢測結(jié)果輸入較為簡單的模型預(yù)測中間幀目標(biāo)位置.PaD[59]同樣采樣關(guān)鍵幀并應(yīng)用復(fù)雜的目標(biāo)檢測網(wǎng)絡(luò),對于中間幀,直接基于關(guān)鍵幀目標(biāo)位置劃定ROI大致范圍,從而跳過兩階段目標(biāo)檢測模型中的Region Proposal階段.2)直接學(xué)習(xí)相鄰幀數(shù)據(jù)相關(guān)性,如光流或者殘差.文獻[60]將關(guān)鍵幀特征圖與光流信息卷曲(warp)降低非關(guān)鍵幀特征圖計算開銷.除了圖像光流,F(xiàn)lownet3D[61]針對點云數(shù)據(jù)提出flow embedding層學(xué)習(xí)連續(xù)兩幀數(shù)據(jù)的相關(guān)性、編碼點云的運動規(guī)律,并提出upconv層傳播特征來預(yù)測下一幀點云數(shù)據(jù).文獻[62]將相鄰幀相減得到稀疏輸入并交由稀疏感知硬件實現(xiàn)計算加速.
上述工作應(yīng)用局限在離線處理場景,要求全局數(shù)據(jù)已知,而自動駕駛的感知任務(wù)都需要在線處理.在線處理場景下,時空連續(xù)性只能對歷史感知數(shù)據(jù)已經(jīng)捕捉到的目標(biāo)應(yīng)用,而對新出現(xiàn)的目標(biāo)無能為力,需要特殊處理.
Sonic智能小車系統(tǒng)使用16線3D激光、四路高清攝像頭作為環(huán)境感知傳感器,厘米級精度的RTK GPS以及IMU用于輔助車輛定位.在車輛控制方面,通過高速CAN總線與車輛進行通信,包括接受車輛當(dāng)前運動狀態(tài)、車輛當(dāng)前運行狀態(tài)、控制車輛速遞和轉(zhuǎn)向等功能.
整個Sonic系統(tǒng)由底層硬件向上觀察,首先激光雷達不斷對周圍的環(huán)境進行掃描獲得3D激光點云數(shù)據(jù),攝像頭獲取周圍環(huán)境的RGB數(shù)據(jù),并且由四路攝像頭組成環(huán)視.RTK GPS在環(huán)境良好的情況下能夠獲取高精度定位信息,車輛通過CAN總線發(fā)送當(dāng)前車輛的速度、轉(zhuǎn)向角、異常信息等數(shù)據(jù).得到硬件感知、控制數(shù)據(jù)之后,感知部分持續(xù)接收激光雷達、攝像頭的感知數(shù)據(jù)、GPS的定位信息,再結(jié)合預(yù)先對環(huán)境建立的離線地圖通過cartography等定位算法得到在該地圖中精確的定位數(shù)據(jù).之后將定位數(shù)據(jù)、車輛運動數(shù)據(jù)、激光點云、攝像頭RGB數(shù)據(jù)通過感知神經(jīng)網(wǎng)絡(luò)以車輛作為中心進行物體的識別、定位、對周圍物體建立運動模型.之后導(dǎo)航模塊接收感知結(jié)果,結(jié)合靜態(tài)地圖建立局部實時的動態(tài)地圖,并根據(jù)該動態(tài)地圖使用Hybird A*,teb local planner等導(dǎo)航算法進行路徑規(guī)劃,生成一個車輛可執(zhí)行動態(tài)避障的路徑.根據(jù)該路徑計算車輛的加速度、轉(zhuǎn)角等控制數(shù)據(jù),并將控制數(shù)據(jù)發(fā)送CAN總線控制車輛.整個系統(tǒng)的每個部分都需要巨大算力的支持,這里我們利用模塊MPinfer來實現(xiàn)計算優(yōu)化以滿足系統(tǒng)運行實時性要求.
4.1.1 感知模塊
本系統(tǒng)在感知部分使用感知融合技術(shù),而感知融合根據(jù)結(jié)構(gòu)可以分為2類:前融合、后融合.前融合直接以3D激光、攝像頭、IMU作為數(shù)據(jù)來源并結(jié)合車輛當(dāng)前運動狀態(tài)通過神經(jīng)網(wǎng)絡(luò)直接給出對環(huán)境周圍物體的識別、追蹤.而后融合則在得到識別、追蹤等感知結(jié)果后再進行融合.本系統(tǒng)包含這2種融合方式.
通常感知模塊這部分的結(jié)果表現(xiàn)為一個對周圍環(huán)境物體的列表,表中不僅包含物體的坐標(biāo)還有物體的運動速度、方向等運動信息.為了滿足車輛行駛的需求通常該模塊工作頻率在50 Hz左右,根據(jù)車輛自身的運動性能可以對該頻率進行下調(diào),目前本系統(tǒng)部署的車輛最高速度為1.5 ms左右,該模塊工作頻率可略微下調(diào).
感知模塊除了對周圍環(huán)境進行物體識別并建立模型之外,還負責(zé)車輛在當(dāng)前環(huán)境中的定位工作.定位則不僅僅需要3D激光、攝像頭的感知數(shù)據(jù),還有RTK GPS的高精度定位信息以及預(yù)先建立的離線地圖,通過3D激光和攝像頭的感知數(shù)據(jù)在離線地圖內(nèi)進行識別,匹配得到車輛在地圖中的坐標(biāo),再結(jié)合RTK GPS的定位數(shù)據(jù)得到更加準(zhǔn)確的定位坐標(biāo).
此外在真實的交通環(huán)境中,該模塊還負責(zé)對交通燈的識別,以及道路車道線、可行駛區(qū)域的識別,并將這類感知結(jié)果輸出給規(guī)劃導(dǎo)航模塊.
4.1.2 規(guī)劃、導(dǎo)航、控制模塊
Sonic自動駕駛系統(tǒng)的規(guī)劃模塊接收感知模塊輸出,獲取對周圍環(huán)境感知的結(jié)果以及定位信息.首先進行全局路徑規(guī)劃:根據(jù)輸入到當(dāng)前系統(tǒng)中的目標(biāo)位置、車輛當(dāng)前位置,結(jié)合靜態(tài)地圖,通過Dijkstra,A*等算法得出粗糙的路徑,這部分的規(guī)劃涉及到了當(dāng)前車輛未觀察到的地圖,并且使用的算法沒有考慮到車輛的運動學(xué)限制,因此得到的路徑不能直接用于車輛的行駛,而為了使得這一部分的執(zhí)行速度加快,通常全局路徑規(guī)劃使用進行網(wǎng)格化后的地圖.
得到了導(dǎo)航路徑后,在局部路徑的基礎(chǔ)上利用pure pursuit等算法保證車輛能夠成功地沿著路徑平滑行駛,同時確保駕駛的舒適度.之后根據(jù)路徑特點對車輛的行駛線速度、加速度進行規(guī)劃,使車輛行駛過程速度變化平緩,保證駕駛的舒適度,防止突然變化的速度造成交通事故.
控制模塊的重點在于車輛如何精準(zhǔn)迅速地執(zhí)行指定指令.給車輛發(fā)送一個控制信息(線速度、轉(zhuǎn)角)到車輛接受該控制信息、執(zhí)行相應(yīng)的控制信息最后車輛輸出每個步進電機、舵機的控制信號,達到給定的狀態(tài),這個過程由于模塊間的延遲、以及控制信號達到給定數(shù)值直接的延遲,導(dǎo)致從當(dāng)前狀態(tài)到給定狀態(tài)直接有較大的延遲.為了使車輛能夠盡量以理想狀態(tài)運行,控制模塊需要PID、模糊控制等自動控制方面的算法,以實現(xiàn)給車輛相應(yīng)的線速度、角速度等控制信息后,車輛迅速且穩(wěn)定地達到給定的控制狀態(tài).
在Sonic系統(tǒng)中控制模塊集成在車輛底盤中,直接將目標(biāo)狀態(tài)通過CAN總線發(fā)送給底盤即可.
在本系統(tǒng)的感知模塊,我們通過挖掘3D點云和2D圖像之間的隱式相似性,提出了一種新穎的深度融合模型——ImageFusion.圖像和點云都包含不同的局部結(jié)構(gòu),并能在旋轉(zhuǎn)和平移中表現(xiàn)出不變性.即使點云是無序的數(shù)據(jù)結(jié)構(gòu),我們也可以通過在體素中對點云進行組織,并將每個垂直列中的點云編碼為固定長度的特征作為偽圖像.這些偽圖像包含具有特定結(jié)構(gòu)的空間信息.因此,當(dāng)我們將偽圖像與相機圖像結(jié)合在一起,并用2DCNN與多層感知機等目標(biāo)檢測器進行處理,即可得到3D檢測的結(jié)果.由于我們的方法將相機圖像與LiDAR偽圖像融合在一起,所以起名為ImageFusion.
ImageFusion將3D點云與相機圖像作為輸入,預(yù)測對象的3D邊框,充分利用圖像與激光雷達的共同優(yōu)勢.在KITTI數(shù)據(jù)集的測試結(jié)果表明,Image-Fusion明顯地優(yōu)于只基于激光雷達和只基于攝像頭數(shù)據(jù)的檢測模型.ImageFusion主要由4個部分組成:偽圖像轉(zhuǎn)換(將點云數(shù)據(jù)轉(zhuǎn)換為2D偽圖像)、相機圖像預(yù)處理、圖像拼接融合、目標(biāo)檢測.圖12是ImageFusion的網(wǎng)絡(luò)圖.下面逐一介紹這4個步驟.
Fig. 12 The structure of ImageFusion圖12 ImageFusion網(wǎng)絡(luò)結(jié)構(gòu)圖
第1步,在應(yīng)用深度融合之前,我們需要先將不同感器的數(shù)據(jù)轉(zhuǎn)換為通用格式.我們使用PointPillar的特征網(wǎng)絡(luò)將3D點云轉(zhuǎn)換為2D偽圖像,其將點云分割為若干柱體,對柱體中的點進行編碼,創(chuàng)建大小為(C,H,W)的偽圖像.在具體的試驗中,C=64,H=432,W=496.PointPillars的整個網(wǎng)絡(luò)在Intel i7 CPU和1080ti GPU的臺式機上可以在20 ms內(nèi)進行完整的運行,可以滿足自動駕駛對于推理速度的要求,達到實時運行的目的.
第2步,為了正確地將相機圖像與LiDAR偽圖像結(jié)合在一起,我們對相機圖像進行了適當(dāng)?shù)念A(yù)處理,將其縮放到(3,H,W)的尺寸,以在H與W兩個維度匹配2個圖像.其次我們對圖像執(zhí)行標(biāo)準(zhǔn)化操作.這里我們通過減去圖像中所有像素的平均值并除以標(biāo)準(zhǔn)差來進行標(biāo)準(zhǔn)化的步驟.這一步驟可以將圖像中像素的分布調(diào)整為正態(tài)分布,極大地平滑每個單獨圖像中的分布偏移,并更好地幫助深度神經(jīng)網(wǎng)絡(luò)更好的學(xué)習(xí)特征.
第3步,為了利用各個傳感器的優(yōu)勢,傳感器的融合非常重要.點云包含準(zhǔn)確的空間信息,但是很稀疏.圖像有足夠的密度,但會受到許多環(huán)境因素的干擾,如天氣照明等.因此,我們認為將二者結(jié)合起來,可以盡可能地實現(xiàn)準(zhǔn)確可靠的3D對象檢測.在第3步中,我們將LiDAR偽圖像與預(yù)處理后的相機圖像進行串聯(lián)拼接,獲得大小為(C′,H,W)的偽圖像,其中C′=C+3.
第4步,我們使用了RPN(region proposal net-work)進行目標(biāo)物體3D邊框的生成.在Image-Fusion中,RPN輸入第3步中融合產(chǎn)生的偽圖像.RPN由3個卷積塊、3個反卷積塊和1個最后的卷積層組成.每個卷積塊執(zhí)行卷積運算以縮小圖像尺寸,同時使通道數(shù)增加1倍.之后加上BatchNorm層和Relu層,隨后反卷積塊對相應(yīng)卷積塊的輸出進行反卷積操作.最后將3個反卷積塊的輸出按順序串聯(lián)成形狀為[6C′,H2,W2]的向量,由卷積層進行最終的邊框預(yù)測.
在實驗部分,我們首先比較ImageFusion和其他幾個融合網(wǎng)絡(luò)的3D目標(biāo)識別效果.我們關(guān)注汽車對象的檢測,將KITTI數(shù)據(jù)集分為3 712個訓(xùn)練樣本和3 769個測試樣本.ImageFusion的準(zhǔn)確率較僅使用雷達的方法(PointPillars)提高了7.64%,較之前的深度融合方法(MV3D,PointFusion)提高了8.77%.具體結(jié)果如表5所示.
最后對測試結(jié)果進行定性分析,如圖13所示,圖13(a)~(f)展示了ImageFusion的預(yù)測結(jié)果.其中圖13(a),(c),(e)為人類居住場景,圖13(b),(d),(f)為高速公路場景.不同場景的難度由若干因素決定:待檢測對象的大小(較小的對象較難檢測)、待檢測對象的數(shù)量(對象較多的場景較難檢測)等.我們可以觀察到,在這6個代表性的場景中,代表檢測結(jié)果的紅色框與代表真實情況的綠色框有著很高的重疊率,這代表著我們的模型可以在復(fù)雜的場景中準(zhǔn)確地預(yù)測對象的3D邊框.
Fig. 13 Qualitative results on the KITTI dataset across 6 different scenarios圖13 在KITTI數(shù)據(jù)集中對6個不同場景的定性分析
Table 5 Comparison of Average Precision for the Car Category on KITTI Dataset
在Sonic系統(tǒng)中,需要使用卷積神經(jīng)網(wǎng)絡(luò)CNN處理來自多個攝像頭的圖像,進行一系列的感知任務(wù).雖然CNN網(wǎng)絡(luò)有著較高的準(zhǔn)確率,但是它在車載設(shè)備上面的推理延遲較高,導(dǎo)致吞吐率較低,難以支持多路攝像頭均達到每秒30幀的實時性要求.為此,我們設(shè)計了MPInfer(multi-tenant parallel CNN inference framework)這一框架來進行多路攝像頭數(shù)據(jù)下多個CNN網(wǎng)絡(luò)實例的調(diào)度優(yōu)化.
圖14是MPInfer設(shè)計的結(jié)構(gòu)圖.在離線時,MPInfer的輸入是高層次的CNN模型表示(包括模型定義文件和權(quán)重文件)和可調(diào)參數(shù)(如批量大小和數(shù)據(jù)類型).CNN EngineBuilder利用輸入生成一組優(yōu)化的CNN模型.我們將CNN EngineBuilder設(shè)計為用于處理大量的CNN推理模型(如YOLOv3[14])的模塊,從而適應(yīng)硬件資源限制和模型精度要求.在運行時,MPInfer使用來自多個攝像頭的視頻流,并將輸入的圖像插入優(yōu)先級隊列.優(yōu)先級隊列根據(jù)啟發(fā)式方法對圖像進行排序,并在輸入圖像數(shù)目大于隊列大小時進行丟棄,然后將它們分派到后續(xù)的CNNApplication.CNNApplication使用線程池來執(zhí)行用戶指定的CNN模型推理以及預(yù)處理和后處理,并可以根據(jù)配置啟用不同的并行策略.最后,MPInfer輸出結(jié)果(如圖像的標(biāo)注框)給自動駕駛中下一個模塊(如導(dǎo)航模塊).
可配置性和高效是MPInfer設(shè)計的兩大目標(biāo).由于存在多種網(wǎng)絡(luò)模型和結(jié)構(gòu)以及各種優(yōu)化策略,可配置性成為MPInfer的一個設(shè)計目標(biāo).CNNEngine-Builder的接收模型可以是任意CNN模型.此外,我們的框架還配置了攝像頭數(shù)量或者視頻流數(shù)目的超參數(shù)Ncam、線程數(shù)Nt以及GPU并行策略S.MPInfer旨在實現(xiàn)高吞吐量、低延遲.吞吐量測量固定周期內(nèi)處理的圖像數(shù).30 FPS被確定為最小的實時性要求.延遲(從圖像捕獲到識別完成)是另一個相關(guān)的關(guān)鍵指標(biāo),并與自動駕駛的安全性直接相關(guān).每幀圖像從相機到識別的延遲,用于實時自主駕駛時間不得超過輸入圖像的間隔(例如,對于30 FPS相機為33 ms).
Fig. 14 Overview architecture of MPInfer圖14 MPInfer結(jié)構(gòu)圖
MPInfer在網(wǎng)絡(luò)構(gòu)建和模型運行時進行優(yōu)化.在網(wǎng)絡(luò)構(gòu)建時,CNNEngineBuilder獲取的輸入使用高效的深度學(xué)習(xí)框架TensorRT[29]進行模型構(gòu)建和優(yōu)化.通過使用TensorRT,可以利用TensorRT支持的計算圖優(yōu)化、算子自動調(diào)優(yōu)和INT8量化.模型運行時,MPInfer使用了3.1節(jié)提到的3種GPU并行模式,分別是同一CUDA context下多CUDA stream并行模式、多CUDA context并行模式、multi-process service(MPS)支持下的多CUDA context并行模式.
MPInfer作為一個支持自動駕駛多視頻流CNN模型推理的框架,達到了低延遲和高吞吐率的設(shè)計目標(biāo).在實驗中,我們使用的模型是YOLOv3[14],測試平臺是GTX 1660和Jetson AGX Xavier.我們使用一個簡易程序模擬攝像頭的圖片流,每個攝像頭30FPS,則多個攝像頭的圖片流吞吐率為30FPS的倍數(shù).
表6給出了輸入為4個攝像頭120FPS情況下MPInfer和其他框架在GTX 1660上的性能對比.MPInfer在使用MPS支持下的多CUDA context并行模式(線程數(shù)為3)時性能最好,吞吐率為117.62 FPS,延遲為21.31 ms.相比串行的LibTorch吞吐率提高3.97x,相比串行的TensorRT吞吐率提高1.41x.
Table 6 Comparison of MPInfer with Other Frameworks on GTX 1660
表7給出了輸入為2個攝像頭60FPS情況下MPInfer和其他框架在Jetson AGX Xavier上的性能對比.MPInfer在使用同一CUDA context下多CUDA stream并行模式(線程數(shù)為2)時性能最好,吞吐率為45.84FPS,延遲為56.55 ms.相比串行的Darknet吞吐率提高4.48x,相比串行的TensorRT吞吐率提高1.14x.
Table 7 Comparison of MPInfer with Other Frameworks on Jetson AGX Xavier
從表6和表7的結(jié)果看,GPU并行相比串行能更好地發(fā)揮出GPU的性能,提升系統(tǒng)的吞吐率.在GTX 1660上,我們推薦在多線程環(huán)境下使用MPS支持的多CUDA context并行模式.在MPS不支持的Jetson AGX Xavier設(shè)備上,我們推薦在多線程環(huán)境下使用多CUDA stream并行模式.
自動駕駛能如何為駕駛員提供更加舒適的駕駛環(huán)境,如何為交通參與者帶來比人為駕駛更高的安全性,如何更高地提高未來城市的運行效率,涉及的技術(shù)仍然值得更多的關(guān)注.本文著眼于自動駕駛技術(shù)鏈中感知與計算部分,首先回顧了自動駕駛的歷史背景,綜合評述了關(guān)于自動駕駛的系統(tǒng)分類、硬件結(jié)構(gòu)、軟件組成等方面,并指出了其中仍然存在的感知與計算挑戰(zhàn);其次,基于激光雷達、攝像頭及二者融合3個方面調(diào)研了近年來感知領(lǐng)域關(guān)于3D檢測的國內(nèi)外最新成果;隨后針對自動駕駛的實時計算的問題,分析了計算優(yōu)化中有關(guān)模型調(diào)度、模型量化、模型蒸餾等關(guān)鍵技術(shù)手段;最后詳細介紹中國科學(xué)技術(shù)大學(xué)LINKE實驗室在自動駕駛領(lǐng)域的最新進展——智能小車系統(tǒng)Sonic,感知融合算法Image-Fusion,以及計算優(yōu)化框架MPInfer.智能小車系統(tǒng)Sonic仍然在持續(xù)設(shè)計和開發(fā)中.在未來的工作中,我們計劃在現(xiàn)有成果的基礎(chǔ)上進一步擴展和優(yōu)化,實現(xiàn)包括目標(biāo)檢測、目標(biāo)跟蹤、建圖與定位、規(guī)劃與導(dǎo)航以及對應(yīng)模塊計算優(yōu)化的全棧自動駕駛技術(shù),完成一套麻雀雖小五臟俱全的,真正可靠、可用的無人小車系統(tǒng).