Ultralytics YOLO27:
Get Started

Ultralytics YOLO ile Yönlendirilmiş Sınırlayıcı Kutu Tespiti#

Ultralytics YOLO oriented bounding box detection of boats in aerial imagery

Yönlendirilmiş nesne tespiti, görüntüdeki nesnelerin konumunu daha doğru belirlemek için ek bir açı ekleyerek standart nesne tespitinin ötesine geçer.

Yönlendirilmiş nesne algılayıcısının çıktısı, görüntüdeki nesneleri hassas biçimde çevreleyen döndürülmüş sınırlayıcı kutuların yanı sıra her kutunun sınıf etiketlerini ve güven puanlarını içerir. Yönlendirilmiş sınırlayıcı kutular, özellikle nesneler farklı açılarda göründüğünde kullanışlıdır. Örneğin, hava görüntülerinde geleneksel eksenlere hizalı sınırlayıcı kutular gereksiz arka plan alanlarını içerebilir. Yaygın kullanım alanları arasında uydulardan ve dronlardan gemi ve araç tespiti, şehir planlaması için bina ve altyapı analizi, mahsul izleme ve güneş panelleri ya da rüzgâr türbinlerinin incelenmesi yer alır.



İzle: Ultralytics YOLO26 Yönlendirilmiş Sınırlayıcı Kutularıyla (OBB) Nesneler Nasıl Algılanır ve İzlenir | Gemi Takibi 🚢
İpucu

YOLO26 OBB modellerinde -obb soneki kullanılır; örneğin yolo26n-obb.pt. Modeller DOTAv1 üzerinde önceden eğitilmiştir.

OBB ile gemi tespitiOBB ile araç tespiti
OBB ile gemi tespitiOBB ile araç tespiti

Modeller#

DOTAv1 veri kümesi üzerinde önceden eğitilmiş YOLO26 OBB modelleri aşağıda gösterilmiştir.

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

Modelboyut
(piksel)
mAPtest
50-95(e2e)
mAPtest
50(e2e)
Hız
CPU ONNX
(ms)
Hız
T4 TensorRT10
(ms)
parametre
(M)
FLOPs
(B)
YOLO26n-obb102452.478.997.7 ± 0.92.8 ± 0.02.414.8
YOLO26s-obb102454.880.9218.0 ± 1.44.9 ± 0.19.856.7
YOLO26m-obb102455.381.0579.2 ± 3.810.2 ± 0.321.2184.9
YOLO26l-obb102456.281.6735.6 ± 3.113.0 ± 0.225.6232.4
YOLO26x-obb102456.781.71485.7 ± 11.530.5 ± 0.957.6520.1
  • mAPtest değerleri, DOTAv1 veri kümesinde tek model ve çoklu ölçek için verilmiştir.
    yolo obb val data=DOTAv1.yaml device=0 split=test nms=False ile sonuçları yeniden üret ve birleştirilmiş sonuçları DOTA değerlendirmesine gönder.
  • Hız değerleri, DOTAv1 doğrulama görüntülerinde ONNX CPU ve NVIDIA T4 GPU üzerinde TensorRT10 kullanılarak ortalaması alınmıştır.
    yolo obb val data=DOTAv1.yaml batch=1 device=0|cpu nms=False ile yeniden üret
  • Parametre ve FLOP değerleri; Conv/BatchNorm katmanları birleştirildikten ve kullanılmayan tespit dalı kaldırıldıktan sonraki füzyonlu modeller içindir. Önceden eğitilmiş kontrol noktaları, eğitim mimarisinin tamamını korur ve daha yüksek sayılar gösterebilir.

Ön sonuçlar için yayımlanmamış YOLO27 önizlemesine bak.

Eğit#

YOLO26n-obb modelini DOTA8 veri kümesinde, 640 görüntü boyutunda 100 epoch boyunca eğit. Kullanılabilir tüm argümanların listesi için Yapılandırma sayfasına bak.

Not

