Kurumsal kullanıma hazır güvenlik: ISO 27001 + SOC 2 Tip I uyumlu.

Link to this sectionKITTI Derinlik Veri Kümesi#

KITTI veri kümesi, Karlsruhe şehri ve çevresinde hareketli bir araçtan kaydedilmiş, gerçek dünyadan otonom sürüş için bir benchmark'tır. Tek gözlü derinlik tahmini için temel gerçeklik derinliği, bir Velodyne HDL-64 LiDAR tarayıcısından elde edilir ve Uhrig ve ark. 2017 yöntemi kullanılarak yoğunlaştırılır. Ortaya çıkan derinlik haritaları seyrek kalır ve piksellerin yaklaşık %16-20'si geçerli bir derinlik değerine sahiptir. KITTI, YOLO26-Depth ön eğitim karışımındaki tek gerçek dış mekan uzun menzilli kaynaktır ve aynı zamanda KITTI Eigen değerlendirme benchmark'ı olarak hizmet eder.

Link to this sectionTemel Özellikler#

  • Yaklaşık 80 metreye kadar uzanan derinliklere sahip, tipik iç mekan menzilinin çok ötesindeki gerçek dış mekan sürüş sahneleri.
  • Velodyne HDL-64 LiDAR'dan elde edilen ve Uhrig ve ark. 2017'nin Sparsity Invariant CNNs yaklaşımıyla yoğunlaştırılan derinlik temel gerçekliği.
  • Seyrek denetim: görüntü başına piksellerin yalnızca yaklaşık %16-20'si geçerli bir derinlik değerine sahiptir; geçersiz pikseller kayıp ve metriklerden maskelenerek çıkarılır.
  • Stereo görüntü çiftleri (sol image_02 ve sağ image_03), eğitim için ek bakış açıları sağlar.
  • Depth values are stored as .npy float32 arrays in meters, following the Ultralytics depth dataset format.

Link to this sectionVeri Kümesi Yapısı#

Ultralytics tarafından kullanılan KITTI derinlik verileri iki alt kümeye ayrılmıştır:

  1. Eğitim ayrımı: 60.040 görüntü (sol image_02 ve sağ image_03). Değerlendirmeyi adil tutmak için 28 KITTI Eigen test sürüşü eğitimden hariç tutulmuştur.
  2. Değerlendirme ayrımı: KITTI Eigen test ayrımı, 32.378 görüntü (her iki kamera). Değerlendirme, Garg kırpma (crop), 80 m derinlik sınırı ve tahminler ile temel gerçeklik arasında log-en küçük kareler hizalamasını kullanır.

Derinlik aralığı yaklaşık 80 m'ye ulaşır ve veri kümesi YAML dosyası (depth-kitti.yaml), max_depth: 80 değerini buna göre ayarlar.

Link to this sectionYOLO26-Depth içindeki rolü#

KITTI, YOLO26-Depth ön eğitim karışımındaki tek gerçek dış mekan, uzun menzilli denetimi sağlar ve ağırlıklı olarak iç mekan kaynaklarını tamamlar. Ayrıca, sürüş sahnesi derinlik doğruluğunu raporlamak için standart KITTI Eigen benchmark'ıdır.

KITTI is a key example of why the depth head is unbounded (log mode): a fixed 10 m output ceiling cannot represent 80 m driving scenes. See the depth task page for details on the head output range and max_depth handling.

Link to this sectionSonuçlar#

Model boyutuna göre KITTI Eigen delta1 doğruluğu (daha yüksek olması daha iyidir):

ModelKITTI Eigen δ1
YOLO26n-Depth0.888
YOLO26s-Depth0.882
YOLO26m-Depth0.924
YOLO26l-Depth0.927
YOLO26x-Depth0.939

Link to this sectionVeri Kümesi YAML#

Veri kümesi yapılandırmasını tanımlamak için bir YAML (Yet Another Markup Language) dosyası kullanılır. Dosya; veri kümesi yolları, sınıflar ve maksimum derinlik gibi diğer ilgili bilgiler hakkında veriler içerir.

ultralytics/cfg/datasets/depth-kitti.yaml
# Ultralytics 🚀 AGPL-3.0 License - https://ultralytics.com/license

# KITTI dataset for monocular depth estimation — real outdoor driving, Velodyne HDL-64 LiDAR (densified), sparse, up to ~80 m
# Documentation: https://docs.ultralytics.com/datasets/depth/kitti
# Example usage: yolo depth train data=depth-kitti.yaml model=yolo26n-depth.pt
# parent
# ├── ultralytics
# └── datasets
#     └── depth-kitti  ← downloads here (~190 GB archives, ~230 GB converted)
#         ├── images/{train,val}  # RGB images
#         └── depth/{train,val}   # paired *.npy, float32 meters (images/ -> depth/)
# If an interrupted download leaves a partial dataset, delete the depth-kitti dir and re-run to rebuild it.

path: depth-kitti # dataset root dir (relative to Ultralytics settings 'datasets_dir')
train: images/train # train images (relative to 'path') 60040 images
val: images/val # val images (relative to 'path') 32378 images (KITTI Eigen test split)
max_depth: 80 # (m) maximum valid depth; GT beyond this is excluded from val metrics

nc: 1
names:
  0: depth

channels: 3

# Download script/URL (optional)
download: |
  import shutil
  from pathlib import Path

  import cv2
  import numpy as np

  from ultralytics.utils import TQDM
  from ultralytics.utils.downloads import download

  # Drives of the 28 KITTI Eigen test scenes -> val; every other annotated drive -> train
  VAL_DRIVES = """2011_09_26_drive_0002 2011_09_26_drive_0009 2011_09_26_drive_0013 2011_09_26_drive_0020
  2011_09_26_drive_0023 2011_09_26_drive_0027 2011_09_26_drive_0029 2011_09_26_drive_0036 2011_09_26_drive_0046
  2011_09_26_drive_0048 2011_09_26_drive_0052 2011_09_26_drive_0056 2011_09_26_drive_0059 2011_09_26_drive_0064
  2011_09_26_drive_0084 2011_09_26_drive_0086 2011_09_26_drive_0093 2011_09_26_drive_0096 2011_09_26_drive_0101
  2011_09_26_drive_0106 2011_09_26_drive_0117 2011_09_28_drive_0002 2011_09_29_drive_0026 2011_09_29_drive_0071
  2011_09_30_drive_0016 2011_10_03_drive_0034 2011_10_03_drive_0042 2011_10_03_drive_0047""".split()
  # Annotated drives excluded from the release training set (raw data was unavailable at build time)
  SKIP_DRIVES = {"2011_09_28_drive_0104", "2011_09_28_drive_0135", "2011_09_28_drive_0177", "2011_09_28_drive_0214"}

  # Download the improved sparse GT (~14 GB) and the raw recordings it covers (~175 GB)
  dir = Path(yaml["path"])  # dataset root dir
  base = "https://s3.eu-central-1.amazonaws.com/avg-kitti"
  download([f"{base}/data_depth_annotated.zip"], dir=dir / "source", delete=True, exist_ok=True)
  gt_drives = sorted(p for p in (dir / "source" / "data_depth_annotated").glob("*/*_sync") if p.name[:-5] not in SKIP_DRIVES)
  urls = [f"{base}/raw_data/{p.name[:-5]}/{p.name}.zip" for p in gt_drives]
  download(urls, dir=dir / "source" / "raw", delete=True, exist_ok=True, threads=4)

  # Convert: GT PNGs are uint16 meters*256; RGB frames come from the matching raw drive
  for split in ("train", "val"):
      (dir / "images" / split).mkdir(parents=True, exist_ok=True)
      (dir / "depth" / split).mkdir(parents=True, exist_ok=True)
  for gt in TQDM(gt_drives, desc="Converting"):
      drive = gt.name[:-5]  # 2011_09_26_drive_0002
      split = "val" if drive in VAL_DRIVES else "train"
      for cam in ("image_02", "image_03"):
          for png in sorted((gt / "proj_depth" / "groundtruth" / cam).glob("*.png")):
              name = f"{drive}_{cam[-2:]}_{png.stem}"
              depth = cv2.imread(str(png), cv2.IMREAD_ANYDEPTH).astype(np.float32) / 256.0
              np.save(dir / "depth" / split / f"{name}.npy", depth)
              raw = dir / "source" / "raw" / drive[:10] / gt.name / cam / "data" / png.name
              raw.replace(dir / "images" / split / f"{name}.png")
  shutil.rmtree(dir / "source")

Link to this sectionKullanım#

KITTI veri kümesinde 100 dönem (epoch) boyunca bir YOLO26n-Depth modeli eğitmek için aşağıdaki kod parçacıklarını kullanabilirsin. Mevcut argümanların kapsamlı bir listesi için Eğitim model sayfasına başvur.

Eğitim Örneği
from ultralytics import YOLO

# Load a pretrained depth model
model = YOLO("yolo26n-depth.pt")

# Train the model on KITTI
results = model.train(data="depth-kitti.yaml", epochs=100, imgsz=640)

Link to this sectionÖnceden Eğitilmiş Modeller#

Önceden eğitilmiş YOLO26-Depth modelleri, isimleriyle ilk kez referans verildiğinde Ultralytics v8.4.0 varlık sürümünden otomatik olarak indirilir:

Link to this sectionAlıntılar ve Teşekkür#

KITTI veri kümesini araştırma veya geliştirme çalışmalarında kullanıyorsan, lütfen aşağıdaki makalelere atıfta bulun:

Alıntı
@article{geiger2013vision,
      title={Vision meets Robotics: The KITTI Dataset},
      author={Geiger, Andreas and Lenz, Philip and Stiller, Christoph and Urtasun, Raquel},
      journal={The International Journal of Robotics Research},
      year={2013},
      publisher={SAGE Publications}
}

@inproceedings{uhrig2017sparsity,
      title={Sparsity Invariant CNNs},
      author={Uhrig, Jonas and Schneider, Nick and Schneider, Lukas and Franke, Uwe and Brox, Thomas and Geiger, Andreas},
      booktitle={International Conference on 3D Vision (3DV)},
      year={2017}
}

KITTI veri kümesini oluşturdukları ve sürdürdükleri için Karlsruhe Teknoloji Enstitüsü ve Chicago'daki Toyota Teknolojik Enstitüsü'ne ve yoğun denetimi mümkün kılan derinlik yoğunlaştırma yöntemi için Uhrig ve ark.'na teşekkür ederiz.

Katkıda Bulunanlar

Yorumlar