百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 技术文章 > 正文
使用NVIDIA CUDA-Pointpillars检测点云中的对象

使用NVIDIA CUDA-Pointpillars检测点云中的对象

  • 网站名称:使用NVIDIA CUDA-Pointpillars检测点云中的对象
  • 网站分类:技术文章
  • 收录时间:2025-07-08 14:40
  • 网站地址:

进入网站

“使用NVIDIA CUDA-Pointpillars检测点云中的对象” 网站介绍

点云是坐标系中的点数据集。点包含丰富的信息,包括三维坐标(X、Y、Z)、颜色、分类值、强度值和时间等。点云主要来自于各种 NVIDIA Jetson 用例中常用的激光雷达,如自主机器、感知模块和 3D 建模。


其中一个关键应用是利用远程和高精度的数据集来实现 3D 对象的感知、映射和定位算法。


PointPillars 是最常用于点云推理的模型之一。本文将探讨为 Jetson 开发者提供的 NVIDIA CUDA 加速 PointPillars 模型


什么是CUDA-Pointpillars


本文所介绍的 CUDA-Pointpillars 可以检测点云中的对象。其流程如下:

  • 基本预处理:生成柱体。
  • 预处理:生成 BEV 特征图(10 个通道)。
  • 用于 TensorRT 的 ONNX 模型:通过 TensorRT 实现的 ONNX 模式。
  • 后处理:通过解析 TensorRT 引擎输出生成边界框。



基本预处理


基本预处理步骤将点云转换为基本特征图。基本特征图包含以下组成部分:

  • 基本特征图。
  • 柱体坐标:每根柱体的坐标。
  • 参数:柱体数量。



预处理


预处理步骤将基本特征图(4 个通道)转换为 BEV 特征图(10 个通道)。



用于TensorRT的ONNX模型


出于以下原因修改 OpenPCDet 的原生点柱:

  • 小型操作过多,并且内存带宽低。
  • NonZero 等一些 TensorRT 不支持的操作。
  • ScatterND 等一些性能较低的操作。
  • 使用“dict”作为输入和输出,因此无法导出 ONNX 文件。


为了从原生 OpenPCDet 导出 ONNX,我们修改了该模型(图 4)。



您可把整个 ONNX 文件分为以下几个部分:

  • 输入:BEV 特征图、柱体坐标、参数,均在预处理中生成。
  • 输出:类、框、Dir_class,在后处理步骤中解析后生成一个边界框。
  • ScatterBEV:将点柱(一维)转换为二维图像,可作为 TensorRT 的插件。
  • 其他:TensorRT 支持的其他部分。



后处理


在后处理步骤中解析 TensorRT 引擎的输出(class、box和dir_class)和输出边界框。图6 所示的是示例参数。



使用CUDA-PointPillars


若要使用 CUDA-PointPillars,需要提供点云的 ONNX 模式文件和数据缓存:


std::vector<Bndbox> nms_pred;
PointPillar pointpillar(ONNXModel_File, cuda_stream);
pointpillar.doinfer(points_data, points_count, nms_pred);


将OpenPCDet训练的原生模型转换为CUDA-Pointpillars的ONNX文件


我们在项目中提供了一个Python脚本,可以将 OpenPCDet 训练的原生模型转换成 CUDA-Pointpillars 的 ONNX 文件。可在 CUDA-Pointpillars 的 /tool 目录下找到 exporter.py 脚本。


可在当前目录下运行以下命令获得 pointpillar.onnx 文件:


$ python exporter.py --ckpt ./*.pth



性能


下表显示了测试环境和性能。在测试之前提升 CPU 和 GPU 的性能。


Jetson

Xavier NVIDIA AGX 8GB

版本

NVIDIA JetPack 4.5

CUDA

10.2

TensorRT

7.1.3

推理时间

33 ms

表1 测试平台和性能


开始使用CUDA-PointPillars


本文介绍了什么是 CUDA-PointPillars 以及如何使用它来检测点云中的对象。


由于原生 OpenPCDet 无法导出 ONNX,而且对于 TensorRT 来说,性能较低的小型操作数量过多,因此我们开发了 CUDA-PointPillars。该应用可以将 OpenPCDet 训练的原生模型导出为特殊的 ONNX 模型,并通过 TensorRT 推断 ONNX 模型。


点击链接:
https://github.com/NVIDIA-AI-IOT/CUDA-PointPillars

立即下载 CUDA-PointPillars