Documentation

Getting Started

Dataset installation, benchmark repositories, released checkpoints, and commands for training and test-set evaluation.

Download and extract

Point clouds Coming soon
Images Coming soon
Other resources Coming soon

Verify archives

sha256sum -c SHA256SUMS.txt

Extract archives

mkdir -p Semantic-ITC
tar -xf Semantic-ITC_raw-local.tar -C Semantic-ITC

Dataset structure

The dataset contains 52 public sequence IDs, with 37 training, 5 validation, and 10 test sequences.

Semantic-ITC/
└── point_clouds_local_bin/
    ├── train/<sequence_id>/<timestamp>.bin
    ├── val/<sequence_id>/<timestamp>.bin
    ├── test/<sequence_id>/<timestamp>.bin
    └── splits/{train,val,test}.txt

Point clouds use original per-frame LiDAR sensor coordinates (raw-local).

Point format

Each little-endian binary point record occupies 14 bytes without padding.

FieldTypeBytesRange
xfloat324LiDAR coordinate
yfloat324LiDAR coordinate
zfloat324LiDAR coordinate
intensityuint810–255
labeluint810–15

Python reader

import numpy as np

dtype = np.dtype([
    ("x", "<f4"), ("y", "<f4"), ("z", "<f4"),
    ("intensity", "u1"), ("label", "u1"),
], align=False)

points = np.fromfile("frame.bin", dtype=dtype)
xyz = np.stack([points["x"], points["y"], points["z"]], axis=1)
intensity = points["intensity"]
labels = points["label"]

Semantic labels

0 wall, 1 floor, 2 ceiling, 3 column, 4 beam, 5 door, 6 stair, 7 table, 8 chair, 9 sofa, 10 cabinet/shelf, 11 display, 12 light, 13 vegetation, 14 board, 15 other.

Benchmark results

MethodmIoUmAccOA
WaffleIron79.2787.3892.99
PTv378.1988.1093.26
HARP-NeXt75.2084.7192.65
SalsaNext69.8086.8889.64
Cylinder3D69.2977.8191.97

Test-set results in percent.

Benchmark checkpoints

MethodFilenameDownload
WaffleIronwaffleiron_raw_local_best_val_miou.ptComing soon
PTv3ptv3_raw_local_best_val_miou.ptComing soon
HARP-NeXtharpnext_raw_local_best_val_miou.ptComing soon
SalsaNextsalsanext_raw_local_best_val_miou.ptComing soon
Cylinder3Dcylinder3d_raw_local_best_val_miou.ptComing soon

Training and evaluation

Install each method according to its repository README. Semantic-ITC requires no additional dataset-specific package. SalsaNext, WaffleIron, and HARP-NeXt require TensorBoard. Cylinder3D requires a CUDA-compatible spconv installation. Pointcept requires pointops, spconv, and PyTorch Geometric as documented by Pointcept; the provided PTv3 configuration does not require FlashAttention.

Paths

export ITC_CODE_ROOT=/path/to/directory/containing/the/five/repositories
export ITC_RUN_ROOT=/path/to/output/directory
export ITC_CHECKPOINT_ROOT=/path/to/downloaded/checkpoints
export GPU_ID=0

export ITC_COORDINATES=raw_local
export ITC_DATASET=/path/to/point_clouds_local_bin

WaffleIron

Repository ↗

Train

conda activate waffleiron
PROJECT="$ITC_CODE_ROOT/WaffleIron"
RUN_DIR="$ITC_RUN_ROOT/$ITC_COORDINATES/WaffleIron"
cd "$PROJECT"
PYTHONPATH="$PROJECT:${PYTHONPATH:-}" python -u launch_train.py \
  --dataset itc --path_dataset "$ITC_DATASET" --log_path "$RUN_DIR" \
  --config configs/WaffleIron-48-256__itc.yaml \
  --gpu "$GPU_ID" --seed 0 --fp16

Evaluate released checkpoint

CKPT="$ITC_CHECKPOINT_ROOT/waffleiron_${ITC_COORDINATES}_best_val_miou.pt"
TEST_DIR="$ITC_RUN_ROOT/$ITC_COORDINATES/WaffleIron_test_best"
cd "$ITC_CODE_ROOT/WaffleIron"
PYTHONPATH="$PWD:${PYTHONPATH:-}" python -u eval_itc.py \
  --config configs/WaffleIron-48-256__itc.yaml \
  --path_dataset "$ITC_DATASET" --ckpt "$CKPT" --phase test \
  --run_dir "$TEST_DIR" --batch_size 1 --num_workers 8 --fp16

Point Transformer V3

Repository ↗

Train

