Ultralytics YOLO ile Yönlendirilmiş Sınırlayıcı Kutu Tespiti#
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 🚢
YOLO26 OBB modellerinde -obb soneki kullanılır; örneğin yolo26n-obb.pt. Modeller DOTAv1 üzerinde önceden eğitilmiştir.
| OBB ile gemi tespiti | OBB 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.
| Model | boyut (piksel) | mAPtest 50-95(e2e) | mAPtest 50(e2e) | Hız CPU ONNX (ms) | Hız T4 TensorRT10 (ms) | parametre (M) | FLOPs (B) |
|---|---|---|---|---|---|---|---|
| YOLO26n-obb | 1024 | 52.4 | 78.9 | 97.7 ± 0.9 | 2.8 ± 0.0 | 2.4 | 14.8 |
| YOLO26s-obb | 1024 | 54.8 | 80.9 | 218.0 ± 1.4 | 4.9 ± 0.1 | 9.8 | 56.7 |
| YOLO26m-obb | 1024 | 55.3 | 81.0 | 579.2 ± 3.8 | 10.2 ± 0.3 | 21.2 | 184.9 |
| YOLO26l-obb | 1024 | 56.2 | 81.6 | 735.6 ± 3.1 | 13.0 ± 0.2 | 25.6 | 232.4 |
| YOLO26x-obb | 1024 | 56.7 | 81.7 | 1485.7 ± 11.5 | 30.5 ± 0.9 | 57.6 | 520.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=Falseile 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=Falseile 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.
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.
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 y4YOLO, 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.
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.
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.
| Öznitelik | Tür | Şekil | Açıklama |
|---|---|---|---|
result.obb | OBB | (N) | Yönlendirilmiş kutular. |
result.obb.data | torch.float32 | (N,7/8) | Güven/sınıf bilgisi içeren ham döndürülmüş kutular. |
result.obb.xywhr | torch.float32 | (N,5) | xywhr döndürülmüş kutular. |
result.obb.xyxyxyxy | torch.float32 | (N,4,2) | Dört köşe noktası. |
result.obb.conf | torch.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.
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çim | format bağımsız değişkeni | Model | Üst veriler | Bağımsız değişkenler |
|---|---|---|---|---|
| PyTorch | - | yolo26n-obb.pt | ✅ | - |
| TorchScript | torchscript | yolo26n-obb.torchscript | ✅ | imgsz, quantize, dynamic, nms, batch, device |
| ONNX | onnx | yolo26n-obb.onnx | ✅ | imgsz, quantize, dynamic, simplify, opset, nms, batch, data, fraction, device |
| OpenVINO | openvino | yolo26n-obb_openvino_model/ | ✅ | imgsz, quantize, dynamic, nms, batch, data, fraction, device |
| TensorRT | engine | yolo26n-obb.engine | ✅ | imgsz, quantize, dynamic, simplify, opset, workspace, nms, batch, data, fraction, device |
| CoreML | coreml | yolo26n-obb.mlpackage | ✅ | imgsz, dynamic, quantize, nms, batch, device |
| Apple Core AI | coreai | yolo26n-obb.aimodel | ✅ | imgsz, batch, quantize |
| TF SavedModel | saved_model | yolo26n-obb_saved_model/ | ✅ | imgsz, quantize, opset, nms, batch, data, fraction, device |
| TF GraphDef | pb | yolo26n-obb.pb | ❌ | imgsz, opset, batch, device |
| TF Edge TPU | edgetpu | yolo26n-obb_edgetpu.tflite | ✅ | imgsz, quantize, opset, data, fraction, device |
| LiteRT | litert | yolo26n-obb.tflite | ✅ | imgsz, quantize, batch, data, fraction, device |
| PaddlePaddle | paddle | yolo26n-obb_paddle_model/ | ✅ | imgsz, batch, device |
| MNN | mnn | yolo26n-obb.mnn | ✅ | imgsz, batch, dynamic, quantize, simplify, opset, nms, device |
| NCNN | ncnn | yolo26n-obb_ncnn_model/ | ✅ | imgsz, quantize, batch, device |
| IMX500 | imx | yolo26n-obb_imx_model/ | ✅ | imgsz, quantize, data, fraction, nms, device |
| RKNN | rknn | yolo26n-obb_rknn_model/ | ✅ | imgsz, batch, name, quantize, simplify, opset, data, fraction, device |
| ExecuTorch | executorch | yolo26n-obb_executorch_model/ | ✅ | imgsz, batch, device |
| Axelera | axelera | yolo26n-obb_axelera_model/ | ✅ | imgsz, batch, quantize, data, fraction, device |
| DEEPX | deepx | yolo26n-obb_deepx_model/ | ✅ | imgsz, quantize, simplify, opset, data, optimize, device |
| Qualcomm QNN | qnn | yolo26n-obb_qnn.onnx | ✅ | imgsz, batch, name, quantize, simplify, opset, data, fraction, device |
| Hailo | hailo | yolo26n-obb_hailo_model/ | ✅ | imgsz, name, quantize, data, fraction, simplify, conf, iou, device |
| Huawei Ascend | ascend | yolo26n-obb_ascend_model/ | ✅ | imgsz, batch, name, quantize, opset, simplify, nms, device |
| AMD Xilinx | xilinx | yolo26n-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:
Örnekfrom 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:
Örnekfrom 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:
Örnekfrom 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.

