基于雷达点云的中视图投影处理*

2019-10-18 09:15罗健欣潘志松
网络安全与数据管理 2019年10期
关键词:视图投影编码

刘 祯,罗健欣,潘志松

(陆军工程大学 指挥控制工程学院,江苏 南京 210007)

0 引言

人类生活在一个三维的空间,正如双耳效应与双目深度存在的必要性,耳朵和眼睛均是成双来感知这个三维世界。单一的二维图像本身就缺乏一个维度信息,使其难以应用于更全面的环境感知领域以及许多相关实际应用,例如自动驾驶与机器人技术。然而,直接的三维检测由于维度的提升,导致变量显著增多,因此存在运算速度慢、检测精度低等一系列问题。

点云的利用,对自动驾驶而言相当重要,其主要体现在对普通的RGB相机的优势:(1)能够获取与RGB相机一样的环境信息;(2)获取所需研究对象的位置信息;(3)由于雷达点云通常位于汽车顶部的最高位置,因此在某种程度上减轻了遮挡问题。利用点云数据存在的劣势显而易见:点云是稀疏的,单独的一个个点云研究显得毫无意义,难以直接处理,但彼此又有所关联,因此不能单纯地分开处理。所以,考虑使用聚类或投影方法来处理点云。

1 相关工作

在自动驾驶方面,3D点云可以提供比2D图像更多的几何信息,因此对3D点云中的对象的姿势进行预计,往往比2D图像中的估计更准确。三维点云对象识别已逐渐成为新的研究方向,并已广泛应用于机器人导航、虚拟现实、人机交互、场景理解、激光遥感测量等多个领域。而最具代表性的应用,就是自动驾驶方面。

1.1 点云识别研究现状

大多数方法[1-3]用体素网格表示编码3D点云。3DVP[4]引入了3D体素模式,并采用一组ACF检测器进行2D检测和3D姿态估计。3DOP[5]从立体图像重建深度,并使用能量最小化方法生成3D选框提议,然后利用R-CNN[6]训练。VoxelNet[7]是一种3D检测网络,其将特征提取和边界框预测统一到单个阶段的端到端可训练深度网络中。它将点云划分为等间距的3D体素,并通过新引入的体素特征编码(VFE)层将每个体素内的一组点转换为统一的特征表示。通过这种方式,点云被编码为描述性体积表示,然后将其连接到RPN以生成检测。

文献[2]将点云投射到前视图,获得2D点图。LMNet[8]同样是使用前视图投影方式,达到了非常快的速度,可以看作VeloFCN的改进版本。MV3D[9]提出了多视图3D网络,这是一种感知融合框架,它将LIDAR点云和RGB图像作为输入并预测定向的3D边界框。MV3D使用紧凑的多视图表示对稀疏3D点云进行编码,并设计深度融合方案,以组合来自多个视图的区域方式特征,并实现不同路径的中间层之间的交互。Complex-YOLO[10]是仅在点云上的先进的实时3D物体检测网络,利用鸟瞰图来进行识别。它通过特定的复杂回归策略来估计笛卡尔空间中的多类3D框,是一个扩展YOLOv2的网络[11-12]。Complex-YOLO使用特定的Euler-Region-Proposal Network(E-RPN)[10]通过向回归网络添加虚数和实数分数来估计对象的姿态。

1.2 点云的鸟瞰图表示

有的工作将3D LIDAR点云编码为3D网格[1,13]或前视图[2]。根据MV3D[9]的思想,首先讨论点云的鸟瞰图投影。类似于制作带有等高线的地形图,为了保留更多的垂直方向的信息,可以将点云按照一定高度切割后再投影。

将投影点云分辨率设置为0.1 m,投影得到的每个像素的复制值只考虑高度。将点云按照高度值平均分为12个切片(测试起见,简单地设定x,y,z如下:x∈[0,20 m],y∈[-10 m,10 m],z∈[-2 m,2 m],即前后设置为0~20 m,左右距离均为10 m,高度范围为-2~2 m,每隔0.3 m切片)。为每个切片计算高度图,可获得12个高度图(图1(a))。当然也可以按照图1(b)所示的方式,直接得到整个点云的鸟瞰图。

图1 点云的鸟瞰图

1.3 点云的前视图表示