conda activate pointcept
PROJECT="$ITC_CODE_ROOT/Pointcept"
RUN_DIR="$ITC_RUN_ROOT/$ITC_COORDINATES/PointTransformerV3"
cd "$PROJECT"
PYTHONPATH="$PROJECT:${PYTHONPATH:-}" python -u tools/train.py \
  --num-gpus 1 --config-file configs/itc/semseg-pt-v3m1-0-itc.py \
  --options save_path="$RUN_DIR" data.train.data_root="$ITC_DATASET" \
    data.val.data_root="$ITC_DATASET" data.test.data_root="$ITC_DATASET"

Evaluate released checkpoint

CKPT="$ITC_CHECKPOINT_ROOT/ptv3_${ITC_COORDINATES}_best_val_miou.pt"
TEST_DIR="$ITC_RUN_ROOT/$ITC_COORDINATES/PointTransformerV3_test_best"
cd "$ITC_CODE_ROOT/Pointcept"
PYTHONPATH="$PWD:${PYTHONPATH:-}" python -u tools/test.py \
  --num-gpus 1 --config-file configs/itc/semseg-pt-v3m1-0-itc.py \
  --options save_path="$TEST_DIR" weight="$CKPT" \
    data.test.data_root="$ITC_DATASET" data.test.split=test

Train

conda activate harpnext
PROJECT="$ITC_CODE_ROOT/HARPNeXt"
RUN_DIR="$ITC_RUN_ROOT/$ITC_COORDINATES/HARPNeXt"
cd "$PROJECT"
PYTHONPATH="$PROJECT:${PYTHONPATH:-}" python -u main.py \
  --net harpnext --dataset itc --path_dataset "$ITC_DATASET" \
  --mainconfig configs/main/main-config-itc.yaml \
  --netconfig configs/net/harpnext-itc.yaml --log_path "$RUN_DIR" \
  --gpu "$GPU_ID" --seed 0 --fp16

Evaluate released checkpoint

CKPT="$ITC_CHECKPOINT_ROOT/harpnext_${ITC_COORDINATES}_best_val_miou.pt"
TEST_DIR="$ITC_RUN_ROOT/$ITC_COORDINATES/HARPNeXt_test_best"
cd "$ITC_CODE_ROOT/HARPNeXt"
PYTHONPATH="$PWD:${PYTHONPATH:-}" python -u main.py \
  --net harpnext --dataset itc --path_dataset "$ITC_DATASET" \
  --mainconfig configs/main/main-config-itc.yaml \
  --netconfig configs/net/harpnext-itc.yaml --log_path "$TEST_DIR" \
  --checkpoint "$CKPT" --gpu "$GPU_ID" --seed 0 --fp16 \
  --eval --eval-phase test --restart

Train

conda activate salsanext
PROJECT="$ITC_CODE_ROOT/SalsaNext"
RUN_DIR="$ITC_RUN_ROOT/$ITC_COORDINATES/SalsaNext"
cd "$PROJECT/train/tasks/semantic"
python -u train.py --dataset "$ITC_DATASET" \
  --arch_cfg "$PROJECT/salsanext_itc.yaml" \
  --data_cfg "$PROJECT/train/tasks/semantic/config/labels/itc.yaml" \
  --log "$RUN_DIR" --name "salsanext_itc_${ITC_COORDINATES}" \
  --run-dir-exact

Evaluate released checkpoint

CKPT="$ITC_CHECKPOINT_ROOT/salsanext_${ITC_COORDINATES}_best_val_miou.pt"
TEST_DIR="$ITC_RUN_ROOT/$ITC_COORDINATES/SalsaNext_test_best"
PROJECT="$ITC_CODE_ROOT/SalsaNext"
cd "$PROJECT"
python -u eval_itc.py --dataset "$ITC_DATASET" \
  --arch-cfg "$PROJECT/salsanext_itc.yaml" \
  --data-cfg "$PROJECT/train/tasks/semantic/config/labels/itc.yaml" \
  --checkpoint "$CKPT" --run-dir "$TEST_DIR" --split test --workers 8

Cylinder3D

Repository ↗

Train

conda activate cylinder3d
PROJECT="$ITC_CODE_ROOT/Cylinder3D"
RUN_DIR="$ITC_RUN_ROOT/$ITC_COORDINATES/Cylinder3D"
cd "$PROJECT"
python -u train_cylinder_asym.py -y config/itc.yaml \
  --dataset-root "$ITC_DATASET" --run-dir "$RUN_DIR" --seed 0

Evaluate released checkpoint

CKPT="$ITC_CHECKPOINT_ROOT/cylinder3d_${ITC_COORDINATES}_best_val_miou.pt"
TEST_DIR="$ITC_RUN_ROOT/$ITC_COORDINATES/Cylinder3D_test_best"
cd "$ITC_CODE_ROOT/Cylinder3D"
python -u eval_itc.py -y config/itc.yaml \
  --dataset-root "$ITC_DATASET" --checkpoint "$CKPT" \
  --run-dir "$TEST_DIR" --split test --batch-size 1 --num-workers 8