Ultralytics YOLO27:

Ultralytics YOLO ile Monoküler Derinlik Tahmini#

Monocular depth estimation examples

Monoküler derinlik tahmini, tek bir RGB görüntüsünden piksel başına derinlik haritası öngörür. Her çıktı pikseli, kameradan o yüzey noktasına tahmini mesafeyi metre cinsinden temsil eden 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. Piksel başına bu gösterim, monoküler derinlik tahminini 3B sahne yeniden oluşturma, robot navigasyonu, AR/VR içerik oluşturma ve tek bir kameradan uzamsal yerleşim gerektiren tüm uygulamalar için uygun hale getirir.

İpucu

Monoküler derinlik tahmini için task=depth veya yolo depth CLI görevini kullan. YOLO26 derinlik model dosyaları, yolo26n-depth.pt gibi -depth son ekini kullanır.



Watch: Monocular Depth Estimation with Ultralytics YOLO26 | Python Tutorial | Vision AI 🚀

Modeller#

Geniş ve çoklu veri kümesi karışımıyla (iç mekân + dış mekân, ~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 bölümünde raporlanmıştır.

Modeller, ilk kullanımda en güncel Ultralytics sürümünden otomatik olarak indirilir.

Modelboyut
(piksel)
delta1NYUabs_relNYUrmseNYUHız
CPU ONNX
(ms)
Hız
T4 TensorRT10
(ms)
parametre
(M)
FLOPs
(B)
YOLO26n-depth7680.8820.1090.414272.0 ± 27.22.7 ± 0.16.346.9
YOLO26s-depth7680.8960.1040.399393.7 ± 13.13.8 ± 0.013.268.0
YOLO26m-depth7680.9210.0890.364621.5 ± 49.76.0 ± 0.123.3130.4
YOLO26l-depth7680.9300.0830.351821.9 ± 50.77.7 ± 0.127.7157.0
YOLO26x-depth7680.9330.0800.3441240.9 ± 73.313.6 ± 0.257.0301.7
  • delta1NYU, NYU Depth V2 Eigen test bölümünde (654 görüntü), çok ölçekli + yatay çevirme TTA ve log-en küçük kareler hizalaması kullanılarak, öngörülen derinliğin gerçek derinliğin 1,25 katı içinde olduğu piksellerin yüzdesidir.
  • TTA olmadan tek ölçekli doğruluk, 768×768'de yolo depth val model=yolo26n-depth.pt data=nyu-depth.yaml imgsz=768 device=0 ile (model= her boyut için bunun yerine kullanılarak) yeniden üretilebilir; bu yöntem medyan (yalnızca ölçek) hizalaması kullanır ve daha düşük sonuç verir: delta1 0.783 (n), 0.793 (s), 0.840 (m), 0.853 (l), 0.860 (x).
  • abs_rel, öngörülen ve gerçek derinlik değerleri arasındaki ortalama mutlak bağıl hatadır.
  • rmse, metre cinsinden kök ortalama kare hatasıdır.
  • Hız, imgsz=768, batch=1 değerlerinde, ısınma sonrasındaki zamanlanmış çalıştırmaların ortalaması ± standart sapması olarak raporlanan, yalnızca çıkarım gecikmesidir (ön/son işleme dâhil değildir). CPU ONNX, 32 çekirdekli Intel Xeon (Skylake) üzerinde ONNX Runtime fp32'dir; T4 TensorRT10, Tesla T4 üzerinde TensorRT fp16'dır.
  • parametre ve FLOPs, yayımlanan ağırlıkların eğitim çözünürlüğü olan 768×768'de ölçülmüştür.

Ön hazırlık niteliğindeki NYU Depth V2 sonuçları için yayınlanmamış YOLO27 önizlemesine göz at.

Depth Anything V2 ile hız karşılaştırması#

Depth Anything V2, monoküler derinlik için yaygın olarak kullanılan açık bir temel modeldir. DINOv2 görüntü Transformer omurgası ve DPT kod çözücüsü yoğun hesaplama gerektirdiğinden, aynı Tesla T4 üzerinde TensorRT fp16 kullanıldığında yayımlanan en küçük Depth Anything V2 modeli, YOLO26x-depth dâhil tüm YOLO26 derinlik modellerinden daha yavaştır; üstelik YOLO26x-depth iki kattan fazla parametre taşır.

~768 pikselde — YOLO26 için imgsz=768 (yayımlanan ağırlıklarının eğitildiği çözünürlük) ve DINOv2 omurgası 14'lük yama boyutunun katını gerektirdiği için Depth Anything V2 için 770 pikselde:

Modelparametre (M)FLOPs (B)T4 TensorRT10 (ms)FPSV2 Small'a göre hızlanmaV2 Base'e göre hızlanma
Depth Anything V2 Base97.51025.555.4018.1
Depth Anything V2 Small24.8346.920.9947.6
YOLO26x-depth57.0301.713.5773.71.5×4.1×
YOLO26l-depth27.7157.07.68130.22.7×7.2×
YOLO26m-depth23.3130.46.00166.73.5×9.2×
YOLO26s-depth13.268.03.82261.65.5×14.5×
YOLO26n-depth6.346.92.73365.87.7×20.3×

~640 pikselde — sırasıyla imgsz=640 ve 644 pikselde — sıralama değişmez ve YOLO26n-depth, Depth Anything V2 Small'dan 5,9× daha hızlıdır:

ModelT4 TensorRT10 (ms)FPS
Depth Anything V2 Base35.1028.5
Depth Anything V2 Small13.6273.4
YOLO26x-depth10.2697.5
YOLO26l-depth6.14162.8
YOLO26m-depth4.71212.1
YOLO26s-depth3.08324.4
YOLO26n-depth2.29436.9
  • Gecikme yalnızca çıkarıma aittir: batch=1, Tesla T4 üzerinde TensorRT fp16 — yukarıdaki model tablosuyla aynı test düzeneği — burada iki ondalık basamakla gösterilmiştir; FPS, yuvarlanmamış gecikmenin çarpmaya göre tersidir. Hızlanma sütunları, Depth Anything V2 Small (20.99 ms) ve Base (55.40 ms) gecikmelerini YOLO26 gecikmesine böler.
  • Depth Anything V2 Small ve Base, yayımlanan ViT-S ve ViT-B kontrol noktalarıdır.
  • Karşılaştırma yalnızca gecikmeyi kapsar; iki model ailesi burada ortak bir doğruluk protokolü kapsamında değerlendirilmemiştir.

Derinlik aralığı ve log-derinlik başlığı#

Derinlik başlığı exp(logit) öngörür — sınırsız (~0.02–150 m) — ve sahne şeklini mutlak ölçekten ayırır: ağ, göreli bir log-derinlik alanı öngörür ve mutlak metre değerleri, değerlendirme sırasında, hafif kalibrasyonla veya ince ayarla geri kazanılan ayrı bir iki parametreli dönüşüm (exp(a·log d + b)) tarafından belirlenir. Yaygın alternatif olan sınırlı sigmoid × max_depth başlığı ise mimariye sabit bir üst sınır işler; bu nedenle max_depth ötesindeki tüm derinlikler kırpılır ve bu da daha uzak menzilli sahneler üzerinde eğitim yapılmasını ve bu sahnelerin öngörülmesini engeller.

Başlık neden sınırsız: derinlik aralıkları genelinde kanıtlar#

Kontrollü A/B — aynı veri, aynı zamanlama, yalnızca başlık farklı. Her iki başlığın da aynı iç mekân (≤10 m) ve dış mekân (≤80 m) veri karışımı üzerinde sıfırdan eğitilmesi:

BaşlıkÇıktı aralığıKarışık aralık doğrulama δ1Eğitim davranışı
sigmoid × max_depth (10 m)sınırlı 0–10 m0.2211. epoch'ta plato yapar
log (sınırsız)0–~150 m0.367 (+66%)boyunca iyileşir

Sınırlı başlık, dış mekân piksellerinin çoğunluğunu oluşturan >10 m değerlerini temsil edemez; bu nedenle neredeyse hemen iyileşmeyi bırakır. log başlığı ise tüm aralıktan öğrenir.

Düzelttiği hata biçimi — aralığa göre katmanlandırılmış tek veri kümesi ince ayarı. Sınırlı (10 m) bir başlığın tek tek veri kümelerinde ince ayarlanması, veri üst sınıra uyduğunda işe yarar ve üst sınırı aştığında çöker:

Veri kümesiDerinlik aralığıSınırlı başlık δ1
SUN RGB-D≤10 m0.78 ✅
Hypersimçoğunlukla ≤10 m0.74 ✅
KITTI~80 m0.08 ❌ (abs_rel ≈ 7.0 — 80/10 ölçek uyumsuzluğu)
vKITTI280 m0.04 ❌

Çöküş tam olarak üst sınırın bulunduğu noktada gerçekleşir. log başlığında böyle bir sınır yoktur.

Yayımlanan modeller — aralıklar arası performans. 10 m'den (NYU, iBims-1) 80 m'ye (KITTI) uzanan kıyaslamalarda değerlendirilen ve ölçek hizalı δ1 kullanan, log başlıklı yayımlanmış model ailesi:

KıyaslamaAralıkYOLO26x-depth (log)önceki sınırlı sürüm
NYU Eigen10 m0.9330.934
iBims-110 m0.9610.945
ETH3D~60 m0.9590.931
Make3D~70 m0.3020.296
KITTI Eigen80 m0.9420.891
Ortalama0.8190.799

Her iki sütun da yayımlandığı şekliyle verilmiştir. Diğer satırlar, veri kümesi sayfalarında açıklanan TTA ve log-en küçük kareler protokolüyle puanlanmıştır; bu depodaki doğrulayıcı bu protokolü uygulamadığından KITTI satırı aynı koşullarda yeniden ölçülemez. KITTI sayfasında bunun yerine kanonik 652 karelik Eigen bölümünde ölçülen değerler yer alır.

En büyük kazanımlar, daha uzun menzilli dış mekân kıyaslamalarında (KITTI, ETH3D) görülür — sabit 10 m üst sınırının en çok zarar verdiği yerler tam olarak burasıdır — iç mekân performansı ise korunur.

Eğit#

YOLO26n-depth'i Depth8 veri kümesi üzerinde 100 epoch boyunca, görüntü boyutu 640 olacak şekilde eğit. Kullanılabilir tüm bağımsız değişkenlerin tam listesi için Yapılandırma sayfasına bak.

Örnek
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 modunun tüm ayrıntılarını Eğit sayfasında görebilirsin.

Kendi verilerin üzerinde ince ayar#

Önceden eğitilmiş bir derinlik modelini özel bir veri kümesine uyarlarken öğrenme oranını düşür ve AdamW optimizer'ını kullan. Varsayılan optimizer ayarları sıfırdan eğitim ( lr0=0.01 ile SGD) için ayarlanmıştır; zaten yakınsamış bir derinlik modeline uygulandıklarında, özellikle tek bir alanda ince ayar yapılırken, önceden öğrenilmiş bilgilerin üzerine yazabilir ve sonuçları kötüleştirebilir.

Önerilen ince ayar tarifi
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şkenlerle denetlenir (degrees, translate, scale, shear, perspective, flipud, fliplr, hsv_h, hsv_s, hsv_v); geometrik çarpıtma ve çevirmeler, eşleştirilmiş derinlik haritasına da aynı şekilde uygulanır. Yayımlanan YOLO26-Depth ağırlıkları için kullanılan tam tarifi görmek üzere kontrol noktasında depolanan train_args değerini incele; YOLO26 Kontrol Noktası Eğitim Bağımsız Değişkenlerini İnceleme sayfasına bak.
  • mosaic, mixup, cutmix ve copy_paste derinlik için uygulanmamıştır. Derinlik veri kümesi yükleyicisi bu olasılıkları otomatik olarak 0'a ayarlar; dolayısıyla bunları geçirmenin hiçbir etkisi yoktur. Bu artırmalar birden fazla görüntüyü birleştirdiği ve geçersiz eşleştirilmiş derinlik haritaları üreteceği için desteklenmez.
  • Her derinlik aralığı kutudan çıktığı hâliyle çalışır. log başlıklı modeller sınırsız derinlik öngördüğünden, değişiklik yapmadan kısa menzilli (makro) veya uzun menzilli (dış mekân/sürüş) verilere uyum sağlar. Veri kümesi YAML'ında max_depth: değerinin ayarlanması, doğrulama metriklerine hangi GT piksellerinin dâhil edileceğini metre cinsinden sınırlar.
  • Genel performansı koru. Modelin eğitim kümenin ötesindeki sahnelerde doğru kalması gerekiyorsa, eğitim verilerine çeşitli genel amaçlı görüntülerden küçük bir oran (~%5–10) ekle; bu, ince ayar sırasında unutmayı önemli ölçüde azaltır.
  • Sıfırdan eğitim (model=yolo26s-depth.yaml), yalnızca alanın çok farklıysa ve büyük bir veri kümen varsa uygundur; bu durumda varsayılan SGD lr0=0.01 uygundur, çünkü korunacak önceden eğitilmiş ağırlıklar yoktur.

Derinlik ölçeğini kalibre etme#

Derinlik başlığı şekli (göreli sahne yapısı) ölçekten (mutlak metre) ayırır. Bir model sahnelerinde zaten iyi göreli derinlik üretiyor ancak mutlak değerler kameran için hatalıysa, model.calibrate() ile ölçeği saniyeler içinde düzeltebilirsin: bu, küçük bir etiketli küme üzerinde iki parametreli log-affine dönüşümün kapalı biçimli uyumudur ve gradyan eğitimi ya da ağ ağırlıklarında değişiklik gerektirmez; dolayısıyla göreli yapıyı kötüleştiremez.

Ölçek kalibrasyonu
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, karşılaştırma yapacağı gerçek derinlik verisine ihtiyaç duyar; bu nedenle etiketli bir bölmede çalışır — kör çıkarım sırasında gerçekleştirilemez. Doğrulama metriklerinin değerlendirdiği piksellerin aynıları üzerinde uyum sağlar ve skor hesaplar: veri kümesi YAML dosyasındaki max_depth (varsayılan 100 m) değerine eşit veya daha uzaktaki GT değerleri hariç tutulur. Göreli derinlik zaten iyiyse ve yalnızca ölçek/aralık yanlışsa bunu kullan; göreli yapının kendisinin alanın için değişmesi gerekiyorsa bunun yerine ince ayar yap.

Eğitim bunu senin için otomatik olarak yapar: model.train(...) tamamlandıktan sonra en iyi ve son checkpoint'ler doğrulama kümesinde kalibre edilir; böylece doğrudan metrik ölçekli derinlik çıktısı verirler.

Yayınlanan yolo26*-depth.pt checkpoint'leri bu kalibrasyon yerleşik olarak gelir ve ön eğitim doğrulama karışımı üzerinde uydurulmuştur. Bu, tüm alanlar için tek bir genel ölçektir; bu nedenle belirli bir kamera veya sahne türünde en doğru mutlak derinlik için kendi verinden küçük bir etiketli bölme üzerinde model.calibrate() çalıştır — yerleşik uyumu bununla değiştirir.

Veri kümesi biçimi#

Derinlik tahmini veri kümeleri, her RGB görüntüsünü metre cinsinden ölçeklenmiş bir uint16 derinlik PNG'si veya kayan noktalı NPY derinlik haritasıyla eşleştirir. PNG değerleri varsayılan olarak milimetre kullanır; farklı bir gösterim kullanan veri kümeleri YAML dosyalarında depth_scale değerini ayarlar. Yükleyici, images bileşenini depth ile değiştirerek derinlik yolunu türetir; .png yolunu tercih eder ve bulunamazsa .npy yoluna geri döner.

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. Biçim belirtiminin tamamı için Derinlik Tahmini Veri Kümesi Kılavuzu sayfasına bak.

Doğrulama#

Eğitilmiş bir YOLO26n-depth modelinin derinlik tahmini veri kümesindeki doğruluğunu değerlendirmek için doğrulama yap. Doğrulamanın amaçlanan veri kümesi YAML dosyasını kullanması için data değerini açıkça belirt. Yayınlanan ağırlıklar imgsz=768 boyutunda eğitilmiştir; en iyi doğruluk için doğrulama ve tahmin işlemlerini bu boyutta yap.

Örnek
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 error

Tahmin#

Görüntüler üzerinde tahmin çalıştırmak için eğitilmiş bir YOLO26n-depth modeli kullan.

Örnek
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), meters