Bir OBB ile onun 180° döndürülmüş hâli aynıdır; bu nedenle dönüş 180°'ye göre tanımlanır ve kutunun yönü yoktur. Eğitim etiketleri uzun kenar biçimine göre kanonikleştirilir: kutu genişliği olan w daha uzun kenardır, açı pozitif x ekseninden w kenarının yönüne saat yönünde ölçülür ve radyan cinsinden [-π/4, 3π/4) biçiminde ([-45°, 135°)) saklanır. Tahminler kanonikleştirilmediğinden tahmin edilen bir kutuda kısa kenar w olarak bildirilebilir; Sonuç Çıktısı sayfasına bak. [0°, 90°) biçimi, düzenlileştirilmiş DOTA tarzı kuraldır ve eğitim ya da çıkarım sırasında uygulanmaz.

Örnek
from ultralytics import YOLO

# Bir model yükle
model = YOLO("yolo26n-obb.yaml")  # YAML'den yeni bir model oluştur
model = YOLO("yolo26n-obb.pt")  # Önceden eğitilmiş bir model yükle (eğitim için önerilir)
model = YOLO("yolo26n-obb.yaml").load("yolo26n-obb.pt")  # YAML'den oluştur ve ağırlıkları aktar

# Modeli eğit
results = model.train(data="dota8.yaml", epochs=100, imgsz=640)


İzle: Ultralytics Platformunu Kullanarak DOTA Veri Kümesinde Ultralytics YOLO-OBB (Yönlendirilmiş Sınırlayıcı Kutular) Modelleri Nasıl Eğitilir

train modunun tüm ayrıntılarını Eğitim sayfasında bulabilirsin. OBB modellerini Ultralytics Platform bulut eğitimi ile de eğitebilirsin.

Veri kümesi biçimi#

OBB veri kümesi biçiminin ayrıntılarını Veri Kümesi Kılavuzu sayfasında bulabilirsin. YOLO OBB biçiminde sınırlayıcı kutular, koordinatları 0 ile 1 arasında normalize edilmiş dört köşe noktasıyla aşağıdaki yapıda tanımlanır. Ultralytics Platform açıklama aracı, özel bir yönlendirilmiş sınırlayıcı kutu çizim aracıyla OBB etiketlerini destekler:

class_index x1 y1 x2 y2 x3 y3 x4 y4

YOLO, kayıpları ve çıktıları dahili olarak xywhr biçiminde işler; bu biçim, sınırlayıcı kutunun merkez noktasını (xy), genişliğini, yüksekliğini ve dönüşünü ifade eder.

Doğrula#

Eğitilmiş YOLO26n-obb modelinin doğruluğunu DOTA8 veri kümesinde doğrula. Doğrulamanın amaçlanan veri kümesi YAML dosyasını kullanması için data değerini açıkça belirt.

Örnek
from ultralytics import YOLO

# Bir model yükle
model = YOLO("yolo26n-obb.pt")  # Resmî bir modeli yükle
model = YOLO("path/to/best.pt")  # özel bir model yükle

# Modeli doğrula
metrics = model.val(data="dota8.yaml")  # DOTA8 veri kümesinde doğrula
metrics.box.map  # map50-95(B)
metrics.box.map50  # map50(B)
metrics.box.map75  # map75(B)
metrics.box.maps  # her kategori için mAP50-95(B) içeren bir liste
metrics.box.image_metrics  # Hassasiyet, geri çağırma, F1, TP, FP ve FN değerlerini içeren görüntü başına metrik sözlüğü

Tahmin#

Görüntüler üzerinde tahmin yapmak için eğitilmiş bir YOLO26n-obb modeli kullan.

Örnek
from ultralytics import YOLO

# Bir model yükle
model = YOLO("yolo26n-obb.pt")  # Resmî bir modeli yükle
model = YOLO("path/to/best.pt")  # özel bir model yükle

# Modelle tahmin yap
results = model("https://ultralytics.com/images/boats.jpg")  # bir görüntü üzerinde tahmin yap

# Sonuçlara eriş
for result in results:
    xywhr = result.obb.xywhr  # merkez-x, merkez-y, genişlik, yükseklik, açı (radyan)
    xyxyxyxy = result.obb.xyxyxyxy  # 4 noktalı çokgen biçimi
    names = [result.names[cls.item()] for cls in result.obb.cls.int()]  # her kutunun sınıf adı
    confs = result.obb.conf  # her kutunun güven puanı

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

