引入深度补全与实例分割的三维目标检测*
2021-12-30高永彬
黄 漫, 黄 勃, 高永彬
(上海工程技术大学 电子电气工程学院,上海 201620)
0 引 言
三维目标检测技术[1,2]是利用颜色信息对物体进行分类,且利用深度传感器获取的深度信息估算目标的位置、三维边界框及方向角。目前,该技术是实现室外自动驾驶系统与室内机器人系统的关键技术。
深度相机出现后,三维目标检测方法大多基于深度相机获取的RGB-D图。Depth-RCNN[3]为基于RGB-D图的三维目标检测方法奠定了基础,即在RCNN[4]的基础上将深度信息编码为视差、高度和角度三个通道,随之而来的Amodal3Det[5]算法亦是以RGB-D图作为输入。然而,在室外自动驾驶场景中存在强光且深度像机在强光下存在不稳定性,导致获取的RGB-D图像受到影响,而激光雷达摄像机则不受强光影响,是以基于雷达点云的三维目标检测应用范围更为广泛且研究意义更大。
目前,基于雷达点云的三维目标检测方法不多,早期的一部分方法是将目标检测从二维拓展到三维,例如DSS[6]算法将二维滑动窗拓展为三维滑动窗。另外,亦有算法将RGB-D图转换为点云并输入到卷积网络进行三维目标检测,例如F-PointNet[7]算法。但在点云的新特征空间下,面临的新问题是:点云存在稀疏性和无序性,深度学习直接作用点云上的效果较差,另外点云数目过大,直接对场景点云做处理导致计算复杂度过高且目前计算机性能亦无法满足要求。然而,三维点云包含场景完整的几何信息,基于点云进行三维目标检测又是大势所趋。
因此,本文旨在以雷达点云作为三维目标检测输入的同时克服上述难题。本文输入RGB图与雷达点云,结合IP-Basic[8]算法在消除噪声的同时将稀疏雷达点云补全成稠密深度图;其次,采用降维原理缩小点云的搜索空间,结合Mask R-CNN[9]在RGB图上进行实例分割,并根据分割实例提取目标在深度图上对应的区域;再者,结合点云的自然不变性,将目标对应的深度图还原为点云后输入到卷积神经网络进行特征学习。实验结果表明:该方法在公开的三维目标检测数据集上达到了较好的检测精度。
1 算法实现
1.1 深度补全
目前,三维目标检测大多基于深度像机获取的RGB-D图,然而深度像机受强光影响而存在不稳定性,输入雷达点云则更符合室外自动驾驶的应用场景。但因雷达点云有噪声且过于稀疏,直接输入点云进行三维目标检测的效果较差。本文利用IP-Basic算法对雷达点云做去噪的同时将稀疏雷达点云补全成稠密深度图,从而提升深度信息的准确率,该算法具体如下:
1)深度反演:反演旨在避免后期图像处理时近处物体的边缘丢失问题。本文采用Kitti数据集针对三维目标检测任务提供的RGB图与雷达点云。在将稀疏雷达点云转化为深度图后观察到,空像素其值为0 m,近处物体像素值接近0 m,远处物体像素值最大为80 m。若对该深度图直接膨胀,不仅近处物体接近0 m的像素值被该物体中较大的像素值覆盖而导致近处物体的边缘信息丢失,且接近0 m的像素值与空像素值不易区分。因此,对有效(非空)像素运用式(1)进行反转,对空像素不做反转,既可保证有效像素和空像素存在20 m以上的差值,又可保留近处物体的边缘信息。深度反演公式如下,Dinput为Kitti雷达点云直接转化的深度图,其中空像素处以零值填充,Dinverted为反演后的深度值
Dinverted=100.0-Dinput
(1)
2)以适宜内核膨胀:通过有效像素填充邻近空像素,试验证明内核设置为图1(a)所示形状可达到更好的效果。
3)小孔填充:深度图膨胀后,仍存在许多未填充的孔洞。观察物体结构可知,物体边缘为膨胀后相邻深度的连线。因此,采用图1(b)所示的5×5完整内核进行闭运算来填充深度图中的小孔洞。
4)较大孔洞填充:先计算较大孔洞的掩码,后进行7×7完整内核的膨胀操作达到填充较大孔洞的效果。算法中完整内核皆类似图1(b),仅改变内核大小。
5)每列顶端像素值向上延伸:在场景高度高于激光雷达摄像机扫描高度时,其超出部分的点云无法获取,为了深度图完整,将每一列顶端有效像素值向上延伸。
6)大孔填充:大孔洞因不含有效像素点,无可使用图像数据,因此依据周围点来推断特大孔洞的深度值,即采用31×31完整内核进行膨胀来填充大孔洞。
7)中值和高斯模糊:由于雷达点云自身存在噪声和膨胀操作产生的噪声影响算法的效果,因此,采用5×5内核的中值模糊去除局部边缘的离群点,而后使用5×5内核的高斯模糊来平滑局部平面以及尖锐的物体边缘。
8)恢复原始深度编码:因步骤(1)中进行了深度反演,因此在完成步骤(7)后通过式(2)恢复原始深度编码。其中Doutput为最终的稠密深度图,Dinverted为完成步骤(1)~步骤(7)后的深度图。即
Doutput=100.0-Dinverted
(2)
完成上述步骤可在消除噪声的同时将稀疏雷达点云补全成稠密深度图。步骤(5)将每列顶端像素值向上延伸虽不合理,但自动驾驶系统关注的车辆、行人都没超出激光雷达摄像机扫描高度,因此不受影响。此外,IP-Basic算法效果显著且处理速度快,本文采用该算法即可解决雷达点云存在噪声和稀疏性的问题。
图1 膨胀操作和闭运算操作的内核形状
1.2 结合Mask R-CNN提取目标点云
深度图像将三维点云表示为二维深度图,导致点云的几何信息大部分被丢失。将深度图转化为点云,恢复场景完整的几何信息十分必要。另外,自动驾驶系统场景的点云数以万计,直接对场景点云进行3D搜索的计算复杂度过高。因此,采用降维原理,通过Mask R-CNN算法对RGB图进行实例分割,既可缩小网络的搜索空间从而降低计算复杂度,亦可避免目标检测网络将同类且距离较近的物体预测为一个物体的情况。
本文使用Kitti数据集对将Mask R-CNN网络进行训练,使实例分割模型更适用于自动驾驶场景,而后使用该模型对 RGB图做实例分割,并将分割实例对应到深度图继而通过式(3)转换为点云,过程如图2。式(3)如下
图2 实例分割后提取目标点云
xw=Ddepth·(u-u0)·dx/f,
yw=Ddepth·(v-v0)·dy/f,
zw=Ddepth
(3)
式中 (u0,v0)为图像坐标系下任意像素点的行列坐标值,(u0,v0)为图像坐标系中心点坐标,(xw,yw,zw)为世界坐标系下三维坐标点,Ddepth为深度图的深度值,相机坐标系与世界坐标系下同一点深度相等,即zw=Ddepth。其中,dx和dy为每一个像素在u轴和v轴方向上的物理尺寸,f为相机焦距。
1.3 排除信息量过少的目标
在现实世界中,遮挡永远存在。物体被遮挡部分的颜色与深度信息缺失,导致遮挡过多的物体信息量过少,作为训练数据将对三维目标检测网络的训练产生干扰。其次,过远处的物体,因设备分辨率无法满足要求,作为训练数据也会影响网络模型的性能。对从RGB图分割出来的实例进行条件限制,对于被遮挡过多的实例与过远处的实例通过式(4)排除
hstart-hend>nhthreshold,Ddepth (4) 式中 (hstart,hend)为实例像素点的起始行和终止行,nhthreshold为实例像素点行数的阈值,Ddepth为实例的深度值,Dthreshold为实例的深度阈值。 本文的三维目标检测网络架构如图3。以RGB和雷达点云作为网络输入,将稀疏的雷达点云补全成稠密深度图,将Mask R-CNN算法在RGB图上提取得到的分割实例,对应到稠密深度图后转化为点云输入到三维目标检测网络中进行特征学习。 图3 本文三维目标检测算法流程 三维目标检测网络的目的是得到物体的类别和三维框的位置、尺寸和方向角,该三维目标检测网络的损失函数定义如下 Lloss=Lseg+λ(Lc1-reg+Lc2-reg+Lh-cls+Lh-reg+Ls-cls+Ls-reg+γLcorner) (5) 式中Lseg为实例分割的损失值,Lc1-reg为用于网络将目标从相机坐标系转化到物体坐标系的损失函数,Lc2-reg为损失函数用于三维检测框的中心点回归。Lh-cls和Lh-reg为方向角预测的损失函数,而Ls-cls和Ls-reg为三维框尺寸的损失函数。softmax用于所有分类任务,smooth-l1(huber)损失用于所有回归任务。 实验基于Ubuntu16.04,64位操作系统,训练平台为Tensorflow,硬件配置为Nvidia 1080Ti。数据来源于Kitti数据集里的三维目标检测数据集。 实验中,目标点云的输入大小为1 024,若物体点云数目小于1 024个则进行双线性插值,若大于1 024个则进行下采样从而满足网络输入。实验中λ值与β值的设置是经过多次试验得到的经验值,其中λ设为1,γ设置为10,梯度下降的参数β设为0.9,权值衰减系数为0.000 5,学习率为0.001。 本文对Kitti数据集中的三个类别进行检测,并通过三维目标检测通用的三维体积交集(Intersection over Union, IOU)[10]方法对检测性能进行评估。目前仅对车辆进行三维目标检测的文献居多,为和尽可能多的三维目标检测方法作对比,本文就车辆类别在Kitti验证集上与Mono3D[11],3DOP[12],VeloFCN[13],MV3D[14]及F-PointNet等方法作对比,平均检测精度(mean average precision,MAP)的对比结果见表1。 表1 Kitti验证集上三维目标检测精度对比 由表1可知,本文方法较Mono3D,3DOP,VeloFCN及MV3D等方法有明显的优势,在Kitti复杂度较低的场景(Easy)下,平均检测精度较MV3D方法提高了14.43 %,较F-PointNet方法提高了2.36 %,在其它两个复杂度较高的场景(Moderate,Hard)下,平均检测精度仍旧高于F-PointNet方法2.15 %,1.89 %。 在Kitti测试集上的平均检测精度比较结果如表2,同时本文就目前较为先进的F-PointNet方法进行了测试结果图的对比,如图4。由表2可知,在Kitti测试集上,对比DoBEM[15]方法、MV3D方法本文方法均有明显优势。对比MV3D,本文方法在Kitti场景复杂度最高的数据集(Hard)下,就车辆类别仍旧提高了8.99 %。对比F-PointNet,本文方法在Kitti场景复杂度较低的数据集(Easy)下,对车辆、行人、骑自行车的人三类目标分别提升了2.17 %,1.75 %,1.91 %的平均检测精度,在Kitti场景复杂度最高的数据集(Hard)下,对车辆、行人、骑自行车的人三类目标亦分别提升了1.92 %,1.66 %,1.73 %的平均检测精度。实验结果表明,本文方法对Kitti数据集中三类目标的平均检测精度均有明显提高。 表2 Kitti测试集上结果对比 图4 测试结果对比 随着自动驾驶与智能机器人越来越受重视,三维目标检测技术的关注度也得到了提升,本文针对点云的三维目标检测,分析了基于点云方法存在的问题,充分利用雷达点云的三维几何信息,并融合二维特征和三维特征,既解决了点云稀疏导致的深度信息不全问题和点云数目过大导致的计算复杂度过大问题,又避免了三维目标检测网络将同类且距离较近的物体预测为一个物体导致检测结果混淆问题。实验结果表明:该方法在具有挑战性的公开数据集Kitti上取得了较好的检测精度。本文算法应用于自动驾驶领域,若直接用于实时的自动驾驶场景,在计算速度上有待后续优化。1.4 输入物体点云到三维目标检测网络进行特征学习
2 实验与分析
2.1 实验环境与参数设置
2.2 结果与分析
3 结 论