Dataset di profondità TartanAir#
TartanAir è un dataset sintetico su larga scala generato nel simulatore AirSim. È stato creato per spingere oltre i limiti dello SLAM visivo e include un'ampia varietà di ambienti — interni, esterni, urbani e naturali — con variazioni stagionali, meteorologiche e di illuminazione, oltre a condizioni impegnative.
Poiché TartanAir viene renderizzato in simulazione, fornisce una ground truth densa della profondità per questa varietà di scene, diventando un'importante fonte di diversità ambientale e geometria a lungo raggio per l'addestramento di modelli di stima monoculare della profondità.
Funzionalità principali#
- Dati sintetici generati nel simulatore AirSim.
- Diversi ambienti indoor e outdoor (urbani e naturali), con variazioni stagionali, meteorologiche e di illuminazione, oltre a condizioni impegnative.
- Ground truth densa della profondità in tutte le scene.
- Intervallo di profondità fino a ~80 m.
- Aggiunge 61,470 immagini (55,660 per l'addestramento / 5,810 per la validazione) al mix di addestramento della profondità di Ultralytics.
Struttura del dataset#
Il dataset di profondità TartanAir è suddiviso in due sottoinsiemi:
- Train: 55,660 immagini con mappe dense di profondità abbinate per l'addestramento.
- Val: 5,810 immagini con mappe dense di profondità abbinate per la validazione durante l'addestramento.
Ogni immagine RGB è abbinata a una PNG di profondità uint16 scalata con 256 unità per metro (depth_scale: 256), secondo il formato dei dataset di profondità Ultralytics. Questo rappresenta l'intervallo completo di 80 m con una risoluzione di 3.90625 mm.
Recuperare i dati#
TartanAir non prevede il download automatico: i dati sono distribuiti da AirLab della CMU (consulta la pagina del dataset per le condizioni) e si scaricano con gli script tartanair_tools:
git clone https://github.com/castacks/tartanair_tools && cd tartanair_tools
python download_training.py --output-dir ./data --rgb --depth --only-left --unzipLa profondità è già memorizzata come float32 .npy in metri (depth_left/*_left_depth.npy accanto a image_left/*_left.png), quindi la conversione consiste solo nel riordinamento e nell'invalidazione del cielo (renderizzato come distanze estreme; il mix distribuito limita i valori a 80 m per uniformarsi al file YAML del dataset). TartanAir non fornisce una suddivisione di validazione ufficiale: riserva uno o più ambienti. Conversione di riferimento al formato dei dataset di profondità Ultralytics:
import shutil
from pathlib import Path
import numpy as np
from ultralytics.data.utils import save_depth_png
VAL_ENVS = {"neighborhood"} # environments held out for validation
src, dst = Path("data"), Path("datasets/depth-tartanair")
for depth_file in sorted(src.rglob("depth_left/*_left_depth.npy")):
env, level, traj = depth_file.parts[-5:-2] # e.g. neighborhood, Easy, P000
out = "val" if env.lower() in VAL_ENVS else "train"
(dst / f"images/{out}").mkdir(parents=True, exist_ok=True)
(dst / f"depth/{out}").mkdir(parents=True, exist_ok=True)
depth = np.load(depth_file)
depth[depth > 80.0] = 0.0 # sky/extreme range → 0 = invalid
frame = depth_file.name.replace("_depth.npy", "") # e.g. 000000_left
name = f"{env}_{level}_{traj}_{frame}" # Easy and Hard reuse trajectory names such as P000
save_depth_png(dst / f"depth/{out}/{name}.png", depth, scale=256)
shutil.copy(depth_file.parents[1] / "image_left" / f"{frame}.png", dst / f"images/{out}/{name}.png")Ruolo in YOLO26-Depth#
TartanAir è una delle fonti di addestramento nel vasto mix composto da più dataset (~2.19M immagini) usato per il pretraining dei modelli Ultralytics YOLO26-Depth. In questo mix, TartanAir contribuisce con diversità ambientale sintetica e geometria outdoor a lungo raggio, complementari alle fonti indoor e del mondo reale.
In questa configurazione non esiste un benchmark TartanAir autonomo con dati esclusi dall'addestramento. I modelli risultanti vengono invece valutati sui benchmark standard per la profondità monoculare: NYU Depth V2, KITTI, Make3D, ETH3D e iBims-1.
YAML del dataset#
Per definire la configurazione del dataset si usa un file YAML. Contiene informazioni sui percorsi del dataset, sulle classi e su altri elementi pertinenti. Per TartanAir, il file depth-tartanair.yaml definisce i percorsi e l'unica classe depth.
# Ultralytics 🚀 AGPL-3.0 License - https://ultralytics.com/license
# TartanAir dataset for monocular depth estimation — synthetic indoor + outdoor (AirSim), dense depth up to ~80 m
# Documentation: https://docs.ultralytics.com/datasets/depth/tartanair
# Example usage: yolo depth train data=depth-tartanair.yaml model=yolo26n-depth.pt
# No autodownload — obtain the source data (see docs) and arrange it as below.
# parent
# ├── ultralytics
# └── datasets
# └── depth-tartanair
# ├── images/{train,val} # RGB images
# └── depth/{train,val} # paired 16-bit *.png depth maps (images/ -> depth/)
path: depth-tartanair # dataset root dir (relative to Ultralytics settings 'datasets_dir')
train: images/train # train images (relative to 'path') 55660 images
val: images/val # val images (relative to 'path') 5810 images
max_depth: 80 # (m) maximum valid depth; GT beyond this is excluded from val metrics
nc: 1
names:
0: depth
channels: 3
depth_scale: 256 # PNG value 256 = 1 meter; represents the 80 m outdoor rangeUtilizzo#
Per addestrare un modello YOLO26n-Depth sul dataset TartanAir con una dimensione dell'immagine di 640, puoi usare i seguenti frammenti di codice. Per un elenco completo degli argomenti disponibili, consulta la pagina Addestramento del modello.
from ultralytics import YOLO
# Carica un modello
model = YOLO("yolo26n-depth.pt") # carica un modello preaddestrato (consigliato per l'addestramento)
# Addestra il modello
results = model.train(data="depth-tartanair.yaml", epochs=100, imgsz=640)Modelli preaddestrati#
La famiglia YOLO26 depth (yolo26n-depth.pt, yolo26s-depth.pt, yolo26m-depth.pt, yolo26l-depth.pt, yolo26x-depth.pt) viene scaricata automaticamente dalle release di Ultralytics ed è addestrata sul vasto mix composto da più dataset, di cui TartanAir fa parte. Esplora YOLO26x-depth su Ultralytics Platform.
Citazioni e ringraziamenti#
Se usi il dataset TartanAir nella tua attività di ricerca o sviluppo, cita il seguente articolo:
@inproceedings{wang2020tartanair,
title={TartanAir: A Dataset to Push the Limits of Visual SLAM},
author={Wenshan Wang and Delong Zhu and Xiangwei Wang and Yaoyu Hu and Yuheng Qiu and Chen Wang and Yafei Hu and Ashish Kapoor and Sebastian Scherer},
booktitle={IEEE/RSJ International Conference on Intelligent Robots and Systems (IROS)},
year={2020}
}Desideriamo ringraziare i creatori di TartanAir per aver messo questo variegato dataset sintetico a disposizione della comunità della computer vision.
Domande frequenti#
TartanAir è un grande dataset sintetico renderizzato nel simulatore AirSim, creato originariamente per mettere alla prova lo SLAM visivo. Include ambienti interni, esterni, urbani e naturali in condizioni variabili di stagione, meteo e illuminazione e aggiunge al mix di addestramento YOLO26-Depth 61,470 immagini (55,660 per l'addestramento, 5,810 per la validazione) con profondità densa fino a circa 80 m.
TartanAir non prevede il download automatico. Scarica i dati RGB e di profondità con gli script tartanair_tools, poi converti la profondità float32
.npyin metri in PNG uint16 condepth_scale: 256, limitando a0i pixel del cielo oltre gli 80 m. Riserva uno o più ambienti per la validazione, come illustrato in Ottenere i dati.Esegui
yolo depth train data=depth-tartanair.yaml model=yolo26n-depth.pt epochs=100 imgsz=640oppure usa l'esempio Python nella sezione Utilizzo. La pagina Addestramento elenca tutti gli argomenti disponibili.