Jeu de données de profondeur DIODE#
DIODE (profondeur dense intérieure/extérieure) est un jeu de données réel contenant une vérité terrain de profondeur dense de très haute qualité, capturée à l'aide d'un scanner laser FARO Focus de qualité topographique. Il couvre de manière unique des scènes intérieures et extérieures avec le même capteur, formant ainsi un pont de haute précision entre la profondeur intérieure à courte portée et la profondeur extérieure à longue portée pour l'estimation de la profondeur monoculaire.
Fonctionnalités clés#
- Vérité terrain de profondeur dense de très haute qualité provenant d'un scanner laser FARO Focus de qualité topographique.
- Couvre des scènes intérieures et extérieures capturées avec le même capteur.
- La plage de profondeur s'étend des courtes distances intérieures aux longues distances extérieures, jusqu'à environ 80 m dans le mélange Ultralytics.
- Vérité terrain dense et précise pour chaque pixel, alignée sur les images RGB.
- Fournit une vérité terrain dense de haute précision qui fait le lien entre les domaines intérieur et extérieur.
Structure du jeu de données#
Le jeu de données de profondeur DIODE est divisé en deux sous-ensembles :
- Train : 25 458 images avec des cartes de profondeur associées pour l'entraînement.
- Val : 771 images avec des cartes de profondeur associées pour la validation pendant l'entraînement du modèle.
Chaque échantillon se compose d'une image RGB et d'un fichier PNG de profondeur uint16 associé, avec 256 unités par mètre (depth_scale: 256), conformément au format de jeu de données de profondeur Ultralytics. Cela fournit une résolution de 3.90625 mm tout en représentant la plage extérieure complète de 80 m.
Rôle dans YOLO26-Depth#
DIODE est une source d'entraînement dans le mélange de préentraînement multi-jeux de données Ultralytics YOLO26-Depth, qui comprend environ 2,19 millions de paires image-profondeur. Il fournit une vérité terrain dense de haute précision qui fait le lien entre les domaines intérieur et extérieur avec un seul capteur, aidant ainsi le modèle à se généraliser à des scènes à courte et longue portée. Les modèles obtenus sont évalués sur les benchmarks standard NYU, KITTI, Make3D, ETH3D et iBims-1.
YAML du jeu de données#
Un fichier YAML est utilisé pour définir la configuration du jeu de données. Il contient des informations sur les chemins du jeu de données, les classes et d'autres informations pertinentes.
# 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")Utilisation#
Pour entraîner un modèle YOLO26n-depth sur le jeu de données DIODE avec une taille d'image de 640, tu peux utiliser les extraits de code suivants. Pour obtenir la liste complète des arguments disponibles, consulte la page Entraînement du modèle.
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)Modèles préentraînés#
La famille de modèles de profondeur YOLO26 est entraînée sur le vaste mélange de préentraînement multi-jeux de données dont DIODE fait partie. Ces modèles se téléchargent automatiquement depuis la dernière version d'Ultralytics, par exemple YOLO26x-depth depuis la version v8.4.0, et couvrent différentes tailles pour répondre à divers besoins en précision et en ressources.
Citations et remerciements#
Si tu utilises le jeu de données DIODE dans tes travaux de recherche ou de développement, merci de citer l'article suivant :
@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}
}Nous souhaitons remercier les auteurs d'avoir créé et maintenu cette ressource précieuse pour la communauté de la vision par ordinateur.
FAQ#
DIODE capture des scènes d'intérieur et d'extérieur avec le même scanner laser de qualité professionnelle FARO Focus, produisant une vérité terrain de profondeur très dense et précise sur de courtes portées intérieures et de longues portées extérieures. Cette couverture par capteur unique en fait un pont de haute précision entre les domaines intérieur et extérieur dans le mélange d'entraînement de YOLO26-Depth.
Charge un point de contrôle de profondeur pré-entraîné et pointe
datavers le fichier YAML fourni, par exempleyolo depth train data=depth-diode.yaml model=yolo26n-depth.pt epochs=100 imgsz=640. Consulte la section Utilisation pour l'équivalent Python et la page Entraînement pour tous les arguments.
La configuration Ultralytics fournit 25 458 paires d'images et de profondeurs d'entraînement et 771 de validation. La profondeur est stockée sous forme de fichiers PNG uint16 avec 256 unités par mètre (
depth_scale: 256), ce qui maintient une résolution de 3,9 mm tout en couvrant toute la plage extérieure de 80 m décrite dans le format de jeu de données de profondeur Ultralytics.