save_crop=True değerini ileterek her OBB'nin kutu boyutunda, döndürmeyle hizalanmış kırpımını kaydedebilirsin; ObjectCropper de bunu yapar.

Sonuç Çıktısı#

Yönlendirilmiş sınırlayıcı kutu tespiti, her görüntü için bir Results nesnesi döndürür. Temel tahmin alanı olan result.obb, tespit edilen her nesne için döndürülmüş kutuları, sınıf kimliklerini ve güven puanlarını içerir.

ÖznitelikTürŞekilAçıklama
result.obbOBB(N)Yönlendirilmiş kutular.
result.obb.datatorch.float32(N,7/8)Güven/sınıf bilgisi içeren ham döndürülmüş kutular.
result.obb.xywhrtorch.float32(N,5)xywhr döndürülmüş kutular.
result.obb.xyxyxyxytorch.float32(N,4,2)Dört köşe noktası.
result.obb.conftorch.float32(N,)Güven puanları.

Etiketler uzun kenar kuralına göre kanonikleştirilir, ancak tahminler kanonikleştirilmez; bu nedenle result.obb.xywhr, dönüş kısa kenardan ölçülürken w değerinin h değerinden küçük olduğunu bildirebilir. Her iki biçim de aynı dikdörtgeni tanımladığından result.obb.xyxyxyxy her iki durumda da doğrudur. Sonraki aşamadaki kod uzun kenar biçimine ihtiyaç duyuyorsa köşeleri geri dönüştür; kutu parametrelerini yeniden yazmanın köşe sırasını döngüsel olarak kaydırabileceğini unutma:

from ultralytics.utils.ops import xyxyxyxy2xywhr

xywhr = xyxyxyxy2xywhr(result.obb.xyxyxyxy)  # w >= h, rotation in [-pi/4, 3pi/4)

Tüm görevlerde göreve özgü Results alanları için Göreve Göre Tahmin Sonuçları bölümüne bak.

Dışa aktar#

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

Örnek
from ultralytics import YOLO

# Bir model yükle
model = YOLO("yolo26n-obb.pt")  # Resmî bir modeli yükle
model = YOLO("path/to/best.pt")  # özel bir model yükle

# Modeli dışa aktar
model.export(format="onnx")

Kullanılabilir YOLO26-obb dışa aktarma biçimleri aşağıdaki tabloda yer alıyor. format argümanını kullanarak istediğin biçime aktarabilirsin; örneğin format='onnx' veya format='engine'. Dışa aktarılmış modeller üzerinde doğrudan tahmin yapabilir veya doğrulama gerçekleştirebilirsin; örneğin yolo predict model=yolo26n-obb.onnx. Dışa aktarma tamamlandıktan sonra modeline yönelik kullanım örnekleri gösterilir.

Biçimformat bağımsız değişkeniModelÜst verilerBağımsız değişkenler
PyTorch-yolo26n-obb.pt✅-
TorchScripttorchscriptyolo26n-obb.torchscript✅imgsz, quantize, dynamic, nms, batch, device
ONNXonnxyolo26n-obb.onnx✅imgsz, quantize, dynamic, simplify, opset, nms, batch, data, fraction, device
OpenVINOopenvinoyolo26n-obb_openvino_model/✅imgsz, quantize, dynamic, nms, batch, data, fraction, device
TensorRTengineyolo26n-obb.engine✅imgsz, quantize, dynamic, simplify, opset, workspace, nms, batch, data, fraction, device
CoreMLcoremlyolo26n-obb.mlpackage✅imgsz, dynamic, quantize, nms, batch, device
Apple Core AIcoreaiyolo26n-obb.aimodel✅imgsz, batch, quantize
TF SavedModelsaved_modelyolo26n-obb_saved_model/✅imgsz, quantize, opset, nms, batch, data, fraction, device
TF GraphDefpbyolo26n-obb.pb❌imgsz, opset, batch, device
TF Edge TPUedgetpuyolo26n-obb_edgetpu.tflite✅imgsz, quantize, opset, data, fraction, device
LiteRTlitertyolo26n-obb.tflite✅imgsz, quantize, batch, data, fraction, device
PaddlePaddlepaddleyolo26n-obb_paddle_model/✅imgsz, batch, device
MNNmnnyolo26n-obb.mnn✅imgsz, batch, dynamic, quantize, simplify, opset, nms, device
NCNNncnnyolo26n-obb_ncnn_model/✅imgsz, quantize, batch, device
IMX500imxyolo26n-obb_imx_model/✅imgsz, quantize, data, fraction, nms, device
RKNNrknnyolo26n-obb_rknn_model/✅imgsz, batch, name, quantize, simplify, opset, data, fraction, device
ExecuTorchexecutorchyolo26n-obb_executorch_model/✅imgsz, batch, device
Axeleraaxelerayolo26n-obb_axelera_model/✅imgsz, batch, quantize, data, fraction, device
DEEPXdeepxyolo26n-obb_deepx_model/✅imgsz, quantize, simplify, opset, data, optimize, device
Qualcomm QNNqnnyolo26n-obb_qnn.onnx✅imgsz, batch, name, quantize, simplify, opset, data, fraction, device
Hailohailoyolo26n-obb_hailo_model/✅imgsz, name, quantize, data, fraction, simplify, conf, iou, device
Huawei Ascendascendyolo26n-obb_ascend_model/✅imgsz, batch, name, quantize, opset, simplify, nms, device
AMD Xilinxxilinxyolo26n-obb_xilinx_model/✅imgsz, name, quantize, data, fraction, opset, simplify, device

