OBB를 포함한 DOTA 데이터셋
DOTA는 항공 이미지의 객체 탐지에 중점을 둔 특수 데이터셋입니다. DOTA 시리즈 데이터셋에서 유래했으며, 회전된 경계 상자(OBB)로 주석이 달린 다양한 항공 장면 이미지를 제공합니다.

주요 특징
Watch: How to Train Ultralytics YOLO26 on the DOTA Dataset for Oriented Bounding Boxes in Google Colab
- 다양한 센서와 플랫폼에서 수집되었으며, 이미지 크기는 800 × 800에서 20,000 × 20,000 픽셀까지 다양합니다.
- 18개 카테고리에 걸쳐 170만 개 이상의 회전된 경계 상자가 포함되어 있습니다.
- 이미지당 다양한 객체 크기 덕분에 다중 스케일 객체 탐지를 포함합니다.
- 각 인스턴스는 전문가가 임의의(8 자유도) 사각형으로 주석을 달아 다양한 스케일, 방향 및 형태의 객체를 포착합니다.
데이터셋 버전
DOTA-v1.0
- 15개의 공통 카테고리를 포함합니다.
- 2,806개의 이미지와 188,282개의 인스턴스로 구성됩니다.
- 분할 비율: 학습용 1/2, 검증용 1/6, 테스트용 1/3입니다.
DOTA-v1.5
- DOTA-v1.0과 동일한 이미지를 포함합니다.
- 매우 작은 인스턴스(10 픽셀 미만)도 주석이 달려 있습니다.
- 새로운 카테고리 "container crane"이 추가되었습니다.
- 총 403,318개의 인스턴스입니다.
- DOAI Challenge 2019 on Object Detection in Aerial Images를 위해 출시되었습니다.
DOTA-v2.0
- Google Earth, GF-2 위성 및 기타 항공 이미지에서 수집되었습니다.
- 18개의 공통 카테고리를 포함합니다.
- 11,268개의 이미지와 무려 1,793,658개의 인스턴스로 구성됩니다.
- 새로운 카테고리인 "airport"와 "helipad"가 도입되었습니다.
- 이미지 분할:
- 학습: 1,830개의 이미지와 268,627개의 인스턴스.
- 검증: 593개의 이미지와 81,048개의 인스턴스.
- 테스트-dev: 2,792개의 이미지와 353,346개의 인스턴스.
- 테스트-챌린지: 6,053개의 이미지와 1,090,637개의 인스턴스.
데이터셋 구조
DOTA는 OBB 객체 탐지 과제에 최적화된 구조적 레이아웃을 제공합니다:
- 이미지: 다양한 지형과 구조물을 포착하는 방대한 고해상도 항공 이미지 모음입니다.
- 회전된 경계 상자(Oriented Bounding Boxes): 비행기, 선박, 건물과 같은 객체를 방향에 상관없이 포착하는 회전된 사각형 형태의 주석입니다.
응용 분야
DOTA는 항공 이미지 분석을 위해 특별히 설계된 모델을 학습하고 평가하기 위한 벤치마크 역할을 합니다. OBB 주석을 포함하여, 항공 이미지의 미묘한 차이를 처리하는 전문화된 객체 탐지 모델 개발을 가능하게 하는 독특한 과제를 제공합니다. 이 데이터셋은 원격 탐사, 감시 및 환경 모니터링 애플리케이션에 특히 유용합니다.
데이터셋 YAML
데이터셋 YAML(Yet Another Markup Language) 파일은 이미지/레이블 경로, 클래스 이름 및 기타 중요한 메타데이터를 지정합니다. Ultralytics는 가장 널리 사용되는 두 가지 릴리스에 대한 공식 YAML 파일을 유지 관리합니다:
다운로드한 릴리스에 맞는 YAML을 사용하거나, DOTA-v2 또는 기타 파생 버전을 사용하는 경우 사용자 정의 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.zipDOTA 이미지 분할
원시 이미지는 일반적으로 한 변의 길이가 10,000 픽셀을 초과하므로, YOLO에 데이터를 입력하기 전에 타일링이 필요합니다. 아래의 도구를 사용하여 주석을 동기화한 상태에서 원본 이미지를 다중 스케일로 겹치는 1024 × 1024 크기로 조각내십시오.
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,
)출력 디렉토리를 표준 YOLO 레이아웃(images/train, labels/train 등)으로 구성하여 데이터셋 YAML에서 직접 참조할 수 있도록 하십시오.
사용법
DOTA v1 데이터셋으로 모델을 학습하려면 다음 코드 스니펫을 사용할 수 있습니다. 사용 가능한 인수 목록은 항상 모델의 문서를 참조하십시오. 먼저 더 작은 하위 집합으로 실험하려는 경우, 빠른 테스트를 위해 8개의 이미지만 포함하는 DOTA8 데이터셋 사용을 고려하십시오.
DOTAv1 데이터셋의 모든 이미지와 관련 주석은 학술적 목적으로 사용할 수 있지만 상업적 사용은 금지되어 있습니다. 데이터셋 제작자의 의도를 이해하고 존중해 주셔서 대단히 감사합니다!
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)샘플 데이터 및 주석
데이터셋을 살펴보면 그 깊이를 확인할 수 있습니다:

- DOTA 예시: 이 스냅샷은 항공 장면의 복잡성과 객체의 자연스러운 방향을 포착하는 회전된 경계 상자 주석의 중요성을 강조합니다.
데이터셋의 풍부함은 항공 이미지에 특화된 객체 탐지 과제에 대한 귀중한 통찰력을 제공합니다. DOTA-v2.0 데이터셋은 포괄적인 주석과 다양한 객체 카테고리로 인해 원격 탐사 및 항공 감시 프로젝트에서 특히 인기가 있습니다.
인용 및 감사의 글
업무에 DOTA를 사용하는 경우 관련 연구 논문을 인용해 주십시오:
@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}
}이 데이터셋을 큐레이팅하기 위해 기울인 노고에 대해 DOTA 데이터셋 팀에 특별한 감사를 표합니다. 데이터셋과 그 세부 사항을 완전히 이해하려면 공식 DOTA 웹사이트를 방문하십시오.
FAQ
DOTA 데이터셋이란 무엇이며 항공 이미지의 객체 탐지에 왜 중요한가요?
DOTA 데이터셋은 항공 이미지의 객체 탐지에 중점을 둔 특수 데이터셋입니다. 회전된 경계 상자(OBB)를 특징으로 하며, 다양한 항공 장면에서 주석이 달린 이미지를 제공합니다. 170만 개의 주석과 18개 카테고리에 걸쳐 있는 객체의 방향, 스케일 및 모양의 다양성은 감시, 환경 모니터링, 재난 관리 등에 사용되는 항공 이미지 분석용 모델을 개발하고 평가하는 데 이상적입니다.
DOTA 데이터셋은 이미지의 다양한 스케일과 방향을 어떻게 처리하나요?
DOTA는 주석을 위해 회전된 경계 상자(OBB)를 활용하며, 이는 방향에 관계없이 객체를 감싸는 회전된 사각형으로 표현됩니다. 이 방식은 작거나 다른 각도에 있는 객체도 정확하게 포착할 수 있도록 합니다. 800 × 800에서 20,000 × 20,000 픽셀에 이르는 데이터셋의 다중 스케일 이미지는 작은 객체와 큰 객체를 모두 효과적으로 탐지할 수 있게 합니다. 이 접근 방식은 객체가 다양한 각도와 스케일로 나타나는 항공 이미지에 특히 유용합니다.
DOTA 데이터셋을 사용하여 모델을 학습하려면 어떻게 해야 하나요?
DOTA 데이터셋으로 모델을 학습하려면 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)DOTA 이미지를 분할하고 전처리하는 방법에 대한 자세한 내용은 DOTA 이미지 분할 섹션을 참조하십시오.
DOTA-v1.0, DOTA-v1.5 및 DOTA-v2.0의 차이점은 무엇인가요?
- DOTA-v1.0: 2,806개의 이미지와 188,282개의 인스턴스에 걸쳐 15개의 공통 카테고리를 포함합니다. 데이터셋은 학습, 검증 및 테스트 세트로 나뉩니다.
- DOTA-v1.5: DOTA-v1.0을 기반으로 매우 작은 인스턴스(10 픽셀 미만)에 주석을 달고 "container crane"이라는 새로운 카테고리를 추가하여 총 403,318개의 인스턴스를 포함합니다.
- DOTA-v2.0: Google Earth 및 GF-2 위성의 주석으로 더욱 확장되어 11,268개의 이미지와 1,793,658개의 인스턴스를 제공합니다. "airport" 및 "helipad"와 같은 새로운 카테고리가 포함되었습니다.
자세한 비교 및 추가 사양은 데이터셋 버전 섹션을 확인하십시오.
학습을 위해 고해상도 DOTA 이미지를 어떻게 준비할 수 있나요?
매우 클 수 있는 DOTA 이미지는 효율적인 학습을 위해 더 작은 해상도로 분할됩니다. 이미지를 분할하기 위한 Python 스니펫은 다음과 같습니다:
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,
)이 과정은 학습 효율성과 모델 성능을 향상시킵니다. 자세한 지침은 DOTA 이미지 분할 섹션을 방문하십시오.