CenterPoint¶
CenterPoint is a LiDAR-based 3D object detection model integrated under the detection3d task namespace. It uses a PointPillars-style frontend with a SECOND backbone, SECONDFPN neck, and CenterPoint detection head.
Summary¶
| Property | Value |
|---|---|
| Task | 3D object detection |
| Modality | LiDAR |
| Input | Point cloud |
| Output | 3D bounding boxes and class scores |
| Architecture | PointPillars + SECOND + SECONDFPN + head |
| Datasets | T4Dataset, nuScenes |
Available Configurations¶
Experiment configs live under autoware_ml/configs/tasks/detection3d/centerpoint/<dataset>/ and are passed to the CLI as the path relative to tasks/.
| Leaf | Database | Weights |
|---|---|---|
nuscenes/<variant>_nuscenes_<range> |
nuScenes | Trained from scratch |
The leaf name spells out its variant: the voxel size, the backbone and neck, the batch size, the epoch count and the detection range, so the values live in one place, the config. The configs are layered so that each file owns one concern:
| File | Owns |
|---|---|
base.yaml |
Model architecture, pillar preprocessor, optimizer, trainer settings, and ONNX export modules |
<dataset>/base_<range>.yaml |
Point cloud range, evaluation ranges, NMS radius, dataloaders, and the transform pipeline |
<dataset>/base_<voxel>_<range>.yaml |
Voxel size, BEV canvas shape, backbone strides, and head output stride |
<dataset>/<voxel>_<variant>.yaml |
Database selection, batch size, experiment name, epochs, and optional pretrained weights |
For T4Dataset the bundled configs stop at the bases t4dataset/base_120m.yaml and t4dataset/base_voxel024_120m.yaml. They declare the classes the model trains and require the taxonomy that folds the labels of the database onto them, so a T4Dataset experiment lives in an external config root, see Configuration.
Training¶
The nuScenes config trains from scratch on the nuscenes/nuscenes_base database:
autoware-ml train --config-name detection3d/centerpoint/nuscenes/voxel020_second_secfpn_b16_30e_nuscenes_51m
For a pipeline validation run:
autoware-ml train \
--config-name detection3d/centerpoint/nuscenes/voxel020_second_secfpn_b16_30e_nuscenes_51m \
+trainer.fast_dev_run=true
Checkpoints are written to mlruns/<experiment_group_name>/<experiment_name>/<run_id>/artifacts/checkpoints/ as best.ckpt and last.ckpt. Resume an interrupted run with --resume-checkpoint pointing at last.ckpt.
Evaluation¶
autoware-ml test \
--config-name detection3d/centerpoint/nuscenes/voxel020_second_secfpn_b16_30e_nuscenes_51m \
--weights mlruns/centerpoint/NuScenesDataset-base-v1.0.0/nuscenes/voxel020_second_secfpn_b16_30e_nuscenes_51m/<run_id>/artifacts/checkpoints/best.ckpt
Evaluation runs on a single device by default so metrics are deterministic. Pass --use-config-devices to keep the trainer.devices from the config.
Deployment¶
autoware-ml deploy \
--config-name detection3d/centerpoint/nuscenes/voxel020_second_secfpn_b16_30e_nuscenes_51m \
--weights mlruns/centerpoint/NuScenesDataset-base-v1.0.0/nuscenes/voxel020_second_secfpn_b16_30e_nuscenes_51m/<run_id>/artifacts/checkpoints/best.ckpt \
--release v1.0.0
The export produces the two ONNX modules consumed by autoware_universe/perception/autoware_lidar_centerpoint: pts_voxel_encoder_centerpoint.onnx encodes decorated pillar features into per-pillar descriptors, and pts_backbone_neck_head_centerpoint.onnx predicts the raw dense detection heads (heatmap, reg, height, dim, rot, vel) from the scattered BEV canvas. Voxelization, pillar decoration, BEV scatter, and box decoding all run in the runtime node.
Exports land in mlruns/<experiment_group_name>/<experiment_name>/<run_id>/artifacts/exports/ of a dedicated deploy run linked to the training run. Every module is stamped with its provenance and the --release version. Omit --release only for throwaway exports, which are stamped unversioned. TensorRT engine generation is disabled in the base config (deploy.tensorrt.enabled=false) because the runtime builds engines itself.
Implementation¶
| Path | Description |
|---|---|
autoware_ml/models/detection3d/main_modules/centerpoint.py |
CenterPoint model wrapper |
autoware_ml/models/detection3d/encoders/pillars/pillar_feature_net.py |
Pillar feature encoder |
autoware_ml/models/detection3d/encoders/pillars/point_pillar_scatter.py |
Pillar scatter to BEV |
autoware_ml/models/detection3d/backbones/second.py |
SECOND backbone |
autoware_ml/models/detection3d/necks/second_fpn.py |
SECONDFPN neck |
autoware_ml/models/detection3d/heads/centerhead.py |
CenterPoint detection head |
autoware_ml/preprocessing/detection3d/point_pillar_preprocessor.py |
Pillar preprocessing |
autoware_ml/datamodule/t4dataset/dataset.py |
T4Dataset records as a dataset |
autoware_ml/datamodule/nuscenes/dataset.py |
nuScenes dataset |
autoware_ml/datamodule/common/detection3d.py |
3D boxes of a record |
autoware_ml/configs/datamodule/ |
Datamodule, dataset and transform configurations |
autoware_ml/configs/tasks/detection3d/centerpoint/ |
Experiment configurations |
Acknowledgment¶
The Autoware-ML CenterPoint implementation was ported from the official mmdetection3d project by OpenMMLab.
- Repository: https://github.com/open-mmlab/mmdetection3d
- License: Apache License 2.0
- Paper: Yin, Tianwei, et al. "Center-based 3D Object Detection and Tracking" CVPR, 2021.