Ultralytics YOLO ile Monoküler Derinlik Tahmini#
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.
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.
| Model | boyut (piksel) | delta1NYU | abs_relNYU | rmseNYU | Hız CPU ONNX (ms) | Hız T4 TensorRT10 (ms) | parametre (M) | FLOPs (B) |
|---|---|---|---|---|---|---|---|---|
| YOLO26n-depth | 768 | 0.882 | 0.109 | 0.414 | 272.0 ± 27.2 | 2.7 ± 0.1 | 6.3 | 46.9 |
| YOLO26s-depth | 768 | 0.896 | 0.104 | 0.399 | 393.7 ± 13.1 | 3.8 ± 0.0 | 13.2 | 68.0 |
| YOLO26m-depth | 768 | 0.921 | 0.089 | 0.364 | 621.5 ± 49.7 | 6.0 ± 0.1 | 23.3 | 130.4 |
| YOLO26l-depth | 768 | 0.930 | 0.083 | 0.351 | 821.9 ± 50.7 | 7.7 ± 0.1 | 27.7 | 157.0 |
| YOLO26x-depth | 768 | 0.933 | 0.080 | 0.344 | 1240.9 ± 73.3 | 13.6 ± 0.2 | 57.0 | 301.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=0ile (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=1değ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:
| Model | parametre (M) | FLOPs (B) | T4 TensorRT10 (ms) | FPS | V2 Small'a göre hızlanma | V2 Base'e göre hızlanma |
|---|---|---|---|---|---|---|
| Depth Anything V2 Base | 97.5 | 1025.5 | 55.40 | 18.1 | — | — |
| Depth Anything V2 Small | 24.8 | 346.9 | 20.99 | 47.6 | — | — |
| YOLO26x-depth | 57.0 | 301.7 | 13.57 | 73.7 | 1.5× | 4.1× |
| YOLO26l-depth | 27.7 | 157.0 | 7.68 | 130.2 | 2.7× | 7.2× |
| YOLO26m-depth | 23.3 | 130.4 | 6.00 | 166.7 | 3.5× | 9.2× |
| YOLO26s-depth | 13.2 | 68.0 | 3.82 | 261.6 | 5.5× | 14.5× |
| YOLO26n-depth | 6.3 | 46.9 | 2.73 | 365.8 | 7.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:
| Model | T4 TensorRT10 (ms) | FPS |
|---|---|---|
| Depth Anything V2 Base | 35.10 | 28.5 |
| Depth Anything V2 Small | 13.62 | 73.4 |
| YOLO26x-depth | 10.26 | 97.5 |
| YOLO26l-depth | 6.14 | 162.8 |
| YOLO26m-depth | 4.71 | 212.1 |
| YOLO26s-depth | 3.08 | 324.4 |
| YOLO26n-depth | 2.29 | 436.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 δ1 | Eğitim davranışı |
|---|---|---|---|
sigmoid × max_depth (10 m) | sınırlı 0–10 m | 0.221 | 1. epoch'ta plato yapar |
log (sınırsız) | 0–~150 m | 0.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ümesi | 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 ü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ı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 |
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.
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.
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 depolanantrain_argsdeğerini incele; YOLO26 Kontrol Noktası Eğitim Bağımsız Değişkenlerini İnceleme sayfasına 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; 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.
logbaş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'ındamax_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 SGDlr0=0.01uygundur, çü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.
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.
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 errorTahmin#
Görüntüler üzerinde tahmin çalıştırmak 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), meterspredict 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.
| Öznitelik | Tür | Şekil | Açıklama |
|---|---|---|---|
result.depth | DepthMap | (H,W) | Piksel başına yoğun derinlik haritası. |
result.depth.data | torch.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.
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şken | Değer | Açıklama |
|---|---|---|
cmap | jet (varsayılan) | Yüksek kontrastlı mavi → yeşil → kırmızı; result.plot() tarafından kullanılan palet. |
cmap | inferno | Siyah → mor → turuncu → sarı. Algısal olarak tekdüze, renk körlüğüne uygun ve gri tonlamada okunabilir. |
cmap | spectral | Kırmızı → sarı → yeşil → mavi (matplotlib Spectral_r). |
mode | disparity (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. |
mode | metric | Derinliğ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.
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çim | format bağımsız değişkeni | Model | Meta veriler | Bağımsız değişkenler |
|---|---|---|---|---|
| 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, opset, nms, batch, data, fraction, device |
| TF GraphDef | pb | yolo26n-depth.pb | ❌ | imgsz, opset, batch, device |
| TF Edge TPU | edgetpu | yolo26n-depth_edgetpu.tflite | ✅ | imgsz, quantize, opset, data, fraction, device |
| PaddlePaddle | paddle | yolo26n-depth_paddle_model/ | ✅ | imgsz, batch, device |
| MNN | mnn | yolo26n-depth.mnn | ✅ | imgsz, batch, dynamic, quantize, simplify, opset, 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, simplify, opset, 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, simplify, opset, data, optimize, device |
| Qualcomm QNN | qnn | yolo26n-depth_qnn.onnx | ✅ | imgsz, batch, name, quantize, simplify, opset, 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 |
| Huawei Ascend | ascend | yolo26n-depth_ascend_model/ | ✅ | imgsz, batch, name, quantize, opset, simplify, nms |
| Apple Core AI | coreai | yolo26n-depth.aimodel | ✅ | imgsz, 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, yoldakiimagesifadesinidepthile otomatik olarak değiştirerek derinlik dosyalarını bulur;.pngyolunu tercih eder ve.npyyoluna 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):
Örnekfrom 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 birtorch.Tensorolarak saklanır; burada her değer metre cinsinden tahmin edilen derinliktir (NumPyfloat32dizisi içinresult.depth.data.cpu().numpy()kullan). Tahmin çalıştırıldıktan sonra haritayaresult.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:
Örnekfrom 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:
Örnekfrom 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.