nms=None, harici NMS için varsayılan olarak ham çıktılar üretir. Kullanılabilir bir NMS içermeyen başlık seçmek için nms=False değerini ayarla; desteklenmeyen biçimler yerel çıktı yoluna döner. Yukarıdaki nms girdileri, nms=True ile NMS içerebilen biçimleri tanımlar.

Ayrıntılı export bilgileri için Dışa Aktarma sayfasına bak.

Sık Sorulan Sorular#

  • Yönlendirilmiş Sınırlayıcı Kutular (OBB), görüntülerde nesne konumunu belirleme doğruluğunu artırmak için ek bir açı içerir. Eksenlere hizalı dikdörtgenlerden oluşan normal sınırlayıcı kutuların aksine OBB'ler, nesnenin yönüne daha iyi uyum sağlamak için dönebilir. Bu özellik, hava veya uydu görüntüleri gibi nesnelerin hassas biçimde yerleştirilmesini gerektiren uygulamalarda özellikle kullanışlıdır (Veri Kümesi Kılavuzu).

  • YOLO26n-obb modelini özel bir veri kümesiyle eğitmek için Python veya CLI kullanarak aşağıdaki örneği uygula:

    Örnek
    from ultralytics import YOLO
    
    # Önceden eğitilmiş bir modeli yükle
    model = YOLO("yolo26n-obb.pt")
    
    # Modeli eğit
    results = model.train(data="path/to/custom_dataset.yaml", epochs=100, imgsz=640)

    Daha fazla eğitim argümanı için Yapılandırma bölümüne bak.

  • YOLO26-OBB modelleri DOTAv1 gibi veri kümeleriyle önceden eğitilmiştir; ancak OBB biçiminde düzenlenmiş herhangi bir veri kümesini kullanabilirsin. OBB veri kümesi biçimleri hakkında ayrıntılı bilgi için Veri Kümesi Kılavuzu bölümüne bakabilirsin.

  • YOLO26n-obb modelini doğrulamak için aşağıda gösterildiği gibi Python veya CLI komutlarını kullanabilirsin:

    Örnek
    from ultralytics import YOLO
    
    # Bir model yükle
    model = YOLO("yolo26n-obb.pt")
    
    # Modeli doğrula
    metrics = model.val(data="dota8.yaml")

    Doğrulama hakkında tüm ayrıntılar için Val bölümüne bak.

  • YOLO26-OBB modelini ONNX biçimine aktarmak Python veya CLI kullanarak oldukça kolaydır:

    Örnek
    from ultralytics import YOLO
    
    # Bir model yükle
    model = YOLO("yolo26n-obb.pt")
    
    # Modeli dışa aktar
    model.export(format="onnx")

    Daha fazla dışa aktarma biçimi ve ayrıntı için Export sayfasına bak.

Yorumlar