根据点云的特征和获取方式,激光雷达从中间向外围分散获取点云数据。考虑到点云获取方式类似灯光照射,而灯光照射下会产生大量阴影,点云的获取也存在许多遮挡问题。将点云按照获取的路径重新投影回来,不考虑缺失的遮挡内容,可以更好地恢复当时的道路状况。同样,考虑人类驾驶员主要通过窗户玻璃的曲面获取道路信息,在前期处理中,将点云投影到弧面上以替换前视图,如图2所示,改进的前视图投影后,行人的特征得到了很好的保留。

图2 雷达点云的360°前视图投影

S

x

y

z

S

f

x

f

y

f

[9]

xf=⎣atan2(y,x)/m」

(1)

(2)

图2中,按距离标记颜色,从近到远,从深红色到蓝紫色。点云的缺失部分标记为白色(根据实际使用情况,也可以标记为黑色)。

2 投影新方法——中视图投影

大多工作的点云投影处理,使用俯视图(鸟瞰图)。显而易见,鸟瞰图可以很好地获得物体的位置信息,但对行人识别的准确性却不能令人满意。

2.1 现有点云投影分析

对于鸟瞰图投影,显而易见,鸟瞰图投影很适合汽车等大物体的识别。虽然使用鸟瞰图可以轻松识别车辆信息,获取到想要的汽车位置信息,但是针对行人等小目标的精确识别,单纯的鸟瞰图难以实现。相比于鸟瞰图的直接投影,分割切片的方法在一定程度上更详细地反映了高度信息,但依旧解决不了相关问题。

前视图很好地保留了点云的信息,使行人和车辆的识别特征更加明显,还可以通过限制投影角度来限制与扩大视野。前视图投影存在的问题也比较明显:(1)运算量要比普通投影大很多;(2)与RGB相机视角重复,没有发挥点云优势;(3)虽然在一定程度上保留了距离要素,但是相关数据的压缩过大。

2.2 中视图投影

受传统物体三个视图(主视图、侧视图、俯视图)的启发,为了提高投影点云的利用率,提高识别精度,保留物体在车辆行驶方向上的位置信息,同时更好地与RGB照片结合利用,作为雷达点云投影的补充,本文提出点云的中视图投影。

中视图投影是基于侧视图进行的改进,可用于提高投影方法的准确性、物体识别和定位精度。将车辆的行驶前进方向作为投影平面(中心平面,如图3所示),根据侧视图的思想,将两边的点云投射到中心平面获得点云的中间视图,选择用点云y方向(车辆两侧方向)的值编码像素值,投影后的点的像素值如下:

P(xc,yc)=y,xc=x,yc=z

(3)

其中,x,y,z是点云坐标,xc,yc是中心投影后的坐标。这样保留了点云y方向的数据的同时,最大程度上突出点云x方向(车辆前进方向)的数据。而且,点云x方向正是RGB相片所缺失的方向。

图3 中视图投影方法示意图

当然,还可以通过改变两侧投影的宽度(y方向数值范围)以获取更多详细信息。相应地,宽度越大,获得的点云数量越多,但干扰的背景云越多。可以根据适当的驾驶场景选择适当的点云投影范围。针对干扰问题,特别是路边墙壁与路灯等建筑对投影的较大干扰,本文提出了一种解决方案:两侧分别投影。如图4所示,在选取范围内全投影的同时,还可以分别针对前进中轴面(中视图的投影平面)左右两侧进行投影。

图4 中视图投影

更一般地,受到ComplexYolo[10]的启发,用三种值(距离y,反射r,高度z)编码RGB,可以尽可能地保留更多点云信息:

Q(xc,yc)=(y,z,r),xc=x,yc=z

(4)

其中,Q是投影后图片每个像素对应的RGB值,xc,yc是中心投影后的坐标。

2.3 中视图投影分析

单一地通过RGB进行图片识别,由于低维度的限制以及遮挡的问题,在汽车行进方向上存在很大的盲区。同样地,前视图和鸟瞰图投影也存在汽车行进方向和垂直方向维度缺失的问题,这些在中视图投影中得到了解决。由于与RGB照片的互补性,可以将两者进行结合,使得识别更精确,对数据利用更充分。

中视图投影作为本文提出的新投影方法,在理论上和实际操作时,也会遇到一些问题。由于点云的稀疏性,通过距离y、反射r、高度z编码RGB数值,在重新读取时有小概率出现空白的现象。解决方案可以将其读取范围扩大一个像素点,也就是将感受野扩大,从1个像素点拓展到9个。另外,若是选择左右侧单投影的方式,处在投影平面位置的物体点云会出现残缺。

