Skip to content

dales

The DALES dataset.

First page of DALES: A Large-scale Aerial LiDAR Data Set for Semantic Segmentation

2004.11985 · April 2020

DALES: A Large-scale Aerial LiDAR Data Set for Semantic Segmentation by Nina Varney, Vijayan K. Asari, Quinn Graehling.

40 aerial LiDAR tiles of 500 x 500 m over the City of Surrey, British Columbia (UTM zone 10N), labelled with eight classes: 29 tiles for training and 11 for testing. The LAS release ships one .las file per tile.

Classes:

  • DALES –

    The DALES dataset.

Functions:

DALES [source] ¶

DALES(
    root: PathLike,
    *,
    train: bool = True,
    transform: Optional[
        Callable[[Dict[str, Any]], Dict[str, Any]]
    ] = None,
)

Bases: PointCloudDataset

The DALES dataset.

Each sample is one 500 x 500 m tile, returned as a dictionary:

Key Shape Dtype Meaning
pos \((N, 3)\) float32 UTM zone 10N metres, minus the tile's minimum corner
return_number \((N, 1)\) int64 Return number, 1-based
number_of_returns \((N, 1)\) int64 Number of returns of the pulse
segment \((N,)\) int64 Raw class id, 0-8 (0 = unknown, ignored)
name str Tile file name without extension

Reading the LAS files needs the optional laspy package.

Parameters:

  • root (PathLike) –

    Dataset root. Tiles are read from <root>/DALES/raw/dales_las/<split>/<tile>.las, the layout of the dales_semantic_segmentation_las.tar.gz archive extracted under raw/.

  • train (bool, default: True ) –

    Whether to load the 29 training tiles (the default) or the 11 test tiles.

  • transform (Optional[Callable[[Dict[str, Any]], Dict[str, Any]]], default: None ) –

    Callable applied to each loaded sample dict at __getitem__ time.

Note

The raw dataset must be requested from the authors (the download form linked from data_url; the data are released under CC BY 3.0 for non-commercial use) and extracted by hand. The expected layout is <root>/DALES/raw/dales_las/{train,test}/<tile>.las.

Example
from torch_pointcloud.datasets import DALES

dataset = DALES(root="data", train=False)
sample = dataset[0]

Methods:

  • download –

    DALES must be requested from the authors and downloaded by hand.

Attributes:

  • split (str) –

    Name of the split directory, "train" or "test".

  • split_dir (str) –

    Directory holding the .las tiles of the split.

  • name (str) –

    Name of the dataset directory.

  • data_dir (str) –

    Path to the dataset directory <root>/<name>.

  • raw_dir (str) –

    Path to the raw download directory.

  • processed_dir (str) –

    Path to the processed cache directory.

split property ¶

split: str

Name of the split directory, "train" or "test".

split_dir property ¶

split_dir: str

Directory holding the .las tiles of the split.

name property ¶

name: str

Name of the dataset directory.

data_dir property ¶

data_dir: str

Path to the dataset directory <root>/<name>.

raw_dir property ¶

raw_dir: str

Path to the raw download directory.

processed_dir property ¶

processed_dir: str

Path to the processed cache directory.

download [source] ¶

download(force: bool = False) -> None

DALES must be requested from the authors and downloaded by hand.

Parameters:

  • force (bool, default: False ) –

    Unused; present to mirror the other datasets' download signature.

Raises:

  • RuntimeError –

    Always; automatic download is not supported.

load_dales_data [source] ¶

load_dales_data(path: PathLike) -> Dict[str, Tensor]

Read a DALES LAS tile.

Positions are returned relative to the minimum corner of the tile, subtracted in float64, so that the UTM coordinates (northings around \(5.4 \cdot 10^6\) m, where float32 resolves 0.5 m) keep their centimetre precision.

Key Shape Dtype
pos \((N, 3)\) float32
return_number \((N, 1)\) int64
number_of_returns \((N, 1)\) int64
segment \((N,)\) int64

Parameters:

  • path (PathLike) –

    Path to a .las file.

Returns:

  • Dict[str, Tensor] –

    The point attributes, keyed by DataKeys. segment holds the raw class ids 0-8.