Ultralytics YOLO27:

OBB가 포함된 DOTA 데이터셋#

DOTA 데이터셋은 항공 이미지의 객체 감지를 위한 대규모 벤치마크입니다. 세 가지 버전(v1.0, v1.5, v2.0)으로 공개되었으며, 다양한 항공 센서와 플랫폼으로 촬영한 이미지에 18개 카테고리, 최대 170만 개의 방향성 바운딩 박스(OBB) 어노테이션이 포함되어 있습니다.

Ultralytics Platform에서 공식 호스팅되는 DOTA v1.5 및 DOTA v1.0 데이터셋을 살펴보세요. 방향성 어노테이션을 미리 보고 통계를 확인한 다음, 데이터셋을 복제해 학습에 사용할 수 있습니다.

항공 감지용 DOTA 데이터셋 객체 클래스

주요 기능#



시청: Google Colab에서 방향 경계 상자를 위해 DOTA 데이터셋으로 Ultralytics YOLO를 학습하는 방법
  • 다양한 센서와 플랫폼에서 수집했으며, 이미지 크기는 800 × 800픽셀부터 20,000 × 20,000픽셀까지 다양합니다.
  • 18개 카테고리에 걸쳐 방향성 바운딩 박스가 170만 개 이상 포함되어 있습니다.
  • 이미지마다 객체 크기 범위가 넓어 다중 스케일 객체 감지를 지원합니다.
  • 전문가가 임의의 사각형(8 d.o.f.)을 사용해 인스턴스에 어노테이션을 지정하므로 다양한 크기와 방향, 형태의 객체를 표현할 수 있습니다.

데이터셋 버전#

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픽셀 미만)에도 어노테이션이 지정됩니다.
  • 새 카테고리인 "컨테이너 크레인"이 추가되었습니다.
  • 총 인스턴스 수는 403,318개입니다.
  • 항공 이미지 객체 감지에 관한 DOAI Challenge 2019를 위해 공개되었습니다.

DOTA-v2.0#

  • Google Earth, GF-2 위성 및 기타 항공 이미지에서 수집했습니다.
  • 일반적인 카테고리 18개가 포함됩니다.
  • 이미지 11,268개와 총 1,793,658개의 인스턴스로 구성됩니다.
  • 새 카테고리인 "공항"과 "헬리패드"가 추가되었습니다.
  • 이미지 분할:
    • 학습: 이미지 1,830개, 인스턴스 268,627개.
    • 검증: 이미지 593개, 인스턴스 81,048개.
    • Test-dev: 이미지 2,792개, 인스턴스 353,346개.
    • Test-challenge: 이미지 6,053개, 인스턴스 1,090,637개.

데이터셋 구조#

DOTA는 OBB 객체 감지 과제에 맞춰 구조화된 레이아웃을 제공합니다.

  • 이미지: 다양한 지형과 구조물을 포착한 고해상도 항공 이미지의 방대한 모음입니다.
  • 방향성 바운딩 박스: 객체의 방향에 관계없이 객체를 둘러싸는 회전 사각형 형태의 어노테이션으로, 비행기, 선박, 건물과 같은 객체를 포착하는 데 적합합니다.

응용 분야#

DOTA는 항공 이미지 분석에 특화된 모델을 학습하고 평가하기 위한 벤치마크로 사용됩니다. OBB 어노테이션을 포함하여 고유한 과제를 제공하므로, 항공 이미지의 특성에 맞춘 객체 감지 모델을 개발할 수 있습니다. 이 데이터셋은 원격 감지, 감시, 환경 모니터링 애플리케이션에 특히 유용합니다.

데이터셋 YAML#

데이터셋 YAML 파일은 이미지 및 라벨 경로, 클래스 이름, 기타 주요 메타데이터를 지정합니다. Ultralytics는 가장 널리 사용되는 두 릴리스에 대해 공식 YAML 파일을 제공합니다.

