0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

LSD中的激光点云/单目3D目标检测和多目标跟踪算法

新机器视觉 来源:新机器视觉 2023-05-19 09:37 次阅读

LSD (LiDAR SLAM & Detection) 是一个开源的面向自动驾驶/机器人的环境感知算法框架,能够完成数据采集回放、多传感器标定、SLAM建图定位和障碍物检测等多种感知任务。

本文将详细讲解LSD中的激光点云/单目3D目标检测和多目标跟踪算法。

LSD(LiDAR SLAM & Detection) github.com/w111liang222/lidar-slam-detection

3D目标检测跟踪

3D目标检测

目标检测是自动驾驶/机器人环境感知系统中的一项基本任务,常见的目标检测算法可以分为两大类:

基于图像的2D目标检测,输出图像坐标下的2D Box(x, y, l, w, c),由于缺少目标的深度和朝向信息,难以用于机器人的规划和控制

基于激光点云/相机的3D目标检测算法,输出以自车为原点坐标系下的3D Box (x, y, z, l, w, h, yaw, c)

LSD采用了改进的PointPillar和RTM3D算法,能够实现激光点云/单目相机的3D目标检测功能,在推理时转换成TensorRT FP16引擎运算,支持在x86 PC, Xavier NX, Xavier AGX和Orin平台上实时运行。相关实现代码位于sensor_inference目录。整体框架如下图所示:

79476278-f5b6-11ed-90ce-dac502259ad0.png框架流程图

点云3D目标检测

自2017年以来,点云3D目标检测涌现了很多经典算法,下图是按时间排序的检测算法:

7979c542-f5b6-11ed-90ce-dac502259ad0.png算法一览

跟图像2D目标检测算法类似,3D目标检测算法也可以分类为"单阶段"/"多阶段"、"Anchor base"/"Anchor free"、"Point base"/"Voxel base"等,其中APTIV提出的PointPillar由于其部署简单、计算效率和检测精度较高等优势,在实际的工程项目中应用广泛。

LSD基于原版PointPillar网络结构,对模型结构进行了优化:

在PillarVFE结构中删除了xyz的均值特征,保留了每个点的x,y,z,i及其voxel中心offset特征

SSD backbone替换为基于CSPNet结构的backbone

Anchor based检测头替换为CenterPoint网络的Anchor free检测头,并添加了IOU aware分支

Voxelize

由于PointPillar网络的输入是Voxel(z轴方向只有1维,也叫作Pillar),因此我们需要将原始点云[n, 4]体素化,其中n为点云个数和每个点的特征(x,y,z,intensity)。在LSD中,我们设置每个voxel的尺寸为[0.32, 0.32, 6],单位为米,且每个voxel最多包含32个点,通过将点云投影到其对应的voxel中,可以得到:

voxel特征,维度为[m, 32, 4]

voxel坐标,维度为[m, 3]

每个voxel中点的个数,维度为[1, m]

每个voxel中点的mask,维度为[m, 32]

其中m为计算得到的voxel个数,上述4个变量作为后续神经网络的输入。

Pillar VFE

Pillar VFE结构主要是对每个voxel中的点特征进行提取(由7维特征[x, y, z, i, xp, yp, zp]经过卷积得到64维),并根据每个voxel的坐标投影到2D BEV网格得到[64,448,448]大小的特征(最大检测范围设置为71.68m)

79b01cf0-f5b6-11ed-90ce-dac502259ad0.pngONNX格式的Pillar VFE

CSP Backbone

PointPillar原版采用的是SSD backbone,其结构较为简单、参数量小,在实际测试时发现当训练数据量增大后检测精度提升幅度较小,因此,我们参考了YOLO V4的backbone,其主要由CSP Net基础block组成,通过权衡检测精度和实时性,我们构建了4个下采样block和3个上采样block网络来对多尺度特征进行提取和融合,最后输出[48,224,224]和[192, 56, 56]两种尺度特征,详细的网络结构可以参见CSPDarknet53Small.py。

79d0fdd0-f5b6-11ed-90ce-dac502259ad0.png参考的YOLOV4网络结构

CenterPoint Head

LSD采用了多检测头结构,针对backbone输出的2个尺度特征,分别连接了两个CenterPoint检测头,相比于原版的Anchor based检测头,Anchor free在检测小目标时精度更高。另外,我们还参考了CIA-SSD网络模型,添加了IOU-Aware预测分支,进一步提高了检测精度。

7a0eace8-f5b6-11ed-90ce-dac502259ad0.pngCenterPoint网络

单目3D目标检测

