Ultralytics YOLO27:

OBB가 포함된 DOTA 데이터셋#

DOTA 데이터셋은 항공 이미지의 객체 검출을 위한 대규모 벤치마크로, 세 가지 버전(v1.0, v1.5, v2.0)으로 출시되었으며 18개 카테고리에 걸쳐 최대 170만 개의 방향성 바운딩 박스(OBB) 주석을 제공합니다. 다양한 항공 센서와 플랫폼에서 촬영된 이미지로 구성됩니다.

Ultralytics Platform에서 공식 호스팅되는 DOTA v1.5DOTA v1.0 데이터셋을 살펴보고, 방향성 주석을 미리 확인하고 통계를 검사하며 학습을 위해 클론할 수 있습니다.

항공 객체 검출을 위한 DOTA 데이터셋 객체 클래스

주요 기능#



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자유도(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픽셀 미만)에도 주석이 지정됩니다.
  • 새로운 카테고리인 "container crane"이 추가되었습니다.
  • 총 403,318개의 인스턴스를 포함합니다.
  • 항공 이미지 객체 검출 DOAI Challenge 2019를 위해 출시되었습니다.

DOTA-v2.0#

  • Google Earth, GF-2 Satellite 및 기타 항공 이미지에서 수집되었습니다.
  • 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 객체 검출 과제에 맞게 설계된 구조화된 레이아웃을 제공합니다:

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

응용 분야#

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

데이터셋 YAML#

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

다운로드한 릴리스에 맞는 YAML을 사용하거나 DOTA-v2 또는 다른 파생 데이터셋을 사용하는 경우 사용자 지정 YAML을 작성합니다. 두 릴리스 모두 처음 학습을 시작할 때 Ultralytics GitHub assets에서 자동으로 다운로드됩니다(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 데이터셋을 사용해 보세요.

경고

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

학습 예제
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)

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

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

방향성 바운딩 박스 주석이 포함된 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 웹사이트를 방문해 주세요.

FAQ#

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

  • DOTA는 주석 지정을 위해 방향성 바운딩 박스(OBB)를 사용하며, 이는 방향과 관계없이 객체를 둘러싸는 회전된 사각형으로 표현됩니다. 이 방법은 작은 객체나 다양한 각도의 객체를 정확하게 포착합니다. 800 × 800픽셀부터 20,000 × 20,000픽셀까지 다양한 멀티스케일 이미지로 구성된 이 데이터셋을 사용하면 작은 객체와 큰 객체를 모두 효과적으로 검출할 수 있습니다. 이 접근 방식은 객체가 다양한 각도와 크기로 나타나는 항공 이미지에서 특히 유용합니다.

  • DOTA 데이터셋으로 모델을 학습하려면 다음 Ultralytics YOLO 예제를 사용할 수 있습니다:

    학습 예제
    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)

    DOTA 이미지를 분할하고 전처리하는 방법에 대한 자세한 내용은 DOTA 이미지 분할 섹션을 참조하세요.

    • DOTA-v1.0: 2,806개 이미지에 걸쳐 188,282개의 인스턴스와 15개의 일반적인 카테고리를 포함합니다. 데이터셋은 학습, 검증, 테스트 세트로 분할됩니다.
    • DOTA-v1.5: 매우 작은 인스턴스(10픽셀 미만)에 주석을 지정하고 새로운 카테고리인 "container crane"을 추가하여 DOTA-v1.0을 확장했으며, 총 403,318개의 인스턴스를 포함합니다.
    • DOTA-v2.0: Google Earth 및 GF-2 Satellite의 주석을 추가하여 더욱 확장되었으며, 11,268개 이미지와 1,793,658개 인스턴스를 포함합니다. "airport"와 "helipad" 같은 새로운 카테고리도 포함합니다.

    자세한 비교와 추가 정보는 데이터셋 버전 섹션을 확인하세요.

  • 매우 클 수 있는 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 이미지 분할 섹션을 참조하세요.

댓글