Tổng quan về bộ dữ liệu Oriented Bounding Box (OBB)
Huấn luyện một mô hình object detection chính xác với oriented bounding box (OBB) đòi hỏi một bộ dữ liệu hoàn thiện. Hướng dẫn này giải thích các định dạng bộ dữ liệu OBB khác nhau tương thích với các mô hình Ultralytics YOLO, cung cấp thông tin chi tiết về cấu trúc, ứng dụng và các phương pháp chuyển đổi định dạng.
Các định dạng bộ dữ liệu OBB được hỗ trợ
Định dạng YOLO OBB
Định dạng YOLO OBB xác định bounding box bằng bốn điểm góc với tọa độ được chuẩn hóa từ 0 đến 1. Nó tuân theo định dạng sau:
class_index x1 y1 x2 y2 x3 y3 x4 y4Về 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.

Ví dụ về tệp nhãn *.txt cho hình ảnh phía trên, chứa một đối tượng thuộc lớp 0 ở định dạng OBB, có thể trông như sau:
0 0.780811 0.743961 0.782371 0.74686 0.777691 0.752174 0.776131 0.749758Định dạng YAML của tập dữ liệu
Framework Ultralytics sử dụng định dạng tệp YAML để xác định bộ dữ liệu và cấu hình mô hình cho việc huấn luyện các mô hình OBB. Dưới đây là ví dụ về định dạng YAML được sử dụng để xác định bộ dữ liệu OBB:
# Ultralytics 🚀 AGPL-3.0 License - https://ultralytics.com/license
# DOTA8 dataset (8 images from the DOTAv1 split) by Ultralytics
# Documentation: https://docs.ultralytics.com/datasets/obb/dota8/
# Example usage: yolo train model=yolov8n-obb.pt data=dota8.yaml
# parent
# ├── ultralytics
# └── datasets
# └── dota8 ← downloads here (1 MB)
# Train/val/test sets as 1) dir: path/to/imgs, 2) file: path/to/imgs.txt, or 3) list: [path/to/imgs1, path/to/imgs2, ..]
path: dota8 # dataset root dir
train: images/train # train images (relative to 'path') 4 images
val: images/val # val images (relative to 'path') 4 images
# Classes for DOTA 1.0
names:
0: plane
1: ship
2: storage tank
3: baseball diamond
4: tennis court
5: basketball court
6: ground track field
7: harbor
8: bridge
9: large vehicle
10: small vehicle
11: helicopter
12: roundabout
13: soccer ball field
14: swimming pool
# Download script/URL (optional)
download: https://github.com/ultralytics/assets/releases/download/v0.0.0/dota8.zipCách sử dụng
Để huấn luyện mô hình sử dụng các định dạng OBB này:
from ultralytics import YOLO
# Create a new YOLO26n-OBB model from scratch
model = YOLO("yolo26n-obb.yaml")
# Train the model on the DOTAv1 dataset
results = model.train(data="DOTAv1.yaml", epochs=100, imgsz=1024)Các tập dữ liệu được hỗ trợ
Hiện tại, các bộ dữ liệu sau với oriented bounding box được hỗ trợ:
- DOTA-v1: Phiên bản đầu tiên của bộ dữ liệu DOTA, cung cấp một tập hợp toàn diện các hình ảnh trên không với oriented bounding box cho object detection.
- DOTA-v1.5: Một phiên bản trung gian của bộ dữ liệu DOTA, cung cấp các chú thích bổ sung và cải tiến so với DOTA-v1 cho các tác vụ object detection nâng cao.
- DOTA-v2: DOTA (Bộ dữ liệu quy mô lớn cho Object Detection trong hình ảnh trên không) phiên bản 2, tập trung vào khả năng phát hiện từ góc nhìn trên không và chứa các oriented bounding box với 1,7 triệu thực thể và 11.268 hình ảnh.
- DOTA8: Một tập con nhỏ gồm 8 hình ảnh của bộ dữ liệu DOTA đầy đủ, phù hợp để kiểm tra quy trình làm việc và các kiểm tra Continuous Integration (CI) cho việc huấn luyện OBB trong kho lưu trữ
ultralytics. - DOTA128: Một tập con gồm 128 hình ảnh của bộ dữ liệu DOTA với tất cả hình ảnh trong thư mục train (được sử dụng cho cả train và val), cung cấp sự cân bằng tốt giữa quy mô và độ đa dạng để kiểm tra các mô hình OBB.
Kết hợp bộ dữ liệu OBB của riêng bạn
Đối với những người muốn giới thiệu bộ dữ liệu của riêng mình với oriented bounding box, hãy đảm bảo tính tương thích với "định dạng YOLO OBB" đã đề cập ở trên. Hãy chuyển đổi các chú thích của bạn sang định dạng bắt buộc này và liệt kê chi tiết các đường dẫn, các lớp và tên lớp trong tệp cấu hình YAML tương ứng.
Chuyển đổi định dạng nhãn
Định dạng bộ dữ liệu DOTA sang định dạng YOLO OBB
Việc chuyển đổi nhãn từ định dạng bộ dữ liệu DOTA sang định dạng YOLO OBB có thể được thực hiện bằng script này:
from ultralytics.data.converter import convert_dota_to_yolo_obb
convert_dota_to_yolo_obb("path/to/DOTA")Cơ chế chuyển đổi này là công cụ quan trọng cho các bộ dữ liệu ở định dạng DOTA, đảm bảo sự thống nhất với định dạng OBB của Ultralytics YOLO.
Việc xác thực tính tương thích của bộ dữ liệu với mô hình của bạn và tuân thủ các quy ước định dạng cần thiết là điều bắt buộc. Các bộ dữ liệu được cấu trúc đúng cách đóng vai trò then chốt cho việc huấn luyện các mô hình object detection hiệu quả với oriented bounding box.
Câu hỏi thường gặp (FAQ)
Oriented Bounding Box (OBB) là gì và chúng được sử dụng như thế nào trong các mô hình Ultralytics YOLO?
Oriented Bounding Box (OBB) là một loại chú thích bounding box trong đó hộp có thể được xoay để căn chỉnh chặt chẽ hơn với đối tượng đang được phát hiện, thay vì chỉ căn chỉnh theo trục. Điều này đặc biệt hữu ích trong hình ảnh trên không hoặc vệ tinh nơi các đối tượng có thể không căn chỉnh với các trục hình ảnh. Trong các mô hình Ultralytics YOLO, OBB được thể hiện bằng bốn điểm góc của chúng trong định dạng YOLO OBB. Điều này cho phép object detection chính xác hơn vì các bounding box có thể xoay để phù hợp với đối tượng tốt hơn.
Làm cách nào để chuyển đổi các nhãn bộ dữ liệu DOTA hiện có sang định dạng YOLO OBB để sử dụng với Ultralytics YOLO26?
Bạn có thể chuyển đổi nhãn bộ dữ liệu DOTA sang định dạng YOLO OBB bằng cách sử dụng hàm convert_dota_to_yolo_obb từ Ultralytics. Việc chuyển đổi này đảm bảo tính tương thích với các mô hình Ultralytics YOLO, cho phép bạn tận dụng các khả năng OBB để tăng cường object detection. Dưới đây là một ví dụ nhanh:
from ultralytics.data.converter import convert_dota_to_yolo_obb
convert_dota_to_yolo_obb("path/to/DOTA")Script này sẽ định dạng lại các chú thích DOTA của bạn sang định dạng tương thích với YOLO.
Làm cách nào để huấn luyện mô hình YOLO26 với oriented bounding box (OBB) trên bộ dữ liệu của tôi?
Huấn luyện mô hình YOLO26 với OBB bao gồm việc đảm bảo bộ dữ liệu của bạn ở định dạng YOLO OBB và sau đó sử dụng Ultralytics API để huấn luyện mô hình. Dưới đây là ví dụ trong cả Python và CLI:
from ultralytics import YOLO
# Create a new YOLO26n-OBB model from scratch
model = YOLO("yolo26n-obb.yaml")
# Train the model on the custom dataset
results = model.train(data="your_dataset.yaml", epochs=100, imgsz=640)Điều này đảm bảo mô hình của bạn tận dụng các chú thích OBB chi tiết để cải thiện độ chính xác.
Những bộ dữ liệu nào hiện được hỗ trợ cho việc huấn luyện OBB trong các mô hình Ultralytics YOLO?
Hiện tại, Ultralytics hỗ trợ các bộ dữ liệu sau cho việc huấn luyện OBB:
- DOTA-v1: Phiên bản đầu tiên của bộ dữ liệu DOTA, cung cấp một tập hợp toàn diện các hình ảnh trên không với oriented bounding box cho object detection.
- DOTA-v1.5: Một phiên bản trung gian của bộ dữ liệu DOTA, cung cấp các chú thích bổ sung và cải tiến so với DOTA-v1 cho các tác vụ object detection nâng cao.
- DOTA-v2: Bộ dữ liệu này bao gồm 1,7 triệu thực thể với oriented bounding box và 11.268 hình ảnh, tập trung chủ yếu vào object detection trên không.
- DOTA8: Một tập con nhỏ hơn gồm 8 hình ảnh của bộ dữ liệu DOTA được sử dụng để kiểm tra và kiểm tra continuous integration (CI).
- DOTA128: Một tập con gồm 128 hình ảnh với tất cả hình ảnh trong thư mục train (được sử dụng cho cả train và val), cung cấp độ đa dạng cao hơn DOTA8 trong khi vẫn dễ quản lý cho việc phát triển và thử nghiệm mô hình OBB ban đầu.
Các bộ dữ liệu này được điều chỉnh cho các tình huống mà OBB mang lại lợi thế đáng kể, chẳng hạn như phân tích hình ảnh trên không và vệ tinh.
Tôi có thể sử dụng bộ dữ liệu của riêng mình với oriented bounding box cho việc huấn luyện YOLO26 không, và nếu có, thì làm như thế nào?
Có, bạn có thể sử dụng bộ dữ liệu của riêng mình với oriented bounding box cho việc huấn luyện YOLO26. Hãy đảm bảo các chú thích bộ dữ liệu của bạn được chuyển đổi sang định dạng YOLO OBB, bao gồm việc xác định bounding box bằng bốn điểm góc. Sau đó, bạn có thể tạo một tệp cấu hình YAML chỉ định các đường dẫn bộ dữ liệu, các lớp và các chi tiết cần thiết khác. Để biết thêm thông tin về cách tạo và cấu hình bộ dữ liệu của bạn, hãy tham khảo phần Supported Datasets.