Ultralytics YOLO27 :

Jeu de données de profondeur DIODE#

DIODE (profondeur dense en intérieur et en extérieur) est un jeu de données du monde réel contenant une vérité terrain de profondeur dense de très haute qualité, capturée par un scanner laser FARO Focus de précision topographique. Fait unique, il couvre à la fois les scènes d’intérieur et d’extérieur avec le même capteur, formant ainsi un pont de haute précision entre les profondeurs d’intérieur à courte portée et celles d’extérieur à longue portée pour l’estimation de profondeur monoculaire.

Fonctionnalités clés#

  • Vérité terrain de profondeur dense de très haute qualité, obtenue avec un scanner laser FARO Focus de précision topographique.
  • Couvre des scènes d’intérieur et d’extérieur capturées avec le même capteur.
  • La plage de profondeur s’étend des courtes distances en intérieur aux longues distances en extérieur, jusqu’à environ 80 m dans le mélange Ultralytics.
  • Vérité terrain dense et précise, pixel par 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 réparti en deux sous-ensembles :

  1. Train : 25,458 images avec des cartes de profondeur associées pour l’entraînement.
  2. Val : 771 images avec des cartes de profondeur associées pour la validation pendant l’entraînement du modèle.

Chaque échantillon comprend une image RGB et une image PNG de profondeur uint16 associée, avec 256 unités par mètre (depth_scale: 256), conformément au format de jeu de données de profondeur Ultralytics. Cela permet une résolution de 3.90625 mm tout en couvrant la plage extérieure complète de 80 m. Le fichier YAML du jeu de données télécharge les archives DIODE officielles (~84 GB) et les convertit automatiquement dans cette structure lors de la première utilisation.

Rôle dans YOLO26-Depth#

DIODE est une source d’entraînement du mélange de préentraînement multi-jeux de données Ultralytics YOLO26-Depth, qui contient environ 2.19M paires image-profondeur. Il apporte une vérité terrain dense de haute précision qui relie les domaines intérieur et extérieur avec un seul capteur, aidant le modèle à généraliser aux 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.

Fichier YAML du jeu de données#

Un fichier YAML sert à définir la configuration du jeu de données. Il contient des informations sur les chemins d’accès, les classes et d’autres éléments pertinents du jeu de données.

ultralytics/cfg/datasets/depth-diode.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")

Utilisation#

Pour entraîner un modèle YOLO26n-depth sur le jeu de données DIODE avec une taille d’image de 640, utilise les extraits de code suivants. Pour consulter la liste complète des arguments disponibles, reporte-toi à la page Entraînement du modèle.

Exemple d’entraînement
from ultralytics import YOLO

# Charger un modèle
model = YOLO("yolo26n-depth.pt")  # charger un modèle de profondeur préentraîné (recommandé pour l’entraînement)

# Entraîner le modèle
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 en profondeur multi-jeux de données auquel DIODE appartient. Ces modèles se téléchargent automatiquement lors de leur première utilisation depuis la publication des ressources v8.4.0 d’Ultralytics, par exemple YOLO26x-depth, et proposent plusieurs tailles adaptées à différents besoins en matière de précision et de ressources.

Citations et remerciements#

Si tu utilises le jeu de données DIODE dans tes travaux de recherche ou de développement, cite l’article suivant :

Citation
@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 tenons à remercier les auteurs d’avoir créé et maintenu cette précieuse ressource 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 FARO Focus de précision topographique, produisant une vérité terrain de profondeur très dense et précise, des courtes portées en intérieur aux longues portées en extérieur. Cette couverture avec un seul capteur en fait un pont de haute précision entre les domaines intérieur et extérieur dans le mélange d’entraînement YOLO26-Depth.

  • La configuration Ultralytics fournit 25,458 paires image-profondeur pour l’entraînement et 771 pour la validation. La profondeur est stockée sous forme de fichiers PNG uint16 avec 256 unités par mètre (depth_scale: 256), ce qui offre une résolution de 3,9 mm tout en couvrant la plage extérieure complète de 80 m décrite dans le format de jeu de données de profondeur Ultralytics.

  • Charge un checkpoint de profondeur préentraîné et indique à data le fichier YAML fourni, par exemple yolo depth train data=depth-diode.yaml model=yolo26n-depth.pt epochs=100 imgsz=640. Consulte la section Utilisation pour l’équivalent en Python et la page Entraînement pour découvrir tous les arguments.

Commentaires