在自動駕駛技術(shù)中,軟件系統(tǒng)是最具有技術(shù)壁壘的領(lǐng)域之一。近年來,國內(nèi)外成立了不少自動駕駛創(chuàng)業(yè)公司,花費了大量人力物力投入到自動駕駛軟件系統(tǒng)的開發(fā)中,每一行代碼、每一個專利,都是它們未來競爭的底氣和資本??梢哉f,自動駕駛軟件系統(tǒng)是上述公司最核心的資產(chǎn)之一。
百度是國內(nèi)最早投入自動駕駛技術(shù)研發(fā)的公司之一。Apollo是百度發(fā)布的向汽車行業(yè)及自動駕駛領(lǐng)域合作伙伴提供的軟件平臺,不僅在全球各種權(quán)威自動駕駛榜單中成績斐然,也在商業(yè)化推進上有著驚人的速度。下圖是Apollo開源項目的系統(tǒng)架構(gòu)。
圖1. Apollo 6.0 Architecture
圖片來源:Apollo項目GitHub地址https://github.com/ApolloAuto/apollo
簡單解析一下Apollo框架。
其中,Open Software Platform指的是Apollo開源軟件平臺,它是圖中位于右側(cè)的各個子模塊的總稱。RTOS(real-time operating system)是實時操作系統(tǒng),實時性是它的最大特征,它為上層功能模塊的高效執(zhí)行提供底層環(huán)境。
Map Engine是地圖引擎,在軟件中負責(zé)獲取各類地圖數(shù)據(jù),并提供相應(yīng)的地圖數(shù)據(jù)功能接口。Localization和Perception分別是定位和感知模塊,是處理汽車周圍環(huán)境信息的功能模塊,負責(zé)將各類傳感器收集到的數(shù)據(jù)進行加工和處理,用結(jié)構(gòu)化的結(jié)果來描述汽車周圍的場景。Planning是規(guī)劃模塊,負責(zé)對結(jié)構(gòu)化的場景信息進行下一步的處理,通過計算得到一條安全可通行的路徑。Control是控制模塊,負責(zé)把規(guī)劃的結(jié)果轉(zhuǎn)換成對電子油門、電子剎車和電子轉(zhuǎn)向的控制信號,最終實現(xiàn)對車輛運動的控制。
這其中,感知模塊需要對大量的傳感器數(shù)據(jù)進行實時處理,需要準(zhǔn)確且高效地識別場景信息,因此是最有工程挑戰(zhàn)的子模塊之一。
下圖是Apollo開源項目的感知框架圖,可以看到整個感知部分的結(jié)構(gòu)是比較復(fù)雜的,多條數(shù)據(jù)處理路線并行展開,每一個節(jié)點子模塊都會涉及到很多算法處理,同時,這些路線之間還會有相互的數(shù)據(jù)交換,最后,綜合處理多條路線的結(jié)果得到感知模塊的輸出。
圖2. Apollo 6.0版本感知框架圖
圖片來源:Apollo項目GitHub地址https://github.com/ApolloAuto/apollo
下文將簡單地剖析一下感知模塊的框架,從數(shù)據(jù)流動的維度講述感知模塊是如何運行的。
我們先從簡單的模型入手,把感知模塊拆分成數(shù)據(jù)輸入、數(shù)據(jù)處理、數(shù)據(jù)輸出三個部分,再分別對每個部分進行深入探討。
圖3. 感知模塊數(shù)據(jù)流動簡圖
數(shù)據(jù)輸入過程
首先是數(shù)據(jù)輸入端。數(shù)據(jù)輸入主要包括激光雷達、車載相機、毫米波雷達(以下分別簡稱Lidar、Camera、Radar)等傳感器的場景數(shù)據(jù)采集,以及從車輛底盤獲取自車信號(速度、加速度、轉(zhuǎn)向等)。此外,感知還會依賴到高精地圖等信息。
下面主要探討Lidar和Camera的數(shù)據(jù)輸入過程。
Lidar數(shù)據(jù)輸入
Lidar的工作原理,是通過激光照射到物體表面接收到反射光,從而計算反射點相對發(fā)射器的空間坐標(biāo)。不論是哪種類型、哪個廠家的Lidar,最終輸出的數(shù)據(jù)本質(zhì)上都是大量反射點的信息集合。這些空間中大量的反射點集合在一起就是我們經(jīng)常稱呼的點云(point cloud)。
圖4. 點云可視化圖像
圖片來源:Velodyne官網(wǎng) https://velodynelidar.com/
上圖是將Lidar點云可視化以后的結(jié)果,為了直觀,圖中用了顏色梯度來表示點的距離。Lidar設(shè)備端口發(fā)出來的原始數(shù)據(jù)并不是我們在圖中看到的這樣,感知模塊需要對原始數(shù)據(jù)進行處理才能得到合適的數(shù)據(jù)形式。
這里先介紹一下點的描述參數(shù)。如下圖所示,單個反射點的信息主要包括空間信息、時間戳和反射強度。其中,由于Lidar的工作原理不同,機械旋轉(zhuǎn)式Lidar通常會使用徑向距離(radius)、俯仰角(elevation)、方位角(azimuth)來表示點的空間位置,而半固態(tài)/固態(tài)Lidar,通常使用笛卡爾坐標(biāo)系下xyz來表示點的空間位置。
圖5. Lidar反射點的信息
雖然不同的Lidar設(shè)備廠家描述點云的數(shù)據(jù)形式不同,發(fā)送出來的格式不同,但究其本質(zhì)都是對點云的數(shù)據(jù)描述。因此,各大廠商的Lidar發(fā)送出來的數(shù)據(jù)結(jié)構(gòu)都是類似的。在此,我們以Velodyne 16線Lidar為例講述。
下圖所示是Velodyne 16線Lidar在單回波模式下發(fā)送的數(shù)據(jù)結(jié)構(gòu)。每一個區(qū)域里都存放著固定字節(jié)大小的數(shù)據(jù),整個區(qū)域組成了數(shù)據(jù)包(Data Block)。每個 Data Block里面包括了Head(數(shù)據(jù)頭部區(qū)域),Data(點云數(shù)據(jù)存放區(qū))和Tail(數(shù)據(jù)尾部區(qū)域,有些Lidar硬件不發(fā)送尾部數(shù)據(jù)域)。Head和Tail里面通常存儲一些用來通信校驗的數(shù)據(jù)以及Lidar的自身工作狀態(tài)參數(shù)等,Data域里包含很多Channel域,每一個Channel里存放著一個點的信息。固定數(shù)量的點云數(shù)據(jù)整齊而緊密地排列在一起,組成了中間的Data域。最后打包成的Data Block是一塊Bytes大小固定的數(shù)據(jù)區(qū)。
圖6. Velodyne 16線Lidar發(fā)送的數(shù)據(jù)包結(jié)構(gòu)示意圖
圖片來源:Velodyne官網(wǎng)
Lidar的工作模式有單回波和雙回波之分。簡單來講,Lidar發(fā)射出來的激光束是有面積的,打在物體表面的是一小片區(qū)域,如果激光束剛好打在了物體邊界,那么就會有一部分留在近處的物體上,另一部分觸碰到更遠的物體,這時一個發(fā)射信號就會有兩個回波信號,這就是雙回波原理。在單回波模式下,可以選擇光強高或低,距離近或遠的回波。而通常情況下,雙回波模式的數(shù)據(jù)大多都是重復(fù)的,所以,一般都會選擇讓Lidar在單回波模式下工作,并選擇光強高&距離近的回波作為原數(shù)據(jù)。
在數(shù)據(jù)發(fā)送方式上,有些Lidar廠商選用網(wǎng)線連接工控機,基于UDP傳輸協(xié)議(User Datagram Protocol)發(fā)送Lidar硬件打包好的Data Block。
圖7. Lidar數(shù)據(jù)發(fā)送機制
UDP是一個無連接協(xié)議,傳輸數(shù)據(jù)之前的源端和終端不建立連接,不維護連接狀態(tài)以及收發(fā)狀態(tài),也就是說,在UDP方式下Lidar設(shè)備只需要單方面發(fā)送數(shù)據(jù),并不需要考慮通信是否成功。選擇這樣的發(fā)送方式可以保證Lidar向下游的發(fā)送不間斷、無延遲,在提高發(fā)送效率的同時,也保證了Lidar硬件和下游系統(tǒng)的獨立性。
通過這種方式,Lidar設(shè)備將打包好的點云數(shù)據(jù)發(fā)送出去,下游系統(tǒng)通過預(yù)先設(shè)置好的通信協(xié)議接收數(shù)據(jù)并進入點云數(shù)據(jù)的處理流程。
Camera數(shù)據(jù)輸入
首先介紹一下圖像數(shù)據(jù)。
以RGB圖像為例,一張圖像是由紅綠藍三種顏色通道疊加而成的(見下圖)。在一個通道內(nèi)使用數(shù)字來表示顏色,比如在紅通道中用8位bit來表示紅色,也就是用十進制下的0~255(28=256)來表示紅色。如果一張照片的像素是1280*960,那么這張照片的紅色通道(R通道)就是1280*960大小的數(shù)字矩陣,矩陣中每個位置上都填寫著0~255的數(shù)字。再結(jié)合綠色和藍色通道,這張RGB圖像就可以用1280*960*3大小的數(shù)字矩陣來表示。
圖8. RGB圖像結(jié)構(gòu)
圖片來源:https://www.geeksforgeeks.org/matlab-rgb-image-representation/
接來下,講述一下Camera數(shù)據(jù)的輸入過程。
車載相機主要由鏡頭、感光傳感器和圖像信號處理器(ISP)組成。其中感光傳感器主要是用CMOS,它的作用是將場景的光信號(模擬信號)轉(zhuǎn)換成對應(yīng)的電信號。接下來,電信號再通過ADC(模數(shù)轉(zhuǎn)換器)轉(zhuǎn)化成數(shù)字信號輸送給ISP,在ISP上進行圖像處理(自動曝光、自動白平衡、自動對焦、暗角修復(fù)等),處理完成后通過標(biāo)準(zhǔn)的SCCB總線(I2C總線)接口和外部進行通信,輸出RGB格式(或YUV格式)的圖像。
一般情況下,需要驅(qū)動(driver)來控制CMOS模組工作,相機廠商一般會把開發(fā)好的驅(qū)動提供給使用者。將driver部署在自動駕駛平臺的軟件端,就可以控制外接CMOS模組的工作狀態(tài)了。通過調(diào)用相機廠商提供的API(application programming interface,應(yīng)用程序接口),感知模塊可以訪問這些原始圖像數(shù)據(jù),這樣,Camera數(shù)據(jù)就傳入了感知模塊中。整個過程可以用下圖簡單表示。
圖9. Camera輸出圖像的流程
Lidar數(shù)據(jù)擁有豐富的空間信息,而圖像數(shù)據(jù)擁有著物體幾何、色彩紋理的特征。
下圖十分清楚地展示了三類傳感器之間的優(yōu)劣勢。Camera在物體分類和車道線檢測中表現(xiàn)較好,但是在惡劣天氣、弱光條件下表現(xiàn)不佳;Lidar在物體檢測和弱光條件下的性能較好,但是在車道檢測上表現(xiàn)較差;Radar在惡劣天氣和弱光條件下表現(xiàn)較好,但是在物體分類和車道線檢測上表現(xiàn)不行。使用多種傳感器數(shù)據(jù),根據(jù)它們各自的工作特點,優(yōu)勢互補,可以使整體數(shù)據(jù)在多個衡量緯度上表現(xiàn)優(yōu)異,提高對場景的數(shù)據(jù)表示性和數(shù)據(jù)魯棒性。
圖10 .各類傳感器數(shù)據(jù)對比
圖片來源:Apollo開發(fā)者中心
接下來,傳感器將大量的原始數(shù)據(jù)傳輸給下游,由感知模塊依靠豐富的算法手段進行進一步處理。
數(shù)據(jù)處理過程
從上游獲取到感知模塊需要的數(shù)據(jù)以后,感知模塊就需要對這些數(shù)據(jù)進行處理。參考Apollo開源項目的感知框架圖,我們可以看到Lidar、Camera、Radar的數(shù)據(jù)是先分成三條線路處理的,然后再把各條路線的數(shù)據(jù)進行融合,得到最終的輸出。
簡單來講,可以分為傳感器數(shù)據(jù)預(yù)處理、檢測、跟蹤和融合。
預(yù)處理模塊
預(yù)處理模塊主要是將從上游接收到點云和圖像數(shù)據(jù)進一步轉(zhuǎn)化成算法需要的形式。
首先是點云的預(yù)先處理。把上游發(fā)送來的Data Block去除Head和Tail以后,按照定長字節(jié)讀取,就可以獲得每一個點的元數(shù)據(jù),通過空間變換可以計算出點相對Lidar設(shè)備的空間坐標(biāo)xyz,之后再把坐標(biāo)、時間戳、強度等信息存儲在特定的數(shù)據(jù)域或結(jié)構(gòu)體中。最后,把Lidar完整走完一周的數(shù)據(jù)放入集合中作為一幀點云數(shù)據(jù)。使用可視化工具或開源庫(例如PCL,https://pointclouds.org)就會呈現(xiàn)出類似圖3的點云圖。
對圖像的預(yù)處理主要包括對圖像的剪裁、圖片灰度處理、縮放、數(shù)據(jù)增強等操作,這一步的目的是適配神經(jīng)網(wǎng)絡(luò)輸入數(shù)據(jù)的尺寸和形式,同時也減少了輸入神經(jīng)網(wǎng)絡(luò)的數(shù)據(jù)量,從而減少計算資源占用。
預(yù)處理模塊都是對于各類傳感器數(shù)據(jù)的簡單處理,占用計算資源較少,實現(xiàn)過程也比較容易。
物體檢測模塊
點云數(shù)據(jù)帶有明確的空間位置信息,工程師們通常使用它來檢測車輛、行人、路側(cè)欄桿等物體。點云數(shù)據(jù)的檢測可以依賴傳統(tǒng)算法和深度學(xué)習(xí)網(wǎng)絡(luò)。傳統(tǒng)的障礙物點云檢測算法,依靠點云的幾何特征,通過分割聚類等方法輸出障礙物;深度學(xué)習(xí)算法則是通過對標(biāo)注的障礙物點云進行模型訓(xùn)練,再使用模型檢測實際場景點云數(shù)據(jù)。實際工程中可以僅使用深度學(xué)習(xí)算法,也可以將傳統(tǒng)算法和深度學(xué)習(xí)算法結(jié)合運用。
圖11. 點云檢測
圖片來源:waymo在CVPR 2020的報告
對于圖像數(shù)據(jù),工程師們主要依靠深度學(xué)習(xí)的方法來處理。自動駕駛公司大都會選擇自主開發(fā)檢測模型,通過訓(xùn)練標(biāo)注好數(shù)據(jù)的真值圖像,調(diào)整神經(jīng)網(wǎng)絡(luò)的結(jié)構(gòu)和參數(shù),以達到最優(yōu)的檢測結(jié)果。
圖12. 圖像檢測
圖片來源:Tesla AI Day 2021
物體檢測是最具工程挑戰(zhàn)的部分之一。在車輛高速行駛的過程中,如果錯誤地檢測了某個障礙物體,會導(dǎo)致錯誤的車輛控制,最終可能帶來非常嚴重的后果。如何快速且準(zhǔn)確地識別障礙物是一項極具挑戰(zhàn)的任務(wù)。
傳統(tǒng)的計算機視覺算法(Harris角點檢測、SIFT算法、SURF算法、ORB算法等)相比于深度學(xué)習(xí)算法,檢測速度慢、準(zhǔn)確率低,很難滿足大多數(shù)場景下自動駕駛的需求。此外,這些傳統(tǒng)的視覺算法都需要對圖像提取特征,換句話說就是,對數(shù)據(jù)在更高、更多的維度上尋找特點,提取特征的過程通常比較復(fù)雜。相比于深度學(xué)習(xí)這種從端到端的算法,傳統(tǒng)的視覺算法難以開發(fā),不具優(yōu)勢。深度學(xué)習(xí)算法的應(yīng)用,極大地加速了物體檢測領(lǐng)域的發(fā)展,同時,這也對深度學(xué)習(xí)算法廣泛應(yīng)用于自動駕駛技術(shù),起到了至關(guān)重要的作用。
深度學(xué)習(xí)算法確實有很多優(yōu)點,但同時其輸出結(jié)果是概率分布式的,不能保證檢測的完全準(zhǔn)確性。在今天,這種端到端算法的中間過程仍然是不可解釋的,大家無法解釋為什么輸入一張照片,就會在它的某個區(qū)域內(nèi)檢測到某個物體。而傳統(tǒng)的視覺算法卻具有成熟的理論支撐、透明的中間過程和穩(wěn)定的性能。
筆者比較看好傳統(tǒng)計算機視覺算法和深度學(xué)習(xí)算法兩者結(jié)合,可以充分利用兩種方法的優(yōu)勢。
圖13. Tesla檢測模型框架
圖片來源:Tesla AI Day 2021
自動駕駛公司一般都會花費大量力氣投入到檢測模型的開發(fā)中。同樣,網(wǎng)上也有很多開源的圖像檢測模型和點云檢測模型,為學(xué)者、工程師們提供一些開發(fā)支持。
Lidar和Camera的物體檢測,雖然數(shù)據(jù)輸入端不同,但是通過神經(jīng)網(wǎng)絡(luò)后,輸出的檢測物體都具有同樣的數(shù)據(jù)結(jié)構(gòu)。其中主要包括被檢測物體的類型、ID、包圍框(bounding box,框頂點集合,2D或3D形式)、橫縱向距離、速度、加速度、置信度等等。當(dāng)然,不同類型的被檢測物體也會存在不一樣的描述特征,比如紅綠燈類型的障礙物就需要顏色信息,車道線類型的物體不是輸出包圍框,而是輸出若干個車道線上的關(guān)鍵點(通過連接這些點構(gòu)成完整的車道線)。
圖14. 檢測模塊輸出數(shù)據(jù)結(jié)構(gòu)示例
跟蹤模塊
在單幀數(shù)據(jù)中檢測到我們關(guān)注的物體后,我們?nèi)匀恍枰勒系K物(車輛、行人)是如何運動的,場景中障礙物的運動信息(軌跡、速度變化等)對于后面預(yù)測這些障礙物運動軌跡和控制自車運動至關(guān)重要。想要得到障礙物的歷史運動狀態(tài),就需要一些歷史幀信息,從連貫的歷史幀信息(例如,研究從歷史第10幀到當(dāng)前幀這一段連續(xù)時序過程)中挖掘出物體的運動狀態(tài)。
通常使用的方法是,分析前后幀內(nèi)檢測到的同一障礙物。如果上一幀出現(xiàn)的物體在下一幀也出現(xiàn)了,那么前后幀內(nèi)出現(xiàn)的同一個物體可以用相同的ID來表示,并把檢測結(jié)果按照時間序列存儲,這樣就得到了某物體在兩幀時間內(nèi)的運動狀態(tài),包括速度變化、位置變化、方向變化等等。在連續(xù)幀內(nèi)不斷使用上述過程,就能得到物體的歷史運動狀態(tài)。以上就是一個跟蹤過程。
那么工程師們是如何確認前后幀中的同一個物體呢?通常情況下,是使用ROI(前后幀內(nèi)物體包圍框的交并比)這一指標(biāo)來匹配。以圖14為例,在T時刻檢測到了A和B兩個障礙物,在T+1時刻檢測到了C、D和E三個障礙物。其中包圍框(bounding box)可以表示被檢測物體在圖中的位置。根據(jù)bounding box的位置,很容易發(fā)現(xiàn)A與C的重疊度很大,B與E的重疊度也很大,那么就有理由相信,在這連續(xù)的兩個時刻內(nèi),A與C,B與E都分別代表了同一個物體。
當(dāng)然,這種方法成立有一個前提,一般在10幀率的檢測過程中,也就是0.1s內(nèi),被檢測物體的運動位置變化不是足夠大,這樣才能有前后幀bounding box的重疊度,才能用來衡量匹配過程。
圖15. 基于IOU的匹配過程
在跟蹤模塊,通常使用的方法有卡爾曼濾波和匈牙利匹配算法。第一步,使用卡爾曼濾波階段一對上一幀物體進行運動估計,估計出其當(dāng)前時刻的位置和速度。接下來,使用匈牙利算法對上一步中運動估計出的物體和當(dāng)前幀檢測到的物體進行匹配,匈牙利算法中使用的匹配權(quán)重就可以結(jié)合上面所講的IOU方法來設(shè)計,成功匹配代表跟蹤成功。第三步,通過卡爾曼濾波階段二更新被跟蹤物體當(dāng)前的最優(yōu)位置和最優(yōu)速度。
圖16. 典型的跟蹤迭代過程
此外,還有使用神經(jīng)網(wǎng)絡(luò)直接檢測障礙物并輸出跟蹤結(jié)果的方法,也就是說,跟蹤過程也是在神經(jīng)網(wǎng)絡(luò)中完成的。這種方法需要使用連續(xù)幀數(shù)據(jù)訓(xùn)練網(wǎng)絡(luò),在使用該類神經(jīng)網(wǎng)絡(luò)時,輸入端就是連續(xù)幀的圖像或點云,輸出端仍然是一系列被檢測到的物體,額外的信息是這些物體已經(jīng)具有了被跟蹤的屬性,在時間序列上,同一個物體具有同一個跟蹤識別ID。在網(wǎng)上,很容易能找到一些開源的跟蹤網(wǎng)絡(luò)模型。
融合模塊
當(dāng)前,自動駕駛技術(shù)需要使用多種傳感器,并對這些不同傳感器數(shù)據(jù)進行處理,最終輸出單一結(jié)果,這就涉及到數(shù)據(jù)融合。融合又可以分為前融合和后融合,它們的區(qū)別在于,融合過程是在檢測和跟蹤過程之前還是之后。在Apollo感知軟件框架中,融合過程位于不同傳感器數(shù)據(jù)跟蹤處理之后,是一個典型的后融合過程。整個過程就是將Lidar、Camera、Radar三條處理路線輸出的追蹤結(jié)果進行融合,修正被追蹤物體的各項參數(shù)數(shù)據(jù)。
舉個簡單的例子,假設(shè)Lidar、Camera、Radar三種傳感器的時間已經(jīng)同步,對于同一幀內(nèi)的被檢測物體A來說,使用Lidar數(shù)據(jù)檢測出了結(jié)果a1,使用Camera數(shù)據(jù)檢測出了結(jié)果a2,使用Radar數(shù)據(jù)檢測出了結(jié)果a3,融合過程就是在這三個結(jié)果中,通過一定的策略得到最優(yōu)的檢測結(jié)果。
這里的融合策略會綜合考慮各類傳感器的優(yōu)劣勢,比如Lidar在測距方面的表現(xiàn)性能更好,那么對于距離或者空間位置的參數(shù),就會更傾向于選擇通過Lidar數(shù)據(jù)得到的結(jié)果。對于交通標(biāo)志、紅綠燈、車道線這類物體,后融合的過程會更傾向于選擇通過Camera數(shù)據(jù)得到的結(jié)果。基于這樣的考量,就可以將多類傳感器數(shù)據(jù)的感知結(jié)果進行融合,從而得到最優(yōu)解。
另一種前融合的方式是,在數(shù)據(jù)輸入端就將Lidar、Camera等數(shù)據(jù)組合起來,形成一種新的數(shù)據(jù)體,這個數(shù)據(jù)里既有圖像紋理、顏色這樣的信息,同時也包含了3D空間中的距離信息,這種數(shù)據(jù)結(jié)構(gòu)加強了不同傳感器數(shù)據(jù)之間的數(shù)據(jù)關(guān)聯(lián)性。
圖17. Lidar和Radar數(shù)據(jù)的前融合邏輯
圖片來源:優(yōu)達學(xué)城無人駕駛工程師學(xué)位
上圖簡單介紹了Lidar和Radar數(shù)據(jù)融合的邏輯。在首次獲取數(shù)據(jù)時,先初始化Kalman濾波器的各個矩陣參數(shù),接下來對兩類數(shù)據(jù)進行預(yù)測和更新,最后輸出融合后障礙物的位置、速度。[1][2]
圖18. 數(shù)據(jù)前融合的步驟
圖片來源:智行者科技
上圖簡單介紹了智行者科技在傳感器數(shù)據(jù)前融合過程中的步驟,包括了采集及預(yù)處理、坐標(biāo)轉(zhuǎn)換和信息融合。其中最有難度的部分就是信息融合,它包括了數(shù)據(jù)關(guān)聯(lián)、時間同步、數(shù)據(jù)融合、目標(biāo)生命周期管理四個步驟。首先是在數(shù)據(jù)關(guān)聯(lián)階段,建立評價指標(biāo)并選擇全局最近鄰匹配方法;第二步對多傳感器進行時間同步,選用了固定時漂和隨機時漂的方法; 第三步,使用粒子濾波算法融合數(shù)據(jù);最后,對目標(biāo)進行生命周期管理,提高融合后數(shù)據(jù)的魯棒性。
同樣地,通過標(biāo)注前融合數(shù)據(jù)并訓(xùn)練模型,可以得到適用于前融合數(shù)據(jù)的神經(jīng)網(wǎng)絡(luò),這種模型的輸出結(jié)果也是對同一物體的檢測結(jié)果,然后再進行物體跟蹤,不同的是,檢測跟蹤之后,不需要再次融合。
目前,很多主流公司都在朝著前融合的方式研究,這樣做的好處之一就是提前耦合了多種傳感器的數(shù)據(jù),因此數(shù)據(jù)維度更加豐富,更能真實地反映場景。
數(shù)據(jù)輸出
在Apollo的感知框架中,最終輸出到下游的結(jié)果可以分為兩部分,一部分是車輛、行人等障礙物的數(shù)據(jù),另一部分是交通信號燈的結(jié)果。場景中障礙物的數(shù)據(jù)可以通過上述的數(shù)據(jù)處理過程得到,而交通信號燈的結(jié)果則是通過一種多燈投票機制來得到的。簡單來講,就是在一個路口處,一般會有多個紅綠燈被檢測到,這其中既有紅燈又有綠燈,也有其他不同類型的燈(直行、左轉(zhuǎn)、掉頭等等),需要設(shè)計一種投票機制來決策當(dāng)前直行、左轉(zhuǎn)或右轉(zhuǎn)的單一燈狀態(tài)。
圖19. 感知輸出數(shù)據(jù)結(jié)構(gòu)示例
原始的傳感器數(shù)據(jù)經(jīng)過感知模塊的處理,輸出的結(jié)果會傳遞到下游預(yù)測模塊。預(yù)測模塊主要是針對車輛、行人這類障礙物,預(yù)測障礙物在未來一段時間內(nèi)的運動軌跡。然后便進入了規(guī)劃模塊,結(jié)合場景信息和障礙物預(yù)測軌跡,進行自車的路線規(guī)劃。
小結(jié)
從各類傳感器數(shù)據(jù)采集開始,到輸入到感知模塊,再經(jīng)過檢測、跟蹤、融合這些過程,最終向下游輸出場景內(nèi)的必要信息。本文簡要地介紹了一下感知模塊的數(shù)據(jù)流動。
當(dāng)然,感知模塊還會涉及很多其他功能,比如利用地圖數(shù)據(jù)增強感知結(jié)果、自動錄入采集數(shù)據(jù)、功能監(jiān)控和失效診斷等等。這些功能之間也存在著復(fù)雜的數(shù)據(jù)交換,在感知模塊運行的過程中共同作用。
參考文章:
[1] 《開發(fā)者說丨手把手教你實現(xiàn)多傳感器融合技術(shù)》
https://mp.weixin.qq.com/s/th-Wq5wA9CChIFEioBfpKw
[2] 《開發(fā)者說|Apollo 6.0 Perception 模塊 Fusion 組件(二):主體算法流程分析》
https://mp.weixin.qq.com/s/aik25sYdNebYbMcR-6SKNA