Ultralytics YOLO27:

Датасет глубины Hypersim#

Hypersim — фотореалистичный синтетический датасет помещений, созданный для комплексного понимания сцен внутри помещений. Его изображения получены методом трассировки лучей на основе профессионально созданных 3D-интерьеров Evermotion, что обеспечивает высокореалистичные рендеры с идеальной плотной эталонной глубиной для каждого пикселя.

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

Ключевые особенности#

  • Фотореалистичные синтетические сцены помещений, полученные трассировкой лучей на основе профессиональных 3D-интерьеров Evermotion.
  • Только помещения.
  • Плотная идеальная эталонная глубина для каждого пикселя без сенсорного шума и пропущенных значений.
  • Диапазон глубины преимущественно ≤10 м (с некоторыми большими расстояниями).
  • Вносит 74,619 изображений (68,242 для обучения / 6,377 для валидации) в состав набора данных, используемого Ultralytics для обучения моделей глубины.

Структура датасета#

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

  1. Обучение: 68,242 изображения с соответствующими плотными картами глубины для обучения.
  2. Валидация: 6,377 изображений с соответствующими плотными картами глубины для валидации во время обучения.

Каждое RGB-изображение связано с масштабированным PNG глубины формата uint16 в соответствии с форматом датасета глубины Ultralytics.

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

Для Hypersim нет автоматической загрузки — датасет (~1.9 ТБ ZIP-архивов отдельных сцен) распространяется Apple по лицензии CC BY-SA 3.0 и загружается с помощью официального скрипта из репозитория ml-hypersim (селективный загрузчик доступен в contrib/99991):

git clone https://github.com/apple/ml-hypersim && cd ml-hypersim
python code/python/tools/dataset_download_images.py --downloads_dir ./downloads --decompress_dir ./scenes

RGB-кадры находятся в предварительных просмотрах frame.*.tonemap.jpg, а глубина — в frame.*.depth_meters.hdf5. Сохранённые значения — это расстояния по лучу до центра камеры, а не планарная глубина — преобразуй их перед сохранением, а пиксели NaN (окна, небо) сопоставь со значением 0 (недействительные). Используй официальное разбиение сцен metadata_images_split_scene_v1.csv для распределения данных между обучением и валидацией. Эталонное преобразование в формат датасета глубины Ultralytics:

import shutil
from pathlib import Path

import h5py
import numpy as np

from ultralytics.data.utils import save_depth_png

W, H, FOCAL = 1024, 768, 886.81  # Hypersim camera intrinsics
x, y = np.meshgrid(np.linspace(-W / 2, W / 2, W), np.linspace(-H / 2, H / 2, H))
ray2plane = (FOCAL / np.sqrt(x**2 + y**2 + FOCAL**2)).astype(np.float32)  # distance → planar depth

src, dst = Path("scenes"), Path("datasets/depth-hypersim")
out = "train"  # assign per scene from metadata_images_split_scene_v1.csv
(dst / f"images/{out}").mkdir(parents=True, exist_ok=True)
(dst / f"depth/{out}").mkdir(parents=True, exist_ok=True)
for h5 in sorted(src.rglob("*.depth_meters.hdf5")):
    scene, cam, frame = h5.parts[-4], h5.parent.name.split("_geometry")[0], h5.name.split(".")[1]
    rgb = h5.parents[1] / f"{cam}_final_preview" / f"frame.{frame}.tonemap.jpg"
    dist = np.asarray(h5py.File(h5)["dataset"], np.float32)
    depth = np.nan_to_num(dist * ray2plane, nan=0.0)  # NaN (sky, glass) → 0 = invalid
    name = f"{scene}_{cam}_{frame}"
    save_depth_png(dst / f"depth/{out}/{name}.png", depth)
    shutil.copy(rgb, dst / f"images/{out}/{name}.jpg")

Роль в YOLO26-Depth#

Hypersim — один из источников обучения в широком смешанном наборе данных (~2.19 млн изображений), используемом для предварительного обучения моделей Ultralytics YOLO26-Depth. В этом составе Hypersim предоставляет чистую плотную геометрию помещений, дополняя более зашумленные данные реальных сенсоров.

