Bộ dữ liệu DOTA với OBB

DOTA là một bộ dữ liệu chuyên dụng, tập trung vào object detection trong ảnh hàng không. Bắt nguồn từ các dòng bộ dữ liệu DOTA, nó cung cấp các hình ảnh được gán nhãn ghi lại nhiều cảnh hàng không đa dạng với Oriented Bounding Boxes (OBB).

Các lớp đối tượng bộ dữ liệu DOTA cho phát hiện hàng không

Các tính năng chính



Watch: How to Train Ultralytics YOLO26 on the DOTA Dataset for Oriented Bounding Boxes in Google Colab
  • Bộ sưu tập từ nhiều cảm biến và nền tảng khác nhau, với kích thước hình ảnh từ 800 × 800 đến 20.000 × 20.000 pixel.
  • Bao gồm hơn 1,7 triệu bounding box định hướng trên 18 danh mục.
  • Hỗ trợ phát hiện đối tượng đa quy mô nhờ sự phân bổ rộng rãi các kích thước đối tượng trong mỗi hình ảnh.
  • Các thực thể được các chuyên gia gán nhãn bằng các tứ giác tùy ý (8 d.o.f.), ghi lại các đối tượng với các quy mô, hướng và hình dạng khác nhau.

Các phiên bản bộ dữ liệu

DOTA-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 huấn luyện, 1/6 cho kiểm định, và 1/3 cho thử nghiệm.

DOTA-v1.5

  • Kết hợp các hình ảnh tương tự như DOTA-v1.0.
  • Các thực thể rất nhỏ (dưới 10 pixel) cũng được gán nhãn.
  • 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 on Object Detection in Aerial Images.

DOTA-v2.0

  • Bộ sưu tập từ Google Earth, vệ tinh GF-2, và các hình ảnh hàng 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ố ấn tượng 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:
    • Huấn luyện: 1.830 hình ảnh với 268.627 thực thể.
    • Kiểm định: 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ể.

Cấu trúc tập dữ liệu

DOTA thể hiện bố cục có cấu trúc được thiết kế cho các thách thức phát hiện đối tượng OBB:

  • Images: Một bộ sưu tập khổng lồ các hình ảnh hàng không độ phân giải cao ghi lại các địa hình và cấu trúc đa dạng.
  • Oriented Bounding Boxes: Các nhãn 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 lại các đối tượng như máy bay, tàu thủy và tòa nhà.

Ứng dụng

DOTA đóng vai trò là chuẩn đo lường cho việc huấn luyện và đánh giá các model được thiết kế đặc biệt cho phân tích hình ảnh hàng không. Với việc bao gồm các nhãn 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 đáp ứng các đặc thù của hình ảnh hàng không. Bộ dữ liệu đặc biệt có giá trị cho các ứng dụng trong viễn thám, giám sát và giám sát môi trường.

Dataset YAML

Một tệp YAML (Yet Another Markup Language) của bộ dữ liệu chỉ định các thư mục 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 được sử dụng 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 tệp YAML tùy chỉnh nếu bạn đang làm việc với DOTA-v2 hoặc một dẫn xuất khác.

DOTAv1.yaml
# 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
#     └── dota1 ← 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.zip

Phân chia hình ảnh DOTA

Các hình ảnh thô thường vượt quá 10.000 pixel mỗi cạnh, vì vậy cần phải chia nhỏ (tiling) trước khi cung cấp dữ liệu cho YOLO. Sử dụng công cụ hỗ trợ bên dưới để cắt hình ảnh nguồn thành các khung cắt 1024 × 1024 chồng lấp ở nhiều quy mô trong khi vẫn giữ đồng bộ các nhãn.

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,
)
Mẹo

Giữ thư mục đầu ra được tổ chức 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ừ tệp YAML của bộ dữ liệu.

Cách sử dụng

Để huấn luyện một 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 của model để có danh sách đầy đủ các đối số khả dụng. Đối với những người muốn thử nghiệm trước với một tập hợp con nhỏ hơn, hãy cân nhắc sử dụng bộ dữ liệu DOTA8, chứa chỉ 8 hình ảnh để kiểm tra nhanh.

Cảnh báo

