Project page · Dataset download
Behari, N., Rivero, D., Apostolides, L., Ghosh, S., Liang, P. P., & Raskar, R. DENALI: A Dataset Enabling Non-Line-of-Sight Spatial Reasoning with Low-Cost LiDARs. CVPR 2026 (Highlight).
DENALI is a dataset and benchmark for non-line-of-sight (NLOS) perception using low-cost SPAD LiDARs. It captures 30 retroreflective objects across two sizes, two grid resolutions (3x3 / 8x8), two lighting conditions, and 100 gantry locations, with calibrated AprilTag poses for both the SPAD and a tracking RGB camera. This repository contains end-to-end code for capture, training, evaluation, real-time inference, and a Mitsuba 3 digital-twin renderer; the captured dataset is downloaded separately (see below).
A low-cost SPAD LiDAR illuminates a relay wall; the third-bounce return in each pixel histogram (the small bumps after the direct-return peak) carries enough signal for compact 1D-CNNs to localize, classify, and size-classify the hidden object.
The dataset spans 30 retroreflective shapes (10 letters, 10 numbers, 10 shapes) at two sizes (4 in. / 8 in.), with CAD meshes for digital-twin rendering.
denali/
├── README.md
├── assets/ shared geometry and calibration
├── benchmark/ main + generalization benchmarks
├── capture/ SPAD + RealSense capture rig
├── digitaltwin/ Mitsuba 3 digital-twin renderer
├── gui/ live-inference web app
└── denali-data/ raw NLOS captures (download separately)
Each top-level package has its own README and dependency file.
Tip
Download denali-dataset-cvpr2026.tar.gz from the
project page and extract it
inside denali/.
cd denali
tar xzf /path/to/denali-dataset-cvpr2026.tar.gzThe archive expands to a denali-data/ folder; every package in this
repo reads from denali-data/data/ by default:
denali/denali-data/data/
├── A_4inch_3x3_lighton_NLOSdata/
├── A_4inch_3x3_lightoff_NLOSdata/
├── ... (one folder per object × size × grid × light)
└── widerectangle_8inch_8x8_lighton_NLOSdata/
benchmark/ reads from a pre-extracted dataset at
benchmark/saved_dataset/. Build it once from the raw captures:
cd benchmark
python -m main_table.scripts.build_dataset \
--data-dir ../denali-data/data \
--output-dir saved_dataset| Folder | Purpose |
|---|---|
benchmark/ |
Main benchmark table (Sec. 4) and generalization analyses (Sec. 7). |
capture/ |
Drives the gantry, the TMF8828 SPAD, and the dual RealSenses to record the raw captures in denali-data/data/. |
digitaltwin/ |
Renders the calibrated capture scene in Mitsuba 3 alongside the captured RGB and SPAD histogram. |
gui/ |
Dash + Plotly web app that runs the three inference heads live over any capture in denali-data/data/. |
assets/ contains shared geometry, calibration data, object meshes, and
figures used in this README.
The Dash app in gui/ runs the three pretrained inference heads
(object class, object size, and 2D location) live over the captured 3x3
SPAD histograms:
@inproceedings{behari2026denali,
title = {{DENALI}: A Dataset Enabling Non-Line-of-Sight Spatial Reasoning with Low-Cost LiDARs},
author = {Behari, Nikhil and Rivero, Diego and Apostolides, Luke and Ghosh, Suman and Liang, Paul Pu and Raskar, Ramesh},
booktitle = {Proceedings of the IEEE/CVF Conference on Computer Vision and Pattern Recognition (CVPR)},
year = {2026},
}


