Object Detection
TensorRT
ONNX
autoware
ros2
autonomous-driving
lidar
point-cloud
instance-segmentation
apollo
Instructions to use AutowareFoundation/lidar_apollo_instance_segmentation with libraries, inference providers, notebooks, and local apps. Follow these links to get started.
- Libraries
- TensorRT
How to use AutowareFoundation/lidar_apollo_instance_segmentation 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: add lidar_apollo_instance_segmentation v1.0 artifacts (from awf.ml.dev.web.auto/perception/models/lidar_apollo_instance_segmentation)
Browse files- .gitignore +5 -0
- README.md +150 -0
- deploy_metadata.yaml +1 -0
- hdl-64.onnx +3 -0
- vlp-16.onnx +3 -0
- vls-128.onnx +3 -0
.gitignore
ADDED
|
@@ -0,0 +1,5 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
# Auto-generated TensorRT artifacts, built locally by Autoware from the ONNX
|
| 2 |
+
# files (see autoware_tensorrt_common). They are environment-specific
|
| 3 |
+
# (GPU arch + TensorRT version) and must not be committed to this repo.
|
| 4 |
+
*.engine
|
| 5 |
+
*.json
|
README.md
ADDED
|
@@ -0,0 +1,150 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
---
|
| 2 |
+
license: apache-2.0
|
| 3 |
+
pipeline_tag: object-detection
|
| 4 |
+
tags:
|
| 5 |
+
- autoware
|
| 6 |
+
- ros2
|
| 7 |
+
- autonomous-driving
|
| 8 |
+
- lidar
|
| 9 |
+
- point-cloud
|
| 10 |
+
- instance-segmentation
|
| 11 |
+
- apollo
|
| 12 |
+
- tensorrt
|
| 13 |
+
- onnx
|
| 14 |
+
---
|
| 15 |
+
|
| 16 |
+
# Apollo LiDAR Instance Segmentation for Autoware (`lidar_apollo_instance_segmentation`)
|
| 17 |
+
|
| 18 |
+
CNN-based LiDAR instance segmentation models, used by the
|
| 19 |
+
[`autoware_lidar_apollo_instance_segmentation`](https://github.com/autowarefoundation/autoware_universe/tree/main/perception/autoware_lidar_apollo_instance_segmentation)
|
| 20 |
+
node in [Autoware](https://github.com/autowarefoundation/autoware).
|
| 21 |
+
|
| 22 |
+
The models originate from the Baidu [Apollo](https://github.com/ApolloAuto/apollo) 3D obstacle perception
|
| 23 |
+
stack (CNN segmentation). The original Apollo caffemodels were converted to ONNX for use in Autoware, and the
|
| 24 |
+
node builds a TensorRT engine from the ONNX file on first launch. The node rasterizes the input point cloud
|
| 25 |
+
into a bird's-eye-view feature map, runs the network, and clusters the per-cell predictions into labeled
|
| 26 |
+
obstacle instances.
|
| 27 |
+
|
| 28 |
+
## Model overview
|
| 29 |
+
|
| 30 |
+
| | |
|
| 31 |
+
| --- | --- |
|
| 32 |
+
| Task | Instance segmentation of LiDAR point clouds into labeled obstacle clusters |
|
| 33 |
+
| Architecture | Apollo CNN segmentation (CNNSeg) on a bird's-eye-view feature map, plus obstacle clustering in the node |
|
| 34 |
+
| Detected classes | Apollo meta types mapped to Autoware labels: `CAR` (small vehicle), `BUS` (big vehicle), `MOTORCYCLE` (non-motorized vehicle), `PEDESTRIAN`; unmatched clusters are `UNKNOWN` |
|
| 35 |
+
| Runtime | TensorRT (FP32 by default) via the `autoware_lidar_apollo_instance_segmentation` ROS 2 node |
|
| 36 |
+
| Format | ONNX, converted from Apollo caffemodels (Autoware builds the TensorRT engine locally on first launch) |
|
| 37 |
+
| License | Apache-2.0 (weights derived from Apollo, which is Apache-2.0 licensed) |
|
| 38 |
+
|
| 39 |
+
## Variants in this repository
|
| 40 |
+
|
| 41 |
+
One ONNX model per supported LiDAR sensor, selected via the `model` launch argument:
|
| 42 |
+
|
| 43 |
+
| Variant | Launch value | Feature map grid | Range [m] | Intensity feature |
|
| 44 |
+
| --- | --- | --- | --- | --- |
|
| 45 |
+
| `vlp-16` (Velodyne VLP-16) | `model_16` | 672 x 672 | 70 | yes |
|
| 46 |
+
| `hdl-64` (Velodyne HDL-64) | `model_64` | 672 x 672 | 70 | yes |
|
| 47 |
+
| `vls-128` (Velodyne VLS-128) | `model_128` (default) | 864 x 864 | 90 | no |
|
| 48 |
+
|
| 49 |
+
The per-variant parameter files (`vlp-16.param.yaml`, `hdl-64.param.yaml`, `vls-128.param.yaml`) live in the
|
| 50 |
+
consuming package under `config/`, not in this repository. The values above come from those files. Supported
|
| 51 |
+
LiDARs are the Velodyne 16, 64, and 128 beam sensors, but the package README notes that other LiDARs such as
|
| 52 |
+
the Velodyne 32 can also be used with good accuracy.
|
| 53 |
+
|
| 54 |
+
## Files
|
| 55 |
+
|
| 56 |
+
| File | Description |
|
| 57 |
+
| --- | --- |
|
| 58 |
+
| `vlp-16.onnx` | CNN segmentation model for Velodyne VLP-16 |
|
| 59 |
+
| `hdl-64.onnx` | CNN segmentation model for Velodyne HDL-64 |
|
| 60 |
+
| `vls-128.onnx` | CNN segmentation model for Velodyne VLS-128 |
|
| 61 |
+
| `deploy_metadata.yaml` | Deployment metadata recording the artifact version of this repository |
|
| 62 |
+
|
| 63 |
+
> **TensorRT engines are not distributed here.** TensorRT engines are specific to the GPU architecture and
|
| 64 |
+
> TensorRT version they are built on and are not portable, so Autoware builds them locally from the ONNX files
|
| 65 |
+
> on first launch (or via `build_only:=true`).
|
| 66 |
+
|
| 67 |
+
## Inputs and outputs (as used by the node)
|
| 68 |
+
|
| 69 |
+
**Input**: `input/pointcloud` (`sensor_msgs/msg/PointCloud2`), point cloud data from LiDAR sensors
|
| 70 |
+
(default remap: `/sensing/lidar/pointcloud`).
|
| 71 |
+
|
| 72 |
+
**Outputs**:
|
| 73 |
+
|
| 74 |
+
- `output/labeled_clusters` (`tier4_perception_msgs/msg/DetectedObjectsWithFeature`): detected objects with
|
| 75 |
+
labeled point cloud clusters.
|
| 76 |
+
- `debug/instance_pointcloud` (`sensor_msgs/msg/PointCloud2`): segmented point cloud for visualization.
|
| 77 |
+
|
| 78 |
+
Pre-processing (bird's-eye-view feature map generation) and post-processing (2D clustering of the network
|
| 79 |
+
output into obstacle instances, score thresholding via `score_threshold`) run in the node, not in the ONNX
|
| 80 |
+
graphs.
|
| 81 |
+
|
| 82 |
+
## Usage in Autoware
|
| 83 |
+
|
| 84 |
+
The node expects these artifacts under `~/autoware_data/ml_models/lidar_apollo_instance_segmentation/` and
|
| 85 |
+
launches with, e.g.:
|
| 86 |
+
|
| 87 |
+
```bash
|
| 88 |
+
ros2 launch autoware_lidar_apollo_instance_segmentation lidar_apollo_instance_segmentation.launch.xml \
|
| 89 |
+
model:=model_128 \
|
| 90 |
+
data_path:=$HOME/autoware_data/ml_models
|
| 91 |
+
```
|
| 92 |
+
|
| 93 |
+
`model:=model_16`, `model_64`, or `model_128` selects `vlp-16.onnx`, `hdl-64.onnx`, or `vls-128.onnx`
|
| 94 |
+
respectively, together with the matching parameter file from the package's `config/` directory. Add
|
| 95 |
+
`build_only:=true` to build the TensorRT engine from the ONNX as a one-off pre-task. See the
|
| 96 |
+
[package README](https://github.com/autowarefoundation/autoware_universe/tree/main/perception/autoware_lidar_apollo_instance_segmentation)
|
| 97 |
+
for the full parameter reference.
|
| 98 |
+
|
| 99 |
+
## Training
|
| 100 |
+
|
| 101 |
+
There is no training code for these models. The weights were trained by the Baidu Apollo project and released
|
| 102 |
+
as caffemodels, which were later converted to ONNX for Autoware. Training datasets, schedules, and metrics are
|
| 103 |
+
not publicly documented.
|
| 104 |
+
|
| 105 |
+
Origin and related projects:
|
| 106 |
+
|
| 107 |
+
- Apollo autonomous driving platform (original caffemodels and CNN segmentation design):
|
| 108 |
+
<https://github.com/ApolloAuto/apollo>
|
| 109 |
+
- Initial Autoware integration of the Apollo CNN segmentation detector:
|
| 110 |
+
<https://github.com/k0suke-murakami/autoware_perception>
|
| 111 |
+
- TensorRT wrapper library historically used by the node (current code uses `autoware_tensorrt_common`):
|
| 112 |
+
<https://github.com/lewes6369/tensorRTWrapper>
|
| 113 |
+
|
| 114 |
+
The original caffemodel sources (pinned Apollo commits) are listed in the package README:
|
| 115 |
+
|
| 116 |
+
- VLP-16: `modules/perception/production/data/perception/lidar/models/cnnseg/velodyne16/deploy.caffemodel` (Apollo commit `88bfa5a`)
|
| 117 |
+
- HDL-64: `modules/perception/production/data/perception/lidar/models/cnnseg/velodyne64/deploy.caffemodel` (Apollo commit `88bfa5a`)
|
| 118 |
+
- VLS-128: `modules/perception/production/data/perception/lidar/models/cnnseg/velodyne128/deploy.caffemodel` (Apollo commit `91844c8`)
|
| 119 |
+
|
| 120 |
+
## Provenance
|
| 121 |
+
|
| 122 |
+
| | |
|
| 123 |
+
| --- | --- |
|
| 124 |
+
| Original hosting | `https://awf.ml.dev.web.auto/perception/models/lidar_apollo_instance_segmentation/` (unversioned) |
|
| 125 |
+
| This repository | `AutowareFoundation/lidar_apollo_instance_segmentation`, tag `v1.0` |
|
| 126 |
+
|
| 127 |
+
The `v1.0` tag corresponds to the exact file set previously served from the unversioned
|
| 128 |
+
`awf.ml.dev.web.auto` path.
|
| 129 |
+
|
| 130 |
+
## Limitations
|
| 131 |
+
|
| 132 |
+
- Each ONNX file is tuned for a specific Velodyne sensor (16, 64, or 128 beams); other LiDARs may work with
|
| 133 |
+
good accuracy but are not the intended configuration.
|
| 134 |
+
- Only the classes listed above are produced; other road users are reported as `UNKNOWN`.
|
| 135 |
+
- No training code or training data documentation exists, so the models cannot be retrained or fine-tuned from
|
| 136 |
+
public sources.
|
| 137 |
+
|
| 138 |
+
## References
|
| 139 |
+
|
| 140 |
+
- Apollo 3D Obstacle Perception description:
|
| 141 |
+
<https://github.com/ApolloAuto/apollo/blob/r7.0.0/docs/specs/3d_obstacle_perception.md>
|
| 142 |
+
- Consuming Autoware package:
|
| 143 |
+
<https://github.com/autowarefoundation/autoware_universe/tree/main/perception/autoware_lidar_apollo_instance_segmentation>
|
| 144 |
+
|
| 145 |
+
## Legal notice
|
| 146 |
+
|
| 147 |
+
The model weights are derived from the Baidu Apollo project, which is licensed under the Apache License 2.0.
|
| 148 |
+
The consuming Autoware package additionally incorporates code from the Apollo project (Apache-2.0), the
|
| 149 |
+
tensorRTWrapper library (MIT), and the autoware_perception integration (Apache-2.0); see the package README
|
| 150 |
+
for the full license texts.
|
deploy_metadata.yaml
ADDED
|
@@ -0,0 +1 @@
|
|
|
|
|
|
|
| 1 |
+
version: v1.0
|
hdl-64.onnx
ADDED
|
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
version https://git-lfs.github.com/spec/v1
|
| 2 |
+
oid sha256:86348d8c4bced750f54288b01cc471c0d4f1ec9c693466169ef19413731e6ecc
|
| 3 |
+
size 11906335
|
vlp-16.onnx
ADDED
|
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
version https://git-lfs.github.com/spec/v1
|
| 2 |
+
oid sha256:eec521ebad7553d0ea2c90472a293aecb7499ab592632f0e100481c8196eb421
|
| 3 |
+
size 11906335
|
vls-128.onnx
ADDED
|
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
version https://git-lfs.github.com/spec/v1
|
| 2 |
+
oid sha256:95ef950bb694bd6de91b7e47f5d191d557e92a7f5e2a6bdf655a8b5eed4075cc
|
| 3 |
+
size 11906144
|