다운로드한 릴리스에 해당하는 YAML을 사용하거나, DOTA-v2 또는 다른 파생 버전을 사용하는 경우 사용자 정의 YAML을 작성하세요. 두 릴리스 모두 처음 학습을 시작할 때 Ultralytics GitHub 자산에서 자동으로 다운로드됩니다(2GB).

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_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(
    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 데이터셋을 사용해 보세요.

경고

DOTAv1 데이터셋의 모든 이미지와 관련 어노테이션은 학술 목적으로 사용할 수 있지만 상업적 사용은 금지되어 있습니다. 데이터셋 제작자의 뜻을 이해하고 존중해 주시면 감사하겠습니다.

학습 예제
from ultralytics import YOLO

# 사전 학습된 YOLO26n-OBB 모델 로드
model = YOLO("yolo26n-obb.pt")

# DOTAv1 데이터셋으로 모델 학습
results = model.train(data="DOTAv1.yaml", epochs=100, imgsz=1024)

샘플 데이터 및 어노테이션#

데이터셋을 살펴보면 그 깊이를 확인할 수 있습니다.

방향성 바운딩 박스 어노테이션이 포함된 DOTA 데이터셋

  • 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={2022},
  volume={44},
  number={11},
  pages={7778-7796},
  doi={10.1109/TPAMI.2021.3117983}
}

DOTA 데이터셋을 선별하고 구성하는 데 훌륭한 노력을 기울인 팀에 특별히 감사드립니다. 데이터셋과 그 세부 사항을 자세히 알아보려면 공식 DOTA 웹사이트를 방문하세요.

자주 묻는 질문#

  • DOTA 데이터셋은 항공 이미지의 객체 감지에 초점을 둔 특수 데이터셋입니다. 방향성 바운딩 박스(OBB)를 제공하며, 다양한 항공 장면의 어노테이션된 이미지를 포함합니다. 170만 개의 어노테이션과 18개 카테고리에 걸쳐 객체 방향, 크기, 형태가 다양하므로, DOTA는 감시, 환경 모니터링, 재난 관리 등에 사용되는 항공 이미지 분석용 모델을 개발하고 평가하는 데 적합합니다.

  • DOTA는 어노테이션에 방향성 바운딩 박스(OBB)를 사용하며, 이는 객체의 방향과 관계없이 객체를 둘러싸는 회전 사각형으로 표현됩니다. 이 방법을 통해 작거나 다양한 각도에 있는 객체를 정확하게 포착할 수 있습니다. 800 × 800픽셀부터 20,000 × 20,000픽셀까지 다양한 크기의 이미지가 포함되어 있어 작은 객체와 큰 객체를 모두 효과적으로 감지할 수 있습니다. 객체가 다양한 각도와 크기로 나타나는 항공 이미지에서 특히 유용한 접근 방식입니다.

  • DOTA 데이터셋으로 모델을 학습하려면 Ultralytics YOLO를 사용하는 다음 예제를 참고하세요.

    학습 예제
    from ultralytics import YOLO
    
    # 사전 학습된 YOLO26n-OBB 모델 로드
    model = YOLO("yolo26n-obb.pt")
    
    # DOTAv1 데이터셋으로 모델 학습
    results = model.train(data="DOTAv1.yaml", epochs=100, imgsz=1024)

    DOTA 이미지 분할 및 전처리에 관한 자세한 내용은 DOTA 이미지 분할 섹션을 참조하세요.

    • DOTA-v1.0: 이미지 2,806개와 인스턴스 188,282개에 걸쳐 15개의 일반 카테고리를 포함합니다. 데이터셋은 학습, 검증, 테스트 세트로 나뉩니다.
    • DOTA-v1.5: DOTA-v1.0을 기반으로 10픽셀 미만의 매우 작은 인스턴스에 어노테이션을 추가하고, 새로운 카테고리인 "컨테이너 크레인"을 추가하여 총 인스턴스 수가 403,318개입니다.
    • DOTA-v2.0: Google Earth와 GF-2 Satellite의 어노테이션을 추가하여 이미지 11,268개와 인스턴스 1,793,658개를 포함하도록 확장되었습니다. "공항" 및 "헬리패드"와 같은 새로운 카테고리가 추가되었습니다.

    자세한 비교 및 추가 정보는 데이터셋 버전 섹션을 참조하세요.

  • DOTA 이미지는 매우 클 수 있으므로 관리하기 쉬운 학습을 위해 더 작은 해상도의 이미지로 분할합니다. 다음은 이미지를 분할하는 Python 코드 예제입니다.

    예제
    from ultralytics.data.split_dota import split_test, split_trainval
    
    # 라벨을 포함하여 학습 및 검증 세트를 분할합니다.
    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(
        data_root="path/to/DOTAv1.0/",
        save_dir="path/to/DOTAv1.0-split/",
        rates=[0.5, 1.0, 1.5],  # multiscale
        gap=500,
    )

    이 프로세스는 학습 효율과 모델 성능을 향상합니다. 자세한 지침은 DOTA 이미지 분할 섹션을 참조하세요.

댓글