一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

视锥与几何约束相结合的多模态三维目标检测方法及系统

2023-02-06 22:31:26 来源:中国专利 TAG:


1.本发明涉及三维目标检测技术领域,具体地,涉及视锥与几何约束相结合的多模态三维目标检测方法及系统,涉及视锥与几何规则,能够应用于自动驾驶系统的感知模块中。


背景技术:

2.自动驾驶技术是目前的一个热点研究方向,该技术能够应用于无人运输、无人环卫、辅助驾驶等等场景,能够有效地解放劳动力。感知模块是自动驾驶技术中重要的一环,它能够帮助自动驾驶系统获取当前的环境信息,以助于车辆规避障碍与规划路径。三维目标检测是感知中的一项重要任务,用于得到场景中的障碍物位置、大小以及朝向,因此,如何融合传感器捕获的激光雷达点云数据与图像数据,并设计一个高效、准确、鲁棒且易部署的三维目标检测器是一大挑战。
3.经过对现有技术文献的查找发现,目前效果好的三维目标检测模型均是基于深度学习的方法,将激光雷达点云与图像数据送入已经构造好的深度网络模型中,并根据标注好的三维标签值实现端到端的训练。这种方法能够在数据集上得到较高的效果,但由于其中绝大部分模型均涉及到稀疏卷积(sparse convolution)算子,而该算子目前并不能够很好地部署到车载芯片上。少部分方法如pointpillars直接将点云压缩至俯视图下,之后使用二维的骨干网络回归目标的三维位置,但该类方法不能够很好地结合图像的信息。部分工作如f-pointnets、f-convnet、frustum-pointpillars等先利用二维目标检测器与几何投影构造出视锥,再使用深度网络模块对视锥内的点云进行三维目标检测,这类方法能够有效地结合成熟的二维目标检测器,且没有复杂的模块,较容易部署;但该类方法的两个阶段(二维检测和三维检测)都需要使用深度网络训练,需要大量的数据来拟合,导致这类方法的泛化能力较差,且依赖于训练数据的数量与质量。本发明在基于视锥的方法上做出改动,在三维检测的步骤中结合几何约束实现最终的检测,该方法不依赖于大量训练数据,且易于部署,有较好的泛化性和实时性。
4.专利文献cn110909623b(申请号:201911052349.9)公开了一种三维目标检测方法及三维目标检测器。所述三维目标检测方法主要包括以下步骤:对三维目标检测数据集的图像数据进行语义分割,得到语义预测;将语义预测投影到点云空间中,并筛选特定类别的点形成视锥;构建三维目标检测网络,并将视锥作为三维目标检测网络的输入;通过损失函数强化三维目标检测网络对目标的敏感程度;优化三维目标检测网络。


技术实现要素:

