Derinlik Tahmini Veri Kümelerine Genel Bakış#
Monoküler derinlik tahmini, bir görüntüdeki her piksele 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 kümesi biçimini açıklar ve eğitim ile doğrulama için kullanılabilen yerleşik veri kümesi yapılandırmalarını listeler.
Desteklenen Veri Kümesi Biçimi#
Derinlik haritası biçimi#
Her eğitim örneği bir RGB görüntüsünden ve buna eşlenmiş bir derinlik dosyasından oluşur. PNG değerleri, metre cinsine dönüştürülmek için isteğe bağlı veri kümesi düzeyindeki depth_scale değerine bölünür. Varsayılan değer 1000 olduğundan, 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ğerleri metre cinsinden ifade edilmelidir. - PNG'ler varsayılan milimetre kuralını kullanmadığında yalnızca
depth_scaledeğerini ayarla. Örneğin KITTI256, Virtual KITTI 2 ise100kullanır. - Her derinlik dosyası, eşleşen görüntü dosyasıyla aynı kök ada sahip olmalıdır (ör.
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 sırasında bunlar bellekte yeniden boyutlandırılır.
- Veri kümesi yükleyicisi,
imagesdizin bileşeninidepthile değiştirerek derinlik dosyalarını bulur;.pngkonumunu tercih eder ve bulunamazsa.npykonumuna geri döner. ≤ 0derinliğine sahip pikseller geçersiz kabul edilir ve kayıp ile metrik hesaplamalarının dışında bırakılır.
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 önerilen eğitim üst sınırları değil, depolama sınırlarıdır. Bir veri kümesi, kayıp kalibrasyonu veya değerlendirme için daha küçük bir max_depth değerini bağımsız olarak ayarlayabilir.
Standart yerleşim, 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ıyla eşleştirilir.
Veri Kümesi YAML Biçimi#
Derinlik tahmini veri kümeleri YAML dosyalarıyla yapılandırılır. Ana alanlar şunlardır:
| Anahtar | Açıklama |
|---|---|
path | Veri kümesinin kök dizini. |
train | path konumuna göreli eğitim görüntüsü yolu veya mutlak yol. |
val | path konumuna göreli doğrulama görüntüsü yolu veya mutlak 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şlemesi — her zaman {0: depth}. |
depth_scale | Metre başına isteğe bağlı PNG birimi; varsayılan değer 1000. |
# 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ç mekandan (≤10 m) dış mekan aralıklarına (~80 m) kadar uzanan geniş bir çoklu veri kümesi karışımında (~2,19M görüntü) önceden eğitilir ve ardından KITTI Eigen dışındakilerde sıfır vuruşlu (zero-shot) olarak beş kıyaslamada değerlendirilir. Her veri kümesinin özel bir sayfası vardır ve birçoğu, göz atma ve bulut tabanlı eğitim için Ultralytics Platform üzerinde barındırılmaktadır.
Hata ayıklama
- Depth8 — hızlı işlem hattı testi için 1,3 MB boyutunda, otomatik indirilen bir arşivde 8 SUN RGB-D görüntüsü
Ön eğitim kaynakları
- ARKitScenes — gerçek iç mekân, Apple ARKit LiDAR (en büyük gerçek kaynak)
- SUN RGB-D — gerçek iç mekân, çok sensörlü RGB-D
- DIODE — gerçek iç ve dış mekân, yoğun lazer tarayıcı temel gerçeği
- Hypersim — sentetik fotogerçekçi iç mekân
- TartanAir — sentetik, çeşitli ortamlar
- Virtual KITTI 2 — sentetik dış mekân sürüşü
- KITTI — gerçek dış mekân sürüşü, Velodyne LiDAR (aynı zamanda bir değerlendirme karşılaştırma veri kümesi)
- ImageNet (sözde etiketli) — sözde etiketli damıtma kümesi, tek başına en büyük kaynak
Değerlendirme karşılaştırma veri kümeleri
- NYU Depth V2 — birincil iç mekân karşılaştırma veri kümesi
- KITTI Eigen — dış mekân sürüşü karşılaştırma veri kümesi
- ETH3D — yüksek hassasiyetli iç ve dış mekân
- Make3D — dağılım dışı dış mekân
- iBims-1 — yüksek kaliteli iç mekân (kenarlar ve düzlemsel yüzeyler)
Bu karşılaştırma veri kümelerindeki model başına doğruluk ve indirilebilir önceden eğitilmiş ağırlıklar Derinlik Tahmini görev sayfasında listelenir. train alanında birden fazla görüntü dizini 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ölme klasörlerine kaydet. - Her görüntü için bir derinlik PNG'sini veya NPY dosyasını, görüntüyle aynı kök adı kullanarak eşleşen
depth/trainvedepth/valklasörleri altına kaydet. Metre dizilerini sıkıştırılmış milimetre PNG'lerine dönüştürmek içinsave_depth_png()kullan. - Kod çözülen derinlik değerlerinin metre cinsinden olduğundan ve geçersiz veya eksik piksellerde
0ya da negatif değerler kullanıldığından emin ol. path,train,val,nc: 1venames: {0: depth}içeren bir veri kümesi 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. Varsayılan olarak her tamsayı adımı bir milimetredir; farklı bir ölçek için veri kümesi YAML dosyasında
depth_scaledeğerini ayarla.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ğerine sahip pikseller geçersiz kabul edilir ve hem kayıp hesaplamasında hem de metrik değerlendirmesinde maskelenir. Bu durum, derinliğin güvenilir şekilde ölçülemediği sensör gürültüsünü, gökyüzü bölgelerini ve yansıtıcı yüzeyleri kapsar.Derinlik tahmini doğrulaması, standart Depth Anything metrik kümesini raporlar:
- delta1 / delta2 / delta3 — 1,25×, 1,25²× ve 1,25³× eşiklerinin içinde kalan piksellerin yüzdesi. Daha yüksek olması daha iyidir.
- abs_rel — ortalama mutlak göreli hata. Düşük olması daha iyidir.
- rmse — metre cinsinden kök ortalama kare hata. Düşük olması daha iyidir.
- silog — ölçekten bağımsız logaritmik hata. Düşük olması daha iyidir.
Evet. Her
.pngveya.npyderinlik dosyası, karşılık gelen görüntüyle aynı kök adı paylaşmalıdır. Yükleyici,imagesdizin bileşeninidepthile değiştirerek derinlik yolunu türetir; PNG'yi tercih eder ve bulunamazsa NPY'ye geri döner. Derinlik dosyası eksik veya okunamayan görüntüler, uyarıyla önbelleğe alınmış veri kümesi taraması sırasında çıkarılır.