基于深度学习的激光雷达点云目标检测
学习如何使用PointPillars深度学习网络,使用lidar Toolbox™功能在激光雷达点云上进行3D对象检测。PointPillars网络解决了训练健壮检测器时的一些常见挑战,如每个对象的数据稀疏性、对象遮挡和传感器噪声。
在本视频中,我们将介绍如何在激光雷达数据上应用深度学习来完成目标检测和语义分割等任务。
在自动驾驶和机器人应用中,深度学习通过识别和分类场景中的物体来帮助感知环境。
为了演示使用激光雷达的深度学习,我们将遵循MathWorks文档中的一个示例,该示例使用名为point柱子的深度学习网络对点云数据进行3d对象检测。
PointPillars网络通过使用编码器来解决训练强大检测器时的一些常见挑战,比如每个对象的数据稀疏性、对象遮挡和传感器噪声,编码器可以学习在称为柱子的垂直列中组织的点云表示。
下面是示例中的工作流程:
首先,我们加载数据,然后对其进行预处理。然后定义PointPillars网络,然后在预处理数据上训练该网络
最后,我们对网络进行测试以评估其性能。
让我们从这个url下载点云数据集开始。
该数据集包含大约1600个有组织的高速公路场景激光雷达点云扫描,以及汽车和卡车物体的相应地面真实标签。
使用MATLAB的激光雷达标签应用程序标记这些地面真相数据。
您可以将点云数据加载到应用程序中,定义对象周围的长方体包围框,使用内置或自定义自动化算法自动标记。
一旦标记好数据,就可以导出到MATLAB工作区。
我们将分3步对加载的数据进行预处理,
首先,我们将全视图点云裁剪为前视图点云或自我车辆视角。这将减少数据的大小,进而减少整个网络的训练时间。
在第二步中,我们将把数据分成训练集和测试集。
我们将使用fileDatastore管理点云。一个fileDatastore是一个帮助管理自定义格式文件集合的对象,这些文件太大,无法装入内存。
然后,我们将创建另一个数据存储,用于加载带有3-D包围框的ground truth标签。
在第三步中,我们将执行ground truth数据增强,将固定数量的汽车类别对象随机添加到每个点云。该技术通过综合增加训练数据集的大小来提高网络的准确率。
除此之外,我们还将使用额外的增强技术,如翻转、缩放、旋转和平移。
接下来,我们将构建point柱子网络来对这些数据进行训练。
PointPillars网络接受点云作为输入,并估计对象周围的定向3D框。它包括三个主要阶段
1-将点云转换为稀疏伪图像的特征编码器。它通过将点云转换为柱子,然后使用PointNet的简化版本来学习组织为柱子的点云表示。
2-二维卷积主干,用于将伪图像处理为高级表示和
3-一个检测头,检测物体并在它们周围创建3D包围框。
我们可以使用MATLAB中的命令行来构建这个网络,使用内置的深度学习层,如输入层、卷积层、反卷积层、批处理归一化层、maxpool和relu层。
接下来,我们将定义训练选项,如epoch数和学习率。我们将执行环境设置为“auto”,这将允许在可用的GPU上训练网络,否则将使用CPU进行训练。
在整个数据集上训练点柱需要很长时间,所以现在我正在加载一个预先训练好的PointPillars网络来检测激光雷达数据上的对象。
我们现在可以加载测试数据,并应用训练好的网络在识别的对象上生成边界框
最后,我们在点云数据上检测到我们的对象。这里红色的包围框代表预测对象,绿色的包围框是真实的标签。你可以看到它们非常接近,这意味着我们的模型的预测是相当不错的。
点击下面的链接,了解更多信息。如果您有任何问题或意见,请在下面的评论框中告诉我们。
感谢收看。
您也可以从以下列表中选择一个网站:
如何获得最佳的网站性能
选择中国站点(中文或英文)以获得最佳站点性能。其他MathWorks国家站点没有针对您所在位置的访问进行优化。