Набор данных глубины DIODE#
DIODE (плотная глубина в помещениях и на открытом воздухе) — это набор данных реального мира с высококачественной плотной эталонной глубиной, полученной с помощью лазерного сканера FARO Focus профессионального геодезического класса. Его уникальность заключается в том, что он охватывает сцены как в помещениях, так и на открытом воздухе, снятые одним и тем же датчиком, обеспечивая высокоточную связь между глубиной на коротких расстояниях в помещениях и на больших расстояниях на открытом воздухе для оценки глубины по монокулярным изображениям.
Ключевые особенности#
- Очень качественная плотная эталонная глубина, полученная с помощью лазерного сканера FARO Focus профессионального геодезического класса.
- Охватывает сцены как в помещениях, так и на открытом воздухе, снятые одним и тем же датчиком.
- Диапазон глубины простирается от небольших расстояний в помещениях до больших расстояний на открытом воздухе — примерно до 80 м в наборе данных Ultralytics.
- Плотная и точная эталонная глубина для каждого пикселя, выровненная с кадрами RGB.
- Предоставляет высокоточную плотную эталонную глубину, связывающую домены помещений и открытого воздуха.
Структура датасета#
Набор данных глубины DIODE разделён на два поднабора:
- Train: 25 458 изображений с парными картами глубины для обучения.
- Val: 771 изображение с парными картами глубины для валидации во время обучения модели.
Каждый пример состоит из одного изображения RGB и одной соответствующей карты глубины PNG в формате uint16 с 256 единицами на метр (depth_scale: 256) в соответствии с форматом наборов данных глубины Ultralytics. Это обеспечивает разрешение 3,90625 мм при представлении полного диапазона открытого воздуха до 80 м.
Роль в YOLO26-Depth#
DIODE является источником обучения в составе мультинаборной смеси предварительного обучения Ultralytics YOLO26-Depth объёмом примерно 2,19 млн пар «изображение–глубина». Он добавляет высокоточную плотную эталонную глубину, связывающую домены помещений и открытого воздуха в рамках одного датчика, что помогает модели обобщать данные для сцен как на коротких, так и на больших расстояниях. Полученные модели оцениваются на стандартных бенчмарках NYU, KITTI, Make3D, ETH3D и iBims-1.
YAML датасета#
Файл YAML используется для определения конфигурации датасета. Он содержит информацию о путях датасета, классах и другую актуальную информацию.
# Ultralytics 🚀 AGPL-3.0 License - https://ultralytics.com/license
# DIODE dataset for monocular depth estimation — real indoor + outdoor, FARO Focus survey-grade laser, depth up to ~80 m
# Documentation: https://docs.ultralytics.com/datasets/depth/diode
# Example usage: yolo depth train data=depth-diode.yaml model=yolo26n-depth.pt
# parent
# ├── ultralytics
# └── datasets
# └── depth-diode ← downloads here (84 GB archives, ~90 GB converted)
# ├── images/{train,val} # RGB images
# └── depth/{train,val} # paired 16-bit *.png depth maps (images/ -> depth/)
# If an interrupted download leaves a partial dataset, delete the depth-diode dir and re-run to rebuild it.
path: depth-diode # dataset root dir (relative to Ultralytics settings 'datasets_dir')
train: images/train # train images (relative to 'path') 25458 images
val: images/val # val images (relative to 'path') 771 images
max_depth: 80 # (m) maximum valid depth; GT beyond this is excluded from val metrics
nc: 1
names:
0: depth
channels: 3
depth_scale: 256 # PNG value 256 = 1 meter; represents the 80 m outdoor range
# Download script/URL (optional)
download: |
import shutil
from pathlib import Path
import numpy as np
from ultralytics.data.utils import save_depth_png
from ultralytics.utils import TQDM
from ultralytics.utils.downloads import download
# Download and extract the official archives (train ~81 GB, val ~2.6 GB), then convert:
# flatten <split>/<scene>/<scan>/*.png into images/<split>/ and save the paired *_depth.npy
# (masked invalid -> 0, clipped at 80 m) as depth/<split>/*.png
dir = Path(yaml["path"]) # dataset root dir
download([f"https://diode-dataset.s3.amazonaws.com/{s}.tar.gz" for s in ("train", "val")], dir=dir / "source", delete=True)
for split in ("train", "val"):
(dir / "images" / split).mkdir(parents=True, exist_ok=True)
(dir / "depth" / split).mkdir(parents=True, exist_ok=True)
for im in TQDM(sorted((dir / "source" / split).rglob("*.png")), desc=f"Converting {split}"):
name = "_".join(im.relative_to(dir / "source").parts) # train/indoors/scene/scan/x.png -> train_indoors_scene_scan_x.png
depth = np.load(im.with_name(f"{im.stem}_depth.npy")).squeeze().astype(np.float32)
depth[np.load(im.with_name(f"{im.stem}_depth_mask.npy")) == 0] = 0.0 # zero out invalid pixels
save_depth_png(dir / "depth" / split / f"{name[:-4]}.png", depth.clip(max=80), scale=256)
im.replace(dir / "images" / split / name)
shutil.rmtree(dir / "source")Использование#
Чтобы обучить модель YOLO26n-depth на наборе данных DIODE с размером изображения 640, можно использовать следующие фрагменты кода. Полный список доступных аргументов см. на странице обучения модели.
from ultralytics import YOLO
# Load a model
model = YOLO("yolo26n-depth.pt") # load a pretrained depth model (recommended for training)
# Train the model
results = model.train(data="depth-diode.yaml", epochs=100, imgsz=640)Предварительно обученные модели#
Семейство моделей глубины YOLO26 обучается на широкой мультинаборной смеси данных для предварительного обучения глубины, частью которой является DIODE. Эти модели автоматически загружаются из последнего выпуска Ultralytics, например YOLO26x-depth из v8.4.0, и представлены в разных размерах для различных требований к точности и ресурсам.
Цитирование и благодарности#
Если ты используешь набор данных DIODE в исследовательской или разработческой работе, пожалуйста, процитируй следующую статью:
@article{vasiljevic2019diode,
title={DIODE: A Dense Indoor and Outdoor DEpth Dataset},
author={Vasiljevic, Igor and Kolkin, Nick and Zhang, Shanyi and Luo, Ruotian and Wang, Haochen and Dai, Falcon Z. and Daniele, Andrea F. and Mostajabi, Mohammadreza and Basart, Steven and Walter, Matthew R. and Shakhnarovich, Gregory},
journal={arXiv preprint arXiv:1908.00463},
year={2019}
}Мы хотели бы выразить признательность авторам за создание и поддержку этого ценного ресурса для сообщества компьютерного зрения.
Часто задаваемые вопросы#
DIODE фиксирует как интерьеры, так и экстерьеры с помощью одного геодезического лазерного сканера FARO Focus, создавая очень плотные и точные данные истинной глубины в коротких диапазонах помещений и длинных уличных диапазонах. Такой охват с помощью одного датчика делает набор данных DIODE высокоточным связующим звеном между закрытыми помещениями и открытыми пространствами в обучающем наборе YOLO26-Depth.
Конфигурация Ultralytics предоставляет 25 458 пар изображений и карт глубины для обучения и 771 пару для проверки. Глубина сохраняется в виде 16-битных PNG-файлов без знака с 256 единицами на метр (
depth_scale: 256), что сохраняет разрешение 3,9 мм при покрытии полного уличного диапазона в 80 м, описанного в формате набора данных глубины Ultralytics.Загрузи предварительно обученную контрольную точку глубины и укажи параметр
dataдля поставляемого в комплекте YAML-файла, напримерyolo depth train data=depth-diode.yaml model=yolo26n-depth.pt epochs=100 imgsz=640. См. раздел Использование для получения эквивалента на Python и страницу Обучение для ознакомления со всеми аргументами.