회전된 경계 상자(OBB) 데이터셋 개요

정밀한 객체 탐지 모델을 회전된 경계 상자(OBB)로 학습시키려면 철저한 데이터셋이 필요합니다. 이 가이드는 Ultralytics YOLO 모델과 호환되는 다양한 OBB 데이터셋 형식을 설명하며, 해당 형식의 구조, 적용 방법 및 형식 변환 방법에 대한 통찰력을 제공합니다.

지원되는 OBB 데이터셋 형식

YOLO OBB 형식

YOLO OBB 형식은 경계 상자의 네 모서리 점 좌표를 0과 1 사이로 정규화하여 지정합니다. 이 형식은 다음과 같습니다:

class_index x1 y1 x2 y2 x3 y3 x4 y4

Internally, YOLO processes losses and outputs in the xywhr format, which represents the bounding box's center point (xy), width, height, and rotation.

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

사용법

이러한 OBB 형식을 사용하여 모델을 학습시키려면:

예시
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-v1: 객체 탐지를 위한 회전된 경계 상자가 포함된 포괄적인 항공 이미지 세트를 제공하는 DOTA 데이터셋의 첫 번째 버전입니다.
  • DOTA-v1.5: 강화된 객체 탐지 작업을 위해 DOTA-v1보다 추가적인 주석과 개선 사항을 제공하는 DOTA 데이터셋의 중간 버전입니다.
  • DOTA-v2: DOTA (항공 이미지 객체 탐지를 위한 대규모 데이터셋) 버전 2는 항공 관점에서의 탐지를 강조하며, 170만 개의 인스턴스와 11,268개의 이미지에 대한 회전된 경계 상자를 포함합니다.
  • DOTA8: ultralytics 저장소에서 OBB 학습의 워크플로우 테스트 및 지속적 통합(CI) 확인을 위해 적합한 전체 DOTA 데이터셋의 작은 8개 이미지 하위 세트입니다.
  • DOTA128: train 폴더 내 모든 이미지를 포함하는(학습 및 검증 모두에 사용) 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 형식과의 정렬을 보장합니다.

데이터셋과 모델 간의 호환성을 검증하고 필요한 형식 규칙을 준수하는 것이 중요합니다. 제대로 구조화된 데이터셋은 회전된 경계 상자를 사용하는 효율적인 객체 탐지 모델 학습에 핵심적입니다.

FAQ

회전된 경계 상자(OBB)란 무엇이며 Ultralytics YOLO 모델에서 어떻게 사용됩니까?

회전된 경계 상자(OBB)는 단순히 축에 정렬된 상자가 아니라, 탐지하려는 객체에 더 밀접하게 맞도록 상자를 회전시킬 수 있는 경계 상자 주석 유형입니다. 이는 객체가 이미지 축과 정렬되지 않을 수 있는 항공 또는 위성 이미지에서 특히 유용합니다. Ultralytics YOLO 모델에서 OBB는 YOLO OBB 형식의 네 모서리 점으로 표시됩니다. 이를 통해 경계 상자가 객체에 더 잘 맞도록 회전할 수 있으므로 더욱 정확한 객체 탐지가 가능합니다.

기존 DOTA 데이터셋 라벨을 Ultralytics YOLO26에서 사용하기 위해 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 모델을 어떻게 학습시킵니까?

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 YOLO 모델에서 현재 OBB 학습을 위해 지원되는 데이터셋은 무엇입니까?

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

  • DOTA-v1: 객체 탐지를 위한 회전된 경계 상자가 포함된 포괄적인 항공 이미지 세트를 제공하는 DOTA 데이터셋의 첫 번째 버전입니다.
  • DOTA-v1.5: 강화된 객체 탐지 작업을 위해 DOTA-v1보다 추가적인 주석과 개선 사항을 제공하는 DOTA 데이터셋의 중간 버전입니다.
  • DOTA-v2: 이 데이터셋은 주로 항공 객체 탐지에 초점을 맞추며, 170만 개의 회전된 경계 상자 인스턴스와 11,268개의 이미지를 포함합니다.
  • DOTA8: 테스트 및 지속적 통합(CI) 확인을 위해 사용되는 DOTA 데이터셋의 더 작은 8개 이미지 하위 세트입니다.
  • DOTA128: train 폴더 내 모든 이미지를 포함하는(학습 및 검증 모두에 사용) 128개 이미지 하위 세트로, 초기 OBB 모델 개발 및 실험을 위해 DOTA8보다 더 많은 다양성을 제공합니다.

이 데이터셋들은 항공 및 위성 이미지 분석과 같이 OBB가 상당한 이점을 제공하는 시나리오에 맞춰져 있습니다.

자체 회전된 경계 상자 데이터셋을 YOLO26 학습에 사용할 수 있습니까? 가능하다면 어떻게 해야 합니까?

네, 자체 회전된 경계 상자 데이터셋을 YOLO26 학습에 사용할 수 있습니다. 데이터셋 주석을 네 모서리 점으로 경계 상자를 정의하는 YOLO OBB 형식으로 변환하십시오. 그런 다음 데이터셋 경로, 클래스 및 기타 필요한 세부 정보를 지정하는 YAML 구성 파일을 생성할 수 있습니다. 데이터셋 생성 및 구성에 대한 자세한 내용은 지원되는 데이터셋 섹션을 참조하십시오.

댓글