Набор данных глубины Hypersim#
Hypersim — фотореалистичный синтетический набор данных с помещениями, созданный для комплексного понимания сцен внутри помещений. Изображения построены методом трассировки лучей на основе профессионально созданных 3D-интерьеров Evermotion, что позволяет получить чрезвычайно реалистичные изображения с эталонными картами глубины высокой плотности, размеченными для каждого пикселя.
Поскольку Hypersim полностью синтетический, для каждого пикселя задано точное значение глубины — без шума сенсора, пропущенных измерений и артефактов. Это делает набор отличным источником чистой геометрии помещений с плотной разметкой для обучения моделей оценки глубины по одному изображению.
Основные особенности#
- Фотореалистичные синтетические сцены помещений, построенные методом трассировки лучей на основе профессиональных 3D-интерьеров Evermotion.
- Только помещения.
- Плотная и точная эталонная глубина для каждого пикселя без шума сенсора и пропущенных значений.
- Глубина преимущественно ≤10 м (встречаются и большие расстояния).
- Вносит в обучающую смесь Ultralytics для оценки глубины 74 619 изображений (68 242 для обучения / 6 377 для валидации).
Структура набора данных#
Набор данных глубины Hypersim разделён на две подвыборки:
- Обучение: 68 242 изображения с соответствующими плотными картами глубины для обучения.
- Валидация: 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 ./scenesRGB-кадры находятся в каталоге 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 🚀 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 из раздела Использование. На странице Обучение перечислены все доступные аргументы.