Object Detection
TensorRT
ONNX
autoware
ros2
autonomous-driving
camera
multi-view
3d-object-detection
bevdet
Instructions to use AutowareFoundation/tensorrt_bevdet with libraries, inference providers, notebooks, and local apps. Follow these links to get started.
- Libraries
- TensorRT
How to use AutowareFoundation/tensorrt_bevdet 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 tensorrt_bevdet v1.0 artifacts (from autoware-files S3 tensorrt_bevdet.tar.gz)
Browse files- .gitignore +5 -0
- README.md +139 -0
- bevdet_one_lt_d.onnx +3 -0
- deploy_metadata.yaml +1 -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,139 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
---
|
| 2 |
+
license: apache-2.0
|
| 3 |
+
pipeline_tag: object-detection
|
| 4 |
+
tags:
|
| 5 |
+
- autoware
|
| 6 |
+
- ros2
|
| 7 |
+
- autonomous-driving
|
| 8 |
+
- camera
|
| 9 |
+
- multi-view
|
| 10 |
+
- 3d-object-detection
|
| 11 |
+
- bevdet
|
| 12 |
+
- tensorrt
|
| 13 |
+
- onnx
|
| 14 |
+
---
|
| 15 |
+
|
| 16 |
+
# BEVDet for Autoware (`tensorrt_bevdet`)
|
| 17 |
+
|
| 18 |
+
Multi-view camera 3D object detection model, used by the
|
| 19 |
+
[`autoware_tensorrt_bevdet`](https://github.com/autowarefoundation/autoware_universe/tree/main/perception/autoware_tensorrt_bevdet)
|
| 20 |
+
node in [Autoware](https://github.com/autowarefoundation/autoware).
|
| 21 |
+
|
| 22 |
+
The model follows the **BEVDet** architecture: it unifies six surround-view camera images into a bird's-eye-view
|
| 23 |
+
(BEV) representation for the 3D object detection task, deployed with the **BEVPoolv2** [1] TensorRT/C++
|
| 24 |
+
implementation. It is distributed as ONNX; Autoware builds the TensorRT engine from the ONNX file on first
|
| 25 |
+
launch.
|
| 26 |
+
|
| 27 |
+
## Model overview
|
| 28 |
+
|
| 29 |
+
| | |
|
| 30 |
+
| --- | --- |
|
| 31 |
+
| Task | 3D object detection (oriented bounding boxes) from 6 surround-view camera images |
|
| 32 |
+
| Architecture | BEVDet (configuration `bevdet_r50_4dlongterm_depth`: depth-aware BEV pooling with temporal fusion of 8 adjacent frames) |
|
| 33 |
+
| Detected classes | `car`, `truck`, `construction_vehicle`, `bus`, `trailer`, `barrier`, `motorcycle`, `bicycle`, `pedestrian`, `traffic_cone` |
|
| 34 |
+
| Cameras | `CAM_FRONT_LEFT`, `CAM_FRONT`, `CAM_FRONT_RIGHT`, `CAM_BACK_LEFT`, `CAM_BACK`, `CAM_BACK_RIGHT` |
|
| 35 |
+
| Network input size | 256 x 704 (resized/cropped from 900 x 1600 source images) |
|
| 36 |
+
| BEV range | `[-51.2, -51.2, -5.0, 51.2, 51.2, 3.0]` m, 0.8 m grid |
|
| 37 |
+
| Runtime | TensorRT (FP16 by default, FP32 selectable) via the `autoware_tensorrt_bevdet` ROS 2 node |
|
| 38 |
+
| Format | ONNX (Autoware builds the TensorRT engine locally on first launch) |
|
| 39 |
+
| License | Apache-2.0 (see Legal Notice for training-data terms) |
|
| 40 |
+
|
| 41 |
+
The node also requires two configuration files that ship inside the `autoware_tensorrt_bevdet` package, not in
|
| 42 |
+
this repository:
|
| 43 |
+
|
| 44 |
+
- `config/bevdet.param.yaml`: ROS parameters (precision, score threshold, class names, camera list)
|
| 45 |
+
- `config/bevdet_r50_4dlongterm_depth.yaml`: model configuration (BEV range, grid, image pre-processing, NMS)
|
| 46 |
+
|
| 47 |
+
## Files
|
| 48 |
+
|
| 49 |
+
| File | Description |
|
| 50 |
+
| --- | --- |
|
| 51 |
+
| `bevdet_one_lt_d.onnx` | BEVDet network (long-term temporal fusion, depth branch), all six camera views |
|
| 52 |
+
| `deploy_metadata.yaml` | Deployment metadata recording the artifact version of this repository |
|
| 53 |
+
|
| 54 |
+
> **TensorRT engines are not distributed here.** TensorRT engines are specific to the GPU architecture and
|
| 55 |
+
> TensorRT version they are built on and are not portable, so Autoware builds them locally from the ONNX file
|
| 56 |
+
> on first launch (the node appends `_fp16.engine` or `_fp32.engine` to the configured engine path
|
| 57 |
+
> depending on the precision, so with the default config the engine lands next to the ONNX file).
|
| 58 |
+
|
| 59 |
+
## Inputs and outputs (as used by the node)
|
| 60 |
+
|
| 61 |
+
**Inputs**: six `sensor_msgs/msg/Image` topics (`~/input/topic_img_front_left`, `~/input/topic_img_front`,
|
| 62 |
+
`~/input/topic_img_front_right`, `~/input/topic_img_back_left`, `~/input/topic_img_back`,
|
| 63 |
+
`~/input/topic_img_back_right`) plus the matching six `sensor_msgs/msg/CameraInfo` topics.
|
| 64 |
+
|
| 65 |
+
**Outputs**:
|
| 66 |
+
|
| 67 |
+
- `~/output/boxes` (`autoware_perception_msgs/msg/DetectedObjects`): detected 3D objects
|
| 68 |
+
- `~/output_bboxes` (`visualization_msgs/msg/MarkerArray`): bounding-box markers for nuScenes visualization,
|
| 69 |
+
published when `debug_mode` is enabled
|
| 70 |
+
|
| 71 |
+
## Usage in Autoware
|
| 72 |
+
|
| 73 |
+
The node loads the model from `~/autoware_data/ml_models/tensorrt_bevdet/` by default and launches with:
|
| 74 |
+
|
| 75 |
+
```bash
|
| 76 |
+
ros2 launch autoware_tensorrt_bevdet tensorrt_bevdet.launch.xml
|
| 77 |
+
```
|
| 78 |
+
|
| 79 |
+
Key launch arguments: `model_name` (default `bevdet_one_lt_d`), `model_path`
|
| 80 |
+
(default `$HOME/autoware_data/ml_models/tensorrt_bevdet`), `model_config`, and `param_file`. Precision
|
| 81 |
+
(`fp16`/`fp32`) and `debug_mode` are set in `config/bevdet.param.yaml`. The package README documents
|
| 82 |
+
TensorRT 10.8.0.43 and CUDA 12.4 as prerequisites, and describes how to test the node against
|
| 83 |
+
nuScenes data played back with `ros2_dataset_bridge`. See the
|
| 84 |
+
[package README](https://github.com/autowarefoundation/autoware_universe/tree/main/perception/autoware_tensorrt_bevdet)
|
| 85 |
+
for the full instructions.
|
| 86 |
+
|
| 87 |
+
## Training
|
| 88 |
+
|
| 89 |
+
The model was trained on the nuScenes dataset for 20 epochs. Training, export, and deployment code:
|
| 90 |
+
|
| 91 |
+
- Original BEVDet: <https://github.com/HuangJunJie2017/BEVDet/tree/dev2.1>
|
| 92 |
+
- TensorRT C++ implementation: <https://github.com/LCH1238/bevdet-tensorrt-cpp/tree/one>
|
| 93 |
+
- ONNX export fork: <https://github.com/LCH1238/BEVDet/tree/export>
|
| 94 |
+
- Training/export fork adapted to the TIER IV dataset: <https://github.com/cyn-liu/BEVDet/tree/train_export>
|
| 95 |
+
- Autoware vendor package (modified TensorRT implementation): <https://github.com/autowarefoundation/bevdet_vendor>
|
| 96 |
+
|
| 97 |
+
## Limitations
|
| 98 |
+
|
| 99 |
+
- Trained only on nuScenes; the package README notes poor generalization to other data. To use this model on
|
| 100 |
+
your own vehicle and camera setup, retraining is required (see the `train_export` fork above).
|
| 101 |
+
- Expects a six-camera surround-view rig matching the nuScenes camera layout.
|
| 102 |
+
- Only the ten nuScenes classes listed above are detected.
|
| 103 |
+
|
| 104 |
+
## Provenance and versioning
|
| 105 |
+
|
| 106 |
+
| | |
|
| 107 |
+
| --- | --- |
|
| 108 |
+
| Original source | `tensorrt_bevdet.tar.gz` from the Autoware artifacts S3 bucket (`https://autoware-files.s3.us-west-2.amazonaws.com/models/tensorrt_bevdet.tar.gz`), unversioned |
|
| 109 |
+
| This repository | `AutowareFoundation/tensorrt_bevdet`, extracted ONNX published as tag `v1.0` |
|
| 110 |
+
|
| 111 |
+
## Citation
|
| 112 |
+
|
| 113 |
+
```bibtex
|
| 114 |
+
@article{huang2022bevpoolv2,
|
| 115 |
+
title = {BEVPoolv2: A Cutting-edge Implementation of BEVDet Toward Deployment},
|
| 116 |
+
author = {Huang, Junjie and Huang, Guan},
|
| 117 |
+
journal = {arXiv preprint arXiv:2211.17111},
|
| 118 |
+
year = {2022}
|
| 119 |
+
}
|
| 120 |
+
@article{huang2021bevdet,
|
| 121 |
+
title = {BEVDet: High-performance Multi-camera 3D Object Detection in Bird-Eye-View},
|
| 122 |
+
author = {Huang, Junjie and Huang, Guan and Zhu, Zheng and Ye, Yun and Du, Dalong},
|
| 123 |
+
journal = {arXiv preprint arXiv:2112.11790},
|
| 124 |
+
year = {2021}
|
| 125 |
+
}
|
| 126 |
+
```
|
| 127 |
+
|
| 128 |
+
## References
|
| 129 |
+
|
| 130 |
+
- [1] Huang and Huang, "BEVPoolv2: A Cutting-edge Implementation of BEVDet Toward Deployment", arXiv:2211.17111, 2022.
|
| 131 |
+
- [2] Huang et al., "BEVDet: High-performance Multi-camera 3D Object Detection in Bird-Eye-View", arXiv:2112.11790, 2021.
|
| 132 |
+
- [3] nuScenes: <https://www.nuscenes.org/nuscenes>
|
| 133 |
+
|
| 134 |
+
## Legal Notice
|
| 135 |
+
|
| 136 |
+
_The nuScenes dataset is released publicly for non-commercial use under the Creative Commons
|
| 137 |
+
Attribution-NonCommercial-ShareAlike 4.0 International Public License. Additional Terms of Use can be found at
|
| 138 |
+
<https://www.nuscenes.org/terms-of-use>. To inquire about a commercial license please contact
|
| 139 |
+
<nuscenes@motional.com>._
|
bevdet_one_lt_d.onnx
ADDED
|
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
version https://git-lfs.github.com/spec/v1
|
| 2 |
+
oid sha256:47f156cb63ca97fa1d47b5d46eba648d4bbe71c95a08af14d3d0fdf53d800d77
|
| 3 |
+
size 304801539
|
deploy_metadata.yaml
ADDED
|
@@ -0,0 +1 @@
|
|
|
|
|
|
|
| 1 |
+
version: v1.0
|