| --- |
| license: apache-2.0 |
| library_name: torch-pointcloud |
| tags: |
| - point-cloud |
| - 3d |
| - pytorch |
| - torch-pointcloud |
| - second |
| - object-detection |
| datasets: |
| - nuscenes |
| --- |
| |
| # Model card for second-multihead.nuscenes.openpcdet |
|
|
| A SECOND 3D object detection model (sparse convolutional voxel detector). Trained on nuScenes. |
|
|
| ## Model Details |
|
|
| - **Model Type:** 3D object detection |
| - **Model Stats:** |
| - Params (M): 9.0 |
| - Input channels: 5 |
| - Classes: 10 |
| - Features: 512 |
| - **Dataset:** nuScenes |
| - **Paper:** [SECOND: Sparsely Embedded Convolutional Detection](https://www.mdpi.com/1424-8220/18/10/3337) |
| - **Converted from:** [open-mmlab/OpenPCDet](https://github.com/open-mmlab/OpenPCDet) (Apache-2.0) |
| - **Library:** [torch-pointcloud](https://github.com/arthurdjn/pytorch-pointcloud) |
|
|
| ## Install |
|
|
| ```bash |
| pip install torch-pointcloud |
| ``` |
|
|
| This checkpoint also needs `spconv`, which needs a build matching your torch and CUDA: see the [installation guide](https://pytorch-pointcloud.org/installation/). |
|
|
| ## Usage |
|
|
| ```python |
| import torch |
| import torch_pointcloud as tp |
| from torch_pointcloud.utils.data import collate |
| |
| model, info = tp.create_model( |
| "second-multihead.nuscenes.openpcdet", |
| task="detection", |
| pretrained=True, |
| return_info=True, |
| ) |
| model = model.cuda().eval() # GPU-only kernels |
| |
| # synthetic sample with the keys a dataset provides |
| num_points = 8192 |
| sample = { |
| "pos": torch.randn(num_points, 3), |
| "intensity": torch.rand(num_points, 1), |
| "timestamp": torch.zeros(num_points, 1), |
| } |
| data = info["transform"](sample) |
| data = collate([data], batch_from="pos_voxel") |
| data = {key: value.cuda() for key, value in data.items()} |
| |
| with torch.no_grad(): |
| out = model(data["voxel"], data["pos_voxel"], data["voxel_num_points"], data["batch"]) |
| ``` |
|
|
| ## Feature extraction |
|
|
| ```python |
| with torch.no_grad(): |
| features = model.forward_features( |
| data["voxel"], |
| data["pos_voxel"], |
| data["voxel_num_points"], |
| data["batch"], |
| ) # 512 channels |
| ``` |
|
|
| ## Citation |
|
|
| ```bibtex |
| @article{yan2018second, |
| title = {{SECOND}: Sparsely Embedded Convolutional Detection}, |
| author = {Yan, Yan and Mao, Yuxing and Li, Bo}, |
| journal = {Sensors}, |
| volume = {18}, |
| number = {10}, |
| pages = {3337}, |
| year = {2018} |
| } |
| |
| @inproceedings{caesar2020nuscenes, |
| title = {nuScenes: A multimodal dataset for autonomous driving}, |
| author = {Holger Caesar and Varun Bankiti and Alex H. Lang and Sourabh Vora and Venice Erin Liong and Qiang Xu and Anush Krishnan and Yu Pan and Giancarlo Baldan and Oscar Beijbom}, |
| booktitle = {CVPR}, |
| year = {2020} |
| } |
| |
| @software{dujardin2026pytorchpointcloud, |
| author = {Arthur Dujardin}, |
| title = {PyTorch PointCloud}, |
| year = {2026}, |
| doi = {10.5281/zenodo.22159632}, |
| url = {https://github.com/arthurdjn/pytorch-pointcloud}, |
| } |
| ``` |
|
|