大多数激光雷达由于发射结构的原因,其点云具有近处密集,远处稀疏的特点,从而导致激光雷达在检测距离较远的目标时精度较低,而图像在距离较远时相比激光雷达更容易分辨目标,因此LSD采用了单目3D目标检测算法来提高远距离目标的检测精度以适应高速场景。

RTM3D

RTM3D (Real-time Monocular 3D Detection from Object Keypoints for Autonomous Driving)是一个单目3D目标检测网络,其主要思想是通过网络预测目标框的8个顶点、质心、深度和朝向信息,并求解伪逆方程得到目标的3DBox。

7a417560-f5b6-11ed-90ce-dac502259ad0.pngRTM3D

在LSD中,我们对RTM3D的结构做了部分微调:

由ImageNet预训练的Resnet18 backbone替换为Darknet53

检测头增加heatmap输出,用于后续的目标融合。

模型训练和推理

模型训练基于OpenPCDet框架实现,将公开的WOD、Nuscences、Lyft、Panda Set和DeepRoute等数据集进行了合并,并且将不同数据集的各个类别重新分类为“车辆”、“行人”、“骑行车”和“三角锥”4种类别。服务器采用4张2080Ti显卡训练50个epoch。

在模型推理阶段,我们将Pytorch模型导出成ONNX文件,并分别在Jetpack5.0.2 Xavier NX、 AGX、 Orin平台上生成了TensorRT FP16引擎进行推理(单目3D模型则运行在DLA上),在Xavier NX平台上运行耗时约80ms,能够满足实时性要求。

ONNX模型文件可以从这里获取。

后融合

数据融合用于融合多传感器数据来提高检测精度,按实施阶段可以分为前融合和后融合,前融合通常处理传感器的原始数据,而后融合则处理各传感器分别计算后的目标数据。在LSD中,我们采用了后融合的方式,将激光点云输出的3D目标列表和单目视觉输出的3D目标列表融合为一个目标列表并输出给目标跟踪模块。我们实现了一个相对简单的基于规则的融合算法:

将激光点云输出的3DBox根据激光-相机外参投影到图像坐标系下得到2DBox,计算与视觉目标的2D IOU

利用匈牙利算法进行匹配,得到matched、unmatch_camera和unmatch_lidar三个目标列表

针对matched列表,我们将激光点云输出的3DBox直接作为输出,对于confidence属性求激光和相机目标的均值加上0.2 * IOU

针对unmatch_lidar列表,利用RTM3D输出的heat map对confidence属性求均值

合并matched, unmatch_camera和unmatch_lidar得到最终的目标列表输出

多目标跟踪

3D目标检测和融合算法处理的是传感器的单帧数据,单帧检测难以获取目标的运动信息,并且容易出现检测结果跳变等问题,在时间序列上对目标进行跟踪,可以估算出目标的运动速度、角速度,同时能够输出较为稳定的目标列表给下游规划控制模块。目标跟踪算法通常可以分解成两个步骤:

根据相似度对相邻帧目标进行关联匹配

对目标进行观测并估计最优状态

LSD采用了传统的基于规则的目标匹配和状态估计算法,算法基于AB3DMOT(A Baseline for 3D Multi-Object Tracking and New Evaluation Metrics)实现,并在其基础上进行了优化,能够输出更稳定的目标列表。

7a92e486-f5b6-11ed-90ce-dac502259ad0.pngAB3DMOT

目标匹配

匈牙利算法是一种求解二分图最小权值匹配问题的方法

相似度计算

针对不同类别,我们采用了不同的方法来计算前后帧目标相似度(权值):

针对车辆目标,计算两两之间的BEV IOU

针对行人、骑行者和三角锥,由于目标较小,前后帧的IOU大部分为0,因此计算两两中心点的欧式距离

最优匹配求解

得到相似度矩阵后,我们利用scipy.optimize.linear_sum_assignment函数求解得到三个输出:

matched: 前后帧匹配上的目标

unmatch_old: 在前一帧跟踪列表中未匹配上的目标

unmatch_new: 当前帧检测输出但未匹配上的目标

卡尔曼滤波跟踪

卡尔曼滤波是一种状态估计算法,在LSD中,我们使用卡尔曼滤波算法对目标进行建模和状态估计:

针对unmatch_new目标,作为当前帧新出现的目标,添加进跟踪列表

针对unmatch_old目标,表示当前帧该目标未检测到,通过运动学模型对其进行预测

针对matched目标,将当前帧作为观测值,利用卡尔曼滤波器对其状态更新

实车测试

我们只使用了公开数据集进行训练,在未训练过的城市道路环境中实车测试,检验模型和跟踪算法的鲁棒性。

审核编辑:彭静
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 机器人
    +关注

    关注

    206

    文章

    27033

    浏览量

    201400
  • 激光
    +关注

    关注

    19

    文章

    2752

    浏览量

    63485
  • 3D
    3D
    +关注

    关注

    9

    文章

    2756

    浏览量

    106454

