點云是坐標系中的點數據集。點包含豐富的信息,包括三維坐標(X、Y、Z)、顏色、分類值、強度值和時間等。點云主要來自于各種NVIDIA Jetson用例中常用的激光雷達,如自主機器、感知模塊和3D建模。
其中一個關鍵應用是利用遠程和高精度的數據集來實現3D對象的感知、映射和定位算法。
PointPillars是最常用于點云推理的模型之一。本文將探討為Jetson開發者提供的NVIDIA CUDA加速PointPillars模型。馬上下載CUDA-PointPillars模型。
什么是CUDA-Pointpillars
本文所介紹的CUDA-Pointpillars可以檢測點云中的對象。其流程如下:
基本預處理:生成柱體。
預處理:生成BEV特征圖(10個通道)。
用于TensorRT的ONNX模型:通過TensorRT實現的ONNX模式。
后處理:通過解析TensorRT引擎輸出生成邊界框。
圖 1 。 CUDA 點柱管道。
基本預處理
基本預處理步驟將點云轉換為基本特征圖。基本特征圖包含以下組成部分:
基本特征圖。
柱體坐標:每根柱體的坐標。
參數:柱體數量。
圖 2 。將點云轉換為基礎要素地圖
預處理
預處理步驟將基本特征圖(4個通道)轉換為 BEV 特征圖(10個通道)。
圖 3 。將基本要素地圖轉換為 BEV 要素地圖
用于TensorRT的ONNX模型
出于以下原因修改OpenPCDet的原生點柱:
小型操作過多,并且內存帶寬低。
NonZero等一些TensorRT不支持的操作。
ScatterND等一些性能較低的操作。
使用“dict”作為輸入和輸出,因此無法導出ONNX文件。
為了從原生OpenPCDet導出ONNX,我們修改了該模型(圖4)。
圖 4 。 CUDA Pointpillars 中 ONNX 模型概述。
您可把整個ONNX文件分為以下幾個部分:
輸入:BEV特征圖、柱體坐標、參數,均在預處理中生成。
輸出:類、框、Dir_class,在后處理步驟中解析后生成一個邊界框。
ScatterBEV:將點柱(一維)轉換為二維圖像,可作為TensorRT的插件。
其他:TensorRT支持的其他部分。
圖 5 。將點支柱數據散射到二維主干的二維圖像中。
后處理
在后處理步驟中解析TensorRT引擎的輸出(class、box和dir_class)和輸出邊界框。圖6所示的是示例參數。
圖 6 。邊界框的參數。
使用 CUDA PointPillars
若要使用CUDA-PointPillars,需要提供點云的ONNX模式文件和數據緩存:
std::vectornms_pred; PointPillar pointpillar(ONNXModel_File, cuda_stream); pointpillar.doinfer(points_data, points_count, nms_pred);
將OpenPCDet訓練的原生模型轉換為CUDA-Pointpillars的ONNX文件
我們在項目中提供了一個Python腳本,可以將OpenPCDet訓練的原生模型轉換成CUDA-Pointpillars的ONNX文件??稍贑UDA-Pointpillars的/tool 目錄下找到exporter.py 腳本。
可在當前目錄下運行以下命令獲得pointpillar.onnx文件:
$ python exporter.py --ckpt ./*.pth
性能
下表顯示了測試環境和性能。在測試之前提升CPU和GPU的性能。
表 1 測試平臺與性能
開始使用 CUDA PointPillars
本文介紹了什么是CUDA-PointPillars以及如何使用它來檢測點云中的對象。
由于原生OpenPCDet無法導出ONNX,而且對于TensorRT來說,性能較低的小型操作數量過多,因此我們開發了CUDA-PointPillars。該應用可以將OpenPCDet訓練的原生模型導出為特殊的ONNX模型,并通過TensorRT推斷ONNX模型。
關于作者
Lei Fan 是 NVIDIA 的高級 CUDA 軟件工程師。他目前正與 TSE 中國團隊合作,開發由 CUDA 優化軟件性能的解決方案。
Lily Li 正在為 NVIDIA 的機器人團隊處理開發人員關系。她目前正在 Jetson 生態系統中開發機器人技術解決方案,以幫助創建最佳實踐。
審核編輯:郭婷
-
NVIDIA
+關注
關注
14文章
5026瀏覽量
103292 -
數據集
+關注
關注
4文章
1208瀏覽量
24743
發布評論請先 登錄
相關推薦
NVIDIA推出DRIVE AI安全檢測實驗室
NVIDIA加速全球大多數超級計算機推動科技進步
![<b class='flag-5'>NVIDIA</b>加速全球大多數超級計算機推動科技進步](https://file1.elecfans.com/web1/M00/F5/C4/wKgaoWdCyiqAI9tWAAAWljigCEQ478.png)
NVIDIA與谷歌量子AI部門達成合作
NVIDIA 助力谷歌量子 AI 通過量子器件物理學模擬加快處理器設計
![<b class='flag-5'>NVIDIA</b> 助力谷歌量子 AI 通過量子器件物理學模擬加快處理器設計](https://file1.elecfans.com/web1/M00/F5/63/wKgaoWc7-ouAFcDeAAGdJBWepuQ898.jpg)
IB Verbs和NVIDIA DOCA GPUNetIO性能測試
![IB Verbs和<b class='flag-5'>NVIDIA</b> DOCA GPUNetIO性能測試](https://file1.elecfans.com/web2/M00/04/E1/wKgaombIUG6AWlOKAAH2SzSPRP8059.png)
打破英偉達CUDA壁壘?AMD顯卡現在也能無縫適配CUDA了
英國公司實現英偉達CUDA軟件在AMD GPU上的無縫運行
軟件生態上超越CUDA,究竟有多難?
借助NVIDIA Aerial CUDA增強5G/6G的DU性能和工作負載整合
![借助<b class='flag-5'>NVIDIA</b> Aerial <b class='flag-5'>CUDA</b>增強5G/6G的DU性能和工作負載整合](https://file1.elecfans.com/web2/M00/E9/99/wKgaomZQBjmAV014AABj5Z2oRuo200.jpg)
NVIDIA 通過 CUDA-Q 平臺為全球各地的量子計算中心提供加速
![<b class='flag-5'>NVIDIA</b> 通過 <b class='flag-5'>CUDA</b>-Q 平臺為全球各地的量子計算中心提供加速](https://file1.elecfans.com/web2/M00/E5/EB/wKgaomZBv9mAPqB2AAQeD4OiP8Q898.jpg)
Keil使用AC6編譯提示CUDA版本過高怎么解決?
基于NVIDIA開源CUDA-Q量子計算平臺發布
深度解讀Nvidia AI芯片路線圖
![深度解讀<b class='flag-5'>Nvidia</b> AI芯片路線圖](https://file1.elecfans.com/web2/M00/C4/FE/wKgaomXxAouAUmnBAAAzr6Zv8bQ816.png)
OpenCV4.8 C++實現YOLOv8 OBB旋轉對象檢測
![OpenCV4.8 C++實現YOLOv8 OBB旋轉<b class='flag-5'>對象</b><b class='flag-5'>檢測</b>](https://file1.elecfans.com/web2/M00/C0/8A/wKgZomXWrpyAA-X_AABPfe5K8eA015.png)
評論