Chuyển đến nội dung

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
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ách yolo 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ách yolo 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.



📅 Đã tạo 1 năm trước ✏️ Cập nhật 5 ngày trước

Bình luận