综上所述,中视图投影有以下优点:(1)解决了鸟瞰图的行人等目标的识别困难问题;(2)最大程度地保留了RGB相机缺乏的维度数据,可以更好地在自动驾驶中应用;(3)本来的侧视图遮挡问题,可以按照所需要的左右两侧分投影解决,保留更详细的点云数据。

3 实验

3.1 数据预处理

实验在KITTI[14-15]的训练集T上进行,在训练之前对点云数据进行预处理。首先需要确定点云的范围,选择合适的投影区间。

Z×Y×X=[-2,0.5]×[-10,10]×[0,20]

(5)

其中,Z、Y、X分别是点云在垂直方向、汽车两侧、汽车前进方向的坐标。

然后进行投影操作,按照上一节的描述内容,将点云进行中视图投影。点云中的三维标签按照投影方式对应到中视图投影中,制作图像识别最常用的选框标记,令中心坐标为(x,y),长为l,宽为w。由于投影方式相同,因此图片大小一致,可以很方便地对标签x、y、l、w进行归一化。最后将结果写入文本文档,完成预处理工作。图5中,对标注后的中视图投影选框进行了可视化。

图5 标注后的中视图投影选框可视化

3.2 训练

将得到的预处理结果按照下面的公式分配训练集Ttrain和数据集Tval:

0.7T/Ttrain=0.3T/Tval=1

(6)

选择Faster R-CNN[16]或者YOLOv3[17]模型作为训练模型,并针对其进行改进,使识别速度更快、精度更高,并且得到的投影图可以依据需要编码像素,数据可以直接从图片上读取。目前,在二维图像识别方面,YOLOv3[17]能够得到很好的效果,不仅速度非常快,在准确度上也表现优秀,尤其适合用在自动驾驶这种对速度和准确度都有很高要求的应用场景。

实验通过对YOLOv3进行改进来训练中视图投影。简单起见,这里只使用了y方向对像素色彩值进行编码的投影图,并对YOLOv3训练模型进行如下的修改,以此来适应中视图投影的训练过程。

(1)关闭多尺度训练。由于中视图生成的图像尺寸是一致的,因此通过改变图片形状来提高识别准确度的操作是没有必要的,仅仅针对输入图像的大小进行了简单调整。

(2)KITTI数据集一共8个类,分别是Car、Van、Truck、Pedestrian、Person_sitting、Cyclist、Tram和Mis。针对YOLO9000[12]提出的维度集群,进行一定的调整。将提议的候选框按照训练类别进行了微调,使其更接近符合预测的8个类。

(3)修改超参数。由于投影图类似于卡通图,与RGB图像存在一些差异,因此对阈值等一些超参数进行修改,可得到更好的训练效果。

在实际训练时,由于汽车和行人类别数量比较多,因此训练只对这两项进行。由于基本保留了训练模型的优势,因此FPS基本保留了YOLOv3的优势,达到实时的效果。最后对准确率进行评估,对行人识别的准确率在71%左右,对汽车识别的准确率将近80%。

4 结论

如今,自动驾驶的安全性越来越受到关注。正是由于安全问题,自动驾驶技术进展缓慢。自动车辆已经携带足够的设备来获取道路信息,因此通过充分利用获取的数据来提高驾驶识别的准确性至关重要。与传统投影方法相比,中视图投影保留了更多需要的点云信息,并在细节方面进行了优化。

一系列投影方案可作为点云识别的解决方案。在实际应用中,同样考虑各种投影的组合,正如MV3D[9]的做法,中视图的投影同样可以加到深度融合[18]训练中,使得点云数据被充分利用,以改善自动驾驶的安全性。由于点云数据以较短的时间间隔生成,经过一系列点云的投影处理后,类似于车辆行驶的连贯性,将每个视图制成连续视频,整个道路状况都得到了很好的展示。还可以通过3D CNN[19]训练投影数据,预先判断行人和车辆行为,进一步提高自动驾驶的安全性。

猜你喜欢
视图投影编码
全息? 全息投影? 傻傻分不清楚
生活中的编码
《全元诗》未编码疑难字考辨十五则
基于最大相关熵的簇稀疏仿射投影算法
子带编码在图像压缩编码中的应用
找投影
找投影
Genome and healthcare
视图
Y—20重型运输机多视图