В этой конфигурации нет отдельного отложенного бенчмарка Hypersim. Вместо этого полученные модели оцениваются на стандартных бенчмарках монокулярной глубины: NYU Depth V2, KITTI, Make3D, ETH3D и iBims-1.

YAML датасета#

YAML-файл используется для определения конфигурации датасета. Он содержит информацию о путях, классах и другие важные данные датасета. Для Hypersim файл depth-hypersim.yaml определяет пути и единственный класс depth.

ultralytics/cfg/datasets/depth-hypersim.yaml
# Ultralytics 🚀 AGPL-3.0 License - https://ultralytics.com/license

# Hypersim dataset for monocular depth estimation — photorealistic synthetic indoor (ray-traced), dense depth up to ~10 m
# Documentation: https://docs.ultralytics.com/datasets/depth/hypersim
# Example usage: yolo depth train data=depth-hypersim.yaml model=yolo26n-depth.pt
# No autodownload — obtain the source data (see docs) and arrange it as below.
# parent
# ├── ultralytics
# └── datasets
#     └── depth-hypersim
#         ├── images/{train,val}  # RGB images
#         └── depth/{train,val}   # paired 16-bit *.png depth maps (images/ -> depth/)

path: depth-hypersim # dataset root dir (relative to Ultralytics settings 'datasets_dir')
train: images/train # train images (relative to 'path') 68242 images
val: images/val # val images (relative to 'path') 6377 images

nc: 1
names:
  0: depth

channels: 3

Использование#

Чтобы обучить модель YOLO26n-Depth на датасете Hypersim с размером изображения 640, можно использовать следующие фрагменты кода. Полный список доступных аргументов приведён на странице обучения модели.

Пример обучения
from ultralytics import YOLO

# Load a model
model = YOLO("yolo26n-depth.pt")  # load a pretrained model (recommended for training)

# Train the model
results = model.train(data="depth-hypersim.yaml", epochs=100, imgsz=640)

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

Семейство моделей глубины YOLO26 (yolo26n-depth.pt, yolo26s-depth.pt, yolo26m-depth.pt, yolo26l-depth.pt, yolo26x-depth.pt) автоматически загружается из релизов Ultralytics и обучается на широком смешанном наборе данных, частью которого является Hypersim. Изучи YOLO26x-depth на платформе Ultralytics.

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

Если ты используешь датасет Hypersim в исследовательской или разработческой работе, пожалуйста, процитируй следующую статью:

Цитата
@inproceedings{roberts2021hypersim,
      title={Hypersim: A Photorealistic Synthetic Dataset for Holistic Indoor Scene Understanding},
      author={Mike Roberts and Jason Ramapuram and Anurag Ranjan and Atulit Kumar and Miguel Angel Bautista and Nathan Paczan and Russ Webb and Joshua M. Susskind},
      booktitle={Proceedings of the IEEE/CVF International Conference on Computer Vision (ICCV)},
      year={2021}
}

Мы хотели бы поблагодарить создателей Hypersim за то, что они сделали этот фотореалистичный синтетический датасет помещений доступным для сообщества компьютерного зрения.

Часто задаваемые вопросы#

  • Hypersim — это фотореалистичный синтетический датасет интерьеров от Apple, созданный методом трассировки лучей на основе профессиональных 3D-интерьеров Evermotion. Поскольку каждый пиксель обладает точным значением глубины без шума датчиков и пропущенных возвратов, его 74 619 изображений (68 242 обучающих, 6 377 проверочных) предоставляют чистую и плотную геометрию интерьеров, которая дополняет более зашумленные данные реальных датчиков в обучающей выборке YOLO26-Depth.

  • Для Hypersim не предусмотрена автоматическая загрузка. Получи сцены (~1,9 ТБ) с помощью официального скрипта из репозитория ml-hypersim, затем конвертируй лучевые расстояния depth_meters.hdf5 в планарную глубину и запиши PNG-файлы в миллиметрах с помощью скрипта в разделе Obtain the Data. Сопоставь пиксели NaN, такие как окна и небо, с 0, чтобы они обрабатывались как недействительные.

  • Запусти yolo depth train data=depth-hypersim.yaml model=yolo26n-depth.pt epochs=100 imgsz=640 или используй пример на Python в разделе Usage. На странице Training перечислены все доступные аргументы.

Участники

Комментарии