Object Detection
TensorRT
ONNX
autoware
ros2
autonomous-driving
lidar
point-cloud
3d-object-detection
semantic-segmentation
point-transformer
Instructions to use AutowareFoundation/ptv3 with libraries, inference providers, notebooks, and local apps. Follow these links to get started.
- Libraries
- TensorRT
How to use AutowareFoundation/ptv3 with TensorRT:
# No code snippets available yet for this library. # To use this model, check the repository files and the library's documentation. # Want to help? PRs adding snippets are welcome at: # https://github.com/huggingface/huggingface.js
- Notebooks
- Google Colab
- Kaggle
feat: update ptv3 artifacts to v0.1.1
#1
by amadeuszsz - opened
- README.md +11 -11
- deploy_metadata.yaml +1 -1
- ml_package_ptv3_det3d_head.param.yaml +1 -2
- ml_package_ptv3_encoder.param.yaml +1 -1
- ml_package_ptv3_seg3d_head.param.yaml +14 -13
- ptv3_det3d_head.onnx +2 -2
- ptv3_encoder.onnx +2 -2
- ptv3_seg3d_head.onnx +2 -2
README.md
CHANGED
|
@@ -33,8 +33,8 @@ first launch.
|
|
| 33 |
| --- | --- |
|
| 34 |
| Task | Joint 3D object detection (oriented bounding boxes) and 3D semantic segmentation from a LiDAR point cloud |
|
| 35 |
| Architecture | Point Transformer V3 encoder (sparse convolutions) with separate detection and segmentation heads |
|
| 36 |
-
| Detection classes | `CAR`, `TRUCK`, `BUS`, `BICYCLE`, `PEDESTRIAN`, `
|
| 37 |
-
| Segmentation classes | `car`, `truck`, `bus`, `bicycle`, `pedestrian`, `
|
| 38 |
| Point cloud range [m] | `[-122.88, -122.88, -3.0, 122.88, 122.88, 5.0]` |
|
| 39 |
| Voxel size (x, y, z) [m] | `0.12, 0.12, 0.12` |
|
| 40 |
| Runtime | TensorRT (FP16 by default) via the `autoware_ptv3` ROS 2 node, with sparse-conv plugins from `autoware_tensorrt_plugins` |
|
|
@@ -47,11 +47,11 @@ The network is split into three ONNX sub-models, matching how the node consumes
|
|
| 47 |
`[32, 64, 128, 256, 512]`, serialization orders `z` and `z-trans`, and pooling strides `[2, 2, 2, 2]`.
|
| 48 |
2. **Detection head** (`ptv3_det3d_head.onnx`): predicts up to 500 oriented 3D boxes with velocity
|
| 49 |
(`has_twist: true`) over a BEV grid with `bbox_voxel_size: [0.96, 0.96, 8.0]`.
|
| 50 |
-
3. **Segmentation head** (`ptv3_seg3d_head.onnx`): per-point classification over the
|
| 51 |
classes listed above.
|
| 52 |
|
| 53 |
Each head can be enabled or disabled independently at launch time (`use_det3d_head`, `use_seg3d_head`).
|
| 54 |
-
Pre-processing (voxelization) and post-processing (IoU NMS, yaw normalization, distance-based score
|
| 55 |
thresholding, class remapping by area, point filtering) run in the node, not in the ONNX graphs.
|
| 56 |
|
| 57 |
## Files
|
|
@@ -61,7 +61,7 @@ thresholding, class remapping by area, point filtering) run in the node, not in
|
|
| 61 |
| `ptv3_encoder.onnx` | Shared PTv3 encoder |
|
| 62 |
| `ptv3_det3d_head.onnx` | 3D object detection head |
|
| 63 |
| `ptv3_seg3d_head.onnx` | 3D semantic segmentation head |
|
| 64 |
-
| `ml_package_ptv3_encoder.param.yaml` | Encoder model parameters (range, voxel size, channels) |
|
| 65 |
| `ml_package_ptv3_det3d_head.param.yaml` | Detection head model parameters (classes, proposals, BEV voxel size) |
|
| 66 |
| `ml_package_ptv3_seg3d_head.param.yaml` | Segmentation head model parameters (class names, visualization palette) |
|
| 67 |
| `deploy_metadata.yaml` | Deployment metadata (records the model version) |
|
|
@@ -84,7 +84,7 @@ received message and supports `XYZIRCAEDT` (10 fields), `XYZIRADRT` (9 fields),
|
|
| 84 |
| `~/output/objects` | `autoware_perception_msgs/msg/DetectedObjects` | Detected 3D objects after score filtering and IoU NMS |
|
| 85 |
| `~/output/pointcloud/segmentation` | `sensor_msgs/msg/PointCloud2` | XYZ cloud with class ID and probability fields |
|
| 86 |
| `~/output/pointcloud/visualization` | `sensor_msgs/msg/PointCloud2` | XYZ cloud with RGB field (colored by class palette) |
|
| 87 |
-
| `~/output/pointcloud/filtered` | `sensor_msgs/msg/PointCloud2` | Input cloud with configured classes filtered out (default: `
|
| 88 |
|
| 89 |
The node also publishes processing-time and latency debug topics under `debug/`.
|
| 90 |
|
|
@@ -107,8 +107,8 @@ for the full parameter reference.
|
|
| 107 |
|
| 108 |
## Training
|
| 109 |
|
| 110 |
-
The model was trained
|
| 111 |
-
|
| 112 |
|
| 113 |
- Sparse convolution backend: <https://github.com/traveller59/spconv>
|
| 114 |
- C++ sparse convolution implementation used by Autoware: <https://github.com/autowarefoundation/spconv_cpp>
|
|
@@ -118,9 +118,9 @@ A public training configuration is not documented in the package.
|
|
| 118 |
|
| 119 |
| | |
|
| 120 |
| --- | --- |
|
| 121 |
-
|
|
| 122 |
-
| Source version
|
| 123 |
-
| This repository | `AutowareFoundation/ptv3`, tag `
|
| 124 |
|
| 125 |
## Limitations
|
| 126 |
|
|
|
|
| 33 |
| --- | --- |
|
| 34 |
| Task | Joint 3D object detection (oriented bounding boxes) and 3D semantic segmentation from a LiDAR point cloud |
|
| 35 |
| Architecture | Point Transformer V3 encoder (sparse convolutions) with separate detection and segmentation heads |
|
| 36 |
+
| Detection classes | `CAR`, `TRUCK`, `BUS`, `MOTORCYCLE`, `BICYCLE`, `PEDESTRIAN`, `ANIMAL`, `BARRIER`, `TRAFFIC_CONE`, `DEBRIS` |
|
| 37 |
+
| Segmentation classes | `car`, `truck`, `bus`, `motorcycle`, `bicycle`, `pedestrian`, `animal`, `barrier`, `traffic_cone`, `debris`, `driveable_flat`, `non_driveable_flat`, `vegetation`, `manmade`, `vertical_thin`, `noise` |
|
| 38 |
| Point cloud range [m] | `[-122.88, -122.88, -3.0, 122.88, 122.88, 5.0]` |
|
| 39 |
| Voxel size (x, y, z) [m] | `0.12, 0.12, 0.12` |
|
| 40 |
| Runtime | TensorRT (FP16 by default) via the `autoware_ptv3` ROS 2 node, with sparse-conv plugins from `autoware_tensorrt_plugins` |
|
|
|
|
| 47 |
`[32, 64, 128, 256, 512]`, serialization orders `z` and `z-trans`, and pooling strides `[2, 2, 2, 2]`.
|
| 48 |
2. **Detection head** (`ptv3_det3d_head.onnx`): predicts up to 500 oriented 3D boxes with velocity
|
| 49 |
(`has_twist: true`) over a BEV grid with `bbox_voxel_size: [0.96, 0.96, 8.0]`.
|
| 50 |
+
3. **Segmentation head** (`ptv3_seg3d_head.onnx`): per-point classification over the 16 segmentation
|
| 51 |
classes listed above.
|
| 52 |
|
| 53 |
Each head can be enabled or disabled independently at launch time (`use_det3d_head`, `use_seg3d_head`).
|
| 54 |
+
Pre-processing (multi-frame densification, voxelization) and post-processing (IoU NMS, yaw normalization, distance-based score
|
| 55 |
thresholding, class remapping by area, point filtering) run in the node, not in the ONNX graphs.
|
| 56 |
|
| 57 |
## Files
|
|
|
|
| 61 |
| `ptv3_encoder.onnx` | Shared PTv3 encoder |
|
| 62 |
| `ptv3_det3d_head.onnx` | 3D object detection head |
|
| 63 |
| `ptv3_seg3d_head.onnx` | 3D semantic segmentation head |
|
| 64 |
+
| `ml_package_ptv3_encoder.param.yaml` | Encoder model parameters (range, voxel size, max points per voxel, channels) |
|
| 65 |
| `ml_package_ptv3_det3d_head.param.yaml` | Detection head model parameters (classes, proposals, BEV voxel size) |
|
| 66 |
| `ml_package_ptv3_seg3d_head.param.yaml` | Segmentation head model parameters (class names, visualization palette) |
|
| 67 |
| `deploy_metadata.yaml` | Deployment metadata (records the model version) |
|
|
|
|
| 84 |
| `~/output/objects` | `autoware_perception_msgs/msg/DetectedObjects` | Detected 3D objects after score filtering and IoU NMS |
|
| 85 |
| `~/output/pointcloud/segmentation` | `sensor_msgs/msg/PointCloud2` | XYZ cloud with class ID and probability fields |
|
| 86 |
| `~/output/pointcloud/visualization` | `sensor_msgs/msg/PointCloud2` | XYZ cloud with RGB field (colored by class palette) |
|
| 87 |
+
| `~/output/pointcloud/filtered` | `sensor_msgs/msg/PointCloud2` | Input cloud with configured classes filtered out (default: `driveable_flat`, `non_driveable_flat`, `noise`) |
|
| 88 |
|
| 89 |
The node also publishes processing-time and latency debug topics under `debug/`.
|
| 90 |
|
|
|
|
| 107 |
|
| 108 |
## Training
|
| 109 |
|
| 110 |
+
The model was trained by TIER IV on the internal T4Dataset with
|
| 111 |
+
[Autoware-ML](https://github.com/tier4/autoware-ml) ([documentation](https://tier4.github.io/autoware-ml/)).
|
| 112 |
|
| 113 |
- Sparse convolution backend: <https://github.com/traveller59/spconv>
|
| 114 |
- C++ sparse convolution implementation used by Autoware: <https://github.com/autowarefoundation/spconv_cpp>
|
|
|
|
| 118 |
|
| 119 |
| | |
|
| 120 |
| --- | --- |
|
| 121 |
+
| Source | TIER IV model release, trained and exported with Autoware-ML |
|
| 122 |
+
| Source version | `v0.1.1` |
|
| 123 |
+
| This repository | `AutowareFoundation/ptv3`, tag `v0.1.1` |
|
| 124 |
|
| 125 |
## Limitations
|
| 126 |
|
deploy_metadata.yaml
CHANGED
|
@@ -1 +1 @@
|
|
| 1 |
-
version:
|
|
|
|
| 1 |
+
version: v0.1.1
|
ml_package_ptv3_det3d_head.param.yaml
CHANGED
|
@@ -5,5 +5,4 @@
|
|
| 5 |
has_twist: true
|
| 6 |
num_proposals: 500
|
| 7 |
post_center_range: [-132.88, -132.88, -5.0, 132.88, 132.88, 12.0]
|
| 8 |
-
class_names: ["CAR", "TRUCK", "BUS", "BICYCLE", "PEDESTRIAN", "
|
| 9 |
-
|
|
|
|
| 5 |
has_twist: true
|
| 6 |
num_proposals: 500
|
| 7 |
post_center_range: [-132.88, -132.88, -5.0, 132.88, 132.88, 12.0]
|
| 8 |
+
class_names: ["CAR", "TRUCK", "BUS", "MOTORCYCLE", "BICYCLE", "PEDESTRIAN", "ANIMAL", "BARRIER", "TRAFFIC_CONE", "DEBRIS"]
|
|
|
ml_package_ptv3_encoder.param.yaml
CHANGED
|
@@ -3,7 +3,7 @@
|
|
| 3 |
encoder:
|
| 4 |
point_cloud_range: [-122.88, -122.88, -3.0, 122.88, 122.88, 5.0]
|
| 5 |
voxel_size: [0.12, 0.12, 0.12]
|
|
|
|
| 6 |
serialization_orders: ["z", "z-trans"]
|
| 7 |
pooling_strides: [2, 2, 2, 2]
|
| 8 |
enc_channels: [32, 64, 128, 256, 512]
|
| 9 |
-
|
|
|
|
| 3 |
encoder:
|
| 4 |
point_cloud_range: [-122.88, -122.88, -3.0, 122.88, 122.88, 5.0]
|
| 5 |
voxel_size: [0.12, 0.12, 0.12]
|
| 6 |
+
max_points_per_voxel: 32
|
| 7 |
serialization_orders: ["z", "z-trans"]
|
| 8 |
pooling_strides: [2, 2, 2, 2]
|
| 9 |
enc_channels: [32, 64, 128, 256, 512]
|
|
|
ml_package_ptv3_seg3d_head.param.yaml
CHANGED
|
@@ -6,34 +6,35 @@
|
|
| 6 |
"car",
|
| 7 |
"truck",
|
| 8 |
"bus",
|
|
|
|
| 9 |
"bicycle",
|
| 10 |
"pedestrian",
|
| 11 |
-
"
|
| 12 |
"barrier",
|
|
|
|
| 13 |
"debris",
|
| 14 |
-
"
|
| 15 |
-
"
|
| 16 |
"vegetation",
|
| 17 |
-
"
|
| 18 |
"vertical_thin",
|
| 19 |
-
"
|
| 20 |
-
"noise"
|
| 21 |
]
|
| 22 |
palette: [
|
| 23 |
0, 150, 245, # Blue - car
|
| 24 |
160, 32, 240, # Purple - truck
|
| 25 |
255, 255, 0, # Yellow - bus
|
|
|
|
| 26 |
255, 192, 203, # Pink - bicycle
|
| 27 |
255, 0, 0, # Red - pedestrian
|
| 28 |
-
|
| 29 |
255, 127, 0, # Orange - barrier
|
| 30 |
-
|
| 31 |
-
255, 0, 255, # Magenta -
|
| 32 |
-
139, 137, 137, # Grey -
|
|
|
|
| 33 |
0, 175, 0, # Green - vegetation
|
| 34 |
-
230, 230, 250, # Lavender -
|
| 35 |
153, 50, 204, # Dark Orchid - vertical_thin
|
| 36 |
-
188, 143, 143, # Rosy Brown - static_clutter
|
| 37 |
64, 224, 208, # Turquoise - noise
|
| 38 |
]
|
| 39 |
-
|
|
|
|
| 6 |
"car",
|
| 7 |
"truck",
|
| 8 |
"bus",
|
| 9 |
+
"motorcycle",
|
| 10 |
"bicycle",
|
| 11 |
"pedestrian",
|
| 12 |
+
"animal",
|
| 13 |
"barrier",
|
| 14 |
+
"traffic_cone",
|
| 15 |
"debris",
|
| 16 |
+
"driveable_flat",
|
| 17 |
+
"non_driveable_flat",
|
| 18 |
"vegetation",
|
| 19 |
+
"manmade",
|
| 20 |
"vertical_thin",
|
| 21 |
+
"noise",
|
|
|
|
| 22 |
]
|
| 23 |
palette: [
|
| 24 |
0, 150, 245, # Blue - car
|
| 25 |
160, 32, 240, # Purple - truck
|
| 26 |
255, 255, 0, # Yellow - bus
|
| 27 |
+
255, 105, 180, # Hot Pink - motorcycle
|
| 28 |
255, 192, 203, # Pink - bicycle
|
| 29 |
255, 0, 0, # Red - pedestrian
|
| 30 |
+
173, 255, 47, # Green Yellow - animal
|
| 31 |
255, 127, 0, # Orange - barrier
|
| 32 |
+
255, 240, 150, # Light Yellow - traffic_cone
|
| 33 |
+
255, 0, 255, # Magenta - debris
|
| 34 |
+
139, 137, 137, # Grey - driveable_flat
|
| 35 |
+
139, 137, 137, # Grey - non_driveable_flat
|
| 36 |
0, 175, 0, # Green - vegetation
|
| 37 |
+
230, 230, 250, # Lavender - manmade
|
| 38 |
153, 50, 204, # Dark Orchid - vertical_thin
|
|
|
|
| 39 |
64, 224, 208, # Turquoise - noise
|
| 40 |
]
|
|
|
ptv3_det3d_head.onnx
CHANGED
|
@@ -1,3 +1,3 @@
|
|
| 1 |
version https://git-lfs.github.com/spec/v1
|
| 2 |
-
oid sha256:
|
| 3 |
-
size
|
|
|
|
| 1 |
version https://git-lfs.github.com/spec/v1
|
| 2 |
+
oid sha256:4fbacb62ff6b27d9205dc3ff2c68fcde8f850d8c121e9637b1f458e070fbdbf4
|
| 3 |
+
size 21603770
|
ptv3_encoder.onnx
CHANGED
|
@@ -1,3 +1,3 @@
|
|
| 1 |
version https://git-lfs.github.com/spec/v1
|
| 2 |
-
oid sha256:
|
| 3 |
-
size
|
|
|
|
| 1 |
version https://git-lfs.github.com/spec/v1
|
| 2 |
+
oid sha256:a8f93bf3fda957b44e8d8b8dede3a605e772cdec4aa5b7b2611353dce8cfb28d
|
| 3 |
+
size 112786044
|
ptv3_seg3d_head.onnx
CHANGED
|
@@ -1,3 +1,3 @@
|
|
| 1 |
version https://git-lfs.github.com/spec/v1
|
| 2 |
-
oid sha256:
|
| 3 |
-
size
|
|
|
|
| 1 |
version https://git-lfs.github.com/spec/v1
|
| 2 |
+
oid sha256:138fbbe01c4e08bf3463f7fc646e5699fb99bcf8d3603e06ff6ef7e22b91e2c8
|
| 3 |
+
size 14281175
|