技术领域
[0001] 本
发明涉及一种三维目标检测方法及三维目标检测器,属于
模式识别领域。
背景技术
[0002] 基于点
云的三维目标检测在现实生活中充当着重要的
角色,例如自动驾驶、家庭
机器人、
增强现实和
虚拟现实。相比较于传统的基于图像数据的目标检测方法,点云可以提供更加准确的深度信息用于
定位物体和描绘物体形状。然而由于非均一化的三维空间
采样、
传感器的有效范围以及物体遮挡和相对
位置等因素的限制,较于传统的图像数据,点云更加稀疏且各部分
密度存在着较大的差异。
[0003] 为了解决上述问题,目前,一般使用人工提取特征的方法使得三维点云可以被对应目标检测器检测,然而这需要将全部点云作为输入并耗费大量的计算资源,且无法做到实时检测。
[0004] 有鉴于此,确有必要提出一种三维目标检测方法,以解决上述问题。
发明内容
[0005] 本发明的目的在于提供一种三维目标检测方法,在保持实时检测的同时能够获得很好的检测效果。
[0006] 为实现上述目的,本发明提供了一种三维目标检测方法,主要包括以下步骤:
[0007] 步骤1:对三维目标检测数据集的图像数据进行语义分割,得到语义预测;
[0008] 步骤2:将步骤1所得语义预测投影到点云空间中,并筛选特定类别的点形成视锥;
[0009] 步骤3:构建三维目标检测网络,并将步骤2中所得视锥作为三维目标检测网络的输入;
[0010] 步骤4:通过损失函数强化三维目标检测网络对目标的敏感程度;
[0011] 步骤5:优化三维目标检测网络。
[0012] 可选的,步骤1中使用DeepLabv3+
算法对三维目标检测数据集的图像数据进行语义分割,具体包括以下步骤:
[0013] 步骤11:通过DeepLabv3+算法在Cityscapes数据集上进行预训练;
[0014] 步骤12:对三维目标检测数据集的图像数据进行手动标记,并通过DeepLabv3+算法在手动标记的语义标签上进行微调;
[0015] 步骤13:通过语义分割对图像数据中的每一个
像素进行分类,以得到语义预测。
[0016] 可选的,步骤2具体包括以下步骤:
[0017] 步骤21:利用已知的投影矩阵,将每个语义预测中的每个类别的区域投影到点云空间中,以使得点云空间的每个区域的类别属性与对应语义预测的每个区域的类别属性一致;
[0018] 步骤22:将特定类别的点从原始点云空间中筛选并提取出来,形成视锥。
[0019] 可选的,步骤3中,所述三维目标检测网络使用pytorch深度
框架搭建形成,所述三维目标检测网络包括:使用网格的点云特征提取器、卷积中间提取层以及区域预选网络,且使用网格的点云特征提取器的输出作为卷积中间提取层的输入、区域预选网络的输入由卷积中间提取层提供。
[0020] 可选的,使用网格的点云特征提取器由一个线形层,一个批标准化层和一个非线性激活层组成;
[0021] 卷积中间提取层包括三个卷积中间模
块,每个卷积中间模块由一个三维卷积层,一个批标准化层和一个非线性激活层顺序相连组成;
[0022] 区域预选网络由三个全卷积模块组成。
[0023] 可选的,步骤4中使用focal loss函数解决区域预选网络中存在的正负
锚点的
不平衡问题,所述focal loss函数为:
[0024] FL(pt)=-αt(1-pt)γlog(pt),
[0025] 其中,pt是三维目标检测网络的估计概率,αt和γ为超参数调整系数。
[0026] 可选的,步骤4中,所述损失函数为:
[0027] Ltotal=β1Lcls+β2(Lreg_θ+Lreg_other)+β3Ldir+β4Lcorner,
[0028] 其中,Lcls为分类损失,Lreg_θ为三维候选框的角度损失,Lreg_other为三维候选框的其余参数校正损失,Ldir为方向损失,Lcorner为三维候选框的
顶点坐标损失,β1,β2,β3,β4为超参数。
[0029] 可选的,步骤5具体为:将三维目标检测网络在KITTI数据集上进行训练优化。
[0030] 可选的,步骤5中使用随机
梯度下降法和Adam优化器对所述三维目标检测网络进行训练优化。
[0031] 为实现上述目的,本发明还提供了一种三维目标检测器,所述三维目标检测器应用前述三维目标检测方法。
[0032] 本发明的有益效果是:本发明大大减少了三维检测的时间并且降低了计算需求,使得输入更加简单,具有很好的实时目标检测性能,在保持实时检测的同时也能获得很好的检测效果。
附图说明
[0033] 图1是本发明三维目标检测方法的
流程图。
具体实施方式
[0034] 为了使本发明的目的、技术方案和优点更加清楚,下面结合附图和具体
实施例对本发明进行详细描述。
[0035] 本发明揭示了一种三维目标检测方法及应用该三维目标检测方法的三维目标检测器。因三维目标检测器的具体结构可以根据实际情况进行设置,此处不作详细描述,以下将主要对三维目标检测方法进行详细说明。
[0036] 如图1所示,本发明的三维目标检测方法主要包括以下步骤:
[0037] 步骤1:对三维目标检测数据集的图像数据进行语义分割,得到语义预测;
[0038] 步骤2:将步骤1所得语义预测投影到点云空间中,并筛选特定类别的点形成视锥;
[0039] 步骤3:构建三维目标检测网络,并将步骤2中所得视锥作为三维目标检测网络的输入;
[0040] 步骤4:通过损失函数强化三维目标检测网络对目标的敏感程度;
[0041] 步骤5:优化三维目标检测网络。
[0042] 以下将对步骤1-步骤5做具体说明。
[0043] 步骤1中,通过DeepLabv3+算法(一种语义分割算法)来对三维目标检测数据集的图像数据进行语义分割,由于三维目标检测数据集的图像数据不包含分割的标记,所以需要先对三维目标检测数据集的图像数据进行手动标记,具体包括以下步骤:
[0044] 步骤11:通过DeepLabv3+算法在Cityscapes数据集上进行预训练200次
迭代循环;
[0045] 步骤12:对三维目标检测数据集的图像数据进行手动标记,并通过DeepLabv3+算法在手动标记的语义标签上进行50次迭代循环的微调;
[0046] 步骤13:通过语义分割对图像数据中的每一个像素进行分类,以得到语义预测。
[0047] 步骤2中,将步骤1所得语义预测投影到点云空间中,并筛选特定类别的点形成视锥,具体包括以下步骤:
[0048] 步骤21:利用已知的投影矩阵,将每个语义预测中的每个类别的区域投影到点云空间中,以使得点云空间的每个区域的类别属性与对应语义预测的每个区域的类别属性一致;
[0049] 步骤22:将特定类别的点从原始点云空间中筛选并提取出来,形成视锥。
[0050] 步骤3中,使用pytorch深度框架搭建形成三维目标检测网络,该三维目标检测网络包含三个部分:使用网格的点云特征提取器,卷积中间提取层以及区域预选网络,且使用网格的点云特征提取器的输出作为卷积中间提取层的输入、区域预选网络的输入由卷积中间提取层提供。
[0051] 具体来讲,使用网格的点云特征提取器由一个线形层,一个批标准化层和一个非线性激活层组成,在使用网格的点云特征提取器时,先将视锥用设定大小的
三维网格对整个视锥进行有序切割,并将每一个网格中的所有点云作为使用网格的点云特征提取器的输入。
[0052] 在卷积中间提取层中,为了增加感受野以获得更多的上下文,本发明使用了三个卷积中间模块,每个卷积中间模块由一个三维卷积层,一个批标准化层和一个非线性激活层顺序相连组成,它以使用网格的点云特征提取器的输出作为输入,并将这种具有三维结构的特征转
化成二维的伪图特征,将其作为最终输出。
[0053] 区域预选网络的输入为卷积中间提取层的输出,区域预选网络的体系结构由三个全卷积模块组成,每个全卷积模块包含一个
下采样的卷积层以及若干个卷积层。在每个卷积层之后,通过应用批标准化层和非线性激活层进行操作;然后,将每个全卷积模块的输出采样到具有相同大小的特征图,并将这些特征图连接成一个整体;最后,对所需的学习目标应用三个二维卷积层来生成概率分数图、回归偏移以及方向预测。
[0054] 步骤4中,由于点云的筛选过程使视锥不具有原本的上下文信息,而缺乏参考的目标点云数据使得检测任务更加困难,因此需要在三维目标检测网络中加入特殊的损失函数来强化三维目标检测网络对于目标的敏感程度,损失函数Ltotal如下所示:
[0055] Ltotal=β1Lcls+β2(Lreg_θ+Lreg_other)+β3Ldir+β4Lcorner,
[0056] 其中,Lcls为分类损失,Lreg_θ为三维候选框的角度损失,Lreg_other为三维候选框的其余参数校正损失,Ldir为方向损失,Lcorner为三维候选框的顶点坐标损失;β1,β2,β3,β4为超参数,分别被设置为1.0,2.0,0.2和0.5。
[0057] 对于Lreg_θ和Lreg_other,可以由以下变量求得:
[0058]
[0059]
[0060] Δθ=θg-θa
[0061] 其中, 为语义标签提供用来描述相应三维候选框的参数,为锚点的参数,锚点立方体检测框的对角线为da=(la)2+(wa)2。锚点
在主流目标检测框架及扩展算法中都是重要部分,通过预设一组不同尺度、不同位置的固定检测框,
覆盖几乎所有位置和尺度,每个固定检测框负责检测与其交并比大于
阈值(训练预设值,常用0.5或0.7)的目标,不再需要多尺度遍历滑窗,真正实现了又好又快。
[0062] 步骤4中,为了解决区域预选网络中存在的正负锚点的不平衡问题,本发明还通过focal loss函数来解决这些弊端:
[0063] FL(pt)=-αt(1-pt)γlog(pt),
[0064] 其中,pt是三维目标检测网络的估计概率,αt和γ为超参调整系数,分别设置为0.5和2。
[0065] 对于角度θp,三维候选框的角度损失Lreg_θ具体可以表示为:
[0066] Lreg_θ=SnoothL1(sin(θp-Δθ)),
[0067] 而三维候选框的其余参数校正损失Lreg_other使用差值为Δx,Δy,Δz,Δw,Δl,Δh,Δθ的SmoothL1函数。
[0068] 三维候选框的顶点坐标损失Lcorner的组成如下所示:
[0069]
[0070] 其中,NS,NH表示遍历所有的三维候选框,P,P*,P**分别表示三维候选框顶点、语义标签的三维候选框的顶点、将语义标签反转后的三维候选框的顶点。
[0071] 步骤5中,将三维目标检测网络在KITTI数据集上进行训练优化,具体参数和实施方法为:在一张1080Ti GPU上使用随机梯度下降法和Adam优化器来训练优化,设置三维目标检测网络的训练次数为20万次(160个迭代次数),初始的学习率被设置为0.0002,指数衰减因子为0.8并且每隔15个迭代次数衰减一次。
[0072] 为了验证本发明的检测效果,本发明将对车辆、行人和
自行车在不同难度的情形下进行测试,同时与目前现有的几种目标检测方法进行了比较,包括多视角三维(MV三维),多视角三维-激光探测和测距(MV三维-LIDAR),
视锥体点云(F-PointNet),多视图目标检测网络(AVOD),多视图目标检测网络-全卷积网络(AVOD-FCN)和
体素网络(VoxelNet)。
[0073] 如下表1和表2所示,本发明在不同情况下均能够获得相对较好的测试结果。
[0074] 表1 在KITTI数据集上三维检测的AP值对比
[0075]
[0076] 表2 在KITTI数据集上
鸟瞰检测的AP值对比
[0077]
[0078]
[0079] 此外,如下表3所示,本发明虽然不是耗时最少的方法,但考虑到其自身已经使用了语义分割方法,在保持实时检测的同时也能获得很好的检测效果。
[0080] 表3 在KITTI数据集上用不同的方法处理一
帧场景需要的时间
[0081]
[0082] 综上所述,本发明大大减少了三维检测的时间并且降低了计算需求,使得输入更加简单,具有很好的实时目标检测性能,在保持实时检测的同时也能获得很好的检测效果。
[0083] 以上实施例仅用以说明本发明的技术方案而非限制,尽管参照较佳实施例对本发明进行了详细说明,本领域的普通技术人员应当理解,可以对本发明的技术方案进行
修改或者等同替换,而不脱离本发明技术方案的精神和范围。