Ultralytics YOLO27:

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

Bộ dữ liệu DOTA là một benchmark quy mô lớn cho bài toán 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 định hướng (OBB) thuộc 18 danh mục, được thu thập từ nhiều cảm biến và nền tảng trên không khác nhau.

Khám phá các bộ dữ liệu DOTA v1.5DOTA v1.0 được lưu trữ chính thức trên Ultralytics Platform để xem trước các chú thích định hướng, kiểm tra thống kê và sao chép chúng để huấn luyện.

Các lớp đối tượng của bộ dữ liệu DOTA dùng cho phát hiện trên không

Tính năng chính#



Watch: How to Train Ultralytics YOLO 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.
  • Có hơn 1,7 triệu hộp giới hạn định hướng 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 instance được chuyên gia chú thích bằng các 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 bộ dữ liệu#

DOTA-v1.0#

  • Bao gồm 15 danh mục phổ biến.
  • Gồm 2.806 ảnh với 188.282 instance.
  • Tỷ lệ phân chia: 1/2 cho tập huấn luyện (1.411 ảnh), 1/6 cho tập validation (458 ảnh) và 1/3 cho tập kiểm thử (937 ảnh).

DOTA-v1.5#

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 tổng cộng 1.793.658 instance.
  • Các danh mục mới được giới thiệu: "sân bay" và "bãi đáp trực thăng".
  • Phân chia ảnh:
    • Huấn luyện: 1.830 ảnh với 268.627 instance.
    • Validation: 593 ảnh với 81.048 instance.
    • Test-dev: 2.792 ảnh với 353.346 instance.
    • Test-challenge: 6.053 ảnh với 1.090.637 instance.

Cấu trúc bộ dữ liệu#

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

  • Ảnh: Bộ sưu tập lớn các ảnh trên không có độ 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ú thích ở dạng hình chữ nhật xoay, bao quanh đối tượng bất kể hướng của chúng, phù hợp để ghi nhận các đối tượng như máy bay, tàu và tòa nhà.

Ứng dụng#

DOTA là benchmark để huấn luyện và đánh giá các model được thiết kế chuyên biệt cho việc phân tích ảnh trên không. Với các chú thích OBB, bộ dữ liệu tạo ra một thử thách độc đáo, cho phép phát triển các model phát hiện đối tượng chuyên dụng, đáp ứng các đặc điểm riêng của ảnh trên không. Bộ dữ liệu đặc biệt có giá trị đối với các ứng dụng trong viễn thám, giám sát và theo dõi môi trường.

YAML của bộ dữ liệu#

Tệp YAML của bộ dữ liệu chỉ định thư mục gốc của ảnh/nhãn, tên lớp và các metadata 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 khớp với bản phát hành bạn đã tải xuống hoặc tự tạo YAML nếu bạn làm việc với DOTA-v2 hay một biến thể khác. Cả hai bản phát hành đều được tự động tải xuống (2 GB) từ các asset trên Ultralytics GitHub trong lần đầu tiên bạn huấn luyện.

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
#     └── 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.zip

Phân chia ảnh DOTA#

Ảnh gốc thường có kích thước mỗi chiều vượt quá 10.000 pixel, vì vậy cần chia ô trước khi đưa dữ liệu vào YOLO. Sử dụng helper bên dưới để cắt ảnh nguồn thành các crop 1024 × 1024 chồng lấp ở nhiều tỷ lệ, đồng thời giữ cho các chú thích được đồng bộ.

Phân chia ả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 layout YOLO tiêu chuẩn (images/train, labels/train, v.v.) để bạn có thể tham chiếu trực tiếp từ 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 code 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.

Cảnh báo

Xin lưu ý rằng tất cả ảnh và chú thích đ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 bị cấm sử dụng cho mục đích thương mại. Chúng tôi trân trọng 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!

Ví dụ huấn luyện
from ultralytics import YOLO

# Load a pretrained YOLO26n-OBB model
model = YOLO("yolo26n-obb.pt")

# Train the model on the DOTAv1 dataset
results = model.train(data="DOTAv1.yaml", epochs=100, imgsz=1024)

Dữ liệu mẫu và Annotation#

Quan sát sơ bộ bộ dữ liệu cho thấy chiều sâu của nó:

Bộ dữ liệu DOTA với các chú thích hộp giới hạn định hướng

  • Ví dụ về DOTA: Ảnh chụp này nhấn mạnh độ phức tạp của các cảnh trên không và tầm quan trọng của các chú thích Hộp giới hạn định hướng, ghi nhận đối tượng theo hướng tự nhiên của chúng.

Độ phong phú của bộ dữ liệu cung cấp những thông tin có giá trị về các thách thức phát hiện đối tượng chỉ xuất hiện trong ảnh trên 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 trên không nhờ các chú thích toàn diện và nhiều danh mục đối tượng đa dạng.

Trích dẫn và ghi nhận đóng góp#

Nếu sử dụng DOTA trong công việc của bạn, vui lòng trích dẫn các bài 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={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 đội ngũ đứng sau các tập dữ liệu DOTA vì những nỗ lực đáng ghi nhận trong việc xây dựng tập dữ liệu này. Để tìm hiểu toàn diện về tập dữ liệu và các đặc điểm của nó, vui lòng truy cập trang web chính thức của DOTA.

FAQ#

  • 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 ảnh trên không. Bộ dữ liệu có các Hộp giới hạn định hướng (OBB), cung cấp ảnh đã chú thích từ nhiều cảnh trên 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ú thích thuộc 18 danh mục khiến DOTA trở nên lý tưởng cho việc phát triển và đánh giá các model được thiết kế cho phân tích ảnh trên 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ú 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 các đối tượng, dù nhỏ hay nằm ở các góc khác nhau, đều được ghi nhận chính xác. Cá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ỏ 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.

  • Để 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
    
    # Load a pretrained YOLO26n-OBB model
    model = YOLO("yolo26n-obb.pt")
    
    # 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 phân chia và tiền xử lý ảnh DOTA, hãy tham khảo phần 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 instance. Bộ dữ liệu được chia thành các tập huấn luyện, validation và kiểm thử.
    • DOTA-v1.5: Mở rộng từ DOTA-v1.0 bằng cách chú thích các instance rất nhỏ (dưới 10 pixel) và thêm một danh mục mới, "cẩu container", với tổng cộng 403.318 instance.
    • DOTA-v2.0: Tiếp tục mở rộng với các chú thích từ Google Earth và vệ tinh GF-2, gồm 11.268 ảnh và 1.793.658 instance. Phiên bản này có thêm 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à các thông tin bổ sung, hãy tham khảo phần các 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. Đây là một đoạn mã Python để phân chia ả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 giúp cải thiện hiệu quả huấn luyện và hiệu năng của model. Để xem hướng dẫn chi tiết, hãy truy cập phần phân chia ảnh DOTA.

Bình luận