5.针对现有技术中的缺陷,本发明的目的是提供一种视锥与几何约束相结合的多模态三维目标检测方法及系统。
6.根据本发明提供的一种视锥与几何约束相结合的多模态三维目标检测方法,包括:
7.步骤s1:使用二维目标检测器在相机图像上生成二维的感知结果,得到图像中待检测目标的二维边界框;根据传感器之间的外参以及相机内参,将激光雷达点云投影至图像平面上,提取投影至二维边界框内的点云,得到相应的视锥内点云;
8.步骤s2:对视锥内点云进行地面检测,并结合地面与视锥下边界交界处的位置对视锥内点云进行初步过滤,对过滤后的点云使用dbscan聚类得到各个候选点云簇,并设定距离阈值对点云簇进行合并,设定点云簇的评分标准,对每个点云簇进行打分,最终挑选分数最高的点云簇作为一阶段的结果;
9.步骤s3:对一阶段的结果点云进行体素化,并与已经提炼好的模板核进行模板匹配的卷积计算,得到匹配响应图,挑选出响应图中的峰值位置,根据坐标关系反推出其对应的三维坐标位置与朝向,得到三维目标的检测结果;
10.步骤s4:利用三维投影结果与二维检测结果一致性对三维目标的检测结果中的高度以及横向进行修正,得到最终的三维目标检测结果。
11.具体地,所述步骤s1采用:
12.步骤s1.1:使用二维目标检测器对相机图像进行检测得到待检测目标的二维检测结果(u1,v1,u2,v2,cls,conf),其中,(u1,v1,u2,v2)表示图像中二维检测框的左边界坐标u1、上边界坐标v1、右边界坐标u2与下边界坐标v2,cls表示目标的类别属性;conf表示检测框的置信度;
13.步骤s1.2:利用相机与激光雷达之间的外参,将激光雷达点云转换至相机坐标系下,再根据相机的内参,将相机坐标系下的点云数据投影至图像平面上,取深度为正且投影位于二维检测框内的点集,将当前点集对应至原激光雷达点云中,形成一个视锥内点云。
14.具体地,所述步骤s2采用:
15.步骤s2.1:对所有视锥内点云进行高度值从小到大的排序,选取前n
lpr
个点的平均高度作为地面的初始高度h
init
,设定距离阈值δh1,将所有高度满足z<h
init
δh1的点视为地面点,根据当前地面点使用最小二乘法拟合出地面的平面方程;根据地面方程计算视锥下边界与视锥的交界位置,根据交界位置的坐标(x
inter
,y
inter
)及距离阈值d
inter
筛除视锥点云中与交界位置相距较远,满足的点,同时滤除属于地面的点;
16.步骤s2.2:使用dbscan聚类对点云进行聚类,得到若干簇候选点云集合set1,set2,...,setn,对第i个点云集合seti与第j个点云集合setj,计算两个点集之间的最远距离,若当前最远距离小于距离合并阈值d
merge
,则将当前两个点集进行合并;将所有候选点集进行点集合并后,得到新的点云集合set1,set2,...,setm;
17.步骤s2.3:每个候选点集根据预设评分规则进行打分,选取得分最高的点集作为一阶段候选点;
18.所述预设评分规则包括:包含的点数越多分值越高、包含的地面背景点数越多分值越低、或离地面与视锥下边界交点距离越近分值越高。
19.优选地,所述步骤s3采用:
20.步骤s3.1:从自动驾驶数据集的训练集中根据三维标签值得到各个类别真值点云,并计算各个类别三维大小的平均值(lm,wm,hm),将每个类别的点云真值的中心坐标规范至(0,0,0)、三维大小规范至平均值、朝向角规范至0
°
并将点集进行拼接,得到一个初步的
模板点集;沿x轴对各个模板点集进行翻转增强,使各个类别的模板满足对称性,再使用voxelgrid filter对模板进行下采样,得到滤波后的模板;设定k
θ
个角度区间数,将-180
°
至180
°
区间等间隔划分为k
θ
个角度值,之后根据角度值对模板进行旋转,得到带有朝向信息的k
θ
个模板,以体素大小(x
grid,ygrid,zgrid
)将当前模板进行体素化,得到每个类别的模板核,其维度大小为[k
θ
,lm,wm,hm];
[0021]
步骤s3.2:以体素大小(x
grid
,y
grid
,z
grid
)对候选一阶段点云进行体素化,得到大小[l
p
,w
p
,h
p
]的三维张量;
[0022]
步骤s3.3:将模板核作用于输入的体素张量上,设置卷积步长为1,边缘填充方式为补零,得到一个大小为[k
θ
,l
p
,w
p
,h
p
]的匹配响应图,响应值高的位置代表当前位置的待匹配点云分布与模板的分布相似度大;
[0023]
步骤s3.4:获取响应图中的峰值位置得到当前峰值位置所对应的角度值θ
dt
,以及三维坐标位置(x
dt
,y
dt
,z
dt
),输出为三维目标的检测结果(x
dt
,y
dt
,z
dt
,lm,wm,hm,θ
dt
)。
[0024]
优选地,所述步骤s4采用:
[0025]
步骤s4.1:三维目标的检测结果(x
dt
,y
dt
,z
dt
,lm,wm,hm,θ
dt
)通过相机外参转换至相机坐标系下得到相机坐标系下的检测结果(x
cam
,y
cam
,z
cam
,lc
am
,w
cam
,h
cam
,θ
cam
),根据三维检测框的定义计算得到相机坐标系下三维检测框的8个角点坐标:
[0026][0027][0028][0029][0030][0031][0032][0033][0034]
再根据相机内参焦距及偏移量参数fu,fv,cu,cv,得到8个角点在图像平面上的投影坐标,分别为:
[0035][0036][0037]
[0038][0039][0040][0041][0042][0043]
将这些坐标标记为(mi,ni),i的取值范围为1~8;
[0044]
步骤s4.2:输入投影后的像素坐标(mi,ni),i=1,...,8与二维检测结果(u1,v1,u2,v2),构造高度方向上的误差函数:
[0045][0046]
其中,将8个角点的式子代入上式中,其中需要优化的变量为y
cam
,使用梯度下降法对其进行优化得到修正后的高度值
[0047]
步骤s4.3:输入投影后的像素坐标(mi,ni),i=1,...,8与二维检测结果(u1,v1,u2,v2),构造横向方向上的误差函数:
[0048][0049]
其中,将8个角点的式子代入上式中,其中需要优化的变量为x
cam
,使用梯度下降法对其进行优化得到修正后的横向值并输出最终的三维目标检测结果。
[0050]
根据本发明提供的一种视锥与几何约束相结合的多模态三维目标检测系统,包括:
[0051]
模块m1:使用二维目标检测器在相机图像上生成二维的感知结果,得到图像中待检测目标的二维边界框;根据传感器之间的外参以及相机内参,将激光雷达点云投影至图像平面上,提取投影至二维边界框内的点云,得到相应的视锥内点云;
[0052]
模块m2:对视锥内点云进行地面检测,并结合地面与视锥下边界交界处的位置对视锥内点云进行初步过滤,对过滤后的点云使用dbscan聚类得到各个候选点云簇,并设定距离阈值对点云簇进行合并,设定点云簇的评分标准,对每个点云簇进行打分,最终挑选分数最高的点云簇作为一阶段的结果;
[0053]
模块m3:对一阶段的结果点云进行体素化,并与已经提炼好的模板核进行模板匹配的卷积计算,得到匹配响应图,挑选出响应图中的峰值位置,根据坐标关系反推出其对应的三维坐标位置与朝向,得到三维目标的检测结果;
[0054]
模块m4:利用三维投影结果与二维检测结果一致性对三维检测结果中的高度以及横向进行修正,得到最终的三维检测结果。
[0055]
优选地,所述模块m1采用:
[0056]
模块m1.1:使用二维目标检测器对相机图像进行检测得到待检测目标的二维检测
结果(u1,v1,u2,v2,cls,conf),其中,(u1,v1,u2,v2)表示图像中二维检测框的左边界坐标u1、上边界坐标v1、右边界坐标u2与下边界坐标v2,cls表示目标的类别属性;conf表示检测框的置信度;
[0057]
模块m1.2:利用相机与激光雷达之间的外参,将激光雷达点云转换至相机坐标系下,再根据相机的内参,将相机坐标系下的点云数据投影至图像平面上,取深度为正且投影位于二维检测框内的点集,将当前点集对应至原激光雷达点云中,形成一个视锥内点云。
[0058]
优选地,所述模块m2采用:
[0059]
模块m2.1:对所有视锥内点云进行高度值从小到大的排序,选取前n
lpr
个点的平均高度作为地面的初始高度h
init
,设定距离阈值δh1,将所有高度满足z<h
init
δh1的点视为地面点,根据当前地面点使用最小二乘法拟合出地面的平面方程;根据地面方程计算视锥下边界与视锥的交界位置,根据交界位置的坐标(x
inter
,y
inter
)及距离阈值d
inter
筛除视锥点云中与交界位置相距较远,满足的点,同时滤除属于地面的点;
[0060]
模块m2.2:使用dbscan聚类对点云进行聚类,得到若干簇候选点云集合set1,set2,...,setn,对第i个点云集合seti与第j个点云集合setj,计算两个点集之间的最远距离,若当前最远距离小于距离合并阈值dmerge,则将当前两个点集进行合并;将所有候选点集进行点集合并后,得到新的点云集合set1,set2,...,setm;
[0061]
模块m2.3:每个候选点集根据预设评分规则进行打分,选取得分最高的点集作为一阶段候选点;
[0062]
所述预设评分规则包括:包含的点数越多分值越高、包含的地面背景点数越多分值越低、或,离地面与视锥下边界交点距离越近分值越高。
[0063]
优选地,所述模块m3采用:
[0064]
模块m3.1:从自动驾驶数据集的训练集中根据三维标签值得到各个类别真值点云,并计算各个类别三维大小的平均值(lm,wm,hm),之后将每个类别的点云真值的中心坐标规范至(0,0,0)、三维大小规范至平均值、朝向角规范至0
°
并将点集进行拼接,得到一个初步的模板点集;沿x轴对各个模板点集进行翻转增强,使各个类别的模板满足对称性,再使用voxelgrid filter对模板进行下采样,得到滤波后的模板;设定k
θ
个角度区间数,将-180
°
至180
°
区间等间隔划分为k
θ
个角度值,之后根据角度值对模板进行旋转,得到带有朝向信息的k
θ
个模板,以体素大小(x
grid
,y
grid
,z
grid
)将当前模板进行体素化,得到每个类别的模板核,其维度大小为[k
θ
,lm,wm,hm];
[0065]
模块m3.2:以体素大小(x
grid,ygrid,zgrid
)对候选一阶段点云进行体素化,得到大小[l
p
,w
p
,h
p
]的三维张量;
[0066]
模块m3.3:将模板核作用于输入的体素张量上,设置卷积步长为1,边缘填充方式为补零,得到一个大小为[k
θ
,l
p
,w
p
,h
p
]的匹配响应图,响应值高的位置代表当前位置的待匹配点云分布与模板的分布相似度大;
[0067]
模块m3.4:获取响应图中的峰值位置得到当前峰值位置所对应的角度值θ
dt
,以及三维坐标位置(x
dt
,y
dt
,z
dt
),输出为三维目标的检测结果(x
dt
,y
dt
,z
dt
,lm,wm,hm,θ
dt
)。
[0068]
优选地,所述模块m4采用:
[0069]
模块m4.1:三维目标的检测结果(x
dt
,y
dt
,z
dt
,lm,wm,hm,θ
dt
)通过相机外参转换至相
机坐标系下得到相机坐标系下的检测结果(x
cam
,y
cam
,z
cam
,l
cam
,w
cam
,h
cam
,θ
cam
),根据三维检测框的定义计算得到相机坐标系下三维检测框的8个角点坐标:
[0070][0071][0072][0073][0074][0075][0076][0077][0078]
再根据相机内参焦距及偏移量参数fu,fv,cu,cv,得到8个角点在图像平面上的投影坐标,分别为:
[0079][0080][0081][0082][0083][0084][0085][0086][0087]
将这些坐标标记为(mi,ni),i的取值范围为1~8;
[0088]
模块m4.2:输入投影后的像素坐标(mi,ni),i=1,...,8与二维检测结果(u1,v1,u2,v2),构造高度方向上的误差函数:
[0089][0090]
其中,将8个角点的式子代入上式中,其中需要优化的变量为y
cam
,使用梯度下降法对其进行优化得到修正后的高度值
[0091]
模块m4.3:输入投影后的像素坐标(mi,ni),i=1,...,8与二维检测结果(u1,v1,u2,v2),构造横向方向上的误差函数:
[0092][0093]
其中,将8个角点的式子代入上式中,其中需要优化的变量为x
cam
,使用梯度下降法对其进行优化得到修正后的横向值并输出最终的三维目标检测结果。
[0094]
与现有技术相比,本发明具有如下的有益效果:
[0095]
1、本发明不依赖于海量数据训练,可以降低数据收集、模型训练与模型推理的成本;
[0096]
2、本发明具有较好的泛化性,几何约束为通用场景目标检测提供了泛化性的保证;
[0097]
3、本发明没有复杂的深度网络,依赖于传统几何学方法,具有算法简单、运行速度快的优点。
[0098]
4、本发明能够方便地部署于自动驾驶系统中,并同时具备准确性、实时性与鲁棒性。
附图说明
[0099]
通过阅读参照以下附图对非限制性实施例所作的详细描述,本发明的其它特征、目的和优点将会变得更明显:
[0100]
图1为视锥与几何约束相结合的多模态三维目标检测方法流程图。
具体实施方式
[0101]
下面结合具体实施例对本发明进行详细说明。以下实施例将有助于本领域的技术人员进一步理解本发明,但不以任何形式限制本发明。应当指出的是,对本领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干变化和改进。这些都属于本发明的保护范围。
[0102]
本发明具体涉及一种视锥与几何约束相结合的三维目标检测方法,可应用于自动驾驶系统的感知模块中,属于计算机视觉中的目标检测问题。本发明的目的在于以一种高效的方式融合传感器捕获的激光雷达点云数据与相机图像数据,提出一种基于视锥与几何约束的三维目标检测方法。该方法能够方便地部署于自动驾驶系统中,并同时具备准确性、实时性与鲁棒性。同时本发明具有算法简单、运算速度快、泛化能力强等优点,为三维目标检测提供了一种新的可靠的方法。
[0103]
为了实现上述目的,本发明首先使用二维目标检测器得到图像中目标的检测结果,并根据激光雷达与相机之间的外参及相机内参,得到投影位于检测框内的视锥点云;之后对视锥内点云进行地面检测,并结合地面与视锥下边界交界处的位置对视锥内点云进行初步的过滤,再对过滤后的点云使用dbscan聚类得到各个候选点云簇,并设定距离阈值对点云簇进行合并,设定点云簇的评分标准,对每个点云簇进行打分,最终挑选分数最高的点
云簇作为一阶段的结果;其次对一阶段结果点云进行体素化,并与已经提炼好的模板核(以卷积核的形式)进行模板匹配的卷积计算,得到匹配响应图,并挑选出响应图中的峰值位置,根据坐标关系反推出其对应的三维坐标位置与朝向;最后利用三维投影结果与二维检测结果一致性对三维检测结果中的高度以及横向进行修正,得到最终的三维检测结果。
[0104]
实施例1
[0105]
根据本发明提供的一种视锥与几何约束相结合的多模态三维目标检测方法,如图1所示,包括:
[0106]
步骤s1:二维目标检测与视锥生成。该步骤的输入为时间戳上已对齐的相机图像数据与激光雷达点云数据,且传感器之间的外参和相机的内参已知,输出为二维目标检测结果与落于视锥内的点云。使用二维目标检测器在相机图像上生成二维的感知结果,得到图像中待检测目标(汽车、行人、骑手等)的二维边界框;根据传感器之间的外参以及相机内参,将激光雷达点云投影至图像平面上,将投影位于二维检测框内点云提取出,因二维检测框对应三维空间中一片锥形区域(称为视锥),可得到一片锥形的点云数据。
[0107]
步骤s2:聚类与目标点挑选。该步骤的输入为视锥内的点云数据,输出为目标所包含的点(下文称为一阶段结果)。首先使用地面检测算法先对视锥内的地面进行拟合,可以得到拟合的地面与视锥下边界的交界位置,从而筛出一些不属于目标的点云,实现视锥内的点云过滤;其次使用dbscan聚类对过滤后的点云进行聚类,得到若干个簇,并对于每一种类别的目标设定不同的距离阈值,进行聚类整合,将空间位置上距离近的几类点集进行合并;最后设定目标点选取规则,对每簇类计算得分,选取得分值最高的聚类点集作为该阶段的输出结果。
[0108]
步骤s3:模板匹配与检测结果生成。该步骤的输入是一阶段结果,输出为目标的三维检测结果。首先根据真值得到各个类别目标的点云集合,生成各个类别的模板,并对模板进行体素化,得到点落于模板中每格体素的概率,其表现形式为三维卷积核;其次对一阶段结果进行体素化,得到每格体素内点云的数量;再次使用模板在体素化后的一阶段结果上进行卷积,得到匹配响应图;最后选取响应图的峰值位置,根据坐标对应关系,反推出峰值所对应位置的三维坐标及朝向,选取每个类别模板三维大小的平均值作为检测结果的平均值,输出三维检测结果。
[0109]
步骤s4:基于重投影的后处理修正。该步骤的输入是三维检测结果与二维模板检测结果,输出为修正后的三维检测结果。将三维检测结果的8个角点投影至图像平面上,得到图像上的8个点,对这些点取最小外接矩形,根据该最小外接矩形与二维检测结果的一致性,构造关于目标三维高度、横向的误差函数,以误差函数最小化实现目标三维检测结果的修正,最终输出修正后的结果。
[0110]
具体地,所述步骤s1采用:
[0111]
步骤s1.1:使用成熟的二维目标检测器对输入的相机图像进行检测,得到待检测目标的二维检测结果,每个结果共包含6个数据(u1,v1,u2,v2,cls,conf),其中(u1,v1,u2,v2)代表图像中二维检测框的左边界坐标u1、上边界坐标v1、右边界坐标u2与下边界坐标v2,cls代表目标的类别属性(如0代表行人、1代表骑手等),conf代表该检测框的置信度(取值范围为0至1之间)。
[0112]
步骤s1.2:利用相机与激光雷达之间的外参,将激光雷达点云转换至相机坐标系
下,再根据相机的内参,将相机坐标系下的点云数据投影至图像平面上,取深度为正且投影位于二维检测框内的点集,将当前点集对应至原激光雷达点云中,形成一个视锥内点云。
[0113]
具体地,所述步骤s2采用:
[0114]
步骤s2.1:对激光雷达点云进行地面检测,得到位于地面上的点,并对视锥内点云进行筛选。首先对所有视锥内的点进行高度值从小到大的排序,选取前n
lpr
个点的平均高度作为地面的初始高度h
init
,设定距离阈值δh1,将所有高度满足z<h
init
δh1的点视为地面点,根据这些点使用最小二乘法拟合出地面的平面方程。根据地面方程fg(x,y,z)=0及误差阈值δh2,将所有满足fg(x,y,z)<δh2的点视为地面点,根据这些点再使用最小二乘法拟合出新的地面方程,之后不断重复该过程直至收敛。根据地面方程可以算出视锥下边界与视锥的交界位置,根据交界位置的坐标(x
inter
,y
inter
)及距离阈值d
inter
筛除视锥点云中与交界位置相距较远即的点,同时滤除属于地面的点。
[0115]
步骤s2.2:使用dbscan对点云进行聚类,得到若干簇候选点云集合set1,set2,...,setn,对第i个点云集合seti与第j个点云集合setj,计算两个点集之间的最远距离,若该最远距离小于距离合并阈值dmerge,则将这两个点集进行合并。将所有候选点集进行点集合并后,得到新的点云集合set1,set2,...,setm。
[0116]
步骤s2.3:设定规则,每个候选点集进行打分,选取得分最高的点集作为一阶段候选点。评分规则包括:

