張 青,黃影平
(上海理工大學(xué),上海 200093)
自主駕駛系統(tǒng)依賴(lài)于對(duì)環(huán)境的準(zhǔn)確、實(shí)時(shí)和強(qiáng)大感知。自主駕駛汽車(chē)需要準(zhǔn)確分類(lèi)和定位“道路對(duì)象”。本文將道路對(duì)象定義為與駕駛相關(guān)的對(duì)象,如汽車(chē)、行人、自行車(chē)和其他障礙物。不同的自主駕駛解決方案可能具有不同的傳感器組合,但是激光雷達(dá)掃描儀是最流行的組件之一[1]。激光雷達(dá)掃描儀直接生成環(huán)境的距離測(cè)量值,供車(chē)輛控制器和設(shè)計(jì)人員使用。此外,激光雷達(dá)掃描儀在幾乎所有照明條件下都具有強(qiáng)大的功能,無(wú)論白天還是黑夜,無(wú)論有無(wú)眩光和陰影。因此,基于激光雷達(dá)的環(huán)境感知任務(wù)已引起人們的關(guān)注。
本文使用基于Velodyne的64線3D激光雷達(dá)點(diǎn)云進(jìn)行道路對(duì)象分割??紤]到激光雷達(dá)掃描儀的點(diǎn)云輸出,該任務(wù)旨在隔離感興趣的對(duì)象,并預(yù)測(cè)其類(lèi)別,如圖1所示。其中,汽車(chē)用c標(biāo)注,行人用p標(biāo)注,騎車(chē)人用b標(biāo)注。
本文提出了一種基于卷積神經(jīng)網(wǎng)絡(luò)(Convolutional Neural Nets,CNN) 和 條 件 隨 機(jī) 場(chǎng)(Conditional Random Field,CRF)的端到端流水線。具體地,先設(shè)計(jì)一個(gè)輸入為轉(zhuǎn)化后的雷達(dá)點(diǎn)云、輸出為逐點(diǎn)標(biāo)簽矩陣集合的CNN,并通過(guò)CRF模型進(jìn)一步完善CNN,再通過(guò)應(yīng)用常規(guī)的聚類(lèi)算法獲得實(shí)例級(jí)標(biāo)簽。為將3D點(diǎn)云數(shù)據(jù)送到2D CNN中,本文采用球面投影將稀疏的不規(guī)則分布的3D點(diǎn)云轉(zhuǎn)換為密集的2D圖像。所提出的CNN模型從SqueezeNet[2]中汲取了靈感,經(jīng)過(guò)精心設(shè)計(jì)后,可減小參數(shù)大小和計(jì)算復(fù)雜度,旨在降低內(nèi)存需求,達(dá)到適合嵌入式應(yīng)用的實(shí)時(shí)處理速度。CRF模型[3]被表述為遞歸神經(jīng)網(wǎng)絡(luò)(Recurrent Neural Net,RNN)模塊,可以與CNN模型一起進(jìn)行端到端訓(xùn)練。設(shè)計(jì)的模型在KITTI數(shù)據(jù)產(chǎn)生的雷達(dá)點(diǎn)云上訓(xùn)練,從KITTI中的3D邊界框轉(zhuǎn)換逐點(diǎn)分割標(biāo)簽。實(shí)驗(yàn)表明,設(shè)計(jì)的卷積神經(jīng)網(wǎng)絡(luò)達(dá)到了很高的準(zhǔn)確性,且快速、穩(wěn)定,可適用于自主駕駛應(yīng)用。
現(xiàn)階段,點(diǎn)云分割的主流方法主要分為基于點(diǎn)云強(qiáng)度、曲率等特征分割的傳統(tǒng)方法和基于神經(jīng)網(wǎng)絡(luò)的點(diǎn)云語(yǔ)義分割方法。
傳統(tǒng)方法主要是移除地面,將其余點(diǎn)聚集成實(shí)例,從中提取特征,并根據(jù)提取的特征對(duì)每個(gè)群集進(jìn)行分類(lèi)[4]。這種方法盡管很流行,但存在缺點(diǎn)。首先,地面分割通常依賴(lài)于手工制作的特征或決策規(guī)則,一些方法依賴(lài)預(yù)設(shè)的閾值[5],而另一些方法需要更復(fù)雜的特征,如表面法線[6]或不變量描述符[7],這些都需要大量的數(shù)據(jù)預(yù)處理。其次,分類(lèi)或聚類(lèi)算法無(wú)法利用環(huán)境,最重要的是無(wú)法利用對(duì)象的周?chē)h(huán)境[8]。最后,大多數(shù)地面去除的算法都依賴(lài)于迭代算法,如隨機(jī)樣本一致性(RANdom SAmple Consensus,RANSAC)[9]和高斯過(guò)程增量樣本一致性(Gaussian Process INcremental Sample Consensus,GP-INSAC)[10]等。這些算法的準(zhǔn)確性和運(yùn)行時(shí)間取決于隨機(jī)初始化的質(zhì)量,存在不穩(wěn)定性。對(duì)于自主駕駛系統(tǒng)這種嵌入式應(yīng)用程序,這種不穩(wěn)定性是不可接受的。
隨著神經(jīng)網(wǎng)絡(luò)技術(shù)的快速發(fā)展,近年來(lái)越來(lái)越多的學(xué)者開(kāi)始將這種高效方法應(yīng)用在點(diǎn)云的語(yǔ)義分割上?;谏窠?jīng)網(wǎng)絡(luò)的點(diǎn)云分割大致有兩種。一種是以3D點(diǎn)云數(shù)據(jù)直接作為輸入的點(diǎn)云分割算法。例如,文獻(xiàn)[11]將基于三維的卷積神經(jīng)網(wǎng)絡(luò)對(duì)體素化后的點(diǎn)云數(shù)據(jù)作為輸入,完成像素級(jí)別的語(yǔ)義分割。該方法雖然網(wǎng)絡(luò)結(jié)構(gòu)簡(jiǎn)單,且不需要數(shù)據(jù)預(yù)處理,但體素點(diǎn)云作為輸入計(jì)算量大,難以解決空間信息丟失問(wèn)題。另一種是將3D點(diǎn)云轉(zhuǎn)化為2D圖像作為輸入的分割算法。例如,文獻(xiàn)[12]主要是基于深度圖像的孔洞填充頂帽算法,將點(diǎn)云映射到二維圖像中,再通過(guò)檢測(cè)到的相互連接的元件提取特征信息,訓(xùn)練卷積神經(jīng)網(wǎng)絡(luò)進(jìn)行點(diǎn)云數(shù)據(jù)的分類(lèi)。此方法雖然大幅減少了計(jì)算量,但在轉(zhuǎn)換過(guò)程中丟失了點(diǎn)云圖像的深度信息。
常規(guī)的CNN模型在二維圖像上運(yùn)行,可以用尺寸H×W×3的3維張量表示。前兩個(gè)維度給空間位置編碼,其中H和W分別表示圖像的高度和寬度;最后一個(gè)維度給特征編碼,最常見(jiàn)的是RGB值。但是,3D雷達(dá)點(diǎn)云通常以一組笛卡爾坐標(biāo)(x,y,z)表示,還包括其他特征,如強(qiáng)度或RGB值。與圖像像素的分布不同,LiDAR點(diǎn)云的分布通常稀疏且不規(guī)則。因此,直接將3D空間離散數(shù)據(jù)作為像素點(diǎn)會(huì)導(dǎo)致空像素過(guò)多。處理這樣的稀疏數(shù)據(jù)效率不高,且計(jì)算量極大。
為了獲得更緊湊的表示,本文將雷達(dá)點(diǎn)云投影到一個(gè)球體上,以實(shí)現(xiàn)密集的網(wǎng)格基表示,如圖2所示。
相關(guān)公式可表示為:
本文的卷積神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu),如圖3所示。基礎(chǔ)模型源自SqueezeNet,一種輕型CNN,用50倍以下參數(shù)實(shí)現(xiàn)AlexNet級(jí)精度。SqueezeNet已成功用于圖像的目標(biāo)檢測(cè)。
神經(jīng)網(wǎng)絡(luò)的輸入是所述的64×512×5張量,從SqueezeNet移植層(Conv1a到Fire9)進(jìn)行特征抽取。SqueezeNet使用max-pooling在寬度和高度上對(duì)中間特征圖進(jìn)行向下采樣,但是由于本文中輸入張量的高度遠(yuǎn)小于其寬度,因此僅對(duì)寬度進(jìn)行向下采樣。Fire9的輸出是給點(diǎn)云的語(yǔ)義編碼的下采樣特征圖。
為了獲得每個(gè)點(diǎn)的標(biāo)簽預(yù)測(cè),本文使用了反卷積模塊(更準(zhǔn)確地說(shuō)是“轉(zhuǎn)置卷積”),在寬度維度上對(duì)特征圖進(jìn)行上采樣。使用跳躍連接,將上采樣的特征圖添加到相同大小的低級(jí)別特征圖,如圖3所示。具有softmax激活的卷積層(conv14)生成輸出概率圖,而概率圖由循環(huán)CRF層進(jìn)一步完善。
使用圖像分割,CNN模型預(yù)測(cè)的標(biāo)號(hào)映射傾向于具有模糊的邊界。這是由于在max-pooling之類(lèi)的下采樣操作中失去了低級(jí)細(xì)節(jié)。準(zhǔn)確的逐點(diǎn)標(biāo)簽預(yù)測(cè)不僅需要了解對(duì)象和場(chǎng)景的高級(jí)語(yǔ)義,還需要了解低級(jí)細(xì)節(jié)。后者對(duì)于標(biāo)簽分配的一致性至關(guān)重要。例如,如果點(diǎn)云中的兩個(gè)點(diǎn)彼此相鄰,且具有相似的強(qiáng)度測(cè)量值,則它們很可能屬于同一對(duì)象,因此具有相同的標(biāo)簽。使用條件隨機(jī)場(chǎng)(Conditional Random Fields,CRF)來(lái)優(yōu)化CNN生成的標(biāo)號(hào)映射。對(duì)于給定的點(diǎn)云和標(biāo)簽預(yù)測(cè)c,其中ci表示第i個(gè)點(diǎn)的預(yù)測(cè)標(biāo)簽。CRF模型采用能量函數(shù):
式中:一元多項(xiàng)式ui(ci)=-logP(ci)由CNN分類(lèi)器產(chǎn)生的預(yù)測(cè)概率P(ci)決定。
二元多項(xiàng)式定義了將不同標(biāo)簽分配給一對(duì)相似點(diǎn)的“懲罰”,定義為:
式中:μ(ci,cj)=1,ci≠cj且都不為0。二元多項(xiàng)式與km有關(guān),km是取決于點(diǎn)i和j的特征的高斯核。wm是相應(yīng)的系數(shù)。
本文使用了兩個(gè)高斯核,即:
最小化CRF能量函數(shù),可產(chǎn)生精確的標(biāo)簽分配。式(2)的精確最小化很難解,可以用一種平均場(chǎng)迭代算法來(lái)近似有效地求解它。將平均場(chǎng)迭代表述為遞歸神經(jīng)網(wǎng)絡(luò)(RNN),將平均場(chǎng)迭代算法的詳細(xì)推導(dǎo)及其公式化閱讀器定義為RNN。這里僅簡(jiǎn)要介紹作為RNN模塊的平均場(chǎng)迭代的實(shí)現(xiàn),如圖6所示。CNN模型的輸出作為初始概率圖被饋入CRF模塊,之后基于作為式(3)的輸入特征來(lái)計(jì)算高斯核。
上述高斯核的值隨著兩點(diǎn)之間的距離(在3D笛卡爾空間和2D角空間中)飛速下降。因此,將每個(gè)點(diǎn)限制到3×5的小區(qū)域內(nèi)核上作為輸入張量。然后,使用上述高斯核對(duì)初始概率圖進(jìn)行過(guò)濾。以上述高斯核為參數(shù),可將該步驟實(shí)現(xiàn)為一個(gè)局部連接層。之后對(duì)聚合概率重新加權(quán),并使用“兼容性轉(zhuǎn)換”來(lái)確定其改變各點(diǎn)分布的程度。此步驟可以實(shí)現(xiàn)為1×1卷積,訓(xùn)練期間學(xué)習(xí)其參數(shù)。將初始概率添加到1×1卷積的輸出中,更新初始概率,并使用softmax對(duì)其進(jìn)行歸一化。模塊的輸出為完善的概率圖,通過(guò)迭代應(yīng)用此過(guò)程,可進(jìn)一步完善該概率圖。實(shí)驗(yàn)中,使用3次迭代來(lái)實(shí)現(xiàn)準(zhǔn)確的標(biāo)號(hào)映射。該遞歸CRF模塊和CNN模型可以端到端一起訓(xùn)練,使用單級(jí)流水線,避開(kāi)了多級(jí)工作流中存在的傳播錯(cuò)誤線程。
本文的初始數(shù)據(jù)來(lái)自KITTI原始數(shù)據(jù)集。該數(shù)據(jù)集提供了按順序組織的圖像、LiDAR掃描和3D邊界框。以3D邊界為界進(jìn)行逐點(diǎn)注釋。對(duì)象的3D邊界框中的所有點(diǎn)均被視為目標(biāo)對(duì)象的一部分,然后對(duì)每個(gè)點(diǎn)分配相應(yīng)的標(biāo)簽。這種轉(zhuǎn)換的例子,如圖2(a)和圖2(b)所示。使用這種方法收集了10 848張帶有逐點(diǎn)標(biāo)簽的圖像。
本文在類(lèi)級(jí)和實(shí)例級(jí)的分割任務(wù)上評(píng)估模型的性能。對(duì)于類(lèi)級(jí)分割,將預(yù)測(cè)分?jǐn)?shù)與地面真值標(biāo)簽逐點(diǎn)比較,并評(píng)估精度、召回率和IoUc(交并比)分?jǐn)?shù)。
這些分?jǐn)?shù)定義為:
式中:pc和c?分別表示屬于c類(lèi)的預(yù)測(cè)點(diǎn)和地面真值點(diǎn)集;|·|表示集合的基數(shù);IoUc分?jǐn)?shù)用作我們實(shí)驗(yàn)中的主要準(zhǔn)確性指標(biāo)。
對(duì)于實(shí)例級(jí)分割,先將每個(gè)預(yù)測(cè)的實(shí)例i與地面真值實(shí)例進(jìn)行匹配。此指數(shù)匹配過(guò)程可以表示為M(i)=j,式中i∈{1,…,N}表示預(yù)測(cè)實(shí)例指數(shù),j∈{?,1,…,M}表示地面真值指數(shù)。如果沒(méi)有與實(shí)例i匹配的地面真值,則將M(i)設(shè)置為?。匹配過(guò)程M(·)通過(guò)點(diǎn)數(shù)對(duì)地面真值實(shí)例進(jìn)行排序,對(duì)于每個(gè)地面真值實(shí)例,找到具有最大IoU的預(yù)測(cè)實(shí)例。對(duì)于每個(gè)c類(lèi),實(shí)例級(jí)精度、召回率和IoU分?jǐn)?shù)計(jì)算為:
式中:pi,c表示屬于類(lèi)c的第i個(gè)預(yù)測(cè)實(shí)例。不同的實(shí)例集互相排斥,因此∑i|pi,c|=|pc|。同樣,對(duì)于?M(i),c,如果地面真值實(shí)例與預(yù)測(cè)i不匹配,則?M(i),c為空集。
本文的主要數(shù)據(jù)集是上述轉(zhuǎn)化的KITTI數(shù)據(jù)集。將原始數(shù)據(jù)集分為具有8 057幀的訓(xùn)練集和具有2 791幀的驗(yàn)證集,并在實(shí)驗(yàn)中確保訓(xùn)練集中的幀不會(huì)在驗(yàn)證序列中出現(xiàn)。同時(shí),在Tensorflow中開(kāi)發(fā)了模型,并在實(shí)驗(yàn)中使用了NVIDIA TITAN X GPU、Drive PX2 AutoCruise和AutoChauffeur系統(tǒng)。
圖7是二維數(shù)據(jù)語(yǔ)義分割結(jié)果可視化。表1總結(jié)了該卷積神經(jīng)網(wǎng)絡(luò)的分割精度。比較CNN網(wǎng)絡(luò)的兩種結(jié)構(gòu),一種具有遞歸CRF層,另一種不具有遞歸CRF層。較高的IoU對(duì)逐點(diǎn)正確性有要求,因此這有著極高的挑戰(zhàn)性。但是,本文設(shè)計(jì)的卷積神經(jīng)網(wǎng)絡(luò)仍然取得了較高的IoU分?jǐn)?shù),尤其是在汽車(chē)類(lèi)別中。汽車(chē)類(lèi)別的類(lèi)級(jí)和實(shí)例級(jí)召回率均高于90%,對(duì)自主駕駛而言是理想的。行人和騎車(chē)人類(lèi)別的較低表現(xiàn)歸因于以下兩個(gè)原因:(1)數(shù)據(jù)集中行人和騎車(chē)人的實(shí)例更少;(2)行人和騎車(chē)人的身材要小得多,且細(xì)節(jié)更多,因此很難進(jìn)行分割。
表1 本文卷積神經(jīng)網(wǎng)絡(luò)的分割性能
將CNN與CRF相結(jié)合,顯著提高了汽車(chē)類(lèi)別的準(zhǔn)確性。提高主要來(lái)自精度的提高,因?yàn)镃RF可以更好地過(guò)濾邊界上錯(cuò)誤分類(lèi)的點(diǎn)。同時(shí),CRF在行人和騎車(chē)人分割任務(wù)中的表現(xiàn)略差,可能是由于行人和騎車(chē)人缺少CRF參數(shù)調(diào)整所致。
在TITAN X GPU上,不帶CRF的CNN處理一個(gè)LiDAR點(diǎn)云幀只需要8.9 ms,結(jié)合CRF層的CNN處理一個(gè)LiDAR點(diǎn)云幀也只需要13.8 ms,比當(dāng)今大多數(shù)LiDAR掃描儀的采樣速率快得多。Velodyne HDL-64E LiDAR的最大和平均轉(zhuǎn)速分別為20 Hz和10 Hz。兩個(gè)模型的運(yùn)行時(shí)標(biāo)準(zhǔn)偏差都非常小,這對(duì)整個(gè)自主駕駛系統(tǒng)的穩(wěn)定性至關(guān)重要。
對(duì)于雷達(dá)點(diǎn)云產(chǎn)生的道路對(duì)象分割,本文基于SqueezeNet設(shè)計(jì)的卷積神經(jīng)網(wǎng)絡(luò),是一種較為準(zhǔn)確、快速且穩(wěn)定的端到端方法。提出的深度學(xué)習(xí)方法不依賴(lài)手工制作特征,而是利用通過(guò)訓(xùn)練獲得的卷積濾波器;提出的深度學(xué)習(xí)方法使用深層神經(jīng)網(wǎng)絡(luò),因此不依賴(lài)于RANSAC、GP-INSAC和聚集聚類(lèi)等迭代算法;提出的深度學(xué)習(xí)方法將流水線減少到單一級(jí),避免了傳播錯(cuò)誤的問(wèn)題。結(jié)果表明:根據(jù)自主駕駛等應(yīng)用的要求,該模型實(shí)現(xiàn)了非常好的精度、運(yùn)行速度以及穩(wěn)定性。