Présentation des jeux de données pour l'estimation de profondeur#
L'estimation de profondeur monoculaire attribue une valeur de profondeur à virgule flottante en mètres à chaque pixel d'une image. La cible d'entraînement est une carte de profondeur dense par pixel stockée sous forme de tableau float32 .npy. Chaque valeur représente la distance entre la caméra et le point de scène correspondant.
Ce guide explique le format de jeu de données utilisé par les modèles d'estimation de profondeur YOLO d'Ultralytics et répertorie les configurations de jeux de données intégrées disponibles pour l'entraînement et la validation.
Format de jeu de données pris en charge#
Format de carte de profondeur NPY#
Chaque échantillon d'entraînement se compose d'une image RGB et d'un fichier de profondeur .npy associé. Le fichier de profondeur stocke un tableau NumPy 2D float32 de forme (H, W) où les valeurs sont des profondeurs en mètres.
- Les fichiers de profondeur doivent utiliser l'extension
.npyet contenir un tableau float32. - Chaque fichier de profondeur doit avoir le même nom de base que son fichier d'image correspondant (par exemple,
scene_001.npyest associé àscene_001.jpg). - Le chargeur de jeu de données trouve les fichiers de profondeur en remplaçant le composant de répertoire
imagespardepthdans le chemin du fichier et en échangeant l'extension de l'image contre.npy. - Les pixels avec une profondeur
≤ 0sont traités comme invalides et exclus du calcul de la perte et des métriques.
La disposition standard conserve les images et les cartes de profondeur dans des dossiers parallèles :
dataset/
├── images/
│ ├── train/
│ └── val/
└── depth/
├── train/
└── val/Par exemple, une image située à images/train/scene_001.jpg est associée à une carte de profondeur située à depth/train/scene_001.npy.
Format YAML du jeu de données#
Les jeux de données d'estimation de profondeur sont configurés avec des fichiers YAML. Les champs principaux sont :
| Clé | Description |
|---|---|
path | Répertoire racine du jeu de données. |
train | Chemin de l'image d'entraînement relatif à path, ou chemin absolu. |
val | Chemin de l'image de validation relatif à path, ou chemin absolu. |
test | Chemin optionnel de l'image de test. |
nc | Nombre de classes — toujours 1 pour l'estimation de profondeur. |
names | Mappage des noms de classes — toujours {0: depth}. |
# Ultralytics 🚀 AGPL-3.0 License - https://ultralytics.com/license
# NYU Depth V2 dataset for monocular depth estimation
# Documentation: https://cs.nyu.edu/~silberman/datasets/nyu_depth_v2.html
# 795 train + 654 val (Eigen test split) images, 480x640, indoor scenes, depth in meters
# Example usage: yolo depth train data=nyu-depth.yaml model=yolo26n-depth.pt
# parent
# ├── ultralytics
# └── datasets
# └── nyu-depth ← downloads here (≈1.5 GB)
# Train/val/test sets as 1) dir: path/to/imgs, 2) file: path/to/imgs.txt, or 3) list: [path/to/imgs1, path/to/imgs2, ..]
path: nyu-depth # dataset root dir (relative to Ultralytics settings 'datasets_dir')
train: images/train # train images (relative to 'path') 795 images
val: images/val # val images (relative to 'path') 654 images
# Depth maps are paired .npy files (float32, meters) under depth/<split>/, resolved by
# swapping '/images/' -> '/depth/' on each image path.
# Classes
nc: 1
names:
0: depth
channels: 3
# Download script/URL (optional)
download: https://github.com/ultralytics/assets/releases/download/v0.0.0/nyu-depth.zipUtilisation#
Entraîne un modèle d'estimation de profondeur YOLO26 avec Python ou CLI :
from ultralytics import YOLO
# Load a pretrained depth model
model = YOLO("yolo26n-depth.pt")
# Train on the NYU Depth V2 dataset
results = model.train(data="nyu-depth.yaml", epochs=100, imgsz=640)Jeux de données pris en charge#
Les modèles de profondeur YOLO26 sont pré-entraînés sur un large mélange de jeux de données (~2,19 millions d'images) allant de l'intérieur (≤10 m) à l'extérieur (~80 m), puis évalués en zero-shot sur cinq benchmarks. Chaque jeu de données possède une page dédiée :
Débogage
- Depth8 — 8 images SUN RGB-D dans une archive de téléchargement automatique de 1,3 Mo, pour un test rapide du pipeline
Sources de pré-entraînement
- ARKitScenes — intérieur réel, LiDAR Apple ARKit (plus grande source réelle)
- SUN RGB-D — intérieur réel, RGB-D multi-capteur
- DIODE — intérieur et extérieur réels, vérité terrain par scanner laser dense
- Hypersim — intérieur photoréaliste synthétique
- TartanAir — environnements synthétiques et diversifiés
- Virtual KITTI 2 — conduite extérieure synthétique
- KITTI — conduite extérieure réelle, Velodyne LiDAR (également un banc d'essai d'évaluation)
- ImageNet (pseudo-étiqueté) — ensemble de distillation pseudo-étiqueté, la plus grande source unique
Benchmarks d'évaluation
- NYU Depth V2 — principal banc d'essai pour l'intérieur
- KITTI Eigen — banc d'essai pour la conduite extérieure
- ETH3D — intérieur et extérieur de haute précision
- Make3D — extérieur, hors distribution
- iBims-1 — intérieur de haute qualité (bords et surfaces planaires)
La précision par modèle sur ces bancs d'essai et les poids pré-entraînés téléchargeables sont répertoriés sur la page de la tâche Estimation de profondeur. Un fichier YAML de jeu de données dont le champ train répertorie plusieurs répertoires d'images combine ces sources pour un entraînement mixte à grande échelle.
Ajouter ton propre jeu de données#
- Enregistre les images RGB sous des dossiers de division tels que
images/trainetimages/val. - Enregistre un tableau de profondeur float32
.npypar image dans les dossiers correspondantsdepth/trainetdepth/valen utilisant le même nom de base de fichier que l'image. - Assure-toi que les valeurs de profondeur sont en mètres et que les pixels invalides ou manquants utilisent
0ou des valeurs négatives. - Crée un fichier YAML de jeu de données avec
path,train,val,nc: 1etnames: {0: depth}.
path: path/to/my-depth-dataset
train: images/train
val: images/val
nc: 1
names:
0: depthFAQ#
Les cartes de profondeur doivent être enregistrées en tant que fichiers NumPy
.npycontenant des tableaux float32 de forme(H, W). Chaque élément stocke la profondeur en mètres pour le pixel d'image correspondant. N'utilise pas de formats PNG ou d'entiers 16 bits — le chargeur attend des tableaux de nombres flottants bruts.La validation de l'estimation de profondeur rapporte l'ensemble des métriques standard de Depth Anything :
- delta1 / delta2 / delta3 — pourcentage de pixels dans les seuils de 1,25×, 1,25²×, 1,25³×. Plus c'est élevé, mieux c'est.
- abs_rel — erreur relative absolue moyenne. Plus c'est bas, mieux c'est.
- rmse — racine de l'erreur quadratique moyenne en mètres. Plus c'est bas, mieux c'est.
- silog — erreur logarithmique invariante à l'échelle. Plus c'est bas, mieux c'est.
Oui. Chaque fichier de profondeur
.npydoit partager le même nom de base que l'image correspondante. Le chargeur déduit le chemin de profondeur en remplaçant le composant de répertoireimagespardepthet en substituant l'extension de l'image par.npy. Les images dont le fichier de profondeur est manquant ou illisible sont ignorées lors du balayage (mis en cache) du jeu de données avec un avertissement, exactement comme les images corrompues ; si aucune paire image-profondeur valide n'est trouvée du tout, une erreur est générée.
Les pixels avec des valeurs de profondeur
≤ 0sont traités comme invalides et masqués à la fois dans le calcul de la perte et dans l'évaluation des métriques. Cela couvre le bruit des capteurs, les zones de ciel et les surfaces réfléchissantes où la profondeur ne peut pas être mesurée de manière fiable.