Датасет глубины TartanAir#
TartanAir — крупномасштабный синтетический датасет, созданный в симуляторе AirSim. Его разработали, чтобы проверить возможности визуального SLAM; он охватывает множество сред — indoor- и outdoor-сцены, городские и природные ландшафты — при разных сезонах, погоде и освещении, а также в сложных условиях.
Поскольку TartanAir создан в симуляции, для разнообразных сцен в нём доступны плотные эталонные данные о глубине. Это делает датасет ценным источником разнообразия условий среды и геометрии объектов на большом расстоянии для обучения моделей оценки глубины по одному изображению.
Основные особенности#
- Синтетические данные, созданные в симуляторе AirSim.
- Разнообразные indoor- и outdoor-среды (городские и природные) с различиями в сезонах, погоде и освещении, а также сложными условиями.
- Плотные эталонные данные о глубине для всех сцен.
- Диапазон глубины — ~80 м.
- Добавляет 61 470 изображений (55 660 для обучения / 5 810 для валидации) в набор данных Ultralytics для обучения моделей глубины.
Структура набора данных#
Датасет глубины TartanAir разделён на две подвыборки:
- Train: 55 660 изображений с соответствующими плотными картами глубины для обучения.
- Val: 5 810 изображений с соответствующими плотными картами глубины для валидации во время обучения.
Каждому RGB-изображению соответствует PNG-файл глубины в формате uint16 с масштабированными значениями и 256 единицами на метр (depth_scale: 256), как предусмотрено в формате датасетов глубины Ultralytics. Так представляется весь диапазон в 80 м с разрешением 3,90625 мм.
Получение данных#
TartanAir не скачивается автоматически — данные распространяет AirLab при CMU (условия смотри на странице датасета); для скачивания используй скрипты tartanair_tools:
git clone https://github.com/castacks/tartanair_tools && cd tartanair_tools
python download_training.py --output-dir ./data --rgb --depth --only-left --unzipДанные о глубине уже хранятся в формате float32 .npy в метрах (depth_left/*_left_depth.npy рядом с image_left/*_left.png), поэтому достаточно изменить расположение данных и пометить невалидными пиксели неба (которые соответствуют очень большим расстояниям; в опубликованном наборе значения ограничены 80 м, как указано в YAML-файле датасета). В TartanAir нет официального разбиения на обучающую и валидационную выборки — отложи одну или несколько сред. Пример преобразования в формат датасетов глубины 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")Роль в YOLO26-Depth#
TartanAir — один из источников обучающих данных в составе обширного набора из нескольких датасетов (~2.19M изображений), используемого для предобучения моделей Ultralytics YOLO26-Depth. В этом наборе TartanAir добавляет синтетическое разнообразие условий среды и геометрию объектов на большом расстоянии на открытом воздухе, дополняя indoor-данные и реальные данные.
В этой конфигурации нет отдельного бенчмарка TartanAir с отложенной выборкой. Вместо этого полученные модели оцениваются на стандартных бенчмарках глубины по одному изображению: NYU Depth V2, KITTI, Make3D, ETH3D и iBims-1.
Файл YAML набора данных#
Для задания конфигурации датасета используется YAML-файл. В нём указаны пути к данным, классы и другая важная информация. Для TartanAir файл depth-tartanair.yaml задаёт пути и единственный класс 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 rangeИспользование#
Чтобы обучить модель YOLO26n-Depth на датасете TartanAir с размером изображения 640, воспользуйся следующими фрагментами кода. Полный список доступных аргументов смотри на странице обучения модели.
from ultralytics import YOLO
# Загрузить модель
model = YOLO("yolo26n-depth.pt") # загрузить предварительно обученную модель (рекомендуется для обучения)
# Обучить модель
results = model.train(data="depth-tartanair.yaml", epochs=100, imgsz=640)Предварительно обученные модели#
Семейство моделей глубины YOLO26 (yolo26n-depth.pt, yolo26s-depth.pt, yolo26m-depth.pt, yolo26l-depth.pt, yolo26x-depth.pt) автоматически скачивается из релизов Ultralytics и обучается на обширном наборе данных из нескольких датасетов, в который входит TartanAir. Изучи YOLO26x-depth на Ultralytics Platform.
Цитирование и благодарности#
Если ты используешь датасет TartanAir в исследовательской или разработческой работе, укажи следующую статью в списке источников:
@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}
}Благодарим создателей TartanAir за то, что сделали этот разнообразный синтетический датасет доступным для сообщества компьютерного зрения.
Часто задаваемые вопросы#
TartanAir — крупный синтетический датасет, созданный в симуляторе AirSim для тестирования визуального SLAM в сложных условиях. Он охватывает indoor-, outdoor-, городские и природные среды при разном сезоне, погоде и освещении и добавляет в набор данных для обучения YOLO26-Depth 61 470 изображений (55 660 для обучения, 5 810 для валидации) с плотными данными о глубине на расстоянии примерно до 80 м.
TartanAir не скачивается автоматически. Скачай RGB-изображения и данные о глубине с помощью скриптов tartanair_tools, затем преобразуй данные о глубине в формате float32
.npy, заданные в метрах, в PNG-файлы uint16 с помощьюdepth_scale: 256, ограничив значение для пикселей неба за пределами 80 м до0. Отложи одну или несколько сред для валидации, как описано в разделе Получение данных.Запусти
yolo depth train data=depth-tartanair.yaml model=yolo26n-depth.pt epochs=100 imgsz=640или воспользуйся примером на Python из раздела Использование. На странице Обучение перечислены все доступные аргументы.