Derinlik Tahmini Veri Setlerine Genel Bakış#
Tek gözlü derinlik kestirimi, bir görüntünün her pikseline metre cinsinden bir derinlik değeri atar. Derinlik hedefleri, ölçeklendirilmiş 16 bit gri tonlamalı PNG'ler veya metre cinsinden kayan noktalı NPY dizileri kullanır.
Bu kılavuz, Ultralytics YOLO derinlik tahmini modelleri tarafından kullanılan veri seti formatını açıklar ve eğitim ve doğrulama için mevcut olan yerleşik veri seti yapılandırmalarını listeler.
Desteklenen Veri Seti Formatı#
Derinlik haritası biçimi#
Her eğitim örneği bir RGB görüntü ve eşleşen bir derinlik dosyasından oluşur. PNG değerleri, metre cinsinden çıktı üretmek için isteğe bağlı veri kümesi düzeyindeki depth_scale değerine bölünür. Varsayılan değer 1000'dir, dolayısıyla 1500 değeri 1.5 metreyi temsil eder. 0 kodu geçersiz anlamına gelir; PNG'lerin gömülü meta verilere ihtiyacı yoktur.
- Derinlik dosyaları
.png(tercih edilen) veya.npykullanır. PNG haritaları 2B uint16 gri tonlamalı görüntüler olmalıdır. NPY dizileri 2B ve kayan noktalı olmalı, değerler metre cinsinden olmalıdır. depth_scaledeğerini yalnızca PNG'ler varsayılan milimetre kuralını kullanmadığında ayarlayın. Örneğin, KITTI256kullanır ve Virtual KITTI 2100kullanır.- Her derinlik dosyası, eşleşen görüntü dosyasıyla aynı kök adı (stem) paylaşmalıdır (örneğin,
scene_001.png,scene_001.jpgile eşleşir). - En boy oranı eşleştiği sürece derinlik haritaları RGB görüntülerinden daha küçük olabilir; eğitim bunları bellekte yeniden boyutlandırır.
- Veri kümesi yükleyicisi,
imagesdizin bileşeninidepthile değiştirerek derinlik dosyalarını bulur;.pngtercih edilir ve.npydeğerine geri dönülür. ≤ 0derinliğine sahip pikseller geçersiz kabul edilir ve kayıp ile metrik hesaplamasından hariç tutulur.
0 kodu geçersiz pikseller için ayrıldığından, uint16 PNG 65.535 pozitif derinlik değeri sağlar. Ölçek hem hassasiyeti hem de aralığı kontrol eder:
| Kural | depth_scale | Çözünürlük | Maksimum derinlik |
|---|---|---|---|
| Varsayılan / ARKitScenes | 1000 | 1 mm | 65.535 m |
| KITTI | 256 | 3.90625 mm | 255.99609375 m |
| Virtual KITTI 2 | 100 | 1 cm | 655.35 m |
Bunlar depolama sınırlarıdır, önerilen eğitim üst sınırları değildir. Bir veri kümesi, kayıp kalibrasyonu veya değerlendirme için bağımsız olarak daha küçük bir max_depth ayarlayabilir.
Standart düzen, görüntüleri ve derinlik haritalarını paralel klasörlerde tutar:
dataset/
├── images/
│ ├── train/
│ └── val/
└── depth/
├── train/
└── val/Örneğin, images/train/scene_001.jpg konumundaki bir görüntü, depth/train/scene_001.png konumundaki bir derinlik haritası ile eşleştirilir.
Veri kümesi YAML formatı#
Derinlik tahmini veri setleri YAML dosyalarıyla yapılandırılır. Ana alanlar şunlardır:
| Anahtar | Açıklama |
|---|---|
path | Veri kümesi kök dizini. |
train | path değerine göreli eğitim görseli yolu veya mutlak bir yol. |
val | path değerine göreli doğrulama görseli yolu veya mutlak bir yol. |
test | İsteğe bağlı test görüntüsü yolu. |
nc | Sınıf sayısı — derinlik tahmini için her zaman 1. |
names | Sınıf adı eşleme — her zaman {0: depth}. |
depth_scale | Metre başına isteğe bağlı PNG birimleri; varsayılan olarak 1000 değerindedir. |
# Ultralytics 🚀 AGPL-3.0 License - https://ultralytics.com/license
# NYU Depth V2 dataset for monocular depth estimation
# Documentation: https://cs.nyu.edu/~fergus/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-png ← 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-png # 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 uint16 millimeter PNGs under depth/<split>/, resolved by
# swapping '/images/' -> '/depth/' on each image path.
# Classes
nc: 1
names:
0: depth
channels: 3
depth_scale: 1000
# Download script/URL (optional)
download: https://github.com/ultralytics/assets/releases/download/v0.0.0/nyu-depth-png.zipKullanım#
Python veya CLI ile bir YOLO26 derinlik tahmini modeli eğit:
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)Desteklenen Veri Kümeleri#
YOLO26 derinlik modelleri, iç mekan (≤10 m) ile dış mekan (~80 m) aralıklarını kapsayan geniş bir çoklu veri seti karışımı (~2.19M görüntü) üzerinde önceden eğitilmiş ve ardından beş farklı kıyaslama üzerinde sıfır vuruşlu (zero-shot) olarak değerlendirilmiştir. Her veri setinin kendine ait bir sayfası vardır:
Hata ayıklama
- Depth8 — hızlı boru hattı testi için 1.3 MB'lık otomatik indirilen bir arşivde 8 adet SUN RGB-D görüntüsü
Ön eğitim kaynakları
- ARKitScenes — gerçek iç mekan, Apple ARKit LiDAR (en büyük gerçek kaynak)
- SUN RGB-D — gerçek iç mekan, çok sensörlü RGB-D
- DIODE — gerçek iç + dış mekan, yoğun lazer tarayıcı yer gerçeği
- Hypersim — sentetik fotogerçekçi iç mekan
- TartanAir — sentetik, çeşitli ortamlarda
- Virtual KITTI 2 — sentetik dış mekan sürüşü
- KITTI — gerçek dış mekan sürüşü, Velodyne LiDAR (aynı zamanda bir değerlendirme kıyaslaması)
- ImageNet (pseudo-labeled) — sözde etiketlenmiş damıtma seti, en büyük tek kaynak
Değerlendirme kıyaslamaları
- NYU Depth V2 — birincil iç mekan kıyaslaması
- KITTI Eigen — dış mekan sürüş kıyaslaması
- ETH3D — yüksek hassasiyetli iç + dış mekan
- Make3D — dış mekan, dağılım dışı (out-of-distribution)
- iBims-1 — yüksek kaliteli iç mekan (kenarlar ve düzlemsel yüzeyler)
Bu kıyaslamalardaki model bazında doğruluk ve indirilebilir önceden eğitilmiş ağırlıklar Depth Estimation task page adresinde listelenmiştir. train alanı birden fazla görüntü dizinini listeleyen bir veri kümesi YAML dosyası, büyük ölçekli karma eğitim için bu kaynakları birleştirir.
Kendi Veri Kümeni Ekleme#
- RGB görüntülerini
images/trainveimages/valgibi bölünmüş klasörler altında kaydedin. - Görüntüyle aynı dosya kökünü kullanarak, eşleşen
depth/trainvedepth/valklasörleri altında görüntü başına bir derinlik PNG'si veya NPY'si kaydedin. Metre dizilerini kompakt milimetre PNG'lerine dönüştürmek içinsave_depth_png()kullanın. - Çözülen derinlik değerlerinin metre cinsinden olduğundan ve geçersiz veya eksik piksellerin
0veya negatif değerler kullandığından emin olun. path,train,val,nc: 1venames: {0: depth}içeren bir veri seti YAML dosyası oluşturun.
path: path/to/my-depth-dataset
train: images/train
val: images/val
nc: 1
names:
0: depth
# Optional: PNG integer units per meter (default 1000)
depth_scale: 1000SSS#
Kompakt veri kümeleri için ölçeklendirilmiş 16 bit gri tonlamalı PNG'ler kullanın. Varsayılan olarak her tamsayı adımı bir milimetredir; farklı bir ölçek için veri kümesi YAML dosyasında
depth_scaleayarlayın.ultralytics.data.utils.save_depth_png(), metre dizilerini varsayılan biçime dönüştürür. Metre cinsinden kayan noktalı NPY haritaları da doğrudan çalışır.≤ 0derinlik değerlerine sahip pikseller geçersiz kabul edilir ve hem kayıp hesaplamasından hem de metrik değerlendirmesinden maskelenerek çıkarılır. Bu durum; sensör gürültüsünü, gökyüzü bölgelerini ve derinliğin güvenilir bir şekilde ölçülemediği yansıtıcı yüzeyleri kapsar.Derinlik tahmini doğrulaması, standart Depth Anything metrik setini raporlar:
- delta1 / delta2 / delta3 — 1.25×, 1.25²×, 1.25³× eşik değerleri içindeki piksellerin yüzdesi. Daha yüksek olması daha iyidir.
- abs_rel — ortalama mutlak bağıl hata. Daha düşük olması daha iyidir.
- rmse — metre cinsinden kök ortalama kare hata. Daha düşük olması daha iyidir.
- silog — ölçekten bağımsız logaritmik hata. Daha düşük olması daha iyidir.
Evet. Her derinlik
.pngveya.npydosyası, ilgili görüntüyle aynı kökü paylaşmalıdır. Yükleyici,imagesdizin bileşeninidepthile değiştirerek derinlik yolunu türetir; PNG tercih edilir ve NPY'ye geri dönülür. Derinlik dosyası eksik veya okunamaz olan görüntüler, önbelleğe alınmış veri kümesi taraması sırasında bir uyarı ile bırakılır.