Ultralytics YOLO27:

Набор данных ARKitScenes для оценки глубины#

ARKitScenes — это крупномасштабный RGB-D набор данных реальных сцен в помещениях, собранный с помощью ARKit от Apple на устройствах iPad Pro со сканером LiDAR. Это крупнейший в своём роде RGB-D набор данных реальных сцен в помещениях: он содержит разнообразные естественно снятые сцены с точной эталонной разметкой глубины для монокулярной оценки глубины.

Основные особенности#

  • Данные сняты с помощью сканера LiDAR и RGB-камеры ARKit от Apple на iPad Pro; это реальные данные датчиков, а не синтетические.
  • Набор охватывает разнообразные сцены в помещениях для понимания трёхмерных сцен в помещениях.
  • Небольшой диапазон глубины — примерно 0,5–6 м (медианная максимальная глубина около 2,4 м), характерный для съёмки в помещении с рук.
  • Плотная эталонная глубина, полученная с помощью LiDAR и согласованная с кадрами RGB.
  • Крупнейший реальный источник данных в составе смеси для предварительного обучения глубины Ultralytics.

Структура набора данных#

Датасет глубины ARKitScenes разделён на две подвыборки:

  1. Train: 676 080 изображений с соответствующими картами глубины для обучения.
  2. Val: 21 559 изображений с соответствующими картами глубины для валидации во время обучения модели.

Каждый пример состоит из одного изображения RGB и соответствующего PNG-файла глубины uint16 в миллиметрах (depth_scale: 1000) в соответствии с форматом датасета глубины Ultralytics. Указанные количества относятся к подвыборке, использованной для выпущенных моделей: она сформирована из 4 347 из 4 520 обучающих видео и 102 из 551 валидационного видео; преобразование полных выборок даёт больше пар.

Получение данных#

Для ARKitScenes нет автоматической загрузки: данные распространяет Apple, а для их скачивания нужно принять условия лицензии в репозитории ARKitScenes. Клонируй репозиторий и скачай ресурсы lowres_wide (RGB) и lowres_depth из подвыборки raw, которая включает полные выборки из 4 520 обучающих и 551 валидационного видео. Список видео обязателен: если передать CSV-файл с разделением без --split, обе выборки будут загружены за один вызов:

git clone https://github.com/apple/ARKitScenes && cd ARKitScenes
python3 download_data.py raw --video_id_csv raw/raw_train_val_splits.csv \
  --raw_dataset_assets lowres_wide lowres_depth --download_dir ./data

Кадры сохраняются в data/raw/{Training,Validation}/<video_id>/{lowres_wide,lowres_depth}/. Понадобится около 2,5 ТБ дискового пространства: исходные потоки работают с частотой ~60 FPS, а при описанном ниже преобразовании сохраняется каждый 30-й кадр (~2 Гц).

Кадры глубины — это PNG-файлы uint16 в миллиметрах (0 = недопустимое значение), а имена файлов RGB и глубины содержат временные метки съёмки, которые не совпадают точно, — сопоставляй каждый RGB-кадр с кадром глубины, ближайшим по времени. Пример преобразования в формат датасета глубины Ultralytics:

import shutil
from bisect import bisect_left
from pathlib import Path

src, dst = Path("data/raw"), 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()):
        depths = sorted((video / "lowres_depth").glob("*.png"), key=lambda p: float(p.stem.split("_")[-1]))
        if not depths:
            continue
        times = [float(p.stem.split("_")[-1]) for p in depths]
        rgbs = sorted((video / "lowres_wide").glob("*.png"), key=lambda p: float(p.stem.split("_")[-1]))
        for rgb in rgbs[30::30]:  # every 30th frame of the ~60 FPS capture (~2 Hz)
            t = float(rgb.stem.split("_")[-1])
            i = min(bisect_left(times, t), len(times) - 1)
            if i and t - times[i - 1] < times[i] - t:
                i -= 1  # nearest-timestamp depth frame
            name = f"{out}_{video.name}_{depths[i].stem}"
            shutil.copy2(rgb, dst / f"images/{out}/{name}.png")
            shutil.copy2(depths[i], dst / f"depth/{out}/{name}.png")

Роль в YOLO26-Depth#

ARKitScenes — обучающий источник в смеси нескольких датасетов объёмом около 2,19 млн пар «изображение — глубина», используемой для предварительного обучения Ultralytics YOLO26-Depth. Это крупнейший реальный источник в смеси, предоставляющий обширные данные о глубине в помещениях, полученные с помощью LiDAR и обеспечивающие высокую точность модели на небольших расстояниях в помещении. Полученные модели оцениваются на стандартных бенчмарках NYU, KITTI, Make3D, ETH3D и iBims-1.

Файл YAML набора данных#

Для задания конфигурации датасета используется YAML-файл. В нём содержится информация о путях к данным, классах и другие важные сведения.

ultralytics/cfg/datasets/depth-arkitscenes.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

# Загрузить модель
model = YOLO("yolo26n-depth.pt")  # загрузить предварительно обученную модель глубины (рекомендуется для обучения)

# Обучить модель
results = model.train(data="depth-arkitscenes.yaml", epochs=100, imgsz=640)

Предварительно обученные модели#

Семейство моделей YOLO26 для оценки глубины обучается на большой смеси нескольких датасетов, включающей ARKitScenes. При первом использовании эти модели автоматически скачиваются из релиза ресурсов Ultralytics v8.4.0, например YOLO26x-depth; доступны модели разных размеров для различных требований к точности и ресурсам.

Цитирование и благодарности#

Если ты используешь датасет 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. Плотные данные о глубине в помещениях обеспечивают точность выпущенных моделей на небольших расстояниях; затем модели оцениваются на датасетах NYU Depth V2, KITTI, ETH3D, Make3D и iBims-1.

  • ARKitScenes не загружается автоматически. Прими условия лицензии в репозитории ARKitScenes, скачай ресурсы lowres_wide и lowres_depth из подвыборки raw с помощью официального скрипта download_data.py, а затем сохраняй каждый 30-й RGB-кадр и сопоставляй его с кадром глубины, ближайшим по временной метке, используя скрипт преобразования из раздела Получение данных. Результат соответствует стандартной структуре датасета глубины Ultralytics и содержит PNG-файлы uint16 с глубиной в миллиметрах.

  • ARKitScenes — это датасет для съёмки в помещении с рук, глубина в котором составляет примерно от 0,5 до 6 м, а медианная максимальная глубина — около 2,4 м; поэтому он дополняет источники с большим радиусом действия, такие как KITTI и TartanAir, в смеси для обучения.

Участники

Комментарии