Ultralytics YOLO27:
Get Started

방향성 바운딩 박스(OBB) 데이터셋 개요#

정확한 객체 감지 모델을 방향성 바운딩 박스(OBB)로 학습하려면 충분한 데이터셋이 필요합니다. 이 가이드에서는 Ultralytics YOLO 모델과 호환되는 다양한 OBB 데이터셋 형식을 설명하고, 구조와 적용 방법, 형식 변환 방법에 관한 정보를 제공합니다.

지원되는 OBB 데이터셋 형식#

YOLO OBB 형식#

YOLO OBB 형식에서는 바운딩 박스를 네 모서리 점으로 지정하고 좌표를 0과 1 사이로 정규화합니다. 형식은 다음과 같습니다:

class_index x1 y1 x2 y2 x3 y3 x4 y4

내부적으로 YOLO는 xywhr 형식으로 손실과 출력을 처리합니다. 이 형식은 바운딩 박스의 중심점(xy), 너비, 높이 및 회전을 나타냅니다.

Oriented bounding box annotation format examples

위 이미지에 대해 OBB 형식의 클래스 0 객체를 포함하는 *.txt 레이블 파일은 다음과 같습니다:

0 0.780811 0.743961 0.782371 0.74686 0.777691 0.752174 0.776131 0.749758

데이터셋 YAML 형식#

Ultralytics 프레임워크는 OBB 모델 학습에 사용할 데이터셋과 모델 구성을 정의할 때 YAML 파일 형식을 사용합니다. 다음은 OBB 데이터셋 정의에 사용하는 YAML 형식의 예입니다:

ultralytics/cfg/datasets/dota8.yaml
# Ultralytics 🚀 AGPL-3.0 License - https://ultralytics.com/license

# DOTA8 dataset (8 images from the DOTAv1 split) by Ultralytics
# Documentation: https://docs.ultralytics.com/datasets/obb/dota8
# Example usage: yolo train model=yolov8n-obb.pt data=dota8.yaml
# parent
# ├── ultralytics
# └── datasets
#     └── dota8 ← downloads here (1 MB)

# 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: dota8 # dataset root dir
train: images/train # train images (relative to 'path') 4 images
val: images/val # val images (relative to 'path') 4 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/dota8.zip

train, val 및 test는 각각 디렉터리, 디렉터리 목록 또는 줄마다 이미지 경로 하나를 나열하는 *.txt 파일을 허용합니다(경로가 ./로 시작하면 *.txt 파일을 기준으로 해석됩니다). *.txt 파일을 사용하면 디렉터리의 일부만 학습에 사용하거나, 레이블이 없는 이미지를 건너뛰거나, 여러 소스의 이미지를 하나의 분할 데이터셋으로 결합할 수 있습니다.

`*.txt` 파일의 이미지 경로
path: datasets/dota8 # dataset root
train: train.txt # a directory, a list e.g. [images/a, images/b], or a *.txt file
val: val.txt
names:
  0: plane

사용법#

이러한 OBB 형식을 사용해 모델을 학습하려면 다음과 같이 합니다:

예제
from ultralytics import YOLO

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

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

지원되는 데이터셋#

현재 방향성 바운딩 박스를 지원하는 데이터셋은 다음과 같습니다. 이러한 데이터셋 대부분은 Ultralytics Platform에서도 호스팅되며, 여기에서 이미지와 주석을 살펴보고 데이터셋 통계를 확인하거나 클라우드 학습용으로 복제할 수 있습니다.

  • DOTA-v1: DOTA 데이터셋의 첫 번째 버전으로, 객체 감지를 위한 방향성 바운딩 박스가 포함된 종합적인 항공 이미지 모음을 제공합니다.
  • DOTA-v1.5: DOTA 데이터셋의 중간 버전으로, 객체 감지 작업의 성능 향상을 위해 DOTA-v1보다 주석과 개선 사항을 추가했습니다.
  • DOTA-v2: DOTA(항공 이미지 객체 감지를 위한 대규모 데이터셋) 버전 2는 항공 시점에서의 감지에 중점을 두며, 170만 개의 인스턴스와 11,268개의 이미지로 구성된 방향성 바운딩 박스를 포함합니다.
  • DOTA8: 전체 DOTA 데이터셋에서 추출한 8개 이미지의 소규모 하위 집합으로, ultralytics 리포지토리에서 워크플로 테스트와 OBB 학습의 지속적 통합(CI) 검사에 적합합니다.
  • DOTA8 Multispectral: Ultralytics Platform에서 다중 스펙트럼 OBB 학습을 테스트하기 위한 8개 이미지, 10채널 TIFF 하위 집합입니다.
  • DOTA128: DOTA 데이터셋에서 추출한 128개 이미지의 하위 집합으로, 모든 이미지가 학습 폴더에 있습니다(학습과 검증에 모두 사용). 크기와 다양성의 균형이 좋아 OBB 모델 테스트에 적합합니다.

자체 OBB 데이터셋 통합하기#

