Yönlendirilmiş Sınırlayıcı Kutularla Nesne Tespiti#
Yönlendirilmiş nesne algılama, bir görüntüdeki nesneleri daha doğru bir şekilde konumlandırmak için fazladan bir açı ekleyerek standart nesne algılamadan bir adım daha ileri gider.
Yönlendirilmiş bir nesne dedektörünün çıktısı, görüntüdeki nesneleri hassas bir şekilde çevreleyen bir dizi döndürülmüş sınırlayıcı kutu ile her kutu için sınıf etiketleri ve güven puanlarıdır. Yönlendirilmiş sınırlayıcı kutular, özellikle hava görüntülerinde olduğu gibi nesnelerin çeşitli açılarda göründüğü ve geleneksel eksene hizalı sınırlayıcı kutuların gereksiz arka planı içerebileceği durumlarda yararlıdır.
YOLO26 OBB modelleri -obb son ekini kullanır, örn. yolo26n-obb.pt, ve DOTAv1 üzerinde önceden eğitilmiştir.
Watch: How to Detect & Track Objects with Ultralytics YOLO26 Oriented Bounding Boxes (OBB) | Ship Tracking 🚢
Görsel Örnekler#
| OBB kullanarak Gemi Algılama | OBB kullanarak Araç Algılama |
|---|---|
![]() | ![]() |
Modeller#
DOTAv1 veri kümesi üzerinde önceden eğitilmiş olan YOLO26 önceden eğitilmiş OBB modelleri burada gösterilmektedir.
Modeller, ilk kullanımda en son 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) | parametreler (M) | FLOPs (B) |
|---|---|---|---|---|---|---|---|
| YOLO26n-obb | 1024 | 52.4 | 78.9 | 97.7 ± 0.9 | 2.8 ± 0.0 | 2.5 | 14.0 |
| YOLO26s-obb | 1024 | 54.8 | 80.9 | 218.0 ± 1.4 | 4.9 ± 0.1 | 9.8 | 55.1 |
| YOLO26m-obb | 1024 | 55.3 | 81.0 | 579.2 ± 3.8 | 10.2 ± 0.3 | 21.2 | 183.3 |
| YOLO26l-obb | 1024 | 56.2 | 81.6 | 735.6 ± 3.1 | 13.0 ± 0.2 | 25.6 | 230.0 |
| YOLO26x-obb | 1024 | 56.7 | 81.7 | 1485.7 ± 11.5 | 30.5 ± 0.9 | 57.6 | 516.5 |
- mAPtest değerleri DOTAv1 veri kümesi üzerindeki tek model çoklu ölçek içindir.
yolo val obb data=DOTAv1.yaml device=0 split=testile yeniden oluşturun ve birleştirilmiş sonuçları DOTA değerlendirmesine gönderin. - Hız, bir Amazon EC2 P4d örneği kullanılarak DOTAv1 val görüntüleri üzerinden ortalama olarak hesaplanmıştır.
yolo val obb data=DOTAv1.yaml batch=1 device=0|cpuile yeniden oluşturun - Params ve FLOPs değerleri, Conv ve BatchNorm katmanlarını birleştiren ve uçtan uca modeller için yardımcı bire çok algılama başlığını kaldıran
model.fuse()sonrasındaki birleştirilmiş model içindir. Önceden eğitilmiş kontrol noktaları tam eğitim mimarisini korur ve daha yüksek sayılar gösterebilir.
Eğit (Train)#
DOTA8 veri kümesinde 640 görüntü boyutunda 100 dönem (epoch) boyunca YOLO26n-obb modelini eğit. Kullanılabilir argümanların tam listesi için Yapılandırma sayfasına bak.
Bir OBB ve onun 180°'lik döndürülmesi aynıdır, bu nedenle döndürme 180° moduna göre tanımlanır ve kutunun bir yönü yoktur. Dahili olarak açı radyan cinsinden saklanır ve [-π/4, 3π/4) ([-45°, 135°)) değerine normalize edilir, kutu genişliği w daha uzun kenar olarak alınır ve açı, pozitif x ekseninden w yönüne doğru saat yönündeki açı olarak tanımlanır. [0°, 90°) formu düzenlileştirilmiş DOTA tarzı kuraldır ve eğitim veya çıkarımda uygulanmaz.
from ultralytics import YOLO
# Load a model
model = YOLO("yolo26n-obb.yaml") # build a new model from YAML
model = YOLO("yolo26n-obb.pt") # load a pretrained model (recommended for training)
model = YOLO("yolo26n-obb.yaml").load("yolo26n-obb.pt") # build from YAML and transfer weights
# Train the model
results = model.train(data="dota8.yaml", epochs=100, imgsz=640)Watch: How to Train Ultralytics YOLO-OBB (Oriented Bounding Boxes) Models on DOTA Dataset using Ultralytics Platform
Veri kümesi biçimi#
OBB veri kümesi formatı Veri Kümesi Kılavuzu içinde ayrıntılı olarak bulunabilir. YOLO OBB formatı, bu yapıyı izleyerek koordinatları 0 ile 1 arasında normalize edilmiş dört köşe noktasıyla sınırlayıcı kutuları belirtir. Ultralytics Platform etiketlemesi, özel bir yönlendirilmiş sınırlayıcı kutu çizim aracıyla OBB etiketlerini destekler:
class_index x1 y1 x2 y2 x3 y3 x4 y4Dahili olarak YOLO, kayıpları ve çıktıları, bounding box merkez noktasını (xy), genişliğini, yüksekliğini ve rotasyonunu temsil eden xywhr formatında işler.
Doğrula (Val)#
Eğitilmiş YOLO26n-obb model doğruluğunu DOTA8 veri kümesi üzerinde doğrula. model eğitim data ve argümanlarını model öznitelikleri olarak koruduğu için hiçbir argümana gerek yoktur.
from ultralytics import YOLO
# Load a model
model = YOLO("yolo26n-obb.pt") # load an official model
model = YOLO("path/to/best.pt") # load a custom model
# Validate the model
metrics = model.val(data="dota8.yaml") # no arguments needed, dataset and settings remembered
metrics.box.map # map50-95(B)
metrics.box.map50 # map50(B)
metrics.box.map75 # map75(B)
metrics.box.maps # a list containing mAP50-95(B) for each category
metrics.box.image_metrics # per-image metrics dictionary with precision, recall, F1, TP, FP, and FNTahmin Et (Predict)#
Görüntüler üzerinde tahmin yürütmek için eğitilmiş bir YOLO26n-obb modeli kullan.
from ultralytics import YOLO
# Load a model
model = YOLO("yolo26n-obb.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/boats.jpg") # predict on an image
# Access the results
for result in results:
xywhr = result.obb.xywhr # center-x, center-y, width, height, angle (radians)
xyxyxyxy = result.obb.xyxyxyxy # polygon format with 4-points
names = [result.names[cls.item()] for cls in result.obb.cls.int()] # class name of each box
confs = result.obb.conf # confidence score of each boxWatch: How to Detect and Track Storage Tanks using Ultralytics YOLO-OBB | Oriented Bounding Boxes | DOTA
Tam predict modu ayrıntılarını Tahmin sayfasında görün.
Sonuç Çıktısı#
Yönlendirilmiş sınırlayıcı kutu tespiti, görüntü başına bir Results nesnesi döndürür. Birincil tahmin alanı, tespit edilen her nesne için döndürülmüş kutuları, sınıf kimliklerini (ID) ve güven skorlarını içeren result.obb alanıdır.
| Öznitelik | Tip | Şekil | Açıklama |
|---|---|---|---|
result.obb | OBB | (N) | Yönlendirilmiş kutular. |
result.obb.data | torch.float32 | (N,7/8) | Güvenilirlik/sınıf ile 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 skorları. |
Her görev genelinde göreve özgü Results alanları için Göreve Göre Tahmin Sonuçları bölümüne bakın.
Dışa Aktar (Export)#
Bir YOLO26n-obb modelini ONNX, CoreML vb. gibi farklı bir biçime aktar.
from ultralytics import YOLO
# Load a model
model = YOLO("yolo26n-obb.pt") # load an official model
model = YOLO("path/to/best.pt") # load a custom-trained model
# Export the model
model.export(format="onnx")Kullanılabilir YOLO26-obb dışa aktarma formatları aşağıdaki tabloda yer almaktadır. format argümanını (yani format='onnx' veya format='engine') kullanarak herhangi bir fiyata dışa aktarabilirsin. Dışa aktarılan modeller üzerinde doğrudan tahmin yapabilir veya doğrulayabilirsin, örn. yolo predict model=yolo26n-obb.onnx. Kullanım örnekleri, dışa aktarma tamamlandıktan sonra modelin için gösterilir.
| Format | format Argümanı | Model | Meta veriler | Argümanlar |
|---|---|---|---|---|
| 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 |
| TF SavedModel | saved_model | yolo26n-obb_saved_model/ | ✅ | imgsz, keras, 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 |
| 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 |
| LiteRT | litert | yolo26n-obb.tflite | ✅ | imgsz, quantize, batch, data, fraction, device |
| Hailo | hailo | yolo26n-obb_hailo_model/ | ✅ | imgsz, name, quantize, data, fraction, simplify, conf, iou |
| Huawei Ascend | ascend | yolo26n-obb_ascend_model/ | ✅ | imgsz, batch, name, quantize, opset, simplify, nms |
Tam export ayrıntılarını Dışa Aktar sayfasında görün.
Gerçek Dünya Uygulamaları#
YOLO26 ile OBB algılama, çeşitli endüstrilerde çok sayıda pratik uygulamaya sahiptir:
- Denizcilik ve Liman Yönetimi: Filo yönetimi ve izleme için çeşitli açılardaki gemileri ve tekneleri tespit etme.
- Şehir Planlama: Hava görüntülerinden binaları ve altyapıyı analiz etme.
- Tarım: İnsansız hava aracı görüntülerinden mahsulleri ve tarım ekipmanlarını izleme.
- Enerji Sektörü: Güneş panellerini ve rüzgar türbinlerini farklı yönelimlerde inceleme.
- Ulaşım: Yollardaki ve otoparklardaki araçları çeşitli perspektiflerden izleme.
Bu uygulamalar, OBB'nin nesneleri her açıda hassas bir şekilde sığdırma yeteneğinden yararlanarak geleneksel sınırlayıcı kutulardan daha doğru algılama sağlar.
SSS#
Yönlendirilmiş Sınırlayıcı Kutular (OBB) nedir ve normal sınırlayıcı kutulardan farkları nelerdir?#
Yönlendirilmiş Sınırlayıcı Kutular (OBB), görüntülerdeki nesne yerleştirme doğruluğunu artırmak için ek bir açı içerir. Eksen hizalı dikdörtgenler olan normal sınırlayıcı kutuların aksine OBB'ler, nesnenin yönüne daha iyi uyacak şekilde dönebilir. Bu, hava veya uydu görüntüleri gibi hassas nesne yerleşimi gerektiren uygulamalar için özellikle yararlıdır (Veri Kümesi Kılavuzu).
Özel bir veri kümesi kullanarak nasıl YOLO26n-obb modeli eğitebilirim?#
Özel bir veri kümesiyle YOLO26n-obb modeli eğitmek için Python veya CLI kullanarak aşağıdaki örneği takip et:
from ultralytics import YOLO
# Load a pretrained model
model = YOLO("yolo26n-obb.pt")
# Train the model
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ünü kontrol et.
YOLO26-OBB modellerini eğitmek için hangi veri kümelerini kullanabilirim?#
YOLO26-OBB modelleri DOTAv1 gibi veri kümelerinde önceden eğitilmiştir ancak OBB için biçimlendirilmiş herhangi bir veri kümesini kullanabilirsin. OBB veri kümesi formatları hakkında ayrıntılı bilgiyi Veri Kümesi Kılavuzu sayfasında bulabilirsin.
Bir YOLO26-OBB modelini nasıl ONNX biçimine aktarabilirim?#
Bir YOLO26-OBB modelini Python veya CLI kullanarak ONNX biçimine aktarmak oldukça basittir:
from ultralytics import YOLO
# Load a model
model = YOLO("yolo26n-obb.pt")
# Export the model
model.export(format="onnx")Daha fazla dışa aktarma formatı ve ayrıntı için Dışa Aktar sayfasına başvurun.
Bir YOLO26n-obb modelinin doğruluğunu nasıl onaylayabilirim?#
Bir YOLO26n-obb modelini doğrulamak için aşağıda gösterildiği gibi Python veya CLI komutlarını kullanabilirsin:
from ultralytics import YOLO
# Load a model
model = YOLO("yolo26n-obb.pt")
# Validate the model
metrics = model.val(data="dota8.yaml")Tam doğrulama ayrıntıları için Val bölümüne bakın.

