| --- |
| license: apache-2.0 |
| library_name: torch-pointcloud |
| tags: |
| - point-cloud |
| - 3d |
| - pytorch |
| - torch-pointcloud |
| - second |
| - object-detection |
| datasets: |
| - kitti |
| model-index: |
| - name: second.kitti.openpcdet |
| results: |
| - task: |
| type: 3d-object-detection |
| dataset: |
| name: KITTI |
| type: kitti |
| metrics: |
| - name: mAP |
| type: map |
| value: 66.26 |
| --- |
| |
| # Model card for second.kitti.openpcdet |
|
|
| A SECOND 3D object detection model (sparse convolutional voxel detector). Trained on KITTI. |
|
|
| ## Model Details |
|
|
| - **Model Type:** 3D object detection |
| - **Model Stats:** |
| - Params (M): 5.3 |
| - Input channels: 4 |
| - Classes: 3 |
| - Features: 512 |
| - **Dataset:** KITTI |
| - **Metrics:** mAP 66.26 (reference 66.25) |
| - **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.kitti.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), |
| } |
| 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{geiger2012kitti, |
| title = {Are we ready for Autonomous Driving? The {KITTI} Vision Benchmark Suite}, |
| author = {Geiger, Andreas and Lenz, Philip and Urtasun, Raquel}, |
| booktitle = {CVPR}, |
| year = {2012} |
| } |
| |
| @software{dujardin2026pytorchpointcloud, |
| author = {Arthur Dujardin}, |
| title = {PyTorch PointCloud}, |
| year = {2026}, |
| doi = {10.5281/zenodo.22159632}, |
| url = {https://github.com/arthurdjn/pytorch-pointcloud}, |
| } |
| ``` |
|
|