Tổng quan về dataset hộp giới hạn xoay (OBB)#
Huấn luyện model phát hiện đối tượng chính xác bằng hộp giới hạn xoay (OBB) đòi hỏi dataset toàn diện. Hướng dẫn này giải thích các định dạng dataset OBB khác nhau tương thích với model Ultralytics YOLO, đồng thời cung cấp thông tin về cấu trúc, ứng dụng và phương pháp chuyển đổi định dạng.
Các định dạng dataset OBB được hỗ trợ#
Định dạng YOLO OBB#
Định dạng YOLO OBB biểu diễn hộp giới hạn bằng bốn điểm góc, với tọa độ được chuẩn hóa trong khoảng từ 0 đến 1. Định dạng này tuân theo cấu trúc sau:
class_index x1 y1 x2 y2 x3 y3 x4 y4Trong nội bộ, YOLO xử lý loss và đầu ra ở định dạng xywhr, biểu diễn tâm của hộp giới hạn (xy), chiều rộng, chiều cao và góc xoay.

Ví dụ về file nhãn *.txt cho ảnh trên, trong đó có 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 dataset#
Framework Ultralytics sử dụng định dạng file YAML để xác định cấu hình dataset và model phục vụ huấn luyện model OBB. Sau đây là ví dụ về định dạng YAML dùng để khai báo dataset 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 trường trong số train, val và test chấp nhận một thư mục, danh sách thư mục hoặc tệp *.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 với tệp *.txt). Tệp *.txt hữu ích khi huấn luyện trên một tập con của thư mục, bỏ qua ảnh chưa gán nhãn hoặc kết hợp ảnh từ nhiều nguồn vào cùng một split.
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 model bằng các định dạng OBB này:
from ultralytics import YOLO
# Tải model YOLO26n-OBB đã huấn luyện trước
model = YOLO("yolo26n-obb.pt")
# Huấn luyện model trên dataset DOTAv1
results = model.train(data="DOTAv1.yaml", epochs=100, imgsz=1024)Dataset được hỗ trợ#
Hiện tại, các dataset có hộp giới hạn xoay sau đây được hỗ trợ. Hầu hết các dataset này cũng được lưu trữ trên Ultralytics Platform, nơi bạn có thể duyệt xem ảnh và chú thích, xem thống kê dataset và sao chép dataset để huấn luyện trên cloud.
- DOTA-v1: Phiên bản đầu tiên của dataset DOTA, cung cấp một tập hợp toàn diện các ảnh chụp từ trên không có hộp giới hạn xoay để phát hiện đối tượng.
- DOTA-v1.5: Phiên bản trung gian của dataset DOTA, cung cấp thêm chú thích và cải tiến so với DOTA-v1 nhằm nâng cao các tác vụ phát hiện đối tượng.
- DOTA-v2: Phiên bản 2 của DOTA (Dataset quy mô lớn để phát hiện đối tượng trong ảnh chụp từ trên không), tập trung vào phát hiện từ góc nhìn trên không và chứa các hộp giới hạn xoay với 1,7 triệu đối tượng trong 11.268 ảnh.
- DOTA8: Tập con nhỏ gồm 8 ảnh của dataset DOTA đầy đủ, phù hợp để kiểm thử quy trình và kiểm tra Continuous Integration (CI) cho huấn luyện OBB trong repository
ultralytics. - DOTA8 Multispectral: Tập con gồm 8 ảnh TIFF, 10 kênh, để kiểm thử huấn luyện OBB đa phổ trên Ultralytics Platform.
- DOTA128: Tập con gồm 128 ảnh của dataset DOTA, trong đó tất cả ảnh nằm trong thư mục train (dùng cho cả train và val), tạo nên sự cân bằng phù hợp giữa kích thước và độ đa dạng để kiểm thử model OBB.
Tích hợp dataset OBB của riêng bạn#
Nếu muốn đưa vào các dataset hộp giới hạn xoay của riêng mình, hãy đảm bảo chúng tương thích với "định dạng YOLO OBB" nêu trên. Chuyển đổi chú thích sang định dạng bắt buộc này, rồi khai báo đường dẫn, lớp và tên lớp trong file cấu hình YAML tương ứng.
Chuyển đổi định dạng nhãn#
Chuyển đổi định dạng dataset DOTA sang định dạng YOLO OBB#
Có thể chuyển đổi nhãn từ định dạng dataset DOTA sang định dạng YOLO OBB bằng script sau:
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 rất hữu ích cho các dataset ở định dạng DOTA, đảm bảo chúng tương thích với định dạng OBB của Ultralytics YOLO.
Điều quan trọng là phải xác thực tính tương thích của dataset với model và tuân thủ các quy ước định dạng cần thiết. Dataset có cấu trúc phù hợp là yếu tố then chốt để huấn luyện model phát hiện đối tượng hiệu quả bằng hộp giới hạn xoay.
Câu hỏi thường gặp#
Hộp giới hạn xoay (OBB) là một loại chú thích hộp giới hạn có thể xoay để khớp sát hơn với đối tượng cần phát hiện, thay vì chỉ căn chỉnh theo trục. Kiểu hộp này đặc biệt hữu ích với ảnh chụp từ trên không hoặc ảnh vệ tinh, nơi các đối tượng có thể không thẳng hàng với trục ảnh. Trong model Ultralytics YOLO, OBB được biểu diễn bằng bốn điểm góc theo định dạng YOLO OBB. Cách biểu diễn này giúp phát hiện đối tượng chính xác hơn vì hộp giới hạn có thể xoay để khớp tốt hơn với đối tượng.
Bạn có thể chuyển đổi nhãn của dataset DOTA sang định dạng YOLO OBB bằng hàm
convert_dota_to_yolo_obbcủa Ultralytics. Việc chuyển đổi này đảm bảo khả năng 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. Sau đây là 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.
Huấn luyện model YOLO26 với OBB đòi hỏi dataset phải ở định dạng YOLO OBB, sau đó sử dụng API Ultralytics để huấn luyện model. Sau đây là ví dụ bằng cả Python và CLI:
Ví dụfrom ultralytics import YOLO # Tạo model YOLO26n-OBB mới từ đầu model = YOLO("yolo26n-obb.yaml") # Huấn luyện model trên dataset tùy chỉnh results = model.train(data="your_dataset.yaml", epochs=100, imgsz=640)Điều này đảm bảo model tận dụng các chú thích OBB chi tiết để cải thiện độ chính xác phát hiện.
Hiện tại, Ultralytics hỗ trợ các dataset sau để huấn luyện OBB:
- DOTA-v1: Phiên bản đầu tiên của dataset DOTA, cung cấp một tập hợp toàn diện các ảnh chụp từ trên không có hộp giới hạn xoay để phát hiện đối tượng.
- DOTA-v1.5: Phiên bản trung gian của dataset DOTA, cung cấp thêm chú thích và cải tiến so với DOTA-v1 nhằm nâng cao các tác vụ phát hiện đối tượng.
- DOTA-v2: Dataset này bao gồm 1,7 triệu đối tượng được gán nhãn bằng hộp giới hạn xoay và 11.268 ảnh, chủ yếu tập trung vào phát hiện đối tượng trên không.
- DOTA8: Tập con nhỏ hơn gồm 8 ảnh của dataset DOTA, được dùng để kiểm thử và kiểm tra tích hợp liên tục (CI).
- DOTA128: Tập con gồm 128 ảnh, tất cả đều nằm trong thư mục train (dùng cho cả train và val), đa dạng hơn DOTA8 nhưng vẫn dễ quản lý để phát triển model OBB và thử nghiệm ban đầu.
Các dataset này được thiết kế cho những trường hợp mà OBB mang lại lợi thế đáng kể, chẳng hạn như phân tích ảnh trên không và ảnh vệ tinh.
Có, bạn có thể dùng dataset riêng với hộp giới hạn xoay để huấn luyện YOLO26. Hãy đảm bảo các chú thích của dataset được chuyển đổi sang định dạng YOLO OBB, trong đó hộp giới hạn được xác định bằng bốn điểm góc. Sau đó, bạn có thể tạo file cấu hình YAML để chỉ định đường dẫn dataset, các lớp và những thông tin cần thiết khác. Để biết thêm thông tin về cách tạo và cấu hình dataset, hãy tham khảo mục Dataset được hỗ trợ.



