File size: 2,828 Bytes
0f5139c
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
f8cb20d
 
0f5139c
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
21b05c7
 
 
 
 
 
 
 
0f5139c
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
---
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},
}
```