Skip to content

Datasets

pytorch-pointcloud-mini - torch-pointcloud Project mark of torch-pointcloud. Arthur Dujardin Copyright (c) 2024-2026 Arthur Dujardin https://github.com/arthurdjn/pytorch-pointcloud 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 pytorch-pointcloud-mini - torch-pointcloud Project mark of torch-pointcloud. Arthur Dujardin Copyright (c) 2024-2026 Arthur Dujardin https://github.com/arthurdjn/pytorch-pointcloud 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

  • Classification

    ModelNet and ScanObjectNN: meshes, presampled clouds, difficulty variants.

  • Segmentation

    Indoor rooms and outdoor LiDAR, their splits, and the label conventions.

  • Part segmentation

    ShapeNetPart: 16 categories, 50 global part ids.

  • Detection

    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

Dataset Paper Frames Classes
SemanticKITTI SemanticKITTI: A Dataset for Semantic Scene Understanding of LiDAR Sequences 43k frames 19
Semantic3D Semantic3D.net: A new Large-scale Point Cloud Classification Benchmark 30 scenes 8
Toronto3D Toronto-3D: A Large-scale Mobile LiDAR Dataset for Semantic Segmentation of Urban Roadways 4 areas 8
ParisLille3D Paris-Lille-3D: a large and high-quality ground truth urban point cloud dataset for automatic segmentation and classification 3 scenes 9

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).