Link to this sectionTập dữ liệu DOTA với OBB#
DOTA là một tập dữ liệu chuyên dụng, tập trung vào object detection trong ảnh trên không. Bắt nguồn từ các dòng tập dữ liệu DOTA, nó cung cấp các hình ảnh được chú thích, ghi lại đa dạng các cảnh trên không với Oriented Bounding Boxes (OBB).

Link to this sectionTính năng chính#
Watch: How to Train Ultralytics YOLO26 on the DOTA Dataset for Oriented Bounding Boxes in Google Colab
- Được thu thập từ nhiều cảm biến và nền tảng khác nhau, với kích thước ảnh từ 800 × 800 đến 20.000 × 20.000 pixel.
- Bao gồm hơn 1,7 triệu BBox xoay trên 18 danh mục.
- Hỗ trợ phát hiện đối tượng đa tỷ lệ nhờ sự phân bố rộng của kích thước đối tượng trong mỗi hình ảnh.
- Các thực thể được các chuyên gia chú thích bằng hình tứ giác tùy ý (8 bậc tự do), ghi lại các đối tượng có quy mô, hướng và hình dạng khác nhau.
Link to this sectionCác phiên bản tập dữ liệu#
Link to this sectionDOTA-v1.0#
- Chứa 15 danh mục phổ biến.
- Bao gồm 2.806 hình ảnh với 188.282 thực thể.
- Tỷ lệ phân chia: 1/2 cho training, 1/6 cho validation và 1/3 cho testing.
Link to this sectionDOTA-v1.5#
- Sử dụng các hình ảnh tương tự như DOTA-v1.0.
- Các thực thể rất nhỏ (nhỏ hơn 10 pixel) cũng được chú thích.
- Bổ sung danh mục mới: "container crane".
- Tổng cộng 403.318 thực thể.
- Được phát hành cho DOAI Challenge 2019 về Object Detection trong ảnh trên không.
Link to this sectionDOTA-v2.0#
- Bộ sưu tập từ Google Earth, vệ tinh GF-2 và các hình ảnh trên không khác.
- Chứa 18 danh mục phổ biến.
- Bao gồm 11.268 hình ảnh với con số khổng lồ 1.793.658 thực thể.
- Giới thiệu các danh mục mới: "airport" và "helipad".
- Phân chia hình ảnh:
- Training: 1.830 hình ảnh với 268.627 thực thể.
- Validation: 593 hình ảnh với 81.048 thực thể.
- Test-dev: 2.792 hình ảnh với 353.346 thực thể.
- Test-challenge: 6.053 hình ảnh với 1.090.637 thực thể.
Link to this sectionCấu trúc tập dữ liệu#
DOTA có bố cục cấu trúc được thiết kế riêng cho các bài toán phát hiện đối tượng OBB:
- Images: Một bộ sưu tập khổng lồ các hình ảnh trên không độ phân giải cao ghi lại đa dạng địa hình và cấu trúc.
- Oriented Bounding Boxes: Các chú thích dưới dạng hình chữ nhật xoay bao quanh đối tượng bất kể hướng, lý tưởng để ghi lại các đối tượng như máy bay, tàu thủy và tòa nhà.
Link to this sectionỨng dụng#
DOTA đóng vai trò là chuẩn mực để training và đánh giá các model được thiết kế chuyên biệt cho phân tích ảnh trên không. Với việc bao gồm các chú thích OBB, nó mang lại một thách thức độc đáo, cho phép phát triển các model object detection chuyên dụng phục vụ cho các đặc thù của ảnh trên không. Tập dữ liệu này đặc biệt có giá trị cho các ứng dụng trong viễn thám, giám sát và quan trắc môi trường.
Link to this sectionYAML tập dữ liệu#
Tệp YAML (Yet Another Markup Language) của tập dữ liệu chỉ định đường dẫn gốc của hình ảnh/nhãn, tên lớp và các 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 phổ biến nhất:
Sử dụng tệp YAML khớp với phiên bản bạn đã tải xuống, hoặc tạo một tệp YAML tùy chỉnh nếu bạn đang làm việc với DOTA-v2 hoặc một biến thể khác.
# 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.zipLink to this sectionChia nhỏ hình ảnh DOTA#
Hình ảnh gốc thường vượt quá 10.000 pixel mỗi cạnh, vì vậy việc chia nhỏ (tiling) là cần thiết trước khi cung cấp dữ liệu cho YOLO. Sử dụng công cụ hỗ trợ dưới đây để cắt hình ảnh gốc thành các phần 1024 × 1024 chồng lấn ở nhiều tỷ lệ khác nhau trong khi vẫn đảm bảo sự đồng bộ với các chú thích.
from ultralytics.data.split_dota import split_test, split_trainval
# Split train and val set, with labels.
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,
)
# Split test set, without labels.
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,
)Giữ thư mục đầu ra được sắp xếp theo bố cục YOLO tiêu chuẩn (images/train, labels/train, v.v.) để bạn có thể tham chiếu trực tiếp từ YAML tập dữ liệu.
Link to this sectionCách sử dụng#
Để train một model trên tập 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 của bạn để biết danh sách đầy đủ các đối số có sẵn. Đối với những người muốn thử nghiệm với một tập con nhỏ hơn trước, hãy cân nhắc sử dụng tập dữ liệu DOTA8, chứa 8 hình ảnh để kiểm tra nhanh.
Xin lưu ý rằng tất cả hình ảnh và chú thích liên quan trong tập 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. 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 tập dữ liệu này được đánh giá rất cao!
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)Link to this sectionDữ liệu mẫu và Chú thích#
Việc nhìn qua tập dữ liệu sẽ minh họa cho độ sâu của nó:

- Ví dụ về DOTA: Ảnh chụp này nhấn mạnh sự phức tạp của các cảnh trên không và ý nghĩa của các chú thích Bounding Box định hướng, ghi lại các đối tượng theo hướng tự nhiên của chúng.
Sự phong phú của tập dữ liệu mang lại những thông tin vô giá cho các thách thức phát hiện đối tượng dành riêng cho ảnh trên không. Tập dữ liệu DOTA-v2.0 đã trở nên đặc biệt phổ biến cho các dự án viễn thám và giám sát trên không nhờ các chú thích toàn diện và các danh mục đối tượng đa dạng.
Link to this sectionTrích dẫn và Ghi nhận#
Nếu bạn sử dụng DOTA trong công trình của mình, vui lòng trích dẫn các bài báo 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={2021},
volume={},
number={},
pages={1-1},
doi={10.1109/TPAMI.2021.3117983}
}Đặc biệt cảm ơn đội ngũ đứng sau các tập dữ liệu DOTA vì nỗ lực đáng khen ngợi của họ trong việc quản lý tập dữ liệu này. Để hiểu tường tận về tập dữ liệu và các đặc thù của nó, vui lòng truy cập trang web chính thức của DOTA.
Link to this sectionFAQ#
Link to this sectionTập dữ liệu DOTA là gì và tại sao nó lại quan trọng đối với việc phát hiện đối tượng trong ảnh trên không?#
Tập dữ liệu DOTA là một tập dữ liệu chuyên dụng tập trung vào phát hiện đối tượng trong ảnh trên không. Nó có tính năng Oriented Bounding Boxes (OBB), cung cấp các hình ảnh được chú thích từ nhiều cảnh trên không khác nhau. Sự đa dạng của DOTA về hướng, tỷ lệ và hình dạng đối tượng trong 1,7 triệu chú thích và 18 danh mục làm cho nó trở nên lý tưởng để phát triển và đánh giá các model dành riêng cho phân tích ảnh trên không, như các model được sử dụng trong giám sát, quan trắc môi trường và quản lý thiên tai.
Link to this sectionTập dữ liệu DOTA xử lý các tỷ lệ và hướng khác nhau trong hình ảnh như thế nào?#
DOTA sử dụng Oriented Bounding Boxes (OBB) để chú thích, đượ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 rằng các đối tượng, dù nhỏ hay ở các góc độ khác nhau, đều được ghi lại chính xác. Các hình ảnh đa tỷ lệ của tập dữ liệu, từ 800 × 800 đến 20.000 × 20.000 pixel, cho phép phát hiện hiệu quả cả đối tượng nhỏ và lớn. Cách tiếp cận này đặc biệt có giá trị đối với ảnh trên không, nơi các đối tượng xuất hiện ở nhiều góc độ và tỷ lệ khác nhau.
Link to this sectionLàm cách nào để tôi train một model sử dụng tập dữ liệu DOTA?#
Để train một model trên tập dữ liệu DOTA, bạn có thể sử dụng ví dụ sau với Ultralytics YOLO:
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)Để biết thêm chi tiết về cách chia nhỏ và tiền xử lý hình ảnh DOTA, hãy tham khảo phần chia nhỏ hình ảnh DOTA.
Link to this sectionSự khác biệt giữa DOTA-v1.0, DOTA-v1.5 và DOTA-v2.0 là gì?#
- DOTA-v1.0: Bao gồm 15 danh mục phổ biến trong 2.806 hình ảnh với 188.282 thực thể. Tập dữ liệu được chia thành các tập training, validation và testing.
- DOTA-v1.5: Được xây dựng dựa trên DOTA-v1.0 bằng cách chú thích các thực thể rất nhỏ (dưới 10 pixel) và thêm danh mục mới "container crane", với tổng cộng 403.318 thực thể.
- DOTA-v2.0: Mở rộng hơn nữa với các chú thích từ Google Earth và vệ tinh GF-2, có 11.268 hình ảnh và 1.793.658 thực thể. Nó bao gồm các danh mục mới như "airport" và "helipad."
Để có sự so sánh chi tiết và các thông tin cụ thể khác, hãy xem phần các phiên bản tập dữ liệu.
Link to this sectionLàm thế nào để tôi chuẩn bị hình ảnh DOTA độ phân giải cao cho việc training?#
Hình ảnh DOTA, vốn có thể rất lớn, được chia thành các độ phân giải nhỏ hơn để quản lý việc training dễ dàng hơn. Đây là đoạn mã Python để chia nhỏ hình ảnh:
from ultralytics.data.split_dota import split_test, split_trainval
# split train and val set, with labels.
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,
)
# split test set, without labels.
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,
)Quá trình này giúp cải thiện hiệu quả training và hiệu suất của model. Để biết hướng dẫn chi tiết, hãy truy cập phần chia nhỏ hình ảnh DOTA.