Datasets¶
torch-pointcloud provides several datasets for benchmarking and training. Each dataset returns a single dict (the format consumed by transforms) and integrates with torch.utils.data.DataLoader via the collate helper in torch_pointcloud.utils.data.
Each dataset contains a download parameter (when possible) to automatically download the dataset. Datasets are organized in a raw (containing the raw data) and a processed (containing preprocessed data by
torch-pointcloud) directory as follows:
data
├── ModelNet40
│ ├── raw
│ │ ├── airplane
│ │ ├── bathtub
│ │ ├── ...
│ │ └── xbox
│ └── processed
│ ├── train.pt
│ └── test.pt
└── ...
To use them:
from torch.utils.data import DataLoader
from torch_pointcloud.datasets import ModelNet40
from torch_pointcloud.utils.data import collate
dataset = ModelNet40(root="data", train=True, download=True)
dataloader = DataLoader(dataset, batch_size=32, collate_fn=collate)
PointCloudDataLoader is the same DataLoader with the collate helper already applied.
from torch_pointcloud.utils.data import PointCloudDataLoader
from torch_pointcloud.datasets import ModelNet40
dataset = ModelNet40(root="data", train=True, download=True)
dataloader = PointCloudDataLoader(dataset, batch_size=32)
Tasks¶
-
ModelNet and ScanObjectNN: meshes, presampled clouds, difficulty variants.
-
Indoor rooms and outdoor LiDAR, their splits, and the label conventions.
-
ShapeNetPart: 16 categories, 50 global part ids.
-
SUN RGB-D, KITTI, nuScenes, and batching ragged boxes.
Object classification¶
| Dataset | Paper | Samples | Classes |
|---|---|---|---|
| ModelNet10 / ModelNet40 | 3D ShapeNets: A Deep Representation for Volumetric Shapes | ~12k | 10 / 40 |
| ModelNet40Hdf5 | PointNet: Deep Learning on Point Sets for 3D Classification and Segmentation | ~12k | 40 |
| ShapeNetPart | A Scalable Active Framework for Region Annotation in 3D Shape Collections | ~16k | 16 categories / 50 parts |
| ScanObjectNN | Revisiting Point Cloud Classification: A New Benchmark Dataset and Classification Model on Real-World Data | 2.9k | 15 |
Indoor scene segmentation¶
| Dataset | Paper | Scenes | Classes |
|---|---|---|---|
| S3DIS | 3D Semantic Parsing of Large-Scale Indoor Spaces | 271 rooms, 6 areas | 13 |
| ScanNet v2 | ScanNet: Richly-annotated 3D Reconstructions of Indoor Scenes | 1.5k scenes | 20 (NYU40) / 200 |
Outdoor / driving segmentation¶
Base class¶
| Dataset | Task | Notes |
|---|---|---|
| PointCloudDataset | (any) | Abstract base class all loaders build on: raw/ + processed/ disk layout, download / process hooks. Subclass it for custom data. |
About dict keys¶
All datasets emit dicts using the standard key conventions from DataKeys in torch_pointcloud.utils.data:
| Key | Shape | Description |
|---|---|---|
pos |
\((N, 3)\) | 3D coordinates |
color |
\((N, 3)\) | RGB (uint8 or float, depending on dataset) |
normal |
\((N, 3)\) | Surface normals (when available) |
segment |
\((N,)\) | Semantic labels (segmentation datasets) |
instance |
\((N,)\) | Instance IDs (ScanNet) |
label |
scalar | Object class (classification datasets) |
face |
\((F, 3)\) | Triangle indices (ModelNet / mesh datasets) |
After collate, per-point tensors are concatenated along axis 0 and a batch key of shape \((N,)\) gives each point's source scene.
Color conventions vary per dataset
color is uint8 in \([0, 255]\) for the raw-value loaders (S3DIS, ScanNet, Toronto3D, Semantic3D, SunRGBD) and float32 in \([0, 1]\) for S3DISHdf5, which ships pre-normalized values.
Ignore-index conventions vary per dataset
Unlabeled points use label 0 (<unk> / outdoor conventions, e.g. ScanNet), -1 (indoor no-instance and class-subset remaps, e.g. S3DIS), or 255 (the SemanticKITTI remap example).