Ultralytics YOLO27:
Get Started

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çeklenmiş 16 bit gri tonlamalı PNG'ler veya metre cinsinden kayan noktalı NPY dizileri kullanır.

Bu kılavuz, Ultralytics YOLO derinlik tahmini modellerinin kullandığı 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 eşleştirilmiş bir derinlik dosyasından oluşur. PNG değerleri, metreye 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 değer anlamına gelir; PNG'lerde gömülü meta veri gerekmez.

  • Derinlik dosyaları .png (tercih edilen) veya .npy biçimini kullanı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.
  • depth_scale değerini yalnızca PNG'ler varsayılan milimetre kuralını kullanmıyorsa ayarla. Örneğin KITTI, 256; Virtual KITTI 2 ise 100 kullanır.
  • Her derinlik dosyasının, eşleştiği görüntü dosyasıyla aynı kök dosya adına sahip olması gerekir (ör. scene_001.png, scene_001.jpg ile eşleşir).
  • En-boy oranı aynı kaldığı 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, images dizin bileşenini depth ile değiştirerek derinlik dosyalarını bulur; önce .png konumuna bakar, bulamazsa .npy konumunu dener.
  • Derinlik değeri ≤ 0 olan pikseller geçersiz kabul edilir ve kayıp ile metrik hesaplamalarına dahil edilmez.

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ığı belirler:

Kuraldepth_scaleÇözünürlükMaksimum derinlik
Varsayılan / ARKitScenes10001 mm65.535 m
KITTI2563.90625 mm255.99609375 m
Virtual KITTI 21001 cm655.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 değeri belirleyebilir.

Standart dizin yapısında görüntüler ve derinlik haritaları paralel klasörlerde tutulur:

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. Temel alanlar şunlardır:

AnahtarAçıklama
pathVeri kümesinin kök dizini.
trainpath konumuna göreli veya mutlak eğitim görüntüsü yolu.
valpath konumuna göreli veya mutlak doğrulama görüntüsü yolu.
testİsteğe bağlı test görüntüsü yolu.
ncSınıf sayısı — derinlik tahmini için her zaman 1 olmalıdır.
namesSınıf adı eşlemesi — her zaman {0: depth}.
depth_scaleMetre başına isteğe bağlı PNG birimi sayısı; varsayılan değer 1000.
ultralytics/cfg/datasets/nyu-depth.yaml
# 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.zip

Kullanım#

YOLO26 derinlik tahmini modelini Python veya CLI ile eğit:

Örnek
from ultralytics import YOLO

# Önceden eğitilmiş bir derinlik modelini yükle
model = YOLO("yolo26n-depth.pt")

# NYU Depth V2 veri kümesinde eğit
results = model.train(data="nyu-depth.yaml", epochs=100, imgsz=640)

Desteklenen Veri Kümeleri#

YOLO26 derinlik modelleri, iç mekândan (≤10 m) dış mekâna (~80 m) uzanan aralıklardan alınmış geniş ve çoklu veri kümesi karışımında (~2.19M görüntü) önceden eğitilir, ardından KITTI Eigen dışındaki tüm veri kümelerinde sıfır atışla beş kıyaslamada değerlendirilir. Her veri kümesinin kendine ait bir sayfası vardır ve bazıları göz atma ve bulut eğitimi için Ultralytics Platform üzerinde barındırılır.

Hata ayıklama

  • Depth8 — Hızlı işlem hattı testleri için 1,3 MB boyutunda, otomatik indirilen bir arşivde sunulan 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 veri kaynağı)
  • SUN RGB-D — gerçek iç mekân, çoklu sensörlü RGB-D
  • DIODE — gerçek iç ve dış mekân, yoğun lazer tarayıcı yer gerçeği verisi
  • 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 değerlendirme kıyaslaması)
  • ImageNet (sözde etiketlenmiş) — sözde etiketli damıtma kümesi, tek başına en büyük kaynak

Değerlendirme kıyaslamaları

  • NYU Depth V2 — temel iç mekân kıyaslaması
  • KITTI Eigen — dış mekân sürüş kıyaslaması
  • 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 kıyaslamalardaki model başına doğruluk ve indirilebilir önceden eğitilmiş ağırlıklar Derinlik Tahmini görev sayfasında listelenmiştir. train alanında birden fazla görüntü dizini bulunan 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#

  1. RGB görüntülerini images/train ve images/val gibi bölme klasörlerine kaydet.
  2. Her görüntü için aynı dosya kök adını kullanarak, eşleşen depth/train ve depth/val klasörlerine bir derinlik PNG veya NPY dosyası kaydet. Metre cinsinden dizileri kompakt milimetre PNG'lerine dönüştürmek için save_depth_png() kullan.
  3. Kod çözme işleminden çıkan derinlik değerlerinin metre cinsinden olduğundan ve geçersiz ya da eksik piksellerin 0 veya negatif değer kullandığından emin ol.
  4. path, train, val, nc: 1 ve names: {0: depth} alanlarını içeren bir veri kümesi YAML dosyası oluştur.
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: 1000

Sık Sorulan Sorular#

  • Kompakt veri kümeleri için ölçeklenmiş 16 bit gri tonlamalı PNG'ler kullan. Varsayılan olarak her tam sayı adımı bir milimetredir; farklı bir ölçek için veri kümesi YAML dosyasında depth_scale değerini ayarla. ultralytics.data.utils.save_depth_png(), metre cinsinden dizileri varsayılan biçime dönüştürür. Metre cinsinden kayan noktalı NPY haritaları da doğrudan kullanılabilir.

  • Derinlik değeri ≤ 0 olan pikseller geçersiz kabul edilir ve hem kayıp hesaplamasının hem de metrik değerlendirmesinin dışında tutulur. Bu, derinliğin güvenilir biçimde ölçülemediği sensör gürültüsü, gökyüzü bölgeleri ve yansıtıcı yüzeyleri kapsar.

  • Derinlik tahmini doğrulaması, standart Depth Anything metrik kümesini raporlar:

    • delta1 / delta2 / delta3 — eşiklerin 1.25×, 1.25²×, 1.25³× katı içinde kalan piksellerin oranı. Yüksek değer 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 derinlik .png veya .npy dosyası, karşılık gelen görüntüyle aynı kök dosya adına sahip olmalıdır. Yükleyici, images dizin bileşenini depth ile değiştirerek derinlik yolunu belirler; önce PNG'yi dener, bulamazsa NPY'ye geçer. Derinlik dosyası eksik veya okunamayan görüntüler, önbelleğe alınmış veri kümesi taraması sırasında bir uyarıyla atılır.

Katkıda Bulunanlar

Yorumlar