Dataset DOTA với OBB#
Dataset DOTA là benchmark quy mô lớn cho phát hiện đối tượng trong ảnh trên không, được phát hành qua ba phiên bản (v1.0, v1.5, v2.0) với tối đa 1,7 triệu chú thích hộp giới hạn xoay (OBB) trên 18 danh mục, thu thập từ nhiều loại cảm biến và nền tảng trên không.
Khám phá các dataset DOTA v1.5 và DOTA v1.0 được lưu trữ chính thức trên Ultralytics Platform để xem trước các chú thích xoay, kiểm tra thống kê và sao chép dataset để huấn luyện.

Tính năng chính#
Xem: Cách huấn luyện Ultralytics YOLO trên dataset DOTA cho bounding box định hướng trong Google Colab
- Tập hợp dữ liệu từ nhiều loại cảm biến và nền tảng, với kích thước ảnh từ 800 × 800 đến 20.000 × 20.000 pixel.
- Có hơn 1,7 triệu hộp giới hạn xoay thuộc 18 danh mục.
- Hỗ trợ phát hiện đối tượng đa tỉ lệ nhờ phạm vi kích thước đối tượng rộng trong mỗi ảnh.
- Các chuyên gia chú thích đối tượng bằng tứ giác tùy ý (8 bậc tự do), thể hiện đối tượng ở nhiều tỉ lệ, hướng và hình dạng khác nhau.
Các phiên bản dataset#
DOTA-v1.0#
- Bao gồm 15 danh mục phổ biến.
- Gồm 2.806 ảnh với 188.282 đối tượng.
- Tỉ lệ chia tập: 1/2 cho huấn luyện (1.411 ảnh), 1/6 cho xác thực (458 ảnh) và 1/3 cho kiểm thử (937 ảnh).
DOTA-v1.5#
- Sử dụng cùng bộ ảnh như DOTA-v1.0.
- Các đối tượng rất nhỏ (dưới 10 pixel) cũng được chú thích.
- Bổ sung một danh mục mới: "cẩu container".
- Tổng cộng 403.318 đối tượng.
- Được phát hành cho Thử thách DOAI 2019 về phát hiện đối tượng trong ảnh trên không.
DOTA-v2.0#
- Tập hợp ảnh từ Google Earth, vệ tinh GF-2 và các ảnh trên không khác.
- Bao gồm 18 danh mục phổ biến.
- Gồm 11.268 ảnh với con số ấn tượng 1.793.658 đối tượng.
- Các danh mục mới được bổ sung: "sân bay" và "bãi đáp trực thăng".
- Các tập ảnh:
- Huấn luyện: 1.830 ảnh với 268.627 đối tượng.
- Xác thực: 593 ảnh với 81.048 đối tượng.
- Test-dev: 2.792 ảnh với 353.346 đối tượng.
- Test-challenge: 6.053 ảnh với 1.090.637 đối tượng.
Cấu trúc dataset#
DOTA có cấu trúc dữ liệu phù hợp với các bài toán phát hiện đối tượng OBB:
- Ảnh: Tập hợp lớn các ảnh hàng không độ phân giải cao, ghi lại nhiều địa hình và công trình khác nhau.
- Hộp giới hạn định hướng: Các chú giải dưới dạng hình chữ nhật xoay bao quanh đối tượng bất kể hướng của chúng, lý tưởng để ghi nhận các đối tượng như máy bay, tàu thuyền và tòa nhà.
Ứng dụng#
DOTA đóng vai trò là bộ chuẩn để huấn luyện và đánh giá các model được thiết kế chuyên biệt cho phân tích ảnh hàng không. Với chú giải OBB, bộ dữ liệu này tạo ra một thách thức độc đáo, cho phép phát triển các model phát hiện đối tượng chuyên biệt đáp ứng những đặc điểm riêng của ảnh hàng không. Bộ dữ liệu này đặc biệt hữu ích cho các ứng dụng viễn thám, giám sát và theo dõi môi trường.
YAML của dataset#
Tệp YAML của bộ dữ liệu chỉ định các thư mục gốc chứa ảnh/nhãn, tên lớp và siêu dữ liệu quan trọng khác. Ultralytics duy trì các tệp YAML chính thức cho hai bản phát hành được sử dụng phổ biến nhất:
Sử dụng YAML tương ứng với bản phát hành bạn đã tải xuống, hoặc tự tạo YAML nếu bạn đang làm việc với DOTA-v2 hay một biến thể khác. Cả hai bản phát hành sẽ tự động tải xuống (2 GB) từ tài nguyên GitHub của Ultralytics trong lần đầu tiên bạn huấn luyện.
# Ultralytics 🚀 AGPL-3.0 License - https://ultralytics.com/license
# DOTA 1.0 dataset https://captain-whu.github.io/DOTA/index.html for object detection in aerial images by Wuhan University
# Documentation: https://docs.ultralytics.com/datasets/obb/dota-v2
# Example usage: yolo train model=yolov8n-obb.pt data=DOTAv1.yaml
# parent
# ├── ultralytics
# └── datasets
# └── DOTAv1 ← downloads here (2 GB)
# 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: DOTAv1 # dataset root dir
train: images/train # train images (relative to 'path') 1411 images
val: images/val # val images (relative to 'path') 458 images
test: images/test # test images (optional) 937 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/DOTAv1.zipChia ảnh DOTA#
Ảnh gốc thường có kích thước mỗi cạnh vượt quá 10.000 pixel, vì vậy nên chia ảnh thành các ô trước khi đưa dữ liệu vào YOLO. Sử dụng hàm trợ giúp bên dưới để cắt ảnh nguồn thành các crop chồng lấp 1024 × 1024 ở nhiều tỷ lệ, đồng thời giữ cho chú giải luôn đồng bộ.
from ultralytics.data.split_dota import split_test, split_trainval
# Chia tập train và val, kèm nhãn.
split_trainval(
data_root="path/to/DOTAv1.0/",
save_dir="path/to/DOTAv1.0-split/",
rates=[0.5, 1.0, 1.5], # multiscale
gap=500,
)
# Chia tập test, không kèm nhãn.
split_test(
data_root="path/to/DOTAv1.0/",
save_dir="path/to/DOTAv1.0-split/",
rates=[0.5, 1.0, 1.5], # multiscale
gap=500,
)Sắp xếp thư mục đầu ra theo cấu trúc YOLO tiêu chuẩn (images/train, labels/train, v.v.) để bạn có thể tham chiếu trực tiếp đến thư mục đó trong YAML của bộ dữ liệu.
Cách sử dụng#
Để huấn luyện model trên bộ dữ liệu DOTA v1, bạn có thể sử dụng các đoạn mã sau. Luôn tham khảo tài liệu về model để xem danh sách đầy đủ các tham số hiện có. Nếu muốn thử nghiệm trước với một tập con nhỏ hơn, hãy cân nhắc sử dụng bộ dữ liệu DOTA8, chỉ gồm 8 ảnh để kiểm thử nhanh và có thể duyệt trên Ultralytics Platform.
Xin lưu ý rằng tất cả ảnh và chú giải liên quan trong bộ dữ liệu DOTAv1 có thể được sử dụng cho mục đích học thuật, nhưng nghiêm cấm sử dụng cho mục đích thương mại. Chúng tôi rất cảm kích sự thấu hiểu và tôn trọng của bạn đối với mong muốn của những người tạo ra bộ dữ liệu!
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)Dữ liệu mẫu và annotation#
Quan sát bộ dữ liệu sẽ cho thấy độ phong phú của bộ dữ liệu:

- Ví dụ về DOTA: Ảnh chụp này cho thấy mức độ phức tạp của các cảnh hàng không và tầm quan trọng của chú giải hộp giới hạn định hướng, ghi nhận các đối tượng theo hướng tự nhiên của chúng.
Sự phong phú của bộ dữ liệu mang lại những thông tin chuyên sâu vô giá về các thách thức phát hiện đối tượng chỉ có trong ảnh hàng không. Bộ dữ liệu DOTA-v2.0 trở nên đặc biệt phổ biến trong các dự án viễn thám và giám sát hàng không nhờ chú giải toàn diện và các danh mục đối tượng đa dạng.
Trích dẫn và lời cảm ơn#
Nếu sử dụng DOTA trong công trình của mình, vui lòng trích dẫn các bài nghiên cứu liên quan:
@article{9560031,
author={Ding, Jian and Xue, Nan and Xia, Gui-Song and Bai, Xiang and Yang, Wen and Yang, Michael and Belongie, Serge and Luo, Jiebo and Datcu, Mihai and Pelillo, Marcello and Zhang, Liangpei},
journal={IEEE Transactions on Pattern Analysis and Machine Intelligence},
title={Object Detection in Aerial Images: A Large-Scale Benchmark and Challenges},
year={2022},
volume={44},
number={11},
pages={7778-7796},
doi={10.1109/TPAMI.2021.3117983}
}Xin gửi lời cảm ơn đặc biệt đến nhóm phát triển các dataset DOTA vì những nỗ lực đáng ghi nhận trong việc tuyển chọn dataset này. Để hiểu đầy đủ về dataset và các đặc điểm của dataset, vui lòng truy cập trang web chính thức của DOTA.
Câu hỏi thường gặp#
Bộ dữ liệu DOTA là bộ dữ liệu chuyên biệt tập trung vào phát hiện đối tượng trong ảnh hàng không. Bộ dữ liệu này có hộp giới hạn định hướng (OBB), cung cấp ảnh được chú giải từ nhiều cảnh hàng không khác nhau. Sự đa dạng về hướng, tỷ lệ và hình dạng đối tượng trong 1,7 triệu chú giải và 18 danh mục khiến DOTA trở nên lý tưởng để phát triển và đánh giá các model được thiết kế cho phân tích ảnh hàng không, chẳng hạn như các model dùng trong giám sát, theo dõi môi trường và quản lý thảm họa.
DOTA sử dụng hộp giới hạn định hướng (OBB) để chú giải; hộp được biểu diễn bằng các hình chữ nhật xoay bao quanh đối tượng bất kể hướng của chúng. Phương pháp này đảm bảo các đối tượng, dù nhỏ hay ở các góc khác nhau, đều được ghi nhận chính xác. Ảnh đa tỷ lệ của bộ dữ liệu, có kích thước từ 800 × 800 đến 20.000 × 20.000 pixel, cũng cho phép phát hiện hiệu quả cả đối tượng nhỏ lẫn lớn. Cách tiếp cận này đặc biệt hữu ích với ảnh hàng không, nơi các đối tượng xuất hiện ở nhiều góc và tỷ lệ khác nhau.
Để huấn luyện model trên bộ dữ liệu DOTA, bạn có thể dùng ví dụ sau với Ultralytics YOLO:
Ví dụ huấn luyệnfrom 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)Để biết thêm chi tiết về cách chia và tiền xử lý ảnh DOTA, hãy tham khảo phần chia ảnh DOTA.
- DOTA-v1.0: Bao gồm 15 danh mục phổ biến trong 2.806 ảnh với 188.282 đối tượng. Bộ dữ liệu được chia thành các tập huấn luyện, xác thực và kiểm thử.
- DOTA-v1.5: Phát triển dựa trên DOTA-v1.0 bằng cách chú giải các đối tượng rất nhỏ (dưới 10 pixel) và bổ sung một danh mục mới, "cần cẩu container", nâng tổng số lên 403.318 đối tượng.
- DOTA-v2.0: Mở rộng thêm với chú giải từ Google Earth và vệ tinh GF-2, gồm 11.268 ảnh và 1.793.658 đối tượng. Bộ dữ liệu bổ sung các danh mục mới như "sân bay" và "bãi đáp trực thăng".
Để xem so sánh chi tiết và thông tin cụ thể khác, hãy xem phần phiên bản bộ dữ liệu.
Ảnh DOTA có thể rất lớn nên được chia thành các ảnh có độ phân giải nhỏ hơn để thuận tiện cho việc huấn luyện. Dưới đây là đoạn mã Python để chia ảnh:
Ví dụfrom ultralytics.data.split_dota import split_test, split_trainval # chia tập train và val, kèm nhãn. split_trainval( data_root="path/to/DOTAv1.0/", save_dir="path/to/DOTAv1.0-split/", rates=[0.5, 1.0, 1.5], # multiscale gap=500, ) # chia tập test, không kèm nhãn. split_test( data_root="path/to/DOTAv1.0/", save_dir="path/to/DOTAv1.0-split/", rates=[0.5, 1.0, 1.5], # multiscale gap=500, )Quy trình này giúp cải thiện hiệu quả huấn luyện và hiệu năng model. Để xem hướng dẫn chi tiết, hãy truy cập phần chia ảnh DOTA.