Vui lòng lưu ý rằng tất cả các hình ảnh và các nhãn đi kèm 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 thương mại. Sự hiểu biết 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 rất được trân trọng!

Ví dụ huấn luyện
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)

Dữ liệu mẫu và Chú thích

Việc xem qua bộ dữ liệu minh họa độ sâu của nó:

Bộ dữ liệu DOTA với các nhãn bounding box định hướng

  • Ví dụ về DOTA: Ảnh chụp này nhấn mạnh sự phức tạp của các cảnh hàng không và tầm quan trọng của các nhãn 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 bộ dữ liệu mang lại những thông tin chi tiết vô giá về các thách thức phát hiện đối tượng dành riêng cho hình ảnh hàng không. Bộ 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 hàng không nhờ các nhãn toàn diện và danh mục đối tượng đa dạng.

Trích dẫn và Ghi nhận

Nếu bạn sử dụng DOTA trong công việc của mình, vui lòng trích dẫn các bài báo nghiên cứu liên quan:

Trích dẫn
@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}
}

Một lời cảm ơn đặc biệt gửi đến đội ngũ đứng sau các bộ dữ liệu DOTA vì nỗ lực đáng khen ngợi của họ trong việc quản lý bộ dữ liệu này. Để hiểu rõ hơn về bộ dữ liệu và các đặc điểm tinh tế của nó, vui lòng truy cập trang web chính thức của DOTA.

Câu hỏi thường gặp (FAQ)

Bộ dữ liệu DOTA là gì và tại sao nó lại quan trọng đối với phát hiện đối tượng trong hình ảnh hàng không?

Bộ dữ liệu DOTA là một bộ dữ liệu chuyên dụng tập trung vào phát hiện đối tượng trong hình ảnh hàng không. Nó có tính năng Oriented Bounding Boxes (OBB), cung cấp các hình ảnh được gán nhãn từ nhiều cảnh hàng không đa dạng. Sự đa dạng của DOTA về hướng, quy mô và hình dạng đối tượng trên 1,7 triệu nhãn 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 được thiết kế cho phân tích hình ảnh hàng không, chẳng hạn như những model được sử dụng trong giám sát, giám sát môi trường và quản lý thiên tai.

Bộ dữ liệu DOTA xử lý các quy mô và hướng khác nhau trong hình ảnh như thế nào?

DOTA sử dụng Oriented Bounding Boxes (OBB) để gán nhãn, được biểu diễn bởi các hình chữ nhật xoay bao quanh các đố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. Hình ảnh đa quy mô của bộ 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 hình ảnh hàng không nơi các đối tượng xuất hiện ở nhiều góc độ và quy mô khác nhau.

Làm thế nào tôi có thể huấn luyện một model bằng cách sử dụng bộ dữ liệu DOTA?

Để huấn luyện một model trên bộ dữ liệu DOTA, bạn có thể sử dụng ví dụ sau với Ultralytics YOLO:

Ví dụ huấn luyện
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.

Sự 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 trên 2.806 hình ảnh với 188.282 thực thể. Bộ dữ liệu được chia thành các tập huấn luyện, kiểm định và thử nghiệm.
  • DOTA-v1.5: Xây dựng dựa trên DOTA-v1.0 bằng cách gán nhãn các thực thể rất nhỏ (dưới 10 pixel) và thêm danh mục mới, "container crane," tổng cộng 403.318 thực thể.
  • DOTA-v2.0: Mở rộng hơn nữa với các nhãn từ Google Earth và vệ tinh GF-2, bao gồm 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ể bổ sung, hãy kiểm tra phần phiên bản bộ dữ liệu.

Làm thế nào tôi có thể chuẩn bị các hình ảnh DOTA độ phân giải cao để huấn luyện?

Hình ảnh DOTA, có thể rất lớn, được chia nhỏ thành các độ phân giải nhỏ hơn để có thể quản lý được khi huấn luyện. Đây là một đoạn mã Python để chia nhỏ hình ảnh:

Ví dụ
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,
)

Quy trình này tạo điều kiện cho hiệu suất huấn luyện và hiệu suất của model tốt hơn. Để biết hướng dẫn chi tiết, hãy truy cập phần chia nhỏ hình ảnh DOTA.

Bình luận