Meet YOLO26: next-gen vision AI.

Link to this sectionOBB를 포함한 DOTA 데이터셋#

DOTA는 항공 이미지에서의 객체 탐지에 중점을 둔 특화된 데이터셋입니다. DOTA 시리즈 데이터셋에서 비롯된 이 데이터셋은 회전 경계 상자(OBB, Oriented Bounding Boxes)로 주석이 달린 다양한 항공 장면을 포함하는 이미지를 제공합니다.

항공 탐지를 위한 DOTA 데이터셋 객체 클래스

Link to this section주요 특징#



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 자유도) 사각형을 사용하여 주석을 달았으며, 다양한 스케일, 방향 및 형태의 객체를 포착합니다.

Link to this section데이터셋 버전#

Link to this sectionDOTA-v1.0#

  • 15개의 공통 카테고리를 포함합니다.
  • 2,806개의 이미지와 188,282개의 인스턴스로 구성됩니다.
  • 데이터 분할 비율: 훈련용 1/2, 검증용 1/6, 테스트용 1/3입니다.

Link to this sectionDOTA-v1.5#

  • DOTA-v1.0과 동일한 이미지를 포함합니다.
  • 매우 작은 인스턴스(10 픽셀 미만)도 주석 처리되었습니다.
  • 새로운 카테고리인 "container crane(컨테이너 크레인)"이 추가되었습니다.
  • 총 403,318개의 인스턴스입니다.
  • DOAI Challenge 2019 on Object Detection in Aerial Images를 위해 공개되었습니다.

Link to this sectionDOTA-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개의 인스턴스.

Link to this section데이터셋 구조#

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

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

Link to this section응용 분야#

DOTA는 항공 이미지 분석에 특화된 모델을 학습하고 평가하기 위한 벤치마크 역할을 합니다. OBB 주석을 포함하여 독특한 과제를 제공하며, 항공 이미지의 미묘한 차이를 처리할 수 있는 전문적인 객체 탐지 모델 개발을 가능하게 합니다. 이 데이터셋은 원격 탐사, 감시 및 환경 모니터링 분야의 애플리케이션에 특히 유용합니다.

Link to this section데이터셋 YAML#

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

다운로드한 릴리스와 일치하는 YAML을 사용하거나, DOTA-v2 또는 기타 파생 버전을 사용하는 경우 사용자 지정 YAML을 작성하십시오.

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

Link to this sectionDOTA 이미지 분할#

원시 이미지는 일반적으로 한 변이 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,
)

데이터셋 YAML에서 직접 참조할 수 있도록 출력 디렉토리를 표준 YOLO 레이아웃(images/train, labels/train 등)으로 구성하십시오.

Link to this section사용법#

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)

Link to this section샘플 데이터 및 주석#

데이터셋을 한눈에 살펴보면 그 깊이를 알 수 있습니다:

회전형 경계 상자 주석이 포함된 DOTA 데이터셋

  • DOTA 예제: 이 스냅샷은 항공 장면의 복잡성과 자연스러운 방향으로 객체를 포착하는 회전형 경계 상자 주석의 중요성을 강조합니다.

이 데이터셋의 풍부함은 항공 이미지 전용 객체 탐지 과제에 대한 귀중한 통찰력을 제공합니다. DOTA-v2.0 데이터셋은 포괄적인 주석과 다양한 객체 카테고리로 인해 원격 탐사 및 항공 감시 프로젝트에 특히 인기가 많습니다.

Link to this section인용 및 감사의 글#

귀하의 작업에 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 웹사이트를 방문해 주십시오.

Link to this sectionFAQ#

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

DOTA 데이터셋은 항공 이미지의 객체 탐지에 중점을 둔 특수 데이터셋입니다. 회전형 경계 상자(OBB)를 특징으로 하며 다양한 항공 장면의 주석이 달린 이미지를 제공합니다. 170만 개의 주석과 18개의 카테고리에 걸친 DOTA의 객체 방향, 스케일 및 형태의 다양성은 감시, 환경 모니터링 및 재난 관리와 같이 항공 이미지 분석에 특화된 모델을 개발하고 평가하는 데 이상적입니다.

Link to this sectionDOTA 데이터셋은 이미지의 서로 다른 스케일과 방향을 어떻게 처리하나요?#

DOTA는 주석을 위해 회전형 경계 상자(OBB)를 사용하며, 이는 방향에 관계없이 객체를 감싸는 회전된 직사각형으로 표현됩니다. 이 방법은 객체가 작든 다른 각도에 있든 상관없이 정확하게 포착되도록 보장합니다. 800 × 800에서 20,000 × 20,000 픽셀까지 이르는 데이터셋의 멀티스케일 이미지는 작은 객체와 큰 객체를 모두 효과적으로 탐지할 수 있게 합니다. 이 접근 방식은 객체가 다양한 각도와 스케일로 나타나는 항공 이미지에 특히 유용합니다.

Link to this sectionDOTA 데이터셋을 사용하여 모델을 어떻게 훈련할 수 있나요?#

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 이미지 분할 섹션을 참조하십시오.

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

자세한 비교 및 추가 정보는 데이터셋 버전 섹션을 확인하십시오.

Link to this 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,
)

이 과정은 훈련 효율성과 모델 성능을 향상시킵니다. 자세한 지침은 DOTA 이미지 분할 섹션을 방문하십시오.

댓글