File size: 5,327 Bytes
95cc2a2
 
 
 
 
 
 
 
 
 
 
4a3db2d
95cc2a2
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
---
library_name: onnx
license: mit
tags:
  - foundation
  - amd
  - rocm
  - object-detection
pipeline_tag: object-detection
---

![](https://huggingface.co/AMD-PAVS-AI/centerpoint/resolve/main/CenterPoint.png)

# CenterPoint: Optimized for AMD ROCm

CenterPoint is a center-based 3D object detector for LIDAR point clouds, widely used in autonomous-driving perception pipelines. This repository packages evaluation/inference for 3D object detection using ONNX Runtime and PyTorch (OpenPCDet), exported and validated for **AMD ROCm** so it runs efficiently on AMD GPUs, CPUs, and NPUs.

This is based on the implementation of CenterPoint found [here](https://github.com/tianweiy/CenterPoint/tree/master).
This repository contains configurations and scripts optimized for **AMD® ROCm™** platforms. You can use the [CenterPoint AMD scripts](https://github.com/AMD-PAVS/physical_ai_sdk/blob/main/models/CenterPoint) to reproduce results or export with custom configurations. More details on model performance can be found [here](#performance-summary).

---

## Task Overview

**Task:** 3D object detection (LIDAR point clouds)

**Dataset:** nuScenes mini (v1.0-mini — 81 val samples, 10 detection classes)

**Output metrics:** mAP, NDS (nuScenes Detection Score), per-class AP, TP errors (ATE/ASE/AOE/AVE/AAE), FPS

> **GPU backend note:** GPU inference uses OpenPCDet (PyTorch on AMD ROCm) rather than ONNX Runtime, since MIGraphX cannot lower the Scatter/Gather patterns in `pointpillars.onnx`.

---

## AMD ROCm Optimization

This model export has been adapted and validated for **AMD Instinct™ / Radeon™ GPUs** running **ROCm**, as well as AMD CPUs and NPUs. Key points:

- Validated backends: **ONNX Runtime** (CPU, FP32; NPU via VitisAI) and **PyTorch/OpenPCDet** (GPU, native ROCm).
- CPU fallback path supported for environments without a ROCm-capable GPU or NPU.

| Runtime | Precision | Backend | Hardware | Notes |
|---|---|---|---|---|
| ONNX Runtime | FP32 | CPU Execution Provider | AMD CPU | — |
| PyTorch | Native | OpenPCDet | AMD Instinct™ / Radeon™ GPU (ROCm) | Runs natively via OpenPCDet instead of ONNX Runtime, since MIGraphX cannot lower the Scatter/Gather patterns in `pointpillars.onnx` |
| ONNX Runtime | Auto (BF16) | VitisAI Execution Provider | AMD NPU | Quantization handled internally by VitisAI |

---

## Getting Started

For setup instructions, evaluation scripts, and custom configuration options, see the [CenterPoint on GitHub](https://github.com/AMD-PAVS/physical_ai_sdk/blob/main/models/CenterPoint).

---

## Model Details

**Model Type:** 3D object detection (PointPillars variant of CenterPoint)

**Model Stats:**
- Input tensors: features `(1, 10, 30000, 20)` float32, indices `(1, 30000, 2)` int64
- Output: 128 x 128 BEV feature maps (per-task detection heads), float32
- Precision tested: FP32 (CPU, ONNX Runtime), native (GPU, PyTorch/OpenPCDet), auto BF16 quantization (NPU, VitisAI)

---

## Performance Summary

Higher mAP means the model's predicted boxes and classes agree more closely with ground truth across the dataset — 1.0 would be perfect detection, 0.0 means no correct detections. NDS combines mAP with localization and attribute errors into a single score; higher is better.

### Metrics Explained

| Metric | Description |
|--------|-------------|
| mAP | Mean Average Precision over the 10 nuScenes detection classes at center-distance thresholds 0.5/1.0/2.0/4.0 m. The primary accuracy number — higher means more objects are correctly detected and classified. |
| NDS | nuScenes Detection Score — combines mAP (50%) with five True-Positive error terms (ATE, ASE, AOE, AVE, AAE) into a single number. Higher means the model is both finding objects and localizing them accurately (position, size, orientation, velocity, attributes). |
| ATE (Translation Error) | Average center-distance error in meters for true positives — lower means the model's 3D box centers are closer to ground truth. |
| ASE (Scale Error) | Average IoU-based size error (1 - IoU) for true positives — lower means predicted box dimensions more closely match ground truth. |
| AOE (Orientation Error) | Average angular error in radians for true positives — lower means heading predictions are more accurate. Matters for downstream planning. |
| AVE (Velocity Error) | Average velocity error in m/s for true positives — lower means better motion estimation. Only computed for moving classes (car, truck, bus, etc.). |
| AAE (Attribute Error) | Average attribute classification error (1 - accuracy) for true positives — lower means the model better predicts secondary labels (e.g. parked vs. moving). |
| Per-class AP | mAP broken down per class (car, truck, bus, trailer, construction_vehicle, pedestrian, motorcycle, bicycle, traffic_cone, barrier) — exposes class-specific weaknesses the aggregate mAP would hide. |

---

## Dig Deeper

Want to explore the full evaluation scripts, config options, and other AMD-optimized model examples?

📂 **[View the full project on GitHub](https://github.com/AMD-PAVS/physical_ai_sdk/blob/main/models/CenterPoint)**

The GitHub repository includes:
- Setup and prerequisites for ROCm environments
- Scripts for the supported runners
- Additional model variants and datasets
- Benchmarking and reproduction instructions