Ultralytics YOLO27:

Набор данных глубины Hypersim#

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

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

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

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

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

Набор данных глубины 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

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

# Обучить модель
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-файлы с миллиметровыми значениями с помощью скрипта из раздела Получение данных. Пикселям со значением NaN, например окнам и небу, присвой 0, чтобы считать их недопустимыми.

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

Участники

Комментарии