Datasets
Supported datasets
| Class | Layout | Modalities | Notes |
|---|---|---|---|
SemanticKittiDataset |
synchronous | lidar, labels |
Labels masked to lower 16 bits (strips instance IDs) |
Rellis3DDataset |
synchronous | lidar, labels |
Fixed Rellis-3D/ prefix in directory tree |
Goose3DDataset |
synchronous | lidar, labels |
Split directory appears at two levels |
RawDataset |
asynchronous | any channel | Profile-free; channels & loaders from .apairo/channels.yaml. Loads apairo-extractor output |
TartanKittiDataset |
asynchronous | any TartanDrive v2 channel | Fixed channel profile; auto-discovers channels via .apairo |
Synchronous datasets
All three synchronous datasets share the same interface because they all extend ProfiledDataset.
import apairo
# SemanticKITTI
ds = apairo.SemanticKittiDataset("/data/semantic_kitti", keys=["lidar", "labels"])
# GOOSE
ds = apairo.Goose3DDataset("/data/goose", keys=["lidar", "labels"], split="train")
# Rellis-3D
ds = apairo.Rellis3DDataset("/data/rellis", keys=["lidar"])
Constructor parameters
| Parameter | Type | Default | Description |
|---|---|---|---|
root_dir |
str \| Path |
-- | Dataset root directory |
keys |
list[str] \| None |
all non-optional keys | Modalities to load |
split |
str \| None |
None |
Filter by split directory ("train", "val", "test") |
Expected directory layouts
How synchronous datasets work
Each class declares a YAML structural profile that describes the directory layout, file extensions, dtypes, and any type transformations needed. apairo reads the profile at import time and handles discovery, loading, and casting automatically.
See YAML Profiles for the full specification, and Adding a Dataset to create your own.