Link to this sectionPhát hiện đối tượng Object Detection bằng Hộp bao định hướng (Oriented Bounding Boxes)#
Phát hiện đối tượng định hướng tiến thêm một bước so với phát hiện đối tượng tiêu chuẩn bằng cách bổ sung thêm một góc để định vị đối tượng chính xác hơn trong hình ảnh.
Đầu ra của một bộ phát hiện đối tượng định hướng là một tập hợp các hộp bao đã xoay, bao quanh chính xác các đối tượng trong hình ảnh, cùng với nhãn lớp và điểm số tin cậy cho mỗi hộp. Hộp bao định hướng đặc biệt hữu ích khi các đối tượng xuất hiện ở nhiều góc độ khác nhau, chẳng hạn như trong ảnh hàng không, nơi các hộp bao thẳng hàng theo trục truyền thống có thể bao gồm cả nền không cần thiết.
Các mô hình YOLO26 OBB sử dụng hậu tố -obb, ví dụ: yolo26n-obb.pt, và được huấn luyện trước trên DOTAv1.
Watch: How to Detect & Track Objects with Ultralytics YOLO26 Oriented Bounding Boxes (OBB) | Ship Tracking 🚢
Link to this sectionMẫu trực quan#
| Phát hiện tàu thuyền sử dụng OBB | Phát hiện phương tiện sử dụng OBB |
|---|---|
![]() | ![]() |
Link to this sectionModel#
Các mô hình OBB huấn luyện trước của YOLO26 được hiển thị ở đây, vốn đã được huấn luyện trước trên tập dữ liệu DOTAv1.
Các mô hình sẽ tự động tải xuống từ bản phát hành mới nhất của Ultralytics khi sử dụng lần đầu.
| Model | kích thước (pixel) | mAPtest 50-95(e2e) | mAPtest 50(e2e) | Tốc độ CPU ONNX (ms) | Tốc độ T4 TensorRT10 (ms) | tham số (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 |
- Các giá trị mAPtest dành cho mô hình đơn lẻ đa tỷ lệ trên tập dữ liệu DOTAv1.
Sao chép kết quả bằng lệnhyolo val obb data=DOTAv1.yaml device=0 split=testvà gửi kết quả đã hợp nhất tới DOTA evaluation. - Tốc độ trung bình trên các hình ảnh val của DOTAv1 sử dụng phiên bản Amazon EC2 P4d.
Sao chép kết quả bằng lệnhyolo val obb data=DOTAv1.yaml batch=1 device=0|cpu - Các giá trị Params và FLOPs là dành cho model đã hợp nhất (fused) sau khi gọi
model.fuse(), giúp gộp các lớp Conv và BatchNorm và, đối với các model end2end, loại bỏ head phát hiện auxiliary one-to-many. Các checkpoint được huấn luyện trước giữ nguyên kiến trúc huấn luyện đầy đủ và có thể hiển thị số lượng cao hơn.
Link to this sectionTrain#
Huấn luyện YOLO26n-obb trên tập dữ liệu DOTA8 trong 100 epochs với kích thước hình ảnh 640. Để xem danh sách đầy đủ các đối số khả dụng, hãy xem trang Configuration.
Một OBB và phép xoay 180° của nó là giống nhau, vì vậy góc xoay được xác định theo modulo 180° và hộp không có hướng. Về mặt nội bộ, góc được lưu trữ bằng radian và chuẩn hóa về [-π/4, 3π/4) ([-45°, 135°)), chiều rộng hộp w được coi là cạnh dài hơn, và góc được xác định là góc quay theo chiều kim đồng hồ từ trục x dương đến hướng của w. Dạng [0°, 90°) là quy ước kiểu DOTA đã được chuẩn hóa và không được áp dụng trong quá trình huấn luyện hoặc suy luận.
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
Link to this sectionĐịnh dạng tập dữ liệu#
Định dạng tập dữ liệu OBB có thể được tìm thấy chi tiết trong Dataset Guide. Định dạng YOLO OBB chỉ định các hộp bao bằng bốn điểm góc của chúng với tọa độ được chuẩn hóa giữa 0 và 1, theo cấu trúc này. Ultralytics Platform hỗ trợ chú thích OBB với một công cụ vẽ hộp bao định hướng chuyên dụng:
class_index x1 y1 x2 y2 x3 y3 x4 y4
Về mặt nội bộ, YOLO xử lý các mất mát (losses) và đầu ra ở định dạng xywhr, đại diện cho điểm trung tâm (xy), chiều rộng, chiều cao và góc xoay của hộp bao.
Link to this sectionVal#
Xác thực độ chính xác của mô hình YOLO26n-obb đã huấn luyện trên tập dữ liệu DOTA8. Không cần đối số nào vì model giữ lại các đối số và data huấn luyện của nó dưới dạng các thuộc tính của mô hình.
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 FNLink to this sectionPredict#
Sử dụng mô hình YOLO26n-obb đã huấn luyện để chạy dự đoán trên hình ảnh.
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
Xem chi tiết đầy đủ về chế độ predict trên trang Predict.
Link to this sectionKết quả đầu ra#
Phát hiện hộp bao định hướng trả về một đối tượng Results cho mỗi hình ảnh. Trường dự đoán chính là result.obb, chứa các hộp đã xoay, ID lớp và điểm số tin cậy cho mỗi đối tượng được phát hiện.
| Thuộc tính | Loại | Shape | Mô tả |
|---|---|---|---|
result.obb | OBB | (N) | Các hộp định hướng. |
result.obb.data | torch.float32 | (N,7/8) | Các hộp xoay thô với độ tin cậy/lớp. |
result.obb.xywhr | torch.float32 | (N,5) | Các hộp xoay xywhr. |
result.obb.xyxyxyxy | torch.float32 | (N,4,2) | Bốn điểm góc. |
result.obb.conf | torch.float32 | (N,) | Điểm tin cậy. |
Đối với các trường Results cụ thể theo từng tác vụ, hãy xem phần Dự đoán kết quả theo tác vụ (Predict Results by Task).
Link to this sectionExport#
Xuất mô hình YOLO26n-obb sang định dạng khác như ONNX, CoreML, v.v.
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")Các định dạng xuất YOLO26-obb khả dụng nằm trong bảng dưới đây. Bạn có thể xuất sang bất kỳ định dạng nào bằng cách sử dụng đối số format, ví dụ: format='onnx' hoặc format='engine'. Bạn có thể dự đoán hoặc xác thực trực tiếp trên các mô hình đã xuất, ví dụ: yolo predict model=yolo26n-obb.onnx. Các ví dụ sử dụng được hiển thị cho mô hình của bạn sau khi quá trình xuất hoàn tất.
| Định dạng | Đối số format | Model | Metadata | Đối số |
|---|---|---|---|---|
| PyTorch | - | yolo26n-obb.pt | ✅ | - |
| TorchScript | torchscript | yolo26n-obb.torchscript | ✅ | imgsz, half, dynamic, optimize, nms, batch, device |
| ONNX | onnx | yolo26n-obb.onnx | ✅ | imgsz, half, int8, dynamic, simplify, opset, nms, batch, data, fraction, device |
| OpenVINO | openvino | yolo26n-obb_openvino_model/ | ✅ | imgsz, half, dynamic, int8, nms, batch, data, fraction, device |
| TensorRT | engine | yolo26n-obb.engine | ✅ | imgsz, half, dynamic, simplify, workspace, int8, nms, batch, data, fraction, device |
| CoreML | coreml | yolo26n-obb.mlpackage | ✅ | imgsz, dynamic, half, int8, nms, batch, device |
| TF SavedModel | saved_model | yolo26n-obb_saved_model/ | ✅ | imgsz, keras, int8, nms, batch, data, fraction, device |
| TF GraphDef | pb | yolo26n-obb.pb | ❌ | imgsz, batch, device |
| TF Lite | tflite | yolo26n-obb.tflite | ✅ | imgsz, half, int8, nms, batch, data, fraction, device |
| TF Edge TPU | edgetpu | yolo26n-obb_edgetpu.tflite | ✅ | imgsz, int8, data, fraction, device |
| TF.js | tfjs | yolo26n-obb_web_model/ | ✅ | imgsz, half, int8, nms, batch, data, fraction, device |
| PaddlePaddle | paddle | yolo26n-obb_paddle_model/ | ✅ | imgsz, batch, device |
| MNN | mnn | yolo26n-obb.mnn | ✅ | imgsz, batch, int8, half, device |
| NCNN | ncnn | yolo26n-obb_ncnn_model/ | ✅ | imgsz, half, batch, device |
| IMX500 | imx | yolo26n-obb_imx_model/ | ✅ | imgsz, int8, data, fraction, nms, device |
| RKNN | rknn | yolo26n-obb_rknn_model/ | ✅ | imgsz, batch, name, int8, data, fraction, device |
| ExecuTorch | executorch | yolo26n-obb_executorch_model/ | ✅ | imgsz, batch, device |
| Axelera | axelera | yolo26n-obb_axelera_model/ | ✅ | imgsz, batch, int8, data, fraction, device |
| DEEPX | deepx | yolo26n-obb_deepx_model/ | ✅ | imgsz, int8, data, optimize, device |
| Qualcomm QNN | qnn | yolo26n-obb_qnn_model/ | ✅ | imgsz, batch, name, int8, data, fraction, device |
Xem chi tiết export đầy đủ trong trang Export.
Link to this sectionCác ứng dụng thực tế#
Phát hiện OBB với YOLO26 có vô số ứng dụng thực tế trong nhiều ngành công nghiệp:
- Quản lý hàng hải và cảng biển: Phát hiện tàu thuyền và phương tiện ở nhiều góc độ khác nhau để quản lý đội tàu và giám sát.
- Quy hoạch đô thị: Phân tích các tòa nhà và cơ sở hạ tầng từ ảnh hàng không.
- Nông nghiệp: Giám sát cây trồng và thiết bị nông nghiệp từ cảnh quay flycam.
- Ngành năng lượng: Kiểm tra các tấm pin mặt trời và tuabin gió ở các hướng khác nhau.
- Giao thông vận tải: Theo dõi phương tiện trên đường và trong bãi đỗ xe từ nhiều góc nhìn khác nhau.
Các ứng dụng này được hưởng lợi từ khả năng của OBB trong việc bao quanh chính xác các đối tượng ở bất kỳ góc độ nào, mang lại khả năng phát hiện chính xác hơn so với các bounding box truyền thống.
Link to this sectionCâu hỏi thường gặp#
Link to this sectionOriented Bounding Boxes (OBB) là gì và chúng khác biệt như thế nào so với các bounding box thông thường?#
Oriented Bounding Boxes (OBB) bổ sung thêm một góc xoay để nâng cao độ chính xác khi định vị đối tượng trong hình ảnh. Không giống như các bounding box thông thường vốn là các hình chữ nhật căn chỉnh theo trục, OBB có thể xoay để khớp với hướng của đối tượng tốt hơn. Điều này đặc biệt hữu ích cho các ứng dụng đòi hỏi vị trí đối tượng chính xác, chẳng hạn như ảnh chụp từ trên không hoặc vệ tinh (Dataset Guide).
Link to this sectionLàm thế nào để huấn luyện một model YOLO26n-obb sử dụng dataset tùy chỉnh?#
Để huấn luyện một model YOLO26n-obb với dataset tùy chỉnh, hãy làm theo ví dụ dưới đây sử dụng Python hoặc CLI:
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)Để biết thêm các tham số huấn luyện, hãy kiểm tra phần Configuration.
Link to this sectionTôi có thể sử dụng những dataset nào để huấn luyện các model YOLO26-OBB?#
Các model YOLO26-OBB được huấn luyện trước trên các dataset như DOTAv1 nhưng bạn có thể sử dụng bất kỳ dataset nào được định dạng cho OBB. Thông tin chi tiết về các định dạng dataset OBB có thể được tìm thấy trong Dataset Guide.
Link to this sectionLàm cách nào để xuất (export) một model YOLO26-OBB sang định dạng ONNX?#
Việc xuất một model YOLO26-OBB sang định dạng ONNX rất đơn giản khi sử dụng Python hoặc CLI:
from ultralytics import YOLO
# Load a model
model = YOLO("yolo26n-obb.pt")
# Export the model
model.export(format="onnx")Để biết thêm các định dạng xuất và chi tiết, hãy tham khảo trang Export.
Link to this sectionLàm thế nào để kiểm chứng (validate) độ chính xác của một model YOLO26n-obb?#
Để kiểm chứng một model YOLO26n-obb, bạn có thể sử dụng các lệnh Python hoặc CLI như hiển thị bên dưới:
from ultralytics import YOLO
# Load a model
model = YOLO("yolo26n-obb.pt")
# Validate the model
metrics = model.val(data="dota8.yaml")Xem chi tiết đầy đủ về việc kiểm chứng trong phần Val.

