Monokü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) boyutunda yoğun bir float haritasıdır. Bu piksel başına temsil, monoküler derinlik tahminini 3 boyutlu sahne rekonstrüksiyonu, robot navigasyonu, AR/VR içerik oluşturma ve tek bir kameradan mekansal yerleşim gerektiren tüm uygulamalar için son derece uygun hale getirir.
Monoküler derinlik tahmini için task=depth veya yolo depth CLI görevini kullan. YOLO26 derinlik modeli dosyaları, yolo26n-depth.pt gibi -depth son ekini kullanır.
Watch: Monocular Depth Estimation with Ultralytics YOLO26 | Python Tutorial | Vision AI 🚀
Modeller#
Geniş bir çoklu veri kümesi karmasında (iç mekan + dış mekan, ~2,19M görüntü) önceden eğitilmiş YOLO26 derinlik modelleri aşağıda gösterilmektedir. Metrik sütunları NYU Depth V2 Eigen test bölümünde rapor edilmiştir.
Modeller, ilk kullanımda en son 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) | parametreler (M) | FLOPs (B) |
|---|---|---|---|---|---|---|---|---|
| YOLO26n-depth | 768 | 0.882 | 0.109 | 0.414 | 272.0 ± 27.2 | 2.7 ± 0.1 | 6.4 | 46.9 |
| YOLO26s-depth | 768 | 0.896 | 0.104 | 0.399 | 393.7 ± 13.1 | 3.8 ± 0.0 | 13.2 | 67.9 |
| YOLO26m-depth | 768 | 0.921 | 0.089 | 0.364 | 621.5 ± 49.7 | 6.0 ± 0.1 | 23.3 | 130.7 |
| YOLO26l-depth | 768 | 0.930 | 0.083 | 0.351 | 821.9 ± 50.7 | 7.7 ± 0.1 | 27.7 | 157.2 |
| YOLO26x-depth | 768 | 0.933 | 0.080 | 0.344 | 1240.9 ± 73.3 | 13.6 ± 0.2 | 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, medyan (yalnızca ölçek) hizalaması kullanan ve daha düşük puanlar veren
yolo depth val model=yolo26n-depth.pt data=nyu-depth.yaml imgsz=768 device=0(her boyut içinmodel=ile değiştirin) ile tekrarlanabilir: delta1 0.783 (n), 0.793 (s), 0.840 (m), 0.853 (l), 0.860 (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.
- Hız,
imgsz=768vebatch=1'de yalnızca çıkarım gecikmesidir (ön/son işleme hariçtir) ve ısınma sonrasındaki zamanlanmış çalıştırmalar üzerinden ortalama ± standart sapma olarak rapor edilir. CPU ONNX, 32 çekirdekli bir Intel Xeon (Skylake) üzerinde ONNX Runtime fp32'dir; T4 TensorRT10, bir Tesla T4 üzerinde TensorRT fp16'dır. - params ve FLOPs, yayınlanan ağırlıkların eğitim çözünürlüğü olan 768×768 değerinde ölçülmüştür.
Depth Anything V2 ile Karşılaştırıldığında Hız#
Depth Anything V2, monoküler derinlik için yaygın olarak kullanılan açık bir temel çizgidir. DINOv2 görüntü transformer omurgası ve DPT kod çözücüsü hesaplama açısından ağırdır; bu nedenle, TensorRT fp16 altındaki aynı Tesla T4 üzerinde, yayınlanan en küçük Depth Anything V2 modeli, ikiden fazla parametre taşıyan YOLO26x-depth dahil olmak üzere her YOLO26 derinlik modelinden daha yavaştır.
Yayınlanan ağırlıklarının eğitildiği çözünürlük olan YOLO26 için ~768 piksel — imgsz=768 ve DINOv2 omurgası 14'lük yama boyutunun bir katını gerektiren Depth Anything V2 için 770 pikselde:
| Model | parametreler (M) | FLOP (B) | T4 TensorRT10 (ms) | FPS | V2 Küçük'e Karşı Hızlanma | V2 Taban'a Karşı Hızlanma |
|---|---|---|---|---|---|---|
| Depth Anything V2 Taban | 97.5 | 1025.5 | 55.40 | 18.1 | — | — |
| Depth Anything V2 Küçük | 24.8 | 346.9 | 20.99 | 47.6 | — | — |
| YOLO26x-depth | 57.0 | 302.0 | 13.57 | 73.7 | 1.5× | 4.1× |
| YOLO26l-depth | 27.7 | 157.2 | 7.68 | 130.2 | 2.7× | 7.2× |
| YOLO26m-depth | 23.3 | 130.7 | 6.00 | 166.7 | 3.5× | 9.2× |
| YOLO26s-depth | 13.2 | 67.9 | 3.82 | 261.6 | 5.5× | 14.5× |
| YOLO26n-depth | 6.4 | 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 kat daha hızlıdır:
| Model | T4 TensorRT10 (ms) | FPS |
|---|---|---|
| Depth Anything V2 Taban | 35.10 | 28.5 |
| Depth Anything V2 Küçük | 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ımdır,
batch=1, Tesla T4 üzerinde TensorRT fp16'dır — yukarıdaki model tablosuyla aynı donanım, burada iki ondalık basamakla gösterilmiştir; FPS, yuvarlanmamış gecikmenin tersidir. Hızlanma (Speedup) sütunları, Depth Anything V2 Small (20,99 ms) ve Base (55,40 ms) gecikmesini YOLO26 gecikmesine böler. - Depth Anything V2 Small ve Base, yayınlanan 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ü altında değerlendirilmemiştir.
Derinlik aralığı ve log-derinlik başlığı#
Derinlik başlığı exp(logit)'ı tahmin eder — sınırsız (~0,02–150 m) — ve sahne şeklini mutlak ölçekten ayırır: ağ göreceli bir log-derinlik alanı tahmin eder ve mutlak metreler, değerlendirmede kurtarılan ayrı iki parametreli bir dönüşüm (exp(a·log d + b)), hafif kalibrasyon veya ince ayar ile belirlenir. Yaygın alternatif olan sınırlı bir sigmoid × max_depth başlığı ise bunun yerine mimarinin içine sabit bir tavan yerleştirir; böylece max_depth değerinin ötesindeki herhangi bir derinlik kırpılır — bu da daha uzun mesafeli sahnelerde eğitim almayı ve bun tahmin etmeyi engeller.
Baş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 m'den büyük çoğunluğunu temsil edemez, bu nedenle neredeyse hemen iyileşmeyi durdurur; log başlığı ise tam 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 üst sınırda gerçekleşir. log başlığında böyle bir sınır yoktur.
Yayınlanan modeller — menziller arası performans. Sevkiyatı yapılan log başlıklı aile, 10 m (NYU, iBims-1) ile 80 m (KITTI) arasındaki kıyaslamalarda, ölçek hizalı δ1 ile değerlendirilmiştir:
| 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ınlandığı gibidir. Diğer satırlar, bu depodaki doğrulayıcının uygulamadığı, kendi veri seti sayfalarında açıklanan TTA ve log-en-küçük-kareler protokolü ile puanlanmıştır; bu nedenle KITTI satırı aynı temelde yeniden ölçülemez; KITTI page kanonik 652 karelik Eigen bölümü üzerinde ölçülen sayıları içerir.
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.
Eğit (Train)#
YOLO26n-depth modelini Depth8 veri kümesi üzerinde 640 görüntü boyutunda 100 dönem boyunca eğitin. Mevcut tüm argümanların tam listesi için Yapılandırma sayfasına bakın.
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)Tam train modu ayrıntılarını Eğitim sayfasında görün.
Kendi verilerin üzerinde ince ayar yapma#
Önceden eğitilmiş bir derinlik modelini özel bir veri kümesine uyarlarken, öğrenme oranını düşürün ve AdamW iyileştiricisini kullanın. Varsayılan iyileştirici ayarları sıfırdan eğitim için ayarlanmıştır (lr0=0.01 ile SGD); halihazırda yakınsama yapmış bir derinlik modeline uygulandıklarında, önceden eğitilmiş bilgilerin üzerine yazabilir ve sonuçları kötüleştirebilirler — özellikle tek bir etki alanında 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 argümanlar (
degrees,translate,scale,shear,perspective,flipud,fliplr,hsv_h,hsv_s,hsv_v) tarafından kontrol edilir; geometrik bükülme ve çevirmeler, eşleştirilmiş derinlik haritasına aynı şekilde uygulanır. Yayınlanan YOLO26-Depth ağırlıkları için kullanılan tam tarifi görmek için kontrol noktasında saklanantrain_argsdeğerini inceleyin — bkz. YOLO26 Kontrol Noktası Eğitim Argümanlarını İnceleme. 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çmenin hiçbir etkisi yoktur. Bu artırmalar, geçersiz eşleştirilmiş derinlik haritaları üretecek şekilde birden fazla görüntüyü birleştirdikleri için desteklenmez.- Herhangi bir derinlik aralığı kutudan çıktığı gibi çalışır.
logbaşlıklı modeller sınırsız derinliği 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ızdamax_depth:değerini (metre cinsinden) ayarlamak, 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.
- Yalnızca alanınız çok farklıysa ve büyük bir veri kümeniz varsa sıfırdan eğitin (
model=yolo26s-depth.yaml) — korunacak önceden eğitilmiş ağırlıklar olmadığından burada varsayılan SGDlr0=0.01uygundur.
Derinlik ölçeğini kalibre etme#
Derinlik başlığı şekli (göreli sahne yapısı) ölçekten (mutlak metre) ayırır. Bir model sahnelerinizde zaten iyi bir göreceli derinlik üretiyor ancak mutlak değerler kameranız için yanlışsa, model.calibrate() ile ölçeği saniyeler içinde düzeltebilirsiniz — bu, küçük bir etiketli sete karşı iki parametreli bir log-afin uyumunun kapalı biçimli bir uyarlamasıdır; gradyan eğitimi yoktur ve ağ ağırlıklarında değişiklik yapılmaz, bu nedenle göreceli 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")Kalibrasyonun uyum sağlamak için yer işareti (ground-truth) derinliğine ihtiyacı vardır, bu nedenle etiketli bir bölümde çalışır — kör çıkarımda gerçekleşebilecek bir şey değildir. Val metriklerinin değerlendirdiği aynı pikseller üzerinde uyum sağlar ve puan verir: Veri kümesi YAML'sinin max_depth (varsayılan 100 m) değerindeki veya ötesindeki GT hariç tutulur. Göreli derinlik zaten iyiyse ve yalnızca ölçek/aralık yanlışsa kullanın; alanınız için göreceli yapının kendisinin değişmesi gerekiyorsa bunun yerine ince ayar yapın.
Eğitim bunu sizin için otomatik olarak yapar: model.train(...) tamamlandıktan sonra, en iyi ve son kontrol noktaları, kutudan çıktığı gibi metrik ölçekli derinlik çıktısı verebilmeleri için doğrulama kümesinde kalibre edilir.
Yayınlanan yolo26*-depth.pt kontrol noktaları, ön eğitim doğrulama karmasına uyarlanmış olarak bu kalibrasyon halihazırda gömülü şekilde gelir. Bu, tüm etki alanlarında 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 bölümde model.calibrate() çalıştırın — bu, yerleşik uyarlamanın yerini alır.
Veri 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 dizileri olarak saklanır. Veri kümesi YAML'si bir images/ dizinine işaret eder; yükleyici, images bileşenini depth ile değiştirerek ve görüntü uzantısını .npy ile değiştirerek derinlik dosyası yolunu türetir.
dataset/
├── images/
│ ├── train/
│ └── val/
└── depth/
├── train/
└── val/Örneğin, images/train/scene_001.jpg konumundaki bir görüntü, depth/train/scene_001.npy konumundaki bir derinlik haritasıyla eşleştirilir. Tam biçim belirtimi için Derinlik Tahmini Veri Kümesi Kılavuzu sayfasına bakın.
Doğrula (Val)#
Eğitilmiş bir YOLO26n-depth modelinin doğruluğunu bir derinlik tahmini veri kümesi üzerinde doğrulayın. Doğrulamanın amaçlanan veri kümesi YAML'sini kullanması için data değerini açıkça iletin. Yayınlanan ağırlıklar imgsz=768 boyutunda eğitilmiştir, bu nedenle en iyi doğruluk için bu boyutta doğrulayın ve tahmin yapın.
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 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), metersTam predict modu ayrıntılarını Tahmin sayfasında görün.
Sonuç Çıktısı#
YOLO derinlik tahmini, görüntü başına bir Results nesnesi döndürür. Her sonuç, tüm görüntü için yoğun bir kayan nokta derinlik haritası depolar.
| Ö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ın. |
result.boxes | - | - | Örnek kutusu yok. |
result.masks | - | - | Örnek maskesi yok. |
Her görev genelinde göreve özgü Results alanları için Göreve Göre Tahmin Sonuçları bölümüne bakın.
Derinlik haritasını renklendirme#
Ham derinlik haritası metre cinsinden tek kanallı bir float dizisidir; hesaplama için faydalıdır ancak doğrudan okunması zordur. Bunu bir renkli görüntüye dönüştürmek için, (H, W) derinlik dizisini bir (H, W, 3) BGR uint8 görüntüsüne eşleyen ultralytics.utils.plotting içindeki colorize_depth yardımcı aracını kullan (geçersiz pikseller <= 0 siyah renkte çizilir).
result.plot(), varsayılanları (cmap="jet", mode="disparity") kullanarak bu renklendirmeyi zaten giriş görüntüsü üzerine harmanlar; bağımsız bir renkli derinlik görüntüsü veya farklı bir renk haritası ya da normalleştirme istediğinizde doğrudan colorize_depth çağrısı yapın.
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 şeklinde çalışır. mode, hangi ucun yakın olduğuna karar verir ve vmin/vmax, bir rengin her zaman aynı mesafeyi belirtmesi için aralığı kareler arasında kilitler.
| Argüman | Değer | Açıklama |
|---|---|---|
cmap | jet (varsayılan) | Yüksek kontrastlı mavi → yeşil → kırmızı, result.plot() paleti. |
cmap | inferno | Siyah → mor → turuncu → sarı. Algısal olarak tekdüze, renk körü dostu, 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üzdelikler arasında normalleştirir; sıcak işaretli yakın ve uzak aykırı değerler absorbe edilir. |
mode | metric | Metre cinsinden derinliği vmin ile vmax arasında doğrusal olarak normalleştirir; sıcak uzak olanı işaret eder, böylece renkler gerçek mesafeyi takip eder. |
Dış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 tabloda yer almaktadır. format argümanını, yani format='onnx' veya format='engine' kullanarak herhangi bir biçime dışa aktarabilirsiniz. Dışa aktarılan modeller üzerinde doğrudan tahmin yapabilir veya doğrulama gerçekleştirebilirsiniz, 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, 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 |
Tam export ayrıntılarını Dışa Aktar sayfasında görün.
SSS#
Eşleştirilmiş RGB görüntüleri ve
.npyderinlik dosyalarını hazırlayın, ardındanimages/dizininize işaret eden bir veri kümesi YAML'si oluşturun. Yükleyici, yoldakiimagesifadesinidepthile değiştirerek ve görüntü uzantısını.npyile takas ederek derinlik dosyalarını otomatik olarak bulur.Önceden eğitilmiş ağırlıklarla başlayın ve ince ayarın modelin zaten bildiklerini koruması için AdamW ile düşük bir öğrenme oranı kullanın (nedeni için Kendi verileriniz üzerinde ince ayar yapma bölümüne bakın):
Ö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, )Mevcut diğer argümanlar için Yapılandırma sayfasını kontrol edin.
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 medyan hizalanır, her metrik o görüntü üzerinde kesinleştirilir ve bu görüntü bazlı sonuçlar doğrulama seti üzerinden ortalamalandırılır; böylece kaç tane geçerli derinlik pikseli barındırdığına bakılmaksızın her görüntü aynı ağırlığa sahip olur. 10'dan az geçerli gerçek değer pikseline sahip 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 bunun yerine derinlik sınırlarında puanlanır. Bu, Depth Anything V2 tarafından kullanılan örnek başı ortalamaya ve 10 piksel tabanına karşılık gelir.
Derinlik haritası, her değerin metre cinsinden tahmin edilen derinlik olduğu
(H, W)boyutunda birtorch.Tensorolarak saklanır (bir NumPyfloat32dizisi içinresult.depth.data.cpu().numpy()kullan). Tahmin çalıştırdıktan sonra bunaresult.depth.dataüzerinden eriş. Harita, giriş görüntüsü çözünürlüğüyle hizalanmıştı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. Tam liste ve biçim ayrıntıları için Derinlik Tahmini Veri Kümesi Kılavuzu sayfasına bakın.
Değerlendirme için kullanılan veri kümesi YAML dosyasını sağlayarak önceden eğitilmiş bir YOLO26 derinlik modelini 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)Python veya CLI kullanarak bir YOLO26 derinlik modelini ONNX'e dışa 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 formatlara dışa aktarma hakkında daha fazla ayrıntı için Dışa Aktar sayfasına başvurun.