Tổng quan về tập dữ liệu Oriented Bounding Box (OBB)#
Huấn luyện một object detection model chính xác với oriented bounding boxes (OBB) đòi hỏi một tập dữ liệu đầy đủ. Hướng dẫn này giải thích các định dạng tập dữ liệu OBB khác nhau tương thích với các model Ultralytics YOLO, cung cấp thông tin chi tiết về cấu trúc, ứng dụng và phương pháp chuyển đổi định dạng của chúng.
Các định dạng tập 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 (losses) và đầu ra ở định dạng xywhr, đại diện cho điểm trung tâm của hộp bao (xy), chiều rộng, chiều cao và góc xoay.

Một ví dụ về tệp nhãn *.txt cho hình ảnh trên, chứa một đối tượng thuộc class 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 cho tập dữ liệu#
Framework Ultralytics sử dụng định dạng tệp YAML để xác định cấu hình tập dữ liệu và model cho việc huấn luyện các model OBB. Dưới đây là ví dụ về định dạng YAML được sử dụng để xác định một tập 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.zipMỗi file train, val và test đều chấp nhận một thư mục, một danh sách các thư mục hoặc một file *.txt liệt kê mỗi đường dẫn ảnh trên một dòng (các đường dẫn bắt đầu bằng ./ được phân giải tương đối theo file *.txt). File *.txt hữu ích khi bạn muốn huấn luyện trên một tập con của thư mục, bỏ qua các ảnh chưa được gán nhãn, hoặc kết hợp ảnh từ nhiều nguồn khác nhau thành một tập dữ liệu phân tách duy nhất.
path: datasets/dota8 # dataset root
train: train.txt # a directory, a list e.g. [images/a, images/b], or a *.txt file
val: val.txt
names:
0: planeCách sử dụng#
Để huấn luyện một model 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 tập dữ liệu sau với Oriented Bounding Box được hỗ trợ:
- DOTA-v1: Phiên bản đầu tiên của tập 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 boxes cho tác vụ object detection.
- DOTA-v1.5: Phiên bản trung gian của tập dữ liệu DOTA, cung cấp các chú thích bổ sung và cải tiến so với DOTA-v1 để nâng cao các tác vụ object detection.
- DOTA-v2: DOTA (A Large-scale Dataset for Object Detection in Aerial Images) phiên bản 2, nhấn mạnh vào việc phát hiện từ góc nhìn trên không và chứa oriented bounding boxes với 1,7 triệu instance và 11.268 hình ảnh.
- DOTA8: Một tập con nhỏ gồm 8 hình ảnh của tập dữ liệu DOTA đầy đủ, phù hợp để kiểm thử quy trình làm việc và các kiểm tra Continuous Integration (CI) đối với việc huấn luyện OBB trong kho lưu trữ
ultralytics. - DOTA8 Multispectral: Một tập con TIFF 8 ảnh, 10 kênh dùng để kiểm thử việc huấn luyện OBB đa phổ trên Ultralytics Platform.
- DOTA128: Một tập con gồm 128 hình ảnh của tập dữ liệu DOTA với tất cả hình ảnh nằm trong thư mục train (được sử dụng cho cả train và val), mang lại sự cân bằng tốt giữa kích thước và tính đa dạng để kiểm thử các model OBB.
Kết hợp tập dữ liệu OBB của riêng bạn#
Đối với những người muốn đưa tập dữ liệu của riêng họ với các Oriented Bounding Box vào, hãy đảm bảo tính tương thích với "định dạng YOLO OBB" đã đề cập ở trên. 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 đường dẫn, 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 tập dữ liệu DOTA sang định dạng YOLO OBB#
Việc chuyển đổi nhãn từ định dạng tập dữ liệu DOTA sang định dạng YOLO OBB có thể đạt được bằng tập lệnh 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 đóng vai trò quan trọng đối với các tập dữ liệu ở định dạng DOTA, đảm bảo sự tương thích với định dạng OBB của Ultralytics YOLO.
Việc xác thực tính tương thích của tập dữ liệu với model 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 tập dữ liệu có cấu trúc phù hợp là yếu tố then chốt để huấn luyện các model object detection hiệu quả với các Oriented Bounding Box.
Câu hỏi thường gặp#
Oriented Bounding Boxes (OBB) là một loại chú thích bounding box trong đó hộp có thể được xoay để căn chỉnh sát hơn với đối tượng đang được phát hiện, thay vì chỉ căn chỉnh theo các 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 căn chỉnh theo các trục hình ảnh. Trong các model Ultralytics YOLO, OBB được thể hiện bằng bốn điểm góc của chúng theo định dạng YOLO OBB. Điều này cho phép phát hiện đối tượng chính xác hơn vì các bounding box có thể xoay để khớp với các đối tượng tốt hơn.
Bạn có thể chuyển đổi nhãn tập dữ liệu DOTA sang định dạng YOLO OBB bằng cách sử dụng hàm
convert_dota_to_yolo_obbtừ Ultralytics. Việc chuyển đổi này đảm bảo tính tương thích với các model Ultralytics YOLO, cho phép bạn tận dụng các tính năng OBB để nâng cao khả năng phát hiện đối tượng. 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")Tập lệnh này sẽ định dạng lại các chú thích DOTA của bạn thành định dạng tương thích với YOLO.
Huấn luyện một model YOLO26 với OBB bao gồm việc đảm bảo tập dữ liệu của bạn ở định dạng YOLO OBB và sau đó sử dụng Ultralytics API để huấn luyện model. Dưới đây là một ví dụ bằng cả Python và CLI:
Ví dụ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 model của bạn tận dụng các chú thích OBB chi tiết để cải thiện accuracy phát hiện.
Hiện tại, Ultralytics hỗ trợ các tập dữ liệu sau cho việc huấn luyện OBB:
- DOTA-v1: Phiên bản đầu tiên của tập 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 boxes cho tác vụ object detection.
- DOTA-v1.5: Phiên bản trung gian của tập dữ liệu DOTA, cung cấp các chú thích bổ sung và cải tiến so với DOTA-v1 để nâng cao các tác vụ object detection.
- DOTA-v2: Tập dữ liệu này bao gồm 1,7 triệu instance với oriented bounding boxes 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 tập dữ liệu DOTA được sử dụng cho việc kiểm thử và các 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), mang lại tính đa dạng cao hơn so với DOTA8 trong khi vẫn dễ quản lý cho việc phát triển và thử nghiệm model OBB ban đầu.
Các tập dữ liệu này được thiết kế riêng cho các kịch bản 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à hình ảnh vệ tinh.
Có, bạn có thể sử dụng tập dữ liệu của riêng mình với oriented bounding boxes để huấn luyện YOLO26. Đảm bảo các chú thích tập dữ liệu của bạn được chuyển đổi sang định dạng YOLO OBB, bao việc xác định các bounding box bằng bốn điểm góc của chúng. Sau đó, bạn có thể tạo một YAML configuration file chỉ định các đường dẫn tập dữ liệu, class 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 tập dữ liệu của bạn, hãy tham khảo phần Supported Datasets.



