Ultralytics YOLO27:

방향성 바운딩 박스 (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

위 이미지에 대한 *.txt 레이블 파일의 예시는 다음과 같습니다. 이 파일에는 OBB 형식의 클래스 0 객체가 포함되어 있습니다.

0 0.780811 0.743961 0.782371 0.74686 0.777691 0.752174 0.776131 0.749758

데이터셋 YAML 형식#

Ultralytics 프레임워크는 YAML 파일 형식을 사용하여 OBB 모델 학습을 위한 데이터셋 및 모델 구성을 정의합니다. 다음은 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

# 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)

지원되는 데이터셋#

현재 방향성 경계 박스가 포함된 다음 데이터셋이 지원됩니다. 대부분의 데이터셋은 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개 이미지의 서브셋으로, 모든 이미지가 train 폴더에 있으며(train과 val에 모두 사용됨), 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 형식과의 일관성을 보장합니다.

데이터셋이 모델과 호환되는지 확인하고 필요한 형식 규칙을 준수하는 것이 중요합니다. 적절하게 구조화된 데이터셋은 방향성 바운딩 박스를 사용하는 효율적인 객체 탐지 모델을 학습하는 데 핵심적입니다.

FAQ#

  • 방향성 바운딩 박스 (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
    
    # Create a new YOLO26n-OBB model from scratch
    model = YOLO("yolo26n-obb.yaml")
    
    # Train the model on the custom dataset
    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 구성 파일을 만들 수 있습니다. 데이터셋 생성 및 구성에 대한 자세한 내용은 지원되는 데이터셋 섹션을 참조하세요.

댓글