Link to this sectionMonoküler Derinlik Tahmini#
Monoküler derinlik tahmini, tek bir RGB görüntüsünden piksel bazlı bir derinlik haritası tahmin eder. Her bir çıktı pikseli, kameradan o yüzey noktasına olan tahmini mesafeyi temsil eden metre cinsinden bir derinlik değeri içerir.
Bir derinlik modelinin çıktısı, giriş görüntüsüyle hizalanmış (H, W) şeklinde yoğun bir float haritasıdır. Bu piksel bazlı gösterim, monoküler derinlik tahminini 3D sahne oluşturma, robot navigasyonu, AR/VR içerik oluşturma ve tek bir kameradan uzamsal düzen gerektiren her türlü uygulama için çok uygun hale getirir.
Use task=depth or the yolo depth CLI task for monocular depth estimation. YOLO26 depth model files use the -depth suffix, such as yolo26n-depth.pt.
Link to this sectionModeller#
Geniş bir veri kümesi karışımında (iç mekan + dış mekan, ~2.19M görüntü) önceden eğitilmiş YOLO26 derinlik modelleri aşağıda gösterilmiştir. Metrik sütunları, NYU Depth V2 Eigen test kümesi üzerinde raporlanmıştır.
Modeller ilk kullanımda en son Ultralytics sürümünden otomatik olarak indirilir.
| Model | boyut (piksel) | delta1NYU | abs_relNYU | rmseNYU | parametreler (M) | FLOPs (B) |
|---|---|---|---|---|---|---|
| YOLO26n-depth | 768 | 0.882 | 0.109 | 0.414 | 6.4 | 46.9 |
| YOLO26s-depth | 768 | 0.896 | 0.104 | 0.399 | 13.2 | 67.9 |
| YOLO26m-depth | 768 | 0.921 | 0.089 | 0.364 | 23.3 | 130.7 |
| YOLO26l-depth | 768 | 0.930 | 0.083 | 0.351 | 27.7 | 157.2 |
| YOLO26x-depth | 768 | 0.933 | 0.080 | 0.344 | 57.0 | 302.0 |
- delta1NYU, NYU Depth V2 Eigen test kümesinde (654 görüntü) çok ölçekli + yatay çevirmeli TTA ve log-en-küçük-kareler hizalaması ile tahmin edilen derinliğin gerçek değerin 1.25 katı içinde olduğu piksellerin yüzdesidir.
- TTA olmaksızın tek ölçekli doğruluk,
yolo depth val model=yolo26n-depth.pt data=nyu-depth.yaml imgsz=768 device=0(her boyut içinmodel=kısmını değiştir) komutuyla yeniden üretilebilir; bu komut medyan (sadece ölçek) hizalamasını kullanır ve daha düşük puanlar verir: delta1 0.785 (n), 0.786 (s), 0.827 (m), 0.839 (l), 0.843 (x). - abs_rel, tahmin edilen ve gerçek derinlik değerleri arasındaki ortalama mutlak bağıl hatadır.
- rmse, metre cinsinden kök ortalama kare hatadır.
- params ve FLOPs, yayınlanan ağırlıkların eğitim çözünürlüğü olan 768×768 değerinde ölçülmüştür.
Link to this sectionDerinlik aralığı ve log-derinlik başlığı#
Derinlik başlığı exp(logit) değerini — sınırsız (~0.02–150 m) — tahmin eder ve sahne şeklini mutlak ölçekten ayırır: ağ, bağıl bir log-derinlik alanı tahmin eder ve mutlak metreler, değerlendirme sırasında, hafif bir kalibrasyonla veya ince ayar ile kurtarılan iki parametreli ayrı bir dönüşüm (exp(a·log d + b)) ile ayarlanır. Yaygın bir alternatif olan sınırlı sigmoid × max_depth başlığı ise mimariye sabit bir tavan koyar, böylece max_depth değerinin ötesindeki her türlü derinlik kırpılır; bu da daha uzun mesafeli sahneler üzerinde eğitim yapmayı ve tahmin yürütmeyi engeller.
Link to this sectionBaşlığın neden sınırsız olduğu: derinlik aralıklarındaki kanıtlar#
Kontrollü A/B — aynı veri, aynı program, sadece başlık farklı. Her iki başlığı da iç mekan (≤10 m) ve dış mekan (≤80 m) verilerinin aynı karışımı üzerinde sıfırdan eğitirken:
| Başlık | Çıktı aralığı | Karma aralıklı doğrulama δ1 | Eğitim davranışı |
|---|---|---|---|
sigmoid × max_depth (10 m) | sınırlı 0–10 m | 0.221 | 1. epokta düzleşir |
log (sınırsız) | 0–~150 m | 0.367 (+66%) | boyunca gelişmeye devam eder |
Sınırlı başlık, dış mekan piksellerinin %10'dan fazlasını temsil edemediği için iyileşmeyi neredeyse anında durdurur; log başlığı ise tüm aralıktan öğrenir.
Çözdüğü hata modu — aralığa göre katmanlandırılmış tek veri kümesi ince ayarı. Sınırlı (10 m) bir başlığa bireysel veri kümeleri üzerinde ince ayar yapmak, veriler sınıra uyduğunda çalışır ancak aştığında çöker:
| Veri Seti | Derinlik aralığı | Sınırlı başlık δ1 |
|---|---|---|
| SUN RGB-D | ≤10 m | 0.78 ✅ |
| Hypersim | çoğunlukla ≤10 m | 0.74 ✅ |
| KITTI | ~80 m | 0.08 ❌ (abs_rel ≈ 7.0 — 80/10 ölçek uyumsuzluğu) |
| vKITTI2 | 80 m | 0.04 ❌ |
Çöküş tam olarak sınır noktasında gerçekleşir. log başlığının böyle bir sınırı yoktur.
Yayınlanan modeller — aralıklar arası performans. 10 m (NYU, iBims-1) ile 80 m (KITTI) arasında değişen kıyaslamalarda, ölçek hizalı δ1 ile değerlendirilen gönderilmiş log-başlıklı aile:
| Kıyaslama | Aralık | YOLO26x-depth (log) | önceki sınırlı sürüm |
|---|---|---|---|
| NYU Eigen | 10 m | 0.933 | 0.934 |
| iBims-1 | 10 m | 0.961 | 0.945 |
| ETH3D | ~60 m | 0.959 | 0.931 |
| Make3D | ~70 m | 0.302 | 0.296 |
| KITTI Eigen | 80 m | 0.942 | 0.891 |
| Ortalama | — | 0.819 | 0.799 |
En büyük kazanımlar, sabit 10 m tavanının en çok zarar verdiği uzun menzilli dış mekan kıyaslamalarındadır (KITTI, ETH3D); iç mekan performansı ise korunur.
Link to this sectionEğit (Train)#
YOLO26n-depth modelini Depth8 veri kümesinde 640 görüntü boyutunda 100 epok boyunca eğit. Mevcut tüm bağımsız değişkenlerin tam listesi için Yapılandırma sayfasına bak.
from ultralytics import YOLO
# Load a model
model = YOLO("yolo26n-depth.yaml") # build a new model from YAML
model = YOLO("yolo26n-depth.pt") # load a pretrained model (recommended for training)
model = YOLO("yolo26n-depth.yaml").load("yolo26n-depth.pt") # build from YAML and transfer weights
# Train the model
results = model.train(data="depth8.yaml", epochs=100, imgsz=640)train moduna dair tüm detaylar için Eğitim sayfasına bak.
Link to this sectionKendi verilerin üzerinde ince ayar yapma#
Önceden eğitilmiş bir derinlik modelini özel bir veri kümesine uyarlarken, öğrenme hızını düşür ve AdamW optimize edicisini kullan. Varsayılan optimize edici ayarları sıfırdan eğitim için (SGD ile lr0=0.01) ayarlanmıştır; halihazırda yakınsamış bir derinlik modeline uygulandıklarında, önceden eğitilmiş bilgilerin üzerine yazabilir ve sonuçları kötüleştirebilirler — özellikle tek bir alan üzerinde ince ayar yaparken.
from ultralytics import YOLO
model = YOLO("yolo26s-depth.pt") # start from pretrained weights
model.train(
data="path/to/your_dataset.yaml",
epochs=20,
imgsz=640,
optimizer="AdamW",
lr0=1e-4, # ~100x below the from-scratch default
warmup_bias_lr=1e-4, # keep warmup gentle too
)Ek ipuçları:
- Artırma, standart bağımsız değişkenler (
degrees,translate,scale,shear,perspective,flipud,fliplr,hsv_h,hsv_s,hsv_v) tarafından kontrol edilir; geometrik çarpılma ve çevirmeler eşleştirilmiş derinlik haritasına aynı şekilde uygulanır. Yayınlanan YOLO26-Depth ağırlıkları için kullanılan kesin tarifi görmek için denetim noktasında saklanantrain_argskısmını incele — YOLO26 Denetim Noktası Eğitim Bağımsız Değişkenlerini İnceleme bölümüne bak. mosaic,mixup,cutmixvecopy_pastederinlik için uygulanmamıştır. Derinlik veri kümesi yükleyicisi bu olasılıkları otomatik olarak 0'a ayarlar, bu nedenle bunları geçirmek bir etki yaratmaz. Bu artırmalar desteklenmez çünkü birden fazla görüntüyü birleştirirler, bu da geçersiz eşleştirilmiş derinlik haritaları üretir.- Herhangi bir derinlik aralığı kutudan çıktığı gibi çalışır.
log-başlıklı modeller sınırsız derinlik tahmin eder, bu nedenle değişiklik yapmadan kısa menzilli (makro) veya uzun menzilli (dış mekan/sürüş) verilere uyum sağlarlar. Veri kümesi YAML dosyanızda (metre cinsinden)max_depth:ayarını yapmak, hangi GT piksellerinin doğrulama metriklerine dahil edileceğini sınırlar. - Genel performansı koru. Modelin eğitim kümenizin ötesindeki sahnelerde de doğru kalması gerekiyorsa, eğitim verilerinizin içine küçük bir oranda (~%5–10) çeşitli genel amaçlı görüntüler karıştır; bu, ince ayar sırasında unutmayı önemli ölçüde azaltır.
- Sıfırdan eğit (
model=yolo26s-depth.yaml) işlemini yalnızca alanınız çok farklıysa ve büyük bir veri kümeniz varsa yapın; orada varsayılan SGDlr0=0.01uygundur, çünkü korunacak önceden eğitilmiş ağırlıklar yoktur.
Link to this sectionDerinlik ölçeğini kalibre etme#
Derinlik başlığı şekli (bağıl sahne yapısı) ölçekten (mutlak metre) ayırır. Bir model sahnelerinizde zaten iyi bir bağıl derinlik üretiyorsa ancak mutlak değerler kameranız için yanlışsa, ölçeği model.calibrate() ile saniyeler içinde düzeltebilirsiniz; bu, hiçbir gradyan eğitimi ve ağ ağırlıklarında değişiklik olmadan, küçük bir etiketli küme üzerinde iki parametreli log-afin sığdırmasıdır, bu nedenle bağıl yapıyı bozamaz.
from ultralytics import YOLO
model = YOLO("yolo26s-depth.pt")
# Fit scale on a labeled split (~100+ images is enough), then persist it
model.calibrate(data="path/to/your_dataset.yaml")
model.save("yolo26s-depth-calibrated.pt")Kalibrasyon, sığdırma yapmak için gerçek derinlik verisine ihtiyaç duyar, bu nedenle etiketli bir küme üzerinde çalışır; kör çıkarım sırasında gerçekleşebilecek bir şey değildir. Bağıl derinlik zaten iyiyse ve sadece ölçek/aralık yanlışsa kullan; alanınız için bağıl yapının kendisinin değişmesi gerekiyorsa bunun yerine ince ayar yap.
Eğitim bunu sizin için otomatik olarak yapar: model.train(...) tamamlandıktan sonra, en iyi ve son denetim noktaları doğrulama kümesi üzerinde kalibre edilir, böylece kutudan çıktığı gibi metrik ölçekli derinlik verirler.
Yayınlanan yolo26*-depth.pt denetim noktaları, ön eğitim doğrulama karışımı üzerinde eğitilmiş ve bu kalibrasyon hali hazırda içine işlenmiş olarak gelir. Tüm alanlar için tek bir küresel ölçektir, bu nedenle belirli bir kamera veya sahne türünde en doğru mutlak derinlik için kendi verilerinizden küçük etiketli bir küme üzerinde model.calibrate() komutunu çalıştır — bu, içine işlenmiş sığdırmanın yerini alır.
Link to this sectionVeri kümesi biçimi#
Derinlik tahmini veri kümeleri, her RGB görüntüsünü karşılık gelen bir derinlik dosyasıyla eşleştirir. Derinlik hedefleri, metre cinsinden float32 değerleri içeren .npy dizilerinde saklanır. Veri kümesi YAML dosyası bir images/ dizinine işaret eder; yükleyici, derinlik dosyası yolunu images bileşenini depth ile değiştirerek ve görüntü uzantısını .npy ile değiştirerek türetir.
dataset/
├── images/
│ ├── train/
│ └── val/
└── depth/
├── train/
└── val/Örneğin, images/train/scene_001.jpg adresindeki bir görüntü, depth/train/scene_001.npy adresindeki bir derinlik haritasıyla eşleştirilir. Tam format belirtimi için Derinlik Tahmini Veri Kümesi Kılavuzu bölümüne bak.
Link to this sectionDoğrula (Val)#
Eğitilmiş bir YOLO26n-depth modelinin doğruluğunu bir derinlik tahmini veri kümesi üzerinde doğrula. Doğrulamanın amaçlanan veri kümesi YAML'sini kullanması için data kısmını açıkça geçir. Yayınlanan ağırlıklar imgsz=768 boyutunda eğitilmiştir, bu nedenle en iyi doğruluk için bu boyutta doğrula ve tahmin et.
from ultralytics import YOLO
# Load a model
model = YOLO("yolo26n-depth.pt") # load an official model
model = YOLO("path/to/best.pt") # load a custom model
# Validate the model
metrics = model.val(data="nyu-depth.yaml")
metrics.delta1 # percentage of pixels within threshold δ=1.25
metrics.abs_rel # mean absolute relative error
metrics.rmse # root mean squared error (meters)
metrics.silog # scale-invariant logarithmic errorLink to this sectionTahmin Et (Predict)#
Görüntüler üzerinde tahmin yapmak için eğitilmiş bir YOLO26n-depth modeli kullan.
from ultralytics import YOLO
# Load a model
model = YOLO("yolo26n-depth.pt") # load an official model
model = YOLO("path/to/best.pt") # load a custom model
# Predict with the model
results = model("https://ultralytics.com/images/bus.jpg") # predict on an image
# Access the results
for result in results:
depth_map = result.depth.data.cpu().numpy() # torch.Tensor -> NumPy float32, shape (H, W), metersTüm predict modu ayrıntılarını Tahmin (Predict) sayfasında görebilirsin.
Link to this sectionSonuç Çıktısı#
YOLO derinlik tahmini, görüntü başına bir Results nesnesi döndürür. Her sonuç, tam görüntü için yoğun bir float derinlik haritası saklar.
| Öznitelik | Tip | Şekil | Açıklama |
|---|---|---|---|
result.depth | DepthMap | (H,W) | Yoğun piksel bazlı derinlik haritası. |
result.depth.data | torch.Tensor | (H,W) | Metre cinsinden derinlik değerleri; NumPy için .cpu().numpy() çağrısı yap. |
result.boxes | - | - | Örnek kutusu yok. |
result.masks | - | - | Örnek maskesi yok. |
Her görev için göreve özel Results alanlarını görmek istersen, Göreve Göre Tahmin Sonuçları bölümüne bak.
Link to this sectionDışa Aktar (Export)#
Bir YOLO26n-depth modelini ONNX, CoreML vb. gibi farklı bir formata dışa aktar.
from ultralytics import YOLO
# Load a model
model = YOLO("yolo26n-depth.pt") # load an official model
model = YOLO("path/to/best.pt") # load a custom model
# Export the model
model.export(format="onnx")Mevcut YOLO26 derinlik tahmini dışa aktarma formatları aşağıdaki tablodadır. format bağımsız değişkenini kullanarak, yani format='onnx' veya format='engine' ile herhangi bir formata dışa aktarabilirsin. Dışa aktarılan modeller üzerinde doğrudan tahmin yapabilir veya doğrulayabilirsin, yani yolo predict model=yolo26n-depth.onnx. Dışa aktarma tamamlandıktan sonra modeliniz için kullanım örnekleri gösterilir.
| Format | format Argümanı | Model | Meta veriler | Argümanlar |
|---|---|---|---|---|
| PyTorch | - | yolo26n-depth.pt | ✅ | - |
| TorchScript | torchscript | yolo26n-depth.torchscript | ✅ | imgsz, quantize, dynamic, nms, batch, device |
| ONNX | onnx | yolo26n-depth.onnx | ✅ | imgsz, quantize, dynamic, simplify, opset, nms, batch, data, fraction, device |
| OpenVINO | openvino | yolo26n-depth_openvino_model/ | ✅ | imgsz, quantize, dynamic, nms, batch, data, fraction, device |
| TensorRT | engine | yolo26n-depth.engine | ✅ | imgsz, quantize, dynamic, simplify, opset, workspace, nms, batch, data, fraction, device |
| CoreML | coreml | yolo26n-depth.mlpackage | ✅ | imgsz, dynamic, quantize, nms, batch, device |
| TF SavedModel | saved_model | yolo26n-depth_saved_model/ | ✅ | imgsz, keras, quantize, nms, batch, data, fraction, device |
| TF GraphDef | pb | yolo26n-depth.pb | ❌ | imgsz, batch, device |
| TF Edge TPU | edgetpu | yolo26n-depth_edgetpu.tflite | ✅ | imgsz, quantize, data, fraction, device |
| PaddlePaddle | paddle | yolo26n-depth_paddle_model/ | ✅ | imgsz, batch, device |
| MNN | mnn | yolo26n-depth.mnn | ✅ | imgsz, batch, dynamic, quantize, nms, device |
| NCNN | ncnn | yolo26n-depth_ncnn_model/ | ✅ | imgsz, quantize, batch, device |
| IMX500 | imx | yolo26n-depth_imx_model/ | ✅ | imgsz, quantize, data, fraction, nms, device |
| RKNN | rknn | yolo26n-depth_rknn_model/ | ✅ | imgsz, batch, name, quantize, data, fraction, device |
| ExecuTorch | executorch | yolo26n-depth_executorch_model/ | ✅ | imgsz, batch, device |
| Axelera | axelera | yolo26n-depth_axelera_model/ | ✅ | imgsz, batch, quantize, data, fraction, device |
| DEEPX | deepx | yolo26n-depth_deepx_model/ | ✅ | imgsz, quantize, data, optimize, device |
| Qualcomm QNN | qnn | yolo26n-depth_qnn.onnx | ✅ | imgsz, batch, name, quantize, data, fraction, device |
| LiteRT | litert | yolo26n-depth.tflite | ✅ | imgsz, quantize, batch, data, fraction, device |
| Hailo | hailo | yolo26n-depth_hailo_model/ | ✅ | imgsz, name, quantize, data, fraction, simplify, conf, iou |
Tüm export ayrıntılarını Export sayfasında bulabilirsin.
Link to this sectionSSS#
Link to this sectionÖzel bir veri kümesinde nasıl YOLO26 derinlik kestirim modeli eğitebilirim?#
Eşleştirilmiş RGB görüntüleri ve .npy derinlik dosyalarını hazırla, ardından images/ dizinini işaret eden bir veri kümesi YAML dosyası oluştur. Yükleyici, yoldaki images ifadesini depth ile değiştirerek ve görüntü uzantısını .npy ile takas ederek derinlik dosyalarını otomatik olarak bulur.
Önceden eğitilmiş ağırlıklarla başla ve ince ayarın modelin zaten bildiklerini koruması için AdamW ile düşük bir öğrenme oranı kullan (nedeni için Kendi verilerin üzerinde ince ayar bölümüne bak):
from ultralytics import YOLO
# Load a pretrained YOLO26 depth model
model = YOLO("yolo26s-depth.pt")
# Fine-tune on a custom depth dataset
results = model.train(
data="path/to/your_dataset.yaml",
epochs=20,
imgsz=640,
optimizer="AdamW",
lr0=1e-4,
warmup_bias_lr=1e-4,
)Daha fazla mevcut argüman için Yapılandırma sayfasına göz at.
Link to this sectionYOLO26 derinlik kestirimi hangi metrikleri raporlar?#
Derinlik kestirimi doğrulaması, Depth Anything ve ilgili monoküler derinlik çalışmaları tarafından kullanılan metrik setini raporlar:
- delta1 / delta2 / delta3 — tahmin edilen derinliğin gerçek derinliğe (veya tam tersine) oranının sırasıyla 1.25, 1.25² ve 1.25³ altında olduğu 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.
Her tahmin, görüntü başına gerçek değerine göre medyan hizalıdır ve istatistikler daha sonra doğrulama setinin her geçerli pikseli üzerinden birleştirilir (daha fazla geçerli derinlik pikseline sahip görüntüler orantısal olarak daha fazla ağırlık taşır). Bunun yerine görüntü başına metriklerin ortalamasını alan makaleler, aynı tahminler üzerinde biraz farklı değerler rapor edebilir.
Link to this sectionDerinlik haritası çıktı biçimi nedir?#
The depth map is stored as a torch.Tensor of shape (H, W) where each value is the predicted depth in meters (use result.depth.data.cpu().numpy() for a NumPy float32 array). Access it through result.depth.data after running prediction. The map is aligned to the input image resolution.
Link to this sectionDerinlik kestirimi için hangi veri kümeleri destekleniyor?#
Ultralytics YOLO26; NYU Depth V2, KITTI, Hypersim, SUN RGB-D ve ARKitScenes dahil olmak üzere birçok derinlik kestirimi veri kümesi için yerleşik veri kümesi YAML yapılandırmaları sağlar. Liste ve biçim detaylarının tamamı için Derinlik Kestirimi Veri Kümesi Kılavuzuna bak.
Link to this sectionÖnceden eğitilmiş bir YOLO26 derinlik kestirim modelini nasıl doğrularım?#
Değerlendirme için kullanılan veri kümesi YAML dosyasını sağlayarak önceden eğitilmiş bir YOLO26 derinlik modelini doğrula:
from ultralytics import YOLO
# Load a pretrained model
model = YOLO("yolo26n-depth.pt")
# Validate the model
metrics = model.val(data="nyu-depth.yaml")
print("delta1:", metrics.delta1)
print("abs_rel:", metrics.abs_rel)
print("rmse:", metrics.rmse)Link to this sectionBir YOLO26 derinlik kestirim modelini nasıl ONNX biçimine dışa aktarabilirim?#
Python veya CLI kullanarak bir YOLO26 derinlik modelini ONNX'e dışa aktar:
from ultralytics import YOLO
# Load a pretrained model
model = YOLO("yolo26n-depth.pt")
# Export the model to ONNX format
model.export(format="onnx")Çeşitli formatlara dışa aktarma hakkında daha fazla ayrıntı için Dışa Aktarma sayfasına başvur.