原文标题:LSD框架大揭秘 | 3D目标检测与跟踪讲解

文章出处:【微信号:vision263com,微信公众号:新机器视觉】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    视频跟踪目标取差器)-基于DM8168实现的自动视频跟踪

    、外形比例、速度、运动方向等自动获取目标。视频跟踪:内置质心、边缘、多目标、相关、相位相关、场景锁定等多种跟踪算法,支持
    发表于 09-05 11:14

    视频跟踪目标跟踪算法简介(上海凯视力成信息科技有限...

    跟踪。适合于空对地和地对地场景。这个算法跟踪场景的多个目标,然后依据每个的运动,从而估计整
    发表于 09-29 08:59

    基于QT+OpenCv的目标跟踪算法实现

    目标的各种和各种目标轨迹的识别成为了当前视频处理研究领域的热点,粒子滤波视频目标跟踪算法作为目前常用的一种高性能的
    发表于 09-21 10:42

    基于多传感器的多模型机动目标跟踪算法设计

    目标的状态总是处在不断变化,当目标真实运动模型与算法模型不匹配时,跟踪精度会明显下降,此时
    发表于 12-05 15:16

    多目标优化算法有哪些

    多目标优化算法有哪些,该文围绕包含柴油发电机、风力发电、光伏发电和铅酸蓄电池的独立微网系统的容量配置问题,提出了包含微网全寿命周期内的总成本现值、负荷容量缺失率和污染物排放的多目标
    发表于 07-12 06:52

    一种适用于空间观测任务的实时多目标识别算法分享

    硬件平台,运用散聚类、轨迹跟踪、特征提取技术快速识别目标。对算法的功能需求、数据流向、运算流程和处理结果,进行了详细阐述。实践结果表明,该识别算法
    发表于 12-21 07:02

    基于聚类融合的多目标跟踪算法

    多目标跟踪是多传感器数据融合中的一个重要问题。基于模式识别理论,提出了一种通过对传感器测量数据集类,以区分源于不同目标的测量数据集合。对各个类对应的目标状态估计进
    发表于 07-01 08:40 18次下载

    多传感器多目标跟踪的JPDA算法

    文中提出了一种适用于多传感器多目标跟踪的JPDA算法,它以极大似然估计完成对来自多传感器的测量集合进行同源最优分划,然后采用JPDA方法对多目标进行
    发表于 02-03 10:38 47次下载
    多传感器<b class='flag-5'>多目标</b><b class='flag-5'>跟踪</b>的JPDA<b class='flag-5'>算法</b>

    基于多雷达的临近空间目标检测跟踪算法_王睿

    基于多雷达的临近空间目标检测跟踪算法_王睿
    发表于 03-19 19:19 3次下载

    改进霍夫森林框架的多目标跟踪算法

    针对单目视觉对多个相似的目标跟踪因遮挡等因素影响而失效的问题,提出一种基于改进霍夫森林框架的多目标跟踪算法。在将
    发表于 12-14 17:09 0次下载

    简单粗暴的多对象目标跟踪神器–DeepSort

    对象跟踪问题一直是计算机视觉的热点任务之一,简单的可以分为单目标跟踪多目标跟踪,最常见的目标
    的头像 发表于 12-08 23:31 850次阅读

    如何更好地实现视频多目标轨迹的连续跟踪

    针对多伯努利滤波方法在多目标跟踪时,难以检测新生目标,且当目标岀现互相遮挡等千扰时,跟踪精度下降
    发表于 04-07 14:27 5次下载
    如何更好地实现视频<b class='flag-5'>多目标</b>轨迹的连续<b class='flag-5'>跟踪</b>?

    基于卷积特征的多伯努利视频多目标跟踪算法

    目标漏跟。针对该问题,在多伯努利滤波框架下,深度分析目标的特征信息,引λ抗干扰的卷积特征,提出基于卷积特征的多伯努利视频多目标跟踪算法,并在
    发表于 05-12 15:18 11次下载

    最常见的目标跟踪算法

    对象跟踪问题一直是计算机视觉的热点任务之一,简单的可以分为单目标跟踪多目标跟踪,最常见的目标
    的头像 发表于 09-14 16:20 2293次阅读

    基于MobileNet的多目标跟踪深度学习算法

    针对深度学习算法多目标跟踪中的实时性问题, 提出一种基于MobileNet的多目标跟踪算法.
    的头像 发表于 11-09 10:23 766次阅读
    基于MobileNet的<b class='flag-5'>多目标</b><b class='flag-5'>跟踪</b>深度学习<b class='flag-5'>算法</b>