Hộp bao quanh định hướng Phát hiện đối tượng
Phát hiện đối tượng định hướng tiến xa hơn một bước so với phát hiện đối tượng tiêu chuẩn bằng cách giới thiệu 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 quanh đã xoay giúp 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 tin cậy cho mỗi hộp. Các hộp bao quanh đị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 hình ảnh trên không, nơi các hộp bao quanh thẳng hàng với trục truyền thống có thể bao gồm phần 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 🚢
Mẫu trực quan
| Phát hiện tàu thủy bằng OBB | Phát hiện phương tiện bằng OBB |
|---|---|
![]() | ![]() |
Models
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 Model tự động tải xuống từ bản release mới nhất của Ultralytics trong lần đầu sử dụng.
| Model | kích thước (pixels) | 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 |
- mAPtest các giá trị là dành cho đa quy mô đơn mô hình trên tập dữ liệu DOTAv1.
Tái tạo bằngyolo val obb data=DOTAv1.yaml device=0 split=testvà gửi các kết quả đã hợp nhất đến DOTA evaluation. - Tốc độ được tính trung bình trên các hình ảnh val DOTAv1 bằng cách sử dụng instance Amazon EC2 P4d.
Tái tạo bằngyolo val obb data=DOTAv1.yaml batch=1 device=0|cpu - Các giá trị Params và FLOPs dành cho model đã được hợp nhất sau khi chạy
model.fuse(), giúp gộp các layer Conv và BatchNorm, đồng thời đối với các model end2end, nó loại bỏ phần head phát hiện one-to-many phụ. Các checkpoint đã huấn luyện trước vẫn giữ nguyên kiến trúc huấn luyện đầy đủ và có thể hiển thị số lượng cao hơn.
Train
Huấn luyện YOLO26n-obb trên tập dữ liệu DOTA8 trong 100 epoch với kích thước ảnh 640. Để có danh sách đầy đủ các đối số khả dụng, hãy xem trang Cấu hình.
Các góc OBB bị giới hạn trong phạm vi 0–90 độ (không bao gồm 90). Các góc từ 90 độ trở lên không được hỗ trợ.
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
Đị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 Hướng dẫn tập dữ liệu. Định dạng YOLO OBB chỉ định các hộp bao quanh bằng bốn điểm góc của chúng với các tọa độ được chuẩn hóa giữa 0 và 1, theo cấu trúc này. Nền tảng Ultralytics hỗ trợ chú thích OBB với một công cụ vẽ hộp bao quanh đị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 hàm mất mát 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à độ xoay của hộp bao quanh.
Val
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 vẫn giữ lại data huấn luyện và các đối số của nó dưới dạng thuộc tính 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 FNDự đoán (Predict)
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 tại trang Predict.
Export
Xuất mô hình YOLO26n-obb sang một đị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 có trong bảng bên dưới. Bạn có thể xuất sang bất kỳ định dạng nào bằ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, dynamic, simplify, opset, nms, batch, 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, 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 |
Xem chi tiết đầy đủ về export trong trang Export.
Ứng dụng trong thế giới thực
Phát hiện OBB với YOLO26 có vô số ứng dụng thực tế trên nhiều ngành công nghiệp khác nhau:
- Quản lý hàng hải và cảng: 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ừ hình ảnh trên không.
- Nông nghiệp: Giám sát mùa màng và thiết bị nông nghiệp từ cảnh quay bằng máy bay không người lái (drone).
- Lĩnh vực năng lượng: Kiểm tra các tấm pin năng lượng mặt trời và tua-bin 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 đậu 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 khớp 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 hộp bao quanh truyền thống.
Câu hỏi thường gặp (FAQ)
Hộp bao quanh định hướng (OBB) là gì và chúng khác biệt thế nào với các hộp bao quanh thông thường?
Hộp bao quanh định hướng (OBB) bao gồm một góc bổ sung để nâng cao độ chính xác khi định vị đối tượng trong hình ảnh. Không giống như các hộp bao quanh thông thường, vốn là các hình chữ nhật thẳng hàng với 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 yêu cầu vị trí đối tượng chính xác, chẳng hạn như hình ảnh trên không hoặc hình ảnh vệ tinh (Hướng dẫn tập dữ liệu).
Làm thế nào để tôi huấn luyện mô hình YOLO26n-obb bằng tập dữ liệu tùy chỉnh?
Để huấn luyện mô hình YOLO26n-obb với tập dữ liệu tùy chỉnh, hãy làm theo ví dụ bên dưới bằ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 đối số huấn luyện, hãy xem phần Cấu hình.
Tôi có thể sử dụng những tập dữ liệu nào để huấn luyện các mô hình YOLO26-OBB?
Các mô hình YOLO26-OBB được huấn luyện trước trên các tập dữ liệu như DOTAv1 nhưng bạn có thể sử dụng bất kỳ tập dữ liệu nào được định dạng cho OBB. Thông tin chi tiết về định dạng tập dữ liệu OBB có thể được tìm thấy trong Hướng dẫn tập dữ liệu.
Làm thế nào tôi có thể xuất mô hình YOLO26-OBB sang định dạng ONNX?
Việc xuất mô hình YOLO26-OBB sang định dạng ONNX rất đơn giản bằng cách 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 chi tiết và định dạng xuất, hãy tham khảo trang Xuất.
Làm thế nào để tôi xác thực độ chính xác của mô hình YOLO26n-obb?
Để xác thực mô hình 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 xác thực đầy đủ trong phần Val.

