xmfcx commited on
Commit
0b4e73b
·
verified ·
1 Parent(s): 2f95c4a

feat: add lidar_apollo_instance_segmentation v1.0 artifacts (from awf.ml.dev.web.auto/perception/models/lidar_apollo_instance_segmentation)

Browse files
Files changed (6) hide show
  1. .gitignore +5 -0
  2. README.md +150 -0
  3. deploy_metadata.yaml +1 -0
  4. hdl-64.onnx +3 -0
  5. vlp-16.onnx +3 -0
  6. 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