YOLO Vision 2026:

OBB를 포함한 DOTA 데이터셋#

DOTA 데이터셋은 다양한 항공 센서와 플랫폼에서 수집된 18개 카테고리에 걸쳐 최대 170만 개의 Oriented Bounding Box (OBB) 어노테이션이 포함된, 세 가지 버전(v1.0, v1.5, v2.0)으로 출시된 항공 이미지 object detection용 대규모 벤치마크입니다.

DOTA dataset object classes for aerial detection

주요 특징#



Watch: How to Train Ultralytics YOLO 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,411개 이미지), 검증용 1/6(458개 이미지), 테스트용 1/3(937개 이미지)입니다.

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개의 인스턴스.
    • Test-dev: 2,792개의 이미지, 353,346개의 인스턴스.
    • Test-challenge: 6,053개의 이미지, 1,090,637개의 인스턴스.

데이터셋 구조#

DOTA는 OBB 객체 탐지 챌린지에 맞게 설계된 구조화된 레이아웃을 보여줍니다:

  • Images(이미지): 다양한 지형과 구조물을 포착한 고해상도 항공 이미지의 방대한 컬렉션입니다.
  • Oriented Bounding Boxes(회전형 경계 상자): 비행기, 선박, 건물과 같은 객체를 포착하는 데 이상적인, 방향에 관계없이 객체를 감싸는 회전된 직사각형 형태의 주석입니다.

응용 분야#

DOTA는 항공 이미지 분석에 특화된 모델을 학습하고 평가하기 위한 벤치마크 역할을 합니다. OBB 어노테이션이 포함되어 있어 독특한 과제를 제공하며, 항공 이미지의 미세한 차이를 처리할 수 있는 특화된 object detection 모델 개발을 가능하게 합니다. 이 데이터셋은 원격 탐사, 감시, 환경 모니터링 분야의 응용 프로그램에 특히 유용합니다.

데이터셋 YAML#

데이터셋 YAML 파일은 이미지/라벨 루트, 클래스 이름 및 기타 중요한 메타데이터를 지정합니다. Ultralytics는 가장 일반적으로 사용되는 두 가지 릴리스에 대한 공식 YAML 파일을 유지 관리합니다:

다운로드한 릴리스와 일치하는 YAML을 사용하거나, DOTA-v2 또는 다른 파생 버전을 사용하는 경우 사용자 지정 YAML을 작성하십시오. 두 릴리스 모두 처음 학습을 수행할 때 Ultralytics GitHub 에셋에서 자동으로 다운로드(2 GB)됩니다.

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

DOTA 이미지 분할#

원시 이미지는 일반적으로 한 변이 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개만 포함되어 있고 Ultralytics Platform에서 찾아볼 수 있는 DOTA8 dataset을 사용하는 것을 고려하십시오.

경고

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 dataset  with oriented bounding box annotations

  • DOTA examples: 이 스냅샷은 항공 장면의 복잡성과, 객체의 자연스러운 방향을 포착하는 Oriented Bounding Box 어노테이션의 중요성을 잘 보여줍니다.

데이터셋의 풍부함은 항공 이미지에만 국한된 객체 감지 과제에 대한 귀중한 통찰력을 제공합니다. DOTA-v2.0 dataset은 포괄적인 어노테이션과 다양한 객체 카테고리 덕분에 원격 탐사 및 항공 감시 프로젝트에서 특히 인기를 얻고 있습니다.

인용 및 감사의 글#

귀하의 작업에 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={2022},
  volume={44},
  number={11},
  pages={7778-7796},
  doi={10.1109/TPAMI.2021.3117983}
}

이 데이터셋을 큐레이트하는 데 칭찬할 만한 노력을 기울여 준 DOTA 데이터셋 팀에게 특별한 감사를 표합니다. 데이터셋과 그 세부 사항에 대한 철저한 이해를 위해 official DOTA website를 방문해 주세요.

FAQ#

DOTA 데이터셋이란 무엇이며, 항공 이미지의 객체 탐지에 왜 중요한가요?#

DOTA dataset은 항공 이미지의 객체 감지에 초점을 맞춘 특화된 데이터셋입니다. Oriented Bounding Boxes (OBB)를 특징으로 하며 다양한 항공 장면의 어노테이션된 이미지를 제공합니다. 170만 개의 어노테이션과 18개 카테고리에 걸쳐 객체 방향, 스케일, 형태의 다양성을 갖춘 DOTA는 감시, 환경 모니터링, 재난 관리 등에서 사용되는 항공 이미지 분석용 모델을 개발하고 평가하는 데 이상적입니다.

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 이미지를 분할하고 전처리하는 방법에 대한 자세한 내용은 split DOTA images section을 참조하세요.

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"와 같은 새로운 카테고리를 포함합니다.

자세한 비교와 추가 세부 사항은 dataset versions section을 확인하세요.

훈련을 위해 고해상도 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,
)

이 과정은 더 나은 학습 효율성과 모델 성능을 촉진합니다. 자세한 지침은 split DOTA images section을 방문하세요.

댓글