회전된 경계 상자(OBB) 데이터셋 개요#
방향성 바운딩 박스(OBB)를 사용하여 정밀한 object detection 모델을 학습하려면 철저한 데이터셋이 필요합니다. 본 가이드는 Ultralytics YOLO 모델과 호환되는 다양한 OBB 데이터셋 형식을 설명하며, 구조, 응용 및 형식 변환 방법에 대한 통찰력을 제공합니다.
지원되는 OBB 데이터셋 형식#
YOLO OBB 형식#
YOLO OBB 형식은 경계 상자를 0과 1 사이로 정규화된 네 개의 모서리 좌표로 지정합니다. 형식은 다음과 같습니다:
class_index x1 y1 x2 y2 x3 y3 x4 y4내부적으로 YOLO는 bounding box의 중심점(xy), 너비, 높이, 회전을 나타내는 xywhr 형식으로 손실과 출력을 처리합니다.

위 이미지에 대한 *.txt 레이블 파일의 예시로, OBB 형식의 0 클래스 객체를 포함하고 있으며 다음과 같은 형태일 수 있습니다:
0 0.780811 0.743961 0.782371 0.74686 0.777691 0.752174 0.776131 0.749758데이터셋 YAML 형식#
Ultralytics 프레임워크는 OBB 모델 학습을 위한 데이터셋 및 모델 구성을 정의하기 위해 YAML 파일 형식을 사용합니다. 다음은 OBB 데이터셋을 정의하는 데 사용되는 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.ziptrain, val, test는 각각 디렉토리, 디렉토리 목록, 또는 줄당 하나의 이미지 경로가 나열된 *.txt 파일을 허용합니다 (./로 시작하는 경로는 *.txt 파일을 기준으로 해결됩니다). *.txt 파일은 디렉토리의 하위 집합에서 학습하거나, 레이블이 지정되지 않은 이미지를 건너뛰거나, 여러 소스의 이미지를 하나의 분할(split)로 결합할 때 유용합니다.
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
# 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장으로 구성된 하위 집합입니다. - DOTA8 Multispectral: Ultralytics 플랫폼에서 다중 분광 OBB 학습 테스트를 위한 8개의 이미지 및 10개 채널로 구성된 TIFF 서브셋입니다.
- DOTA128: train 폴더에 있는 모든 이미지(train과 val 모두에 사용됨)를 포함하는 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는 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)이를 통해 모델이 향상된 검출 accuracy를 위해 상세한 OBB 주석을 활용할 수 있게 됩니다.
현재 Ultralytics는 OBB 학습을 위해 다음 데이터셋을 지원합니다:
- DOTA-v1: 객체 검출을 위한 방향성 바운딩 박스가 포함된 포괄적인 항공 이미지 세트를 제공하는 DOTA 데이터셋의 첫 번째 버전입니다.
- DOTA-v1.5: 향상된 객체 검출 작업을 위해 DOTA-v1에 비해 추가적인 주석과 개선 사항을 제공하는 DOTA 데이터셋의 중간 버전입니다.
- DOTA-v2: 이 데이터셋에는 방향성 바운딩 박스가 포함된 170만 개의 인스턴스와 11,268장의 이미지가 포함되어 있으며, 주로 항공 객체 검출에 초점을 맞추고 있습니다.
- DOTA8: 테스트 및 continuous integration(CI) 검사에 사용되는 DOTA 데이터셋의 더 작고 8장으로 구성된 하위 집합입니다.
- DOTA128: train 폴더에 모든 이미지가 포함된 128장 하위 집합으로(train과 val 모두에 사용됨), 초기 OBB 모델 개발 및 실험을 위해 관리하기 쉬운 상태를 유지하면서 DOTA8보다 더 많은 다양성을 제공합니다.
이러한 데이터셋은 항공 및 위성 이미지 분석과 같이 OBB가 상당한 이점을 제공하는 시나리오에 맞게 조정되었습니다.
네, YOLO26 학습에 방향성 바운딩 박스가 포함된 자체 데이터셋을 사용할 수 있습니다. 데이터셋 주석이 YOLO OBB 형식으로 변환되었는지 확인하십시오. 여기에는 네 모서리 포인트로 바운딩 박스를 정의하는 것이 포함됩니다. 그런 다음 데이터셋 경로, 클래스 및 기타 필요한 세부 정보를 지정하는 YAML configuration file을 생성할 수 있습니다. 데이터셋 생성 및 구성에 대한 자세한 내용은 Supported Datasets 섹션을 참조하십시오.



