Oriented Bounding Boxes Phát hiện đối tượng
Phát hiện đối tượng có 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 giới thiệu một góc bổ sung để định vị các đối tượng chính xác hơn trong hình ảnh.
Đầu ra của một trình phát hiện đối tượng định hướng là một tập hợp các hộp giới hạn 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 tin cậy cho mỗi hộp. Các hộp giới hạn xoay đặ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 chụp từ trên không, nơi các hộp giới hạn thẳng hàng theo trục truyền thống có thể bao gồm nền không cần thiết.
Mẹo
Các mô hình YOLO11 OBB sử dụng -obb
hậu tố, ví dụ: yolo11n-obb.pt
và được huấn luyện trước trên DOTAv1.
Xem: Phát hiện đối tượng bằng Ultralytics YOLO Oriented Bounding Boxes (YOLO-OBB)
Các mẫu trực quan
Phát hiện tàu thuyền bằng OBB | Phát hiện phương tiện bằng OBB |
---|---|
![]() |
![]() |
Mô hình
Các mô hình OBB được huấn luyện trước YOLO11 được hiển thị ở đây, được huấn luyện trước trên bộ dữ liệu DOTAv1.
Các mô hình sẽ tự động tải xuống từ phiên bản phát hành Ultralytics mới nhất khi sử dụng lần đầu.
Mô hình | Kích thước (pixels) |
mAPtest 50 |
Tốc độ CPU ONNX (ms) |
Tốc độ T4 TensorRT10 (ms) |
Tham số (M) |
FLOPs (B) |
---|---|---|---|---|---|---|
YOLO11n-obb | 1024 | 78.4 | 117.6 ± 0.8 | 4.4 ± 0.0 | 2.7 | 17.2 |
YOLO11s-obb | 1024 | 79.5 | 219.4 ± 4.0 | 5.1 ± 0.0 | 9.7 | 57.5 |
YOLO11m-obb | 1024 | 80.9 | 562.8 ± 2.9 | 10.1 ± 0.4 | 20.9 | 183.5 |
YOLO11l-obb | 1024 | 81.0 | 712.5 ± 5.0 | 13.5 ± 0.6 | 26.2 | 232.0 |
YOLO11x-obb | 1024 | 81.3 | 1408.6 ± 7.7 | 28.6 ± 1.0 | 58.8 | 520.2 |
- mAPtest các giá trị dành cho đa tỷ lệ một mô hình trên DOTAv1 tập dữ liệu.
Tái tạo bằng cáchyolo val obb data=DOTAv1.yaml device=0 split=test
và gửi kết quả đã hợp nhất đến Đánh giá DOTA. - Tốc độ trung bình trên các ảnh val DOTAv1 sử dụng Amazon EC2 P4d instance.
Tái tạo bằng cáchyolo val obb data=DOTAv1.yaml batch=1 device=0|cpu
Huấn luyện
Huấn luyện YOLO11n-obb trên bộ dữ liệu DOTA8 trong 100 epochs với kích thước ảnh 640. Để xem danh sách đầy đủ các đối số có sẵn, hãy tham khảo trang Cấu hình.
Lưu ý
Góc OBB bị giới hạn trong phạm vi 0–90 độ (không bao gồm 90 độ). Góc từ 90 độ trở lên không được hỗ trợ.
Ví dụ
from ultralytics import YOLO
# Load a model
model = YOLO("yolo11n-obb.yaml") # build a new model from YAML
model = YOLO("yolo11n-obb.pt") # load a pretrained model (recommended for training)
model = YOLO("yolo11n-obb.yaml").load("yolo11n.pt") # build from YAML and transfer weights
# Train the model
results = model.train(data="dota8.yaml", epochs=100, imgsz=640)
# Build a new model from YAML and start training from scratch
yolo obb train data=dota8.yaml model=yolo11n-obb.yaml epochs=100 imgsz=640
# Start training from a pretrained *.pt model
yolo obb train data=dota8.yaml model=yolo11n-obb.pt epochs=100 imgsz=640
# Build a new model from YAML, transfer pretrained weights to it and start training
yolo obb train data=dota8.yaml model=yolo11n-obb.yaml pretrained=yolo11n-obb.pt epochs=100 imgsz=640
Xem: Cách Huấn Luyện Các Mô Hình Ultralytics YOLO-OBB (Hộp Giới Hạn Định Hướng) trên Bộ Dữ Liệu DOTA bằng Ultralytics HUB
Định dạng bộ dữ liệu
Định dạng bộ dữ liệu OBB có thể được tìm thấy chi tiết trong Hướng dẫn về bộ dữ liệu. Định dạng YOLO OBB chỉ định các hộp giới hạn 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 sau:
class_index x1 y1 x2 y2 x3 y3 x4 y4
Về mặt nội bộ, YOLO xử lý các tổn thất và đầu ra trong xywhr
định dạng, đại diện cho hộp giới hạnđiểm trung tâm (xy), chiều rộng, chiều cao và góc xoay.
Val
Xác thực mô hình YOLO11n-obb đã huấn luyện độ chính xác trên bộ dữ liệu DOTA8. Không cần đối số nào vì model
giữ lại quá trình huấn luyện data
và các đối số của nó như các thuộc tính của mô hình.
Ví dụ
from ultralytics import YOLO
# Load a model
model = YOLO("yolo11n-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 contains map50-95(B) of each category
yolo obb val model=yolo11n-obb.pt data=dota8.yaml # val official model
yolo obb val model=path/to/best.pt data=path/to/data.yaml # val custom model
Dự đoán
Sử dụng mô hình YOLO11n-obb đã huấn luyện để chạy dự đoán trên ảnh.
Ví dụ
from ultralytics import YOLO
# Load a model
model = YOLO("yolo11n-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 box
yolo obb predict model=yolo11n-obb.pt source='https://ultralytics.com/images/boats.jpg' # predict with official model
yolo obb predict model=path/to/best.pt source='https://ultralytics.com/images/boats.jpg' # predict with custom model
Xem: Cách Phát Hiện và Theo Dõi Bể Chứa Sử Dụng Ultralytics YOLO-OBB | Hộp Giới Hạn Định Hướng | DOTA
Xem đầy đủ predict
chi tiết chế độ trong Dự đoán trang.
Xuất
Xuất mô hình YOLO11n-obb sang một định dạng khác như ONNX, CoreML, v.v.
Ví dụ
from ultralytics import YOLO
# Load a model
model = YOLO("yolo11n-obb.pt") # load an official model
model = YOLO("path/to/best.pt") # load a custom trained model
# Export the model
model.export(format="onnx")
yolo export model=yolo11n-obb.pt format=onnx # export official model
yolo export model=path/to/best.pt format=onnx # export custom trained model
Các định dạng xuất YOLO11-obb có sẵn được liệt kê 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 format
đối số, 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=yolo11n-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 | format Đối số |
Mô hình | Metadata (Siêu dữ liệu) | Các đối số |
---|---|---|---|---|
PyTorch | - | yolo11n-obb.pt |
✅ | - |
TorchScript | torchscript |
yolo11n-obb.torchscript |
✅ | imgsz , half , dynamic , optimize , nms , batch , device |
ONNX | onnx |
yolo11n-obb.onnx |
✅ | imgsz , half , dynamic , simplify , opset , nms , batch , device |
OpenVINO | openvino |
yolo11n-obb_openvino_model/ |
✅ | imgsz , half , dynamic , int8 , nms , batch , data , fraction , device |
TensorRT | engine |
yolo11n-obb.engine |
✅ | imgsz , half , dynamic , simplify , workspace , int8 , nms , batch , data , fraction , device |
CoreML | coreml |
yolo11n-obb.mlpackage |
✅ | imgsz , half , int8 , nms , batch , device |
TF SavedModel | saved_model |
yolo11n-obb_saved_model/ |
✅ | imgsz , keras , int8 , nms , batch , device |
TF GraphDef | pb |
yolo11n-obb.pb |
❌ | imgsz , batch , device |
TF Lite | tflite |
yolo11n-obb.tflite |
✅ | imgsz , half , int8 , nms , batch , data , fraction , device |
TF Edge TPU | edgetpu |
yolo11n-obb_edgetpu.tflite |
✅ | imgsz , device |
TF.js | tfjs |
yolo11n-obb_web_model/ |
✅ | imgsz , half , int8 , nms , batch , device |
PaddlePaddle | paddle |
yolo11n-obb_paddle_model/ |
✅ | imgsz , batch , device |
MNN | mnn |
yolo11n-obb.mnn |
✅ | imgsz , batch , int8 , half , device |
NCNN | ncnn |
yolo11n-obb_ncnn_model/ |
✅ | imgsz , half , batch , device |
IMX500 | imx |
yolo11n-obb_imx_model/ |
✅ | imgsz , int8 , data , fraction , device |
RKNN | rknn |
yolo11n-obb_rknn_model/ |
✅ | imgsz , batch , name , device |
Xem đầy đủ export
chi tiết trong Xuất trang.
Các ứng dụng thực tế
Phát hiện OBB với YOLO11 có nhiều ứng dụng thực tế trong nhiều ngành công nghiệp khác nhau:
- Maritime and Port Management: Phát hiện tàu thuyề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 chụp trên không.
- Nông nghiệp: Giám sát mùa vụ và thiết bị nông nghiệp từ cảnh quay bằng máy bay không người lái.
- Lĩnh vực 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 xe trên đường và trong bãi đậu xe từ nhiều góc độ 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 ở mọi góc độ, cung cấp khả năng phát hiện chính xác hơn so với các hộp giới hạn truyền thống.
Câu hỏi thường gặp
Oriented Bounding Boxes (OBB) là gì và chúng khác với bounding box thông thường như thế nào?
Hộp Giới Hạn Định Hướng (OBB) bao gồm một góc bổ sung để tăng cường độ chính xác định vị đối tượng trong ảnh. Không giống như các hộp giới hạn thông thường, là các hình chữ nhật thẳng hàng với trục, OBB có thể xoay để phù hợp hơn với hướng của đối tượng. Điều này đặc biệt hữu ích cho các ứng dụng yêu cầu định vị đối tượng chính xác, chẳng hạn như ảnh chụp từ trên không hoặc vệ tinh (Hướng Dẫn về Bộ Dữ Liệu).
Làm cách nào để huấn luyện mô hình YOLO11n-obb bằng bộ dữ liệu tùy chỉnh?
Để huấn luyện mô hình YOLO11n-obb với một bộ dữ liệu tùy chỉnh, hãy làm theo ví dụ bên dưới bằng cách sử dụng Python hoặc CLI:
Ví dụ
from ultralytics import YOLO
# Load a pretrained model
model = YOLO("yolo11n-obb.pt")
# Train the model
results = model.train(data="path/to/custom_dataset.yaml", epochs=100, imgsz=640)
yolo obb train data=path/to/custom_dataset.yaml model=yolo11n-obb.pt epochs=100 imgsz=640
Để biết thêm các đối số huấn luyện, hãy kiểm tra phần Cấu hình.
Tôi có thể sử dụng bộ dữ liệu nào để huấn luyện các mô hình YOLO11-OBB?
Các mô hình YOLO11-OBB được huấn luyện trước trên các bộ dữ liệu như DOTAv1 nhưng bạn có thể sử dụng bất kỳ bộ dữ liệu nào được định dạng cho OBB. Thông tin chi tiết về định dạng bộ dữ liệu OBB có thể được tìm thấy trong Hướng Dẫn về Bộ Dữ Liệu.
Làm cách nào để xuất mô hình YOLO11-OBB sang định dạng ONNX?
Xuất mô hình YOLO11-OBB sang định dạng ONNX rất đơn giản bằng cách sử dụng Python hoặc CLI:
Ví dụ
from ultralytics import YOLO
# Load a model
model = YOLO("yolo11n-obb.pt")
# Export the model
model.export(format="onnx")
yolo export model=yolo11n-obb.pt format=onnx
Để biết thêm các định dạng và chi tiết xuất, hãy tham khảo trang Xuất.
Làm cách nào để xác thực độ chính xác của mô hình YOLO11n-obb?
Để xác thực mô hình YOLO11n-obb, bạn có thể sử dụng các lệnh Python hoặc CLI như được hiển thị bên dưới:
Ví dụ
from ultralytics import YOLO
# Load a model
model = YOLO("yolo11n-obb.pt")
# Validate the model
metrics = model.val(data="dota8.yaml")
yolo obb val model=yolo11n-obb.pt data=dota8.yaml
Xem chi tiết xác thực đầy đủ trong phần Val.