羅玉濤,秦 瀚
(華南理工大學機械與汽車工程學院,廣州 510641)
由于激光雷達具有測量精度高、感知范圍廣等優(yōu)點,目前的無人駕駛方案中普遍采用激光雷達作為車載傳感器之一。針對激光雷達生成的點云數(shù)據(jù)的感知算法主要分為基于規(guī)則的算法[1]和基于神經(jīng)網(wǎng)絡(luò)的算法兩大類?;谝?guī)則的算法主要通過地面分割、空間聚類和點云識別等規(guī)則對數(shù)據(jù)進行處理;基于神經(jīng)網(wǎng)絡(luò)的算法使用神經(jīng)網(wǎng)絡(luò)模型,通過點云數(shù)據(jù)直接感知周圍環(huán)境信息,算法主要有:PointNet[2]、PIXOR++[3]、VoxelNet[4]、Second[5]和PointPillars[6]等,具有精度高、擴展性好等優(yōu)點,是目前研究的主流方向。但由于激光雷達只能感知周圍環(huán)境的位置信息,不能感知顏色等信息,從而限制點云處理算法感知精度的進一步提升。攝像機能致密地感知周圍環(huán)境的顏色信息,但不能感知深度信息。將點云與圖像進行融合是目前提高無人駕駛車輛的感知能力的主要方向之一。
在圖像數(shù)據(jù)與點云數(shù)據(jù)融合中,目前存在數(shù)據(jù)級、特征級和目標級3 種融合方式,其中以特征級融合的算法最常用,如MV3D[7]、Cont?Fuse[8]、AVOD[9]等。該融合方式對圖像利用卷積神經(jīng)網(wǎng)絡(luò)等提取特征后,再與點云或其特征進行融合。MV3D[7]以lidar點云的鳥瞰(BEV)、正視圖(FV)和圖像作為輸入。Cont?Fuse[8]使用連續(xù)融合層將圖像特征融合到點云BEV 特征圖上。AVOD[9]對圖像和lidar 點云BEV 地圖進行特征提取,然后根據(jù)Top K 提議對特征進行裁剪和調(diào)整,最后融合特征。特征級融合方法須同時對圖像數(shù)據(jù)和點云數(shù)據(jù)進行運算,計算量較大,且圖像與點云沒有空間完全對應(yīng)關(guān)系。
目標級融合[10-11]將點云識別與圖像識別輸出的結(jié)果進行融合,它依然會受到圖像數(shù)據(jù)缺少深度信息的局限,對遮擋嚴重和環(huán)境復雜的場景精度提升較小。
數(shù)據(jù)級融合根據(jù)點云與圖像像素的投影關(guān)系,將兩者進行一一匹配。目前對于數(shù)據(jù)級融合的研究較少,Ku 等[12-13]通過局部融合提升物體定位的準確性,且通過將點云與多視角的圖像融合,增加對行人朝向檢測的準確率。PointPainting 算法[14]先通過圖像識別算法將圖像分割后對點云染色,并對染色后的點云進行處理。
本文中提出一種稀疏彩色點云(sparse colorful point cloud,SCPC)結(jié)構(gòu),通過對圖像與點云的特征進行直接融合。并通過改進的PointPillars[6]神經(jīng)網(wǎng)絡(luò)算法對稀疏彩色點云直接進行運算,提升了對較難識別的物體識別能力。
本文中提出將圖像與點云直接融合,直接使用神經(jīng)網(wǎng)絡(luò)算法處理融合結(jié)果,實現(xiàn)對車輛周邊物體的識別。與特征級融合方法[7-9]相比,本文中不再依賴卷積神經(jīng)網(wǎng)絡(luò)對圖像單獨進行特征提取,簡化了神經(jīng)網(wǎng)絡(luò)架構(gòu)。與目標級融合方法[10-11]相比,本文中無須將不同傳感器感知到的物體進行匹配,降低了匹配難度。與其他數(shù)據(jù)級融合方法[12-14]相比,無須對圖像進行預處理,簡化了圖像處理流程。
總體框架包含兩個模塊:稀疏彩色點云的生成模塊和運算模塊。其中稀疏彩色點云生成模塊包含點云切割、投影和特征疊加;稀疏彩色點云運算模塊包含特征提取、卷積和SSD 檢測。具體見2.2 節(jié)與2.3節(jié),整個流程如圖1所示。
本文中提出了一種通過激光雷達與攝像頭數(shù)據(jù)融合得到的稀疏彩色點云結(jié)構(gòu),它總共有7 個維度,分別為場景中點的空間位置(3 維)、反射率(1 維)與顏色信息(3 維)。其中,空間位置為該點在lidar 坐標系中的x、y和z坐標,反射率反映該點材料對激光的反射強度,顏色信息為攝像頭讀取的RGB 三通道信息。
圖1 總體框架圖
1.2.1 過濾點云
過濾不在相機視野內(nèi)的點云,根據(jù)相機的投影矩陣[15](式(1))和圖像尺寸,可以確定相機的視錐,并根據(jù)該激光雷達的探測范圍,采用距離相機0.01 與100 m 作為截取視錐的平面,由此可以確定攝像機坐標系四棱臺。
式中:C為相機內(nèi)參矩陣[16],形式為上三角矩陣,見式(2),其中的參數(shù)為歸一化焦距fx與fy、圖像中心u0與v0和軸傾斜參數(shù)k;R為旋轉(zhuǎn)矩陣;T為平移向量。C可以通過式(3)和式(4)得到,其中的M為投影矩陣的前3 列,QR分解是由Gram?Schmidt 正交化推理出來的一種方陣分解形式。
由式(5)可以得出四棱臺8 個頂點的空間位置,如圖2 所示,其中的u、v為圖片4 個角像素坐標,Z為切割平面的距離。
圖2 攝像頭坐標系四棱臺示意圖
1.2.2 坐標轉(zhuǎn)換
將攝像機坐標系中的四棱臺轉(zhuǎn)化到激光雷達坐標系中,即對四棱臺的8個角點進行坐標轉(zhuǎn)換:
圖3 分割前的點云
圖4 分割后的點云
1.2.3 點云投影
根據(jù)點與圖像的投影關(guān)系將分割后的點云投影至圖像中[17]。根據(jù)式(8)將切割后的點云投影至圖像坐標系中,其中Ps為點云的空間坐標位置,Pi為像素坐標系的位置,其中的投影矩陣Ttrans由式(9)得出。
1.2.4 特征疊加
將點云數(shù)據(jù)和其對應(yīng)像素進行疊加。確定點云數(shù)據(jù)在像素坐標系中的位置后,將點云對應(yīng)的顏色特征(RGB)作為稀疏彩色點云的后3 維信息,合為7 維稀疏彩色點云。
圖5和圖6為點云對應(yīng)的圖片信息與稀疏彩色點云數(shù)據(jù)示例。
圖5 攝像機拍攝圖片
圖6 彩色稀疏點云示意圖
基于上文構(gòu)建的7 維稀疏彩色點云結(jié)構(gòu),使用改進的PointPillars 算法,對周圍環(huán)境的車輛、行人與騎單車人(簡稱騎車人)進行識別。Lang 等[6]提出的Pointpillars 算法是目前效果最好的針對點云數(shù)據(jù)的神經(jīng)網(wǎng)絡(luò)模型之一,具有速度快、效果好的特點。網(wǎng)絡(luò)包括對于稀疏彩色點云的特征提取、“偽圖像”(Pseudo image)的卷積神經(jīng)網(wǎng)絡(luò)處理和SSD[18]檢測3 個模塊,網(wǎng)絡(luò)流程圖如圖7所示。
圖7 稀疏彩色點云處理網(wǎng)絡(luò)流程圖
1.3.1 改進的特征提取網(wǎng)絡(luò)
算法通過尺寸為0.16 m×0.16 m 的點云柱,按照俯視圖對稀疏彩色點云進行劃分,Pointpillars 算法偏向于對點云柱中的空間特征的提取,本文針對稀疏彩色點云數(shù)據(jù),根據(jù)式(10)提取非空點云柱中的特征,維度為6維。
式中:為點云的平均縱向位置;為平均反射率;、、為平均三原色值。L2的公式為
式中和分別表示點云柱內(nèi)所有點云的x、y數(shù)值的平均數(shù)。
設(shè)非空點云柱的數(shù)量為P,通過將非空點云柱提取6 維特征,可以獲得大小為(6,P)的張量。點支柱中的最大點數(shù)設(shè)置為100,如果一個支柱包含100 個以上的點,則將對點云隨機采樣。最后將按照非空點云柱的位置,生成(6,H,W)的“偽圖像”,其中H、W為偽圖像的長寬,由式(12)確定。
式中:h和w分別為點云區(qū)域在y軸和x軸方向上的長度;vh和vw分別為點云柱對應(yīng)方向的長度,在本文中都設(shè)置為0.16 m。
最終本文對“偽圖像”進行批量歸一化[19]、激活[20]和卷積運算,以生成大小為(D,H,W)的“偽圖像”,其中D是“偽圖像”的深度。
1.3.2 增加特征層數(shù)的卷積
在卷積神經(jīng)網(wǎng)絡(luò)的設(shè)計中,通過兩個子模塊完成,分別為上采樣模塊與下采樣模塊。下采樣模塊通過對偽圖像的卷積,提取更高層的特征;上采樣模塊對特征進行反卷積,使特征還原為初始的尺寸,并將不同層的特征進行疊加。卷積神經(jīng)網(wǎng)絡(luò)對偽圖像進行3 層卷積操作,第1 層卷積中始終保持卷積后的偽圖像尺寸不變;在第2 層卷積中,通過兩次卷積操作,使卷積后的特征尺寸縮小為之前的1/2,然后通過上采樣模塊,將尺寸為1/2 的特征反卷積為初始尺寸;第3 層采樣與第2 層采樣類似,通過下采樣將特征尺寸縮小為之前的1/4,并通過反卷積得到初始尺寸,最后將3 層卷積的特征疊加,并輸入到SSD網(wǎng)絡(luò)[18]。
由于增加了顏色維度信息,使用128 個3×3×7 的卷積核進行卷積,將“偽圖像”的特征提升至128 維,在對“偽圖像”進行卷積操作時也相應(yīng)提升了卷積層數(shù),以適應(yīng)點云的額外屬性。
1.3.3 采用SSD算法進行檢測
最后使用SSD 算法進行3D 檢測,使用IoU[21]值對先驗框和真實框進行匹配,而高度和高程為額外的回歸目標。模型最終輸出的預測框為物體的類型、三維大小與空間位置,以3D 框的形式輸出,其結(jié)果如圖8所示。
圖8 彩色稀疏點云示意圖
1.3.4 懲罰函數(shù)
本算法中的懲罰函數(shù)(loss function)使用了SECOND 算法[5]中的懲罰函數(shù)。真實框和預測框由參數(shù)(x,y,z,w,l,h,θ)定義,其中x、y、z分別為框的空間位置,w、l、h分別為3D 框的寬長高,θ為物體朝向。真實值和預測值之間的定位誤差Lloc為
其中下標為gt 的值為真實框中的值,下標為a 的值為預測框的值,其中SmoothL1 函數(shù)如式(17)所示,da的計算如式(18)所示。
由于角度定位損失Δθ不能區(qū)分物體的朝向,在離散方向上使用softmax 分類損失Ldir,網(wǎng)絡(luò)能夠?qū)W習物體朝向。
文獻[22]中的分類誤差Lcls的計算公式為
式中pa為預測框的分類概率;超參數(shù)α和γ分別設(shè)為0.25和2。
總體的損失函數(shù)為
式中:Npos為正確框數(shù)目;超參數(shù)βloc、βcls、βdir分別取值為2、1、0.2。
為驗證本文所提出的稀疏彩色點云和改進的PointPillars 算法的識別分割精度和實時性,采用KITTI 數(shù)據(jù)集進行驗證。計算所使用的電腦配置為:INTEL 3.2 GHz i5?7500CPU,GIGABYTE GTX 1060 6G GPU。操作系統(tǒng)為Ubuntu 16.04,使用的語言為Python 3.6,深度學習框架為Pytorch。
2.1.1 訓練參數(shù)設(shè)置
將KITTI 數(shù)據(jù)集按照文獻[23]分為包含3 712 個樣本的訓練集和包含3 769個樣本的驗證集,由于訓練樣本占用的內(nèi)存較大且GPU的內(nèi)存有限,神經(jīng)網(wǎng)絡(luò)中的批數(shù)(batch size)為1,訓練集總迭代次數(shù)為110 次,訓練的步數(shù)(step)為408 320步,訓練時長大約為30 h。
2.1.2 訓練過程
訓練過程中的分類和位置誤差的變化分別如圖9和圖10所示。從圖中可以看出,分類和位置誤差都在400 000步左右收斂,但最終收斂的誤差有差別,分類誤差<10%,而位置誤差>15%。訓練結(jié)果表明神經(jīng)網(wǎng)絡(luò)模型從訓練集中自主學習到周圍環(huán)境的分類和定位。在訓練完成后將神經(jīng)網(wǎng)絡(luò)對驗證集進行驗證。
2.2.1 重疊度IoU
模型的效果是根據(jù)特定重疊度IoU[21](intersection over union)下的平均精度AP(average precision)來判斷的。IoU 值用來評價預測值與真實值之間的重疊程度,IoU值越大,表明預測越接近真實值。2維IoU的計算示意圖如圖11所示,3維IoU同理。
2.2.2 平均精度值
AP 值是在機器學習領(lǐng)域運用廣泛的評價指標之一,為多分類精度P的平均值,其計算公式為
式中:TP為真正例,即預測和真實值都為真的樣本數(shù)目;FP為假正例,即預測值為真而真實值為假的樣本數(shù)目。模型的評價指標一般為IoU 在特定值之上的記為真,但針對不同的物體通常設(shè)定不同的值,這是因為不同物體的檢測難度不同,例如汽車IoU 值一般設(shè)為0.7、行人與騎車人的IoU 值設(shè)定為0.5。IoU 越大表明檢測要求的誤差越小,評價越嚴格。
圖9 車輛、行人、騎車人的分類誤差
圖10 車輛、行人與騎車人的位置誤差
圖11 KITTI數(shù)據(jù)集BEV視圖與點云算法對比直方圖
2.2.3 困難等級
KITTI數(shù)據(jù)集根據(jù)物體被檢測的困難程度分為簡單(easy)、中等(moderate)與困難(hard)3個等級[24]。其劃分的依據(jù)為物體在像素坐標系的高度、遮擋程度和截斷程度。例如,物體在圖像中的高度大于40個像素,不存在遮擋且截斷程度小于0.15,則劃分為簡單難度。
將得到的結(jié)果與其他的算法進行比較,比較的評價指標都相同,針對汽車的檢測IoU 為0.7,針對行人與騎車人的IoU設(shè)為0.5。
2.3.1 與點云算法對比結(jié)果
將驗證的結(jié)果與原算法PointPillars 進行對比,結(jié)果如圖11 和圖12 所示。本算法在BEV(俯視圖)和3D 視圖中都有提升,在行人與騎行人和較難檢測到的車輛檢測方面有較大的提升,在俯視圖檢測中的行人困難模式檢測的AP提升最大,可以達到25.3%,在3D 檢測中的困難等級車輛AP 提升了6.6%,中等等級行人檢測與騎車人AP分別提升13.8%與6.6%,效果較為明顯。
圖12 KITTI數(shù)據(jù)集3D視圖與點云算法對比直方圖
將本算法與目前效果最好的點云處理算法進行比較。在車輛檢測中的STD[25]算法的表現(xiàn)較優(yōu),在行人與騎車人檢測中本方法表現(xiàn)較優(yōu),在BEV 視圖中的困難等級行人與騎車人檢測提升為28.9%和8.1%,在3D視圖中兩項提升為13.7%和7.3%。
2.3.2 與其他融合算法對比結(jié)果
將本算法與其他融合算法比較的結(jié)果如圖13和圖14 所示。在BEV 視圖中,本算法在各方面的效果都較好,特別是在困難等級下,汽車、行人與騎車人的AP 值與其他融合算法中的最優(yōu)結(jié)果相比分別提升9.4%、24.0%與14.4%。在3D 視圖中的困難模式下,三者提升分別為9.7%、14.4%與18.8%。
2.3.3 運行速度分析
在估計運算速度時,由于不同的作者使用設(shè)備的計算能力不同,各算法的運算時間缺少可比性,于是根據(jù)不同顯卡的運算能力,統(tǒng)一將各類算法的運行時間統(tǒng)一到同一算力的設(shè)備上進行比較。由于多數(shù)作者在評價設(shè)備時采用的是同等算力的NVIDIA GTX1080 Ti 與NVIDIA TITAN X,而各設(shè)備的換算會有部分區(qū)別,所以結(jié)果可能會有部分偏差。
將本文算法速度與其他算法進行了比較,結(jié)果如圖15 所示。從圖中可知,在相同的計算能力下,本文算法的運算速度僅次于PointPillars 算法,基本滿足實時性要求。
目前主流激光雷達傳感器的采樣頻率為5-15 Hz,而本算法在NVIDIA 1080Ti GPU 級設(shè)備中的運算速度可以達到33.3 Hz,故本算法可以滿足實時性的要求。
由于點云的稀疏性,激光雷達對較小和較遠的物體采集的點云數(shù)量很少,算法不能從太少的點云中提取足夠的特征進行識別,而增加了顏色特征后,行人或騎車人的顏色與周圍環(huán)境差異很大,從而能夠使算法提取足夠多的特征對行人進行檢測,大大提高了算法對較難檢測物體的識別能力。
圖13 KITTI數(shù)據(jù)集BEV視圖與其他融合算法對比直方圖
圖14 KITTI數(shù)據(jù)集3D視圖與其他融合算法對比直方圖
圖15 各算法每秒運行幀數(shù)對比直方圖
因為在光照不足或能見度不高的情況下無法顯著提取到圖像特征,以上兩種環(huán)境對特征層融合方法的影響較大。而本文提出的方法本質(zhì)上依然是對于點云數(shù)據(jù)進行計算,以上兩種情形對于本文算法的影響較小。即使在攝像頭完全失效的情況下,本文算法依然能夠只根據(jù)點云的空間信息,實現(xiàn)對周圍環(huán)境的感知。
提出一種7 維稀疏彩色點云結(jié)構(gòu),通過空間位置與像素坐標的匹配將圖像中顏色信息賦予激光雷達點云數(shù)據(jù),并使用改進的PointPillars 算法對稀疏彩色點云進行計算。與其他融合算法或點云算法的對比結(jié)果表明,本文提出的融合方法具有較大優(yōu)勢,特別是在行人與騎車人的檢測方面比目前主流算法有較大提升,為傳感器融合算法的開發(fā)提供了一種新思路。