방향성 바운딩 박스가 포함된 자체 데이터셋을 추가하려면 위에서 언급한 "YOLO OBB 형식"과 호환되는지 확인하세요. 주석을 필수 형식으로 변환하고, 해당 YAML 구성 파일에 경로, 클래스 및 클래스 이름을 지정하세요.

레이블 형식 변환#

DOTA 데이터셋 형식을 YOLO OBB 형식으로 변환#

다음 스크립트를 사용해 DOTA 데이터셋 형식의 레이블을 YOLO OBB 형식으로 변환할 수 있습니다:

예제
from ultralytics.data.converter import convert_dota_to_yolo_obb

convert_dota_to_yolo_obb("path/to/DOTA")

이 변환 방식은 DOTA 형식 데이터셋에 필수적이며, Ultralytics YOLO OBB 형식에 맞게 변환할 수 있습니다.

데이터셋이 모델과 호환되는지 검증하고 필요한 형식 규칙을 준수해야 합니다. 방향성 바운딩 박스를 사용하는 효율적인 객체 감지 모델을 학습하려면 데이터셋을 올바르게 구성하는 것이 중요합니다.

자주 묻는 질문#

  • 방향성 바운딩 박스(OBB)는 바운딩 박스를 감지 대상 객체에 더 가깝게 맞추도록 회전할 수 있는 주석 형식으로, 축에 정렬된 박스와 다릅니다. 객체가 이미지 축과 정렬되지 않을 수 있는 항공 또는 위성 이미지에서 특히 유용합니다. Ultralytics YOLO 모델에서 OBB는 YOLO OBB 형식의 네 모서리 점으로 표현됩니다. 바운딩 박스를 객체에 더 잘 맞도록 회전할 수 있어 객체 감지 정확도를 높일 수 있습니다.

  • Ultralytics의 convert_dota_to_yolo_obb 함수를 사용하면 DOTA 데이터셋 라벨을 YOLO OBB 형식으로 변환할 수 있습니다. 이 변환을 통해 Ultralytics YOLO 모델과의 호환성을 확보하고, OBB 기능을 활용해 객체 감지 성능을 향상할 수 있습니다. 간단한 예시는 다음과 같습니다:

    from ultralytics.data.converter import convert_dota_to_yolo_obb
    
    convert_dota_to_yolo_obb("path/to/DOTA")

    이 스크립트는 DOTA 어노테이션을 YOLO 호환 형식으로 다시 구성합니다.

  • OBB를 사용해 YOLO26 모델을 학습하려면 데이터셋이 YOLO OBB 형식인지 확인한 다음 Ultralytics API를 사용해 모델을 학습하면 됩니다. Python과 CLI를 사용한 예시는 다음과 같습니다:

    예제
    from ultralytics import YOLO
    
    # 새 YOLO26n-OBB 모델을 처음부터 생성합니다
    model = YOLO("yolo26n-obb.yaml")
    
    # 사용자 지정 데이터셋으로 모델을 학습합니다
    results = model.train(data="your_dataset.yaml", epochs=100, imgsz=640)

    이를 통해 모델이 상세한 OBB 어노테이션을 활용하여 감지 정확도를 높일 수 있습니다.

  • 현재 Ultralytics는 OBB 학습을 위해 다음 데이터셋을 지원합니다:

    • DOTA-v1: DOTA 데이터셋의 첫 번째 버전으로, 객체 감지를 위한 방향성 바운딩 박스가 포함된 종합적인 항공 이미지 모음을 제공합니다.
    • DOTA-v1.5: DOTA 데이터셋의 중간 버전으로, 객체 감지 작업의 성능 향상을 위해 DOTA-v1보다 주석과 개선 사항을 추가했습니다.
    • DOTA-v2: 이 데이터셋에는 방향성 바운딩 박스로 어노테이션된 170만 개의 인스턴스와 11,268개의 이미지가 포함되어 있으며, 주로 항공 이미지 객체 감지에 중점을 둡니다.
    • DOTA8: 테스트 및 지속적 통합(CI) 검사에 사용되는 DOTA 데이터셋의 8개 이미지 소규모 하위 집합입니다.
    • DOTA128: 모든 이미지가 train 폴더에 포함된 128개 이미지 하위 집합입니다(train과 val 모두에 사용). DOTA8보다 다양성이 높으면서도 초기 OBB 모델 개발 및 실험에 적합한 관리 가능한 규모를 유지합니다.

    이 데이터셋은 OBB가 큰 이점을 제공하는 항공 및 위성 이미지 분석과 같은 시나리오에 적합합니다.

  • 예, 방향성 바운딩 박스가 포함된 자체 데이터셋으로 YOLO26을 학습할 수 있습니다. 데이터셋 어노테이션을 YOLO OBB 형식으로 변환해야 하며, 이 형식에서는 바운딩 박스를 네 개의 모서리 점으로 정의합니다. 그런 다음 데이터셋 경로, 클래스 및 기타 필수 세부 정보를 지정하는 YAML 구성 파일을 만들 수 있습니다. 데이터셋의 생성 및 구성에 관한 자세한 내용은 지원되는 데이터셋 섹션을 참조하세요.

댓글