Skip to content

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.