Безопасность корпоративного уровня: Соответствует ISO 27001 + SOC 2 Type I.

Link to this sectionОбзор наборов данных для оценки глубины#

Монокулярная оценка глубины присваивает каждому пикселю изображения значение глубины в метрах с плавающей запятой. Целевыми данными для обучения является плотная карта глубины для каждого пикселя, сохраненная как массив .npy типа float32. Каждое значение представляет собой расстояние от камеры до соответствующей точки сцены.

В этом руководстве объясняется формат наборов данных, используемый моделями оценки глубины Ultralytics YOLO, а также перечислены встроенные конфигурации наборов данных, доступные для обучения и валидации.

Link to this sectionПоддерживаемый формат наборов данных#

Link to this sectionФормат карты глубины NPY#

Каждый обучающий пример состоит из одного RGB-изображения и одного парного файла глубины .npy. Файл глубины содержит 2D-массив NumPy типа float32 с формой (H, W), где значения представляют собой глубину в метрах.

  • Файлы глубины должны использовать расширение .npy и содержать массив типа float32.
  • Каждый файл глубины должен иметь то же имя, что и соответствующий ему файл изображения (например, scene_001.npy в паре с scene_001.jpg).
  • Загрузчик набора данных находит файлы глубины, заменяя компонент пути к каталогу images на depth и меняя расширение изображения на .npy.
  • Пиксели с глубиной ≤ 0 считаются недействительными и исключаются из вычислений функции потерь и метрик.

Стандартная структура предполагает хранение изображений и карт глубины в параллельных папках:

dataset/
├── images/
│   ├── train/
│   └── val/
└── depth/
    ├── train/
    └── val/

Например, изображение по пути images/train/scene_001.jpg связано с картой глубины по пути depth/train/scene_001.npy.

Link to this sectionФормат YAML для набора данных#

Наборы данных для оценки глубины настраиваются с помощью YAML-файлов. Основные поля:

КлючОписание
pathКорневой каталог набора данных.
trainПуть к обучающим изображениям относительно path или абсолютный путь.
valПуть к валидационным изображениям относительно path или абсолютный путь.
testОпциональный путь к тестовым изображениям.
ncКоличество классов — всегда 1 для оценки глубины.
namesОтображение имен классов — всегда {0: depth}.
ultralytics/cfg/datasets/nyu-depth.yaml
# Ultralytics 🚀 AGPL-3.0 License - https://ultralytics.com/license

# NYU Depth V2 dataset for monocular depth estimation
# Documentation: https://cs.nyu.edu/~silberman/datasets/nyu_depth_v2.html
# 795 train + 654 val (Eigen test split) images, 480x640, indoor scenes, depth in meters
# Example usage: yolo depth train data=nyu-depth.yaml model=yolo26n-depth.pt
# parent
# ├── ultralytics
# └── datasets
#     └── nyu-depth  ← downloads here (≈1.5 GB)

# Train/val/test sets as 1) dir: path/to/imgs, 2) file: path/to/imgs.txt, or 3) list: [path/to/imgs1, path/to/imgs2, ..]
path: nyu-depth # dataset root dir (relative to Ultralytics settings 'datasets_dir')
train: images/train # train images (relative to 'path') 795 images
val: images/val # val images (relative to 'path') 654 images

# Depth maps are paired .npy files (float32, meters) under depth/<split>/, resolved by
# swapping '/images/' -> '/depth/' on each image path.

# Classes
nc: 1
names:
  0: depth

channels: 3

# Download script/URL (optional)
download: https://github.com/ultralytics/assets/releases/download/v0.0.0/nyu-depth.zip

Link to this sectionИспользование#

Обучи модель оценки глубины YOLO26 с помощью Python или CLI:

Пример
from ultralytics import YOLO

# Load a pretrained depth model
model = YOLO("yolo26n-depth.pt")

# Train on the NYU Depth V2 dataset
results = model.train(data="nyu-depth.yaml", epochs=100, imgsz=640)

Link to this sectionПоддерживаемые наборы данных#

Модели глубины YOLO26 предварительно обучены на широком наборе данных (~2,19 млн изображений), охватывающем диапазоны от помещений (≤10 м) до открытых пространств (~80 м), а затем протестированы без обучения (zero-shot) на пяти бенчмарках. Для каждого набора данных есть отдельная страница:

Отладка

  • Depth8 — 8 изображений SUN RGB-D в автоматически загружаемом архиве объемом 1,3 МБ для быстрой проверки конвейера

Источники предварительного обучения

  • ARKitScenes — реальные интерьеры, Apple ARKit LiDAR (крупнейший реальный источник)
  • SUN RGB-D — реальные интерьеры, мультисенсорные данные RGB-D
  • DIODE — реальные интерьеры и открытые пространства, плотная лазерная разметка
  • Hypersim — синтетические фотореалистичные интерьеры
  • TartanAir — синтетические данные, разнообразные окружения
  • Virtual KITTI 2 — синтетические открытые пространства, вождение
  • KITTI — реальные открытые пространства, вождение, Velodyne LiDAR (также является бенчмарком для оценки)
  • ImageNet (с псевдоразметкой) — набор с псевдоразметкой, крупнейший единый источник

Бенчмарки для оценки

  • NYU Depth V2 — основной бенчмарк для интерьеров
  • KITTI Eigen — бенчмарк для вождения на открытых пространствах
  • ETH3D — высокоточные данные для помещений и открытых пространств
  • Make3D — открытые пространства, вне распределения
  • iBims-1 — высококачественные данные для помещений (границы и плоские поверхности)

Точность каждой модели на этих бенчмарках и доступные для скачивания предобученные веса перечислены на странице задачи оценки глубины. YAML-файл набора данных, в поле train которого указано несколько каталогов изображений, объединяет эти источники для крупномасштабного смешанного обучения.

Link to this sectionДобавление собственного набора данных#

  1. Сохраняй RGB-изображения в папках разделения, таких как images/train и images/val.
  2. Сохраняй по одному массиву глубины .npy (float32) для каждого изображения в соответствующих папках depth/train и depth/val, используя то же базовое имя файла, что и у изображения.
  3. Убедись, что значения глубины указаны в метрах, а для недействительных или отсутствующих пикселей используются значения 0 или отрицательные числа.
  4. Создай YAML-файл набора данных с полями path, train, val, nc: 1 и names: {0: depth}.
path: path/to/my-depth-dataset
train: images/train
val: images/val

nc: 1
names:
    0: depth

Link to this sectionFAQ#

Link to this sectionКакой формат файла следует использовать для карт глубины?#

Карты глубины должны сохраняться как файлы NumPy .npy, содержащие массивы типа float32 с формой (H, W). Каждый элемент хранит глубину в метрах для соответствующего пикселя изображения. Не используй PNG или 16-битные целочисленные форматы — загрузчик ожидает необработанные массивы с плавающей запятой.

Link to this sectionКак обрабатываются недействительные пиксели глубины?#

Пиксели со значениями глубины ≤ 0 считаются недействительными и исключаются как из вычисления функции потерь, так и из оценки метрик. Это касается шума датчиков, областей неба и отражающих поверхностей, где глубина не может быть надежно измерена.

Link to this sectionКакие метрики используются для оценки?#

Валидация оценки глубины сообщает стандартный набор метрик Depth Anything:

  • delta1 / delta2 / delta3 — процент пикселей в пределах порогов 1.25×, 1.25²×, 1.25³×. Чем выше, тем лучше.
  • abs_rel — средняя абсолютная относительная ошибка. Чем ниже, тем лучше.
  • rmse — среднеквадратичная ошибка в метрах. Чем ниже, тем лучше.
  • silog — логарифмическая ошибка, инвариантная к масштабу. Чем ниже, тем лучше.

Link to this sectionДолжны ли имена файлов глубины совпадать с именами файлов изображений?#

Да. Каждый файл глубины .npy должен иметь то же базовое имя, что и соответствующее изображение. Загрузчик определяет путь к данным о глубине, заменяя компонент пути images на depth и подставляя расширение .npy вместо расширения изображения. Изображения, для которых файл глубины отсутствует или не читается, будут пропущены во время (кэшированного) сканирования набора данных с выводом предупреждения, точно так же, как поврежденные изображения; если не найдено ни одной корректной пары изображение-глубина, будет выдана ошибка.

Участники

Комментарии