包含的点数(越多分值越高);

包含的地面背景点数(越多分值越低);

离地面与视锥下边界交点距离(越近分值越高)。
[0117]
具体地,所述步骤s3采用:
[0118]
步骤s3.1:模板提炼与滤波。从自动驾驶数据集的训练集中根据三维标签值得到各个类别真值点云,并计算各个类别三维大小的平均值(lm,wm,hm),之后将每个类别的点云真值的中心坐标规范至(0,0,0)、三维大小规范至平均值、朝向角规范至0
°
并将点集进行拼接,得到一个初步的模板点集。之后,沿x轴对各个模板点集进行翻转增强,使各个类别的模板满足对称性,再使用voxelgrid filter对模板进行下采样,得到滤波后的模板。设定k
θ
个角度区间数,将-180
°
至180
°
区间等间隔划分为k
θ
个角度值,之后根据这些角度值对模板进行旋转,得到带有朝向信息的k
θ
个模板,以体素大小(x
grid
,y
grid
,z
grid
)将这些模板进行体素化,得到每个类别的模板核,其维度大小为[kθ,lm,wm,hm]。
[0119]
步骤s3.2:以体素大小(x
grid
,y
grid
,z
grid
)对候选一阶段点云进行体素化,得到大小[l
p
,w
p
,h
p
]的三维张量;
[0120]
步骤s3.3:将模板核作用于输入的体素张量上,设置卷积步长为1,边缘填充方式为补零,得到一个大小为[k
θ
,l
p
,w
p
,h
p
]的匹配响应图,响应值高的位置代表当前位置的待匹配点云分布与模板的分布相似度大;
[0121]
步骤s3.4:获取响应图中的峰值位置得到当前峰值位置所对应的角度值θ
dt
,以及三维坐标位置(x
dt
,y
dt
,z
dt
),输出为三维目标的检测结果(x
dt
,y
dt
,z
dt
,lm,wm,hm,θ
dt
)。
[0122]
具体地,所述步骤s4采用:
[0123]
步骤s4.1:三维目标的检测结果(x
dt
,y
dt
,z
dt
,lm,wm,hm,θ
dt
)通过相机外参转换至相机坐标系下得到相机坐标系下的检测结果(x
cam
,y
cam
,z
cam
,l
cam
,w
cam
,h
cam
,θ
cam
),根据三维检测框的定义计算得到相机坐标系下三维检测框的8个角点坐标:
[0124][0125][0126][0127][0128][0129][0130][0131][0132]
再根据相机内参焦距及偏移量参数fu,fv,cu,cv,得到8个角点在图像平面上的投影坐标,分别为:
[0133][0134][0135][0136][0137][0138][0139][0140][0141]
将这些坐标标记为(mi,ni),i的取值范围为1~8;
[0142]
步骤s4.2:输入投影后的像素坐标(mi,ni),i=1,...,8与二维检测结果(u1,v1,u2,v2),构造高度方向上的误差函数:
[0143]
[0144]
其中,将8个角点的式子代入上式中,其中需要优化的变量为y
cam
,使用梯度下降法对其进行优化得到修正后的高度值
[0145]
步骤s4.3:输入投影后的像素坐标(mi,ni),i=1,...,8与二维检测结果(u1,v1,u2,v2),构造横向方向上的误差函数:
[0146][0147]
其中,将8个角点的式子代入上式中,其中需要优化的变量为x
cam
,使用梯度下降法对其进行优化得到修正后的横向值并输出最终的三维目标检测结果。
[0148]
根据本发明提供的一种视锥与几何约束相结合的多模态三维目标检测系统,包括:
[0149]
模块m1:二维目标检测与视锥生成。该步骤的输入为时间戳上已对齐的相机图像数据与激光雷达点云数据,且传感器之间的外参和相机的内参已知,输出为二维目标检测结果与落于视锥内的点云。使用二维目标检测器在相机图像上生成二维的感知结果,得到图像中待检测目标(汽车、行人、骑手等)的二维边界框;根据传感器之间的外参以及相机内参,将激光雷达点云投影至图像平面上,将投影位于二维检测框内点云提取出,因二维检测框对应三维空间中一片锥形区域(称为视锥),可得到一片锥形的点云数据。
[0150]
模块m2:聚类与目标点挑选。该步骤的输入为视锥内的点云数据,输出为目标所包含的点(下文称为一阶段结果)。首先使用地面检测算法先对视锥内的地面进行拟合,可以得到拟合的地面与视锥下边界的交界位置,从而筛出一些不属于目标的点云,实现视锥内的点云过滤;其次使用dbscan聚类对过滤后的点云进行聚类,得到若干个簇,并对于每一种类别的目标设定不同的距离阈值,进行聚类整合,将空间位置上距离近的几类点集进行合并;最后设定目标点选取规则,对每簇类计算得分,选取得分值最高的聚类点集作为该阶段的输出结果。
[0151]
模块m3:模板匹配与检测结果生成。该步骤的输入是一阶段结果,输出为目标的三维检测结果。首先根据真值得到各个类别目标的点云集合,生成各个类别的模板,并对模板进行体素化,得到点落于模板中每格体素的概率,其表现形式为三维卷积核;其次对一阶段结果进行体素化,得到每格体素内点云的数量;再次使用模板在体素化后的一阶段结果上进行卷积,得到匹配响应图;最后选取响应图的峰值位置,根据坐标对应关系,反推出峰值所对应位置的三维坐标及朝向,选取每个类别模板三维大小的平均值作为检测结果的平均值,输出三维检测结果。
[0152]
模块m4:基于重投影的后处理修正。该步骤的输入是三维检测结果与二维模板检测结果,输出为修正后的三维检测结果。将三维检测结果的8个角点投影至图像平面上,得到图像上的8个点,对这些点取最小外接矩形,根据该最小外接矩形与二维检测结果的一致性,构造关于目标三维高度、横向的误差函数,以误差函数最小化实现目标三维检测结果的修正,最终输出修正后的结果。
[0153]
具体地,所述模块m1采用:
[0154]
模块m1.1:使用成熟的二维目标检测器对输入的相机图像进行检测,得到待检测目标的二维检测结果,每个结果共包含6个数据(u1,v1,u2,v2,cls,conf),其中(u1,v1,u2,v2)代表图像中二维检测框的左边界坐标u1、上边界坐标v1、右边界坐标u2与下边界坐标v2,cls代表目标的类别属性(如0代表行人、1代表骑手等),conf代表该检测框的置信度(取值范围
为0至1之间)。
[0155]
模块m1.2:利用相机与激光雷达之间的外参,将激光雷达点云转换至相机坐标系下,再根据相机的内参,将相机坐标系下的点云数据投影至图像平面上,取深度为正且投影位于二维检测框内的点集,将当前点集对应至原激光雷达点云中,形成一个视锥内点云。
[0156]
具体地,所述模块m2采用:
[0157]
模块m2.1:对激光雷达点云进行地面检测,得到位于地面上的点,并对视锥内点云进行筛选。首先对所有视锥内的点进行高度值从小到大的排序,选取前n
lpr
个点的平均高度作为地面的初始高度h
init
,设定距离阈值δh1,将所有高度满足z<h
init
δh1的点视为地面点,根据这些点使用最小二乘法拟合出地面的平面方程。根据地面方程fg(x,y,z)=0及误差阈值δh2,将所有满足fg(x,y,z)<δh2的点视为地面点,根据这些点再使用最小二乘法拟合出新的地面方程,之后不断重复该过程直至收敛。根据地面方程可以算出视锥下边界与视锥的交界位置,根据交界位置的坐标(x
inter
,y
inter
)及距离阈值d
inter
筛除视锥点云中与交界位置相距较远即的点,同时滤除属于地面的点。
[0158]
模块m2.2:使用dbscan对点云进行聚类,得到若干簇候选点云集合set1,set2,...,setn,对第i个点云集合seti与第j个点云集合setj,计算两个点集之间的最远距离,若该最远距离小于距离合并阈值dmerge,则将这两个点集进行合并。将所有候选点集进行点集合并后,得到新的点云集合set1,set2,...,setm。
[0159]
模块m2.3:设定规则,每个候选点集进行打分,选取得分最高的点集作为一阶段候选点。评分规则包括:

包含的点数(越多分值越高);

包含的地面背景点数(越多分值越低);

离地面与视锥下边界交点距离(越近分值越高)。
[0160]
具体地,所述模块m3采用:
[0161]
模块m3.1:模板提炼与滤波。从自动驾驶数据集的训练集中根据三维标签值得到各个类别真值点云,并计算各个类别三维大小的平均值(lm,wm,hm),之后将每个类别的点云真值的中心坐标规范至(0,0,0)、三维大小规范至平均值、朝向角规范至0
°
并将点集进行拼接,得到一个初步的模板点集。之后,沿x轴对各个模板点集进行翻转增强,使各个类别的模板满足对称性,再使用voxelgrid filter对模板进行下采样,得到滤波后的模板。设定k
θ
个角度区间数,将-180
°
至180
°
区间等间隔划分为k
θ
个角度值,之后根据这些角度值对模板进行旋转,得到带有朝向信息的k
θ
个模板,以体素大小(x
grid
,y
grid
,z
grid
)将这些模板进行体素化,得到每个类别的模板核,其维度大小为[k
θ
,lm,wm,hm]。
[0162]
模块m3.2:以体素大小(x
grid
,y
grid
,z
grid
)对候选一阶段点云进行体素化,得到大小[l
p
,w
p
,h
p
]的三维张量;
[0163]
模块m3.3:将模板核作用于输入的体素张量上,设置卷积步长为1,边缘填充方式为补零,得到一个大小为[k
θ
,l
p
,w
p
,h
p
]的匹配响应图,响应值高的位置代表当前位置的待匹配点云分布与模板的分布相似度大;
[0164]
模块m3.4:获取响应图中的峰值位置得到当前峰值位置所对应的角度值θ
dt
,以及三维坐标位置(x
dt
,y
at
,z
dt
),输出为三维目标的检测结果(x
dt
,y
at
,z
dt
,lm,wm,hm,θ
dt
)。
[0165]
具体地,所述模块m4采用:
[0166]
模块m4.1:三维目标的检测结果(x
dt
,y
dt
,z
dt
,lm,wm,hm,θ
at
)通过相机外参转换至相机坐标系下得到相机坐标系下的检测结果(x
cam,ycam
,z
cam
,l
cam
,w
cam
,h
cam
,θ
cam
),根据三维检
测框的定义计算得到相机坐标系下三维检测框的8个角点坐标:
[0167][0168][0169][0170][0171][0172][0173][0174][0175]
再根据相机内参焦距及偏移量参数fu,fv,cu,cv,得到8个角点在图像平面上的投影坐标,分别为:
[0176][0177][0178][0179][0180][0181][0182][0183][0184]
将这些坐标标记为(mi,ni),i的取值范围为1~8;
[0185]
模块m4.2:输入投影后的像素坐标(mi,ni),i=1,...,8与二维检测结果(u1,v1,u2,v2),构造高度方向上的误差函数:
[0186][0187]
其中,将8个角点的式子代入上式中,其中需要优化的变量为y
cam
,使用梯度下降法对其进行优化得到修正后的高度值
[0188]
模块m4.3:输入投影后的像素坐标(mi,ni),i=1,...,8与二维检测结果(u1,v1,u2,v2),构造横向方向上的误差函数:
[0189][0190]
其中,将8个角点的式子代入上式中,其中需要优化的变量为x
cam
,使用梯度下降法对其进行优化得到修正后的横向值并输出最终的三维目标检测结果。
[0191]
实施例2
[0192]
实施例2是实施例1的优选例
[0193]
在本发明的一个实施例中,所述方法的流程如图1所示,本实施例具体实施步骤如下:
[0194]
步骤一:首先使用训练收敛的二维目标检测器yolov5,对输入的图像进行二维目标检测,得到图像上的二维检测结果,每个检测结果包含检测框的坐标、目标类别以及检测框置信度,共(u1,v1,u2,v2,cls,conf)六个量。之后,根据相机与激光雷达之间的外参,将激光雷达点云集合转换至相机坐标系下得到该坐标系下的点云集合之后根据相机的内参,将点云集合转换至像素坐标系下,得到提取出像素坐标位于第i个检测框内的点,得到锥状的点云集合。
[0195]
步骤二:使用地面检测算法得到地面点,并计算地面与视锥下边界的交点,设定距离阈值对视锥内点云进行过滤;使用dbscan算法对过滤后点云聚类,得到若干个簇类,并设置每个类别的评分规则,得到每个类别的分数,最终挑选分数高的聚类作为一阶段候选点。评分规则包括:

包含的点数(越多分值越高);

包含的地面背景点数(越多分值越低);

离地面与视锥下边界交点距离(越近分值越高)。
[0196]
步骤三:模板匹配与结果生成。首先从自动驾驶数据集的训练集中根据三维标签值得到各个类别真值点云,对点集规范化后进行拼接并沿x轴进行翻转增强,得到一个初步的模板点集。之后使用voxelgrid filter对模板进行下采样,得到滤波后的模板。设定72个角度区间数,将-180
°
至180
°
区间等间隔划分为72个角度值,之后根据这些角度值对模板进行旋转,得到带有朝向信息的72个模板,以体素大小(0.1,0.1,0.1)将这些模板进行体素化,得到每个类别的模板核module_conv。之后将一阶段候选点以体素大小(0.1,0.1,0.1)进行体素化,得到输入体素张量input_voxel。将模板核以卷积形式作用于体素张量上得到匹配响应图response_map=conv(input_voxel,module_conv),计算出相应图峰值位置x,y,z以及对应的角度θ,即可得到三维目标检测结果。
[0197]
步骤四:重投影修正。根据三维目标检测结果,生成包括框的八个角点坐标将这8个角点投影至图像平面上,得到像素坐标(ui,vi),i=1,...,8。根据这些像素坐标与二维检测结果(u1,v1,u2,v2),构造高度方向与横向方向上的误差函数分别为:
[0198]
[0199][0200]
使用梯度下降法对其进行优化得到修正后的高度值与修正后的横向值并输出最终的三维目标检测结果。
[0201]
本领域技术人员知道,除了以纯计算机可读程序代码方式实现本发明提供的系统、装置及其各个模块以外,完全可以通过将方法步骤进行逻辑编程来使得本发明提供的系统、装置及其各个模块以逻辑门、开关、专用集成电路、可编程逻辑控制器以及嵌入式微控制器等的形式来实现相同程序。所以,本发明提供的系统、装置及其各个模块可以被认为是一种硬件部件,而对其内包括的用于实现各种程序的模块也可以视为硬件部件内的结构;也可以将用于实现各种功能的模块视为既可以是实现方法的软件程序又可以是硬件部件内的结构。
[0202]
以上对本发明的具体实施例进行了描述。需要理解的是,本发明并不局限于上述特定实施方式,本领域技术人员可以在权利要求的范围内做出各种变化或修改,这并不影响本发明的实质内容。在不冲突的情况下,本技术的实施例和实施例中的特征可以任意相互组合。
再多了解一些

本文用于创业者技术爱好者查询,仅供学习研究,如用于商业用途,请联系技术所有人。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献