predict modunun tüm ayrıntıları için Tahmin sayfasına bak.

Sonuç çıktısı#

YOLO derinlik tahmini, görüntü başına bir Results nesnesi döndürür. Her sonuç, görüntünün tamamı için yoğun bir kayan noktalı derinlik haritası içerir.

ÖznitelikTürŞekilAçıklama
result.depthDepthMap(H,W)Piksel başına yoğun derinlik haritası.
result.depth.datatorch.Tensor(H,W)Derinlik değerleri metre cinsindendir; NumPy için .cpu().numpy() çağrısını yap.
result.boxes--Örnek kutusu yoktur.
result.masks--Örnek maskesi yoktur.

Her görevdeki göreve özgü Results alanlarının tamamı için Göreve Göre Tahmin Sonuçları bölümüne bak.

Derinlik haritasını renklendirme#

Ham derinlik haritası metre cinsinden tek kanallı bir kayan noktalı dizidir — hesaplama için kullanışlıdır, ancak doğrudan okunması zordur. Bunu renkli bir görüntüye dönüştürmek için ultralytics.utils.plotting içindeki colorize_depth yardımcı işlevini kullan; bu işlev (H, W) derinlik dizisini (H, W, 3) BGR uint8 görüntüsüne eşler (geçersiz pikseller <= 0 siyah olarak oluşturulur).

result.plot(), bu renklendirmeyi varsayılanları (cmap="jet", mode="disparity") kullanarak giriş görüntüsünün üzerine zaten harmanlar; bağımsız renkli bir derinlik görüntüsü veya farklı bir renk haritası ya da normalizasyon istediğinde doğrudan colorize_depth çağrısını yap.

Tahmin edilen derinlik haritasını renklendirme
import cv2

from ultralytics import YOLO
from ultralytics.utils.plotting import colorize_depth

model = YOLO("yolo26n-depth.pt")
result = model("https://ultralytics.com/images/bus.jpg")[0]

depth = result.depth.data.cpu().numpy()  # (H, W) float32, meters

# Colorize with near = warm and save
cv2.imwrite("depth_colored.png", colorize_depth(depth, cmap="spectral"))  # (H, W, 3) BGR uint8

# Fix the range to 0-20 m so the same color means the same distance across frames
cv2.imwrite("depth_metric.png", colorize_depth(depth, vmin=0.0, vmax=20.0, cmap="inferno", mode="metric"))

# Blended overlay straight from the Results object (uses cmap="jet", mode="disparity")
result.save("depth_overlay.png")

Her renk haritası soğuk/koyu → sıcak/parlak aralığında çalışır. mode, hangi ucun yakını gösterdiğine karar verir; vmin/vmax ise aralığı kareler arasında sabitler, böylece bir renk her zaman aynı mesafeyi ifade eder.

Bağımsız değişkenDeğerAçıklama
cmapjet (varsayılan)Yüksek kontrastlı mavi → yeşil → kırmızı; result.plot() tarafından kullanılan palet.
cmapinfernoSiyah → mor → turuncu → sarı. Algısal olarak tekdüze, renk körlüğüne uygun ve gri tonlamada okunabilir.
cmapspectralKırmızı → sarı → yeşil → mavi (matplotlib Spectral_r).
modedisparity (varsayılan)Ters derinliği (1/d) 2. ve 98. yüzdelik dilimler arasında normalleştirir; sıcak renklerle gösterilen yakın ve uzak aykırı değerler kapsanır.
modemetricDerinliği metre cinsinden vmin ile vmax arasında doğrusal olarak normalleştirir; sıcak renk uzaklığı gösterir, böylece renkler gerçek mesafeyi takip eder.

Dışa aktarma#

YOLO26n-depth modelini ONNX, CoreML vb. farklı bir biçime aktar.

Örnek
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")

Kullanılabilir YOLO26 derinlik tahmini dışa aktarma biçimleri aşağıdaki tabloda yer alır. format bağımsız değişkenini kullanarak herhangi bir biçime aktarabilirsin; örneğin format='onnx' veya format='engine'. Dışa aktarılan modeller üzerinde doğrudan tahmin veya doğrulama yapabilirsin; örneğin yolo predict model=yolo26n-depth.onnx. Kullanım örnekleri, dışa aktarma tamamlandıktan sonra modelin için gösterilir.

Biçimformat bağımsız değişkeniModelMeta verilerBağımsız değişkenler
PyTorch-yolo26n-depth.pt-
TorchScripttorchscriptyolo26n-depth.torchscriptimgsz, quantize, dynamic, nms, batch, device
ONNXonnxyolo26n-depth.onnximgsz, quantize, dynamic, simplify, opset, nms, batch, data, fraction, device
OpenVINOopenvinoyolo26n-depth_openvino_model/imgsz, quantize, dynamic, nms, batch, data, fraction, device
TensorRTengineyolo26n-depth.engineimgsz, quantize, dynamic, simplify, opset, workspace, nms, batch, data, fraction, device
CoreMLcoremlyolo26n-depth.mlpackageimgsz, dynamic, quantize, nms, batch, device
TF SavedModelsaved_modelyolo26n-depth_saved_model/imgsz, keras, quantize, opset, nms, batch, data, fraction, device
TF GraphDefpbyolo26n-depth.pbimgsz, opset, batch, device
TF Edge TPUedgetpuyolo26n-depth_edgetpu.tfliteimgsz, quantize, opset, data, fraction, device
PaddlePaddlepaddleyolo26n-depth_paddle_model/imgsz, batch, device
MNNmnnyolo26n-depth.mnnimgsz, batch, dynamic, quantize, simplify, opset, nms, device
NCNNncnnyolo26n-depth_ncnn_model/imgsz, quantize, batch, device
IMX500imxyolo26n-depth_imx_model/imgsz, quantize, data, fraction, nms, device
RKNNrknnyolo26n-depth_rknn_model/imgsz, batch, name, quantize, simplify, opset, data, fraction, device
ExecuTorchexecutorchyolo26n-depth_executorch_model/imgsz, batch, device
Axeleraaxelerayolo26n-depth_axelera_model/imgsz, batch, quantize, data, fraction, device
DEEPXdeepxyolo26n-depth_deepx_model/imgsz, quantize, simplify, opset, data, optimize, device
Qualcomm QNNqnnyolo26n-depth_qnn.onnximgsz, batch, name, quantize, simplify, opset, data, fraction, device
LiteRTlitertyolo26n-depth.tfliteimgsz, quantize, batch, data, fraction, device
Hailohailoyolo26n-depth_hailo_model/imgsz, name, quantize, data, fraction, simplify, conf, iou
Huawei Ascendascendyolo26n-depth_ascend_model/imgsz, batch, name, quantize, opset, simplify, nms
Apple Core AIcoreaiyolo26n-depth.aimodelimgsz, batch, quantize

nms=None, harici NMS için varsayılan olarak ham çıktıları kullanır. Mevcut bir NMS'siz başlığı seçmek için nms=False değerini ayarla; desteklenmeyen formatlar yerel çıktı yollarına geri döner. Yukarıdaki nms girdileri, NMS'yi nms=True ile gömebilen formatları tanımlar.

Ayrıntıların tamamı için Dışa aktarma sayfasındaki export bilgilerine bak.

SSS#

  • Eşleştirilmiş RGB görüntüleri ve metre cinsinden ya 16 bit derinlik PNG'leri ya da kayan noktalı NPY derinlik haritalarını hazırla, ardından images/ dizinine işaret eden bir veri kümesi YAML dosyası oluştur. Yükleyici, yoldaki images ifadesini depth ile otomatik olarak değiştirerek derinlik dosyalarını bulur; .png yolunu tercih eder ve .npy yoluna geri döner.

    Önceden eğitilmiş ağırlıklarla başla ve AdamW ile düşük bir öğrenme oranı kullan; böylece ince ayar, modelin zaten bildiklerini korur (nedenini görmek için Kendi verin üzerinde ince ayar bölümüne bak):

    Örnek
    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,
    )

    Kullanılabilir diğer bağımsız değişkenler için Yapılandırma sayfasına bak.

  • Derinlik tahmini doğrulaması, Depth Anything ve ilgili monoküler derinlik çalışmalarında kullanılan metrik kümesini raporlar:

    • delta1 / delta2 / delta3 — tahmin edilen derinliğin gerçek derinliğe oranının (veya tersinin) sırasıyla 1,25, 1,25² ve 1,25³ değerinden küçük olduğu piksellerin yüzdesi. 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.

    Her tahmin, görüntü başına gerçek derinliğiyle medyan hizalamasına tabi tutulur; her metrik o görüntü üzerinde sonlandırılır ve görüntü başına sonuçların doğrulama kümesi üzerindeki ortalaması alınır. Böylece her görüntü, içerdiği geçerli derinlik pikseli sayısından bağımsız olarak aynı ağırlığa sahip olur. Gerçek derinlikte 10'dan az geçerli piksel bulunan görüntüler atlanır ve bu ortalamaya dahil edilmez; çünkü bir avuç pikselin medyanını hizalamak anlamsızdır. Sonlu olmayan tahminler ise derinlik sınırlarında skorlanır. Bu yaklaşım, Depth Anything V2 tarafından kullanılan örnek başına ortalama ve 10 piksel tabanıyla aynıdır.

  • Derinlik haritası, şekli (H, W) olan bir torch.Tensor olarak saklanır; burada her değer metre cinsinden tahmin edilen derinliktir (NumPy float32 dizisi için result.depth.data.cpu().numpy() kullan). Tahmin çalıştırıldıktan sonra haritaya result.depth.data üzerinden eriş. Harita, giriş görüntüsünün çözünürlüğüyle hizalanır.

  • Ultralytics YOLO26; NYU Depth V2, KITTI, Hypersim, SUN RGB-D ve ARKitScenes dahil olmak üzere çeşitli derinlik tahmini veri kümeleri için yerleşik veri kümesi YAML yapılandırmaları sağlar. Listenin ve biçim ayrıntılarının tamamı için Derinlik Tahmini Veri Kümesi Kılavuzu sayfasına bak.

  • Önceden eğitilmiş bir YOLO26 derinlik modelini, değerlendirme için kullanılan veri kümesi YAML dosyasını sağlayarak doğrula:

    Örnek
    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)
  • Bir YOLO26 derinlik modelini Python veya CLI ile ONNX'e aktar:

    Örnek
    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 biçimlere dışa aktarma hakkında daha fazla ayrıntı için Dışa aktarma sayfasına başvur.

Yorumlar