Датасет глубины ARKitScenes#
ARKitScenes — это крупномасштабный RGB-D-датасет реальных комнатных сцен, собранный с помощью Apple ARKit на устройствах iPad Pro, оснащённых LiDAR-сканером. Это крупнейший в своём роде RGB-D-датасет реальных комнатных сцен, содержащий разнообразные естественно снятые помещения с точной эталонной разметкой глубины для оценки глубины по монокулярным изображениям.
Ключевые особенности#
- Собран с помощью LiDAR-сканера и RGB-камеры Apple ARKit на iPad Pro, что обеспечивает получение реальных, а не синтетических данных с сенсоров.
- Содержит разнообразные комнатные сцены для 3D-понимания помещений.
- Небольшой диапазон глубины — примерно 0,5–6 м (медиальная максимальная глубина около 2,4 м), характерный для съёмки помещений с рук.
- Плотная эталонная разметка глубины, полученная с помощью LiDAR и выровненная относительно RGB-кадров.
- Крупнейший отдельный источник реальных данных в составе смеси датасетов для предварительного обучения моделей глубины Ultralytics.
Структура датасета#
Датасет глубины ARKitScenes разделён на два поднабора:
- Train: 676 080 изображений с соответствующими картами глубины для обучения.
- Val: 21 559 изображений с соответствующими картами глубины для валидации во время обучения модели.
Каждый пример состоит из одного RGB-изображения и одной соответствующей PNG-карты глубины uint16 в миллиметрах (depth_scale: 1000), согласно формату датасетов глубины Ultralytics.
Получение данных#
ARKitScenes не поддерживает автоматическую загрузку — данные распространяет Apple, а для их загрузки необходимо принять условия лицензии в репозитории ARKitScenes. Клонируй репозиторий и загрузи поднабор depth-upsampling, в котором RGB-кадры сопоставлены с зарегистрированной глубиной:
git clone https://github.com/apple/ARKitScenes && cd ARKitScenes
python3 download_data.py upsampling --split Training --download_dir ./data
python3 download_data.py upsampling --split Validation --download_dir ./dataКадры глубины представлены PNG-файлами uint16 в миллиметрах (0 = недопустимое значение), а имена RGB-файлов и файлов глубины содержат временные метки съёмки, которые не совпадают точно, поэтому сопоставляй каждый кадр глубины с RGB-кадром с ближайшей временной меткой. Пример преобразования в формат датасетов глубины Ultralytics:
import shutil
from pathlib import Path
import cv2
src, dst = Path("data/upsampling"), Path("datasets/depth-arkitscenes")
for split, out in (("Training", "train"), ("Validation", "val")):
(dst / f"images/{out}").mkdir(parents=True, exist_ok=True)
(dst / f"depth/{out}").mkdir(parents=True, exist_ok=True)
for video in sorted((src / split).iterdir()):
rgbs = {float(p.stem.split("_")[-1]): p for p in (video / "lowres_wide").glob("*.png")}
if not rgbs:
continue
for depth_png in sorted((video / "lowres_depth").glob("*.png")):
t = float(depth_png.stem.split("_")[-1])
rgb = rgbs[min(rgbs, key=lambda k: abs(k - t))] # nearest-timestamp RGB frame
name = f"{video.name}_{depth_png.stem}"
shutil.copy2(depth_png, dst / f"depth/{out}/{name}.png")
cv2.imwrite(str(dst / f"images/{out}/{name}.png"), cv2.imread(str(rgb)))Роль в YOLO26-Depth#
ARKitScenes — это источник обучающих данных в составе многодатасетной смеси для предварительного обучения Ultralytics YOLO26-Depth, содержащей около 2,19 млн пар «изображение–глубина». Будучи крупнейшим отдельным источником реальных данных в этой смеси, он предоставляет большое количество реальных данных о глубине помещений, полученных с помощью LiDAR, и обеспечивает высокую точность модели на небольших расстояниях в комнатных сценах. Полученные модели оцениваются на стандартных бенчмарках NYU, KITTI, Make3D, ETH3D и iBims-1.
YAML датасета#
Файл YAML используется для определения конфигурации датасета. Он содержит информацию о путях датасета, классах и другую актуальную информацию.
# Ultralytics 🚀 AGPL-3.0 License - https://ultralytics.com/license
# ARKitScenes dataset for monocular depth estimation — real indoor RGB-D from Apple ARKit (iPad Pro LiDAR), depth ~0.5-6 m
# Documentation: https://docs.ultralytics.com/datasets/depth/arkitscenes
# Example usage: yolo depth train data=depth-arkitscenes.yaml model=yolo26n-depth.pt
# No autodownload — obtain the source data (see docs) and arrange it as below.
# parent
# ├── ultralytics
# └── datasets
# └── depth-arkitscenes
# ├── images/{train,val} # RGB images
# └── depth/{train,val} # paired 16-bit *.png depth maps (images/ -> depth/)
path: depth-arkitscenes # dataset root dir (relative to Ultralytics settings 'datasets_dir')
train: images/train # train images (relative to 'path') 676080 images
val: images/val # val images (relative to 'path') 21559 images
nc: 1
names:
0: depth
channels: 3Использование#
Чтобы обучить модель YOLO26n-depth на датасете ARKitScenes с размером изображения 640, можно использовать следующие фрагменты кода. Полный список доступных аргументов приведён на странице обучения модели.
from ultralytics import YOLO
# Load a model
model = YOLO("yolo26n-depth.pt") # load a pretrained depth model (recommended for training)
# Train the model
results = model.train(data="depth-arkitscenes.yaml", epochs=100, imgsz=640)Предварительно обученные модели#
Семейство моделей глубины YOLO26 обучается на широкой многодатасетной смеси данных для предварительного обучения глубины, частью которой является ARKitScenes. Эти модели автоматически загружаются из последнего релиза Ultralytics, например YOLO26x-depth из v8.4.0, и представлены в разных размерах для различных требований к точности и ресурсам.
Цитирование и благодарности#
Если ты используешь датасет ARKitScenes в исследовательской или разработческой работе, пожалуйста, процитируй следующую статью:
@inproceedings{baruch2021arkitscenes,
title={ARKitScenes: A Diverse Real-World Dataset for 3D Indoor Scene Understanding Using Mobile RGB-D Data},
author={Baruch, Gilad and Chen, Zhuoyuan and Dehghan, Afshin and Dimry, Tal and Feigin, Yuri and Fu, Peter and Gebauer, Thomas and Joffe, Brandon and Kurz, Daniel and Schwartz, Arik and Shulman, Elad},
booktitle={Thirty-fifth Conference on Neural Information Processing Systems Datasets and Benchmarks Track},
year={2021}
}Мы хотели бы выразить признательность авторам за создание и поддержку этого ценного ресурса для сообщества компьютерного зрения.
Часто задаваемые вопросы#
ARKitScenes является крупнейшим реальным источником в претренировочном миксе YOLO26-Depth, содержащем примерно 2,19 млн изображений, и вносит 676 080 тренировочных и 21 559 валидационных изображений, снятых с помощью LiDAR-сканера устройств Apple iPad Pro. Плотная глубина в помещениях ARKitScenes обеспечивает точность на коротких дистанциях для выпущенных моделей, которые затем оцениваются на NYU Depth V2, KITTI, ETH3D, Make3D и iBims-1.
Для ARKitScenes нет автоматической загрузки. Прими условия лицензии в репозитории ARKitScenes, скачай подмножество апсемплинга глубины с помощью официального скрипта
download_data.pyи сопоставь каждый кадр глубины с ближайшим по временной метке RGB-кадром с помощью скрипта конвертации в разделе Obtain the Data. Результат соответствует стандартной структуре глубины Ultralytics с 16-битными изображениями PNG (uint16) в миллиметрах.