콘텐츠로 건너뛰기

Oriented Bounding Boxes Object Detection

방향이 지정된 객체 감지는 이미지에서 객체의 위치를 보다 정확하게 파악하기 위해 추가 각도를 도입하여 표준 객체 감지보다 한 단계 더 나아갑니다.

방향이 지정된 객체 감지기의 출력은 이미지 내 객체를 정확하게 둘러싸는 회전된 경계 상자 세트와 각 상자에 대한 클래스 레이블 및 신뢰도 점수입니다. 방향이 지정된 경계 상자는 객체가 다양한 각도로 나타나는 경우, 특히 기존의 축 정렬 경계 상자가 불필요한 배경을 포함할 수 있는 항공 이미지에서 유용합니다.

YOLO11 OBB 모델은 다음을 사용합니다. -obb 접미사(예: yolo11n-obb.pt 에 대해 사전 훈련되었습니다. DOTAv1.



참고: Ultralytics YOLO를 사용한 경사 바운딩 박스(YOLO-OBB)를 이용한 객체 감지

시각적 샘플

OBB를 사용한 선박 감지 OBB를 사용한 차량 감지
OBB를 사용한 선박 감지 OBB를 사용한 차량 감지

모델

YOLO11 사전 학습된 OBB 모델이 여기에 표시되어 있으며, 이 모델은 DOTAv1 데이터 세트에서 사전 학습되었습니다.

모델은 처음 사용할 때 최신 Ultralytics 릴리스에서 자동으로 다운로드됩니다.

모델 크기
(픽셀)
mAP테스트
50
속도
CPU ONNX
(ms)
속도
T4 TensorRT10
(ms)
파라미터
(M)
FLOPs
(B)
YOLO11n-obb 1024 78.4 117.6 ± 0.8 4.4 ± 0.0 2.7 17.2
YOLO11s-obb 1024 79.5 219.4 ± 4.0 5.1 ± 0.0 9.7 57.5
YOLO11m-obb 1024 80.9 562.8 ± 2.9 10.1 ± 0.4 20.9 183.5
YOLO11l-obb 1024 81.0 712.5 ± 5.0 13.5 ± 0.6 26.2 232.0
YOLO11x-obb 1024 81.3 1408.6 ± 7.7 28.6 ± 1.0 58.8 520.2
  • mAPtest 값은 다음에서 단일 모델 멀티스케일에 대한 것입니다. DOTAv1 데이터 세트입니다.
    다음으로 재현합니다. yolo val obb data=DOTAv1.yaml device=0 split=test 병합된 결과를 제출합니다. DOTA 평가.
  • 속도 다음을 사용하여 DOTAv1 val 이미지에서 평균화되었습니다. 인스턴스를 사용하여 COCO val 이미지에서 평균을 냈습니다. 인스턴스.
    다음으로 재현합니다. yolo val obb data=DOTAv1.yaml batch=1 device=0|cpu

Train

이미지 크기 640에서 100 epochs 동안 DOTA8 데이터 세트에서 YOLO11n-obb를 훈련합니다. 사용 가능한 전체 인수 목록은 구성 페이지를 참조하십시오.

참고

OBB 각도는 0~90도 범위(90 제외)로 제한됩니다. 90도 이상의 각도는 지원되지 않습니다.

예시

from ultralytics import YOLO

# Load a model
model = YOLO("yolo11n-obb.yaml")  # build a new model from YAML
model = YOLO("yolo11n-obb.pt")  # load a pretrained model (recommended for training)
model = YOLO("yolo11n-obb.yaml").load("yolo11n.pt")  # build from YAML and transfer weights

# Train the model
results = model.train(data="dota8.yaml", epochs=100, imgsz=640)
# Build a new model from YAML and start training from scratch
yolo obb train data=dota8.yaml model=yolo11n-obb.yaml epochs=100 imgsz=640

# Start training from a pretrained *.pt model
yolo obb train data=dota8.yaml model=yolo11n-obb.pt epochs=100 imgsz=640

# Build a new model from YAML, transfer pretrained weights to it and start training
yolo obb train data=dota8.yaml model=yolo11n-obb.yaml pretrained=yolo11n-obb.pt epochs=100 imgsz=640



참고: Ultralytics HUB를 사용하여 DOTA 데이터 세트에서 Ultralytics YOLO-OBB(경사 바운딩 박스) 모델을 훈련하는 방법

데이터 세트 형식

OBB 데이터 세트 형식에 대한 자세한 내용은 데이터 세트 가이드에서 확인할 수 있습니다. YOLO OBB 형식은 좌표가 0과 1 사이에서 정규화된 네 개의 모서리 점으로 경계 상자를 지정하며, 다음 구조를 따릅니다.

class_index x1 y1 x2 y2 x3 y3 x4 y4

내부적으로 YOLO는 손실과 출력을 다음에서 처리합니다. xywhr format)을 나타냅니다. 경계 상자의 중심점(xy), 너비, 높이 및 회전입니다.

Val

훈련된 YOLO11n-obb 모델 유효성 검사 정확도 DOTA8 데이터 세트에서. 다음으로 인수가 필요하지 않습니다. model 훈련을 유지 data 하고 인수를 모델 속성으로 사용합니다.

예시

from ultralytics import YOLO

# Load a model
model = YOLO("yolo11n-obb.pt")  # load an official model
model = YOLO("path/to/best.pt")  # load a custom model

# Validate the model
metrics = model.val(data="dota8.yaml")  # no arguments needed, dataset and settings remembered
metrics.box.map  # map50-95(B)
metrics.box.map50  # map50(B)
metrics.box.map75  # map75(B)
metrics.box.maps  # a list contains map50-95(B) of each category
yolo obb val model=yolo11n-obb.pt data=dota8.yaml         # val official model
yolo obb val model=path/to/best.pt data=path/to/data.yaml # val custom model

예측

훈련된 YOLO11n-obb 모델을 사용하여 이미지에서 예측을 실행합니다.

예시

from ultralytics import YOLO

# Load a model
model = YOLO("yolo11n-obb.pt")  # load an official model
model = YOLO("path/to/best.pt")  # load a custom model

# Predict with the model
results = model("https://ultralytics.com/images/boats.jpg")  # predict on an image

# Access the results
for result in results:
    xywhr = result.obb.xywhr  # center-x, center-y, width, height, angle (radians)
    xyxyxyxy = result.obb.xyxyxyxy  # polygon format with 4-points
    names = [result.names[cls.item()] for cls in result.obb.cls.int()]  # class name of each box
    confs = result.obb.conf  # confidence score of each box
yolo obb predict model=yolo11n-obb.pt source='https://ultralytics.com/images/boats.jpg'  # predict with official model
yolo obb predict model=path/to/best.pt source='https://ultralytics.com/images/boats.jpg' # predict with custom model



참고: Ultralytics YOLO-OBB | 경사 바운딩 박스 | DOTA를 사용하여 저장 탱크를 감지하고 추적하는 방법

전체 predict 모드에 대한 자세한 내용은 예측 페이지를 참조하세요.

내보내기

YOLO11n-obb 모델을 ONNX, CoreML 등과 같은 다른 형식으로 내보냅니다.

예시

from ultralytics import YOLO

# Load a model
model = YOLO("yolo11n-obb.pt")  # load an official model
model = YOLO("path/to/best.pt")  # load a custom trained model

# Export the model
model.export(format="onnx")
yolo export model=yolo11n-obb.pt format=onnx  # export official model
yolo export model=path/to/best.pt format=onnx # export custom trained model

사용 가능한 YOLO11-obb 내보내기 형식은 아래 표에 있습니다. 다음을 사용하여 모든 형식으로 내보낼 수 있습니다. format 인수, 즉 format='onnx' 또는 format='engine'입니다. 내보낸 모델에서 직접 예측하거나 유효성을 검사할 수 있습니다(예: yolo predict model=yolo11n-obb.onnx). 사용 예시는 내보내기가 완료된 후 모델에 대해 표시됩니다.

형식 format 인수 모델 메타데이터 인수
PyTorch - yolo11n-obb.pt -
TorchScript torchscript yolo11n-obb.torchscript imgsz, half, dynamic, optimize, nms, batch, device
ONNX onnx yolo11n-obb.onnx imgsz, half, dynamic, simplify, opset, nms, batch, device
OpenVINO openvino yolo11n-obb_openvino_model/ imgsz, half, dynamic, int8, nms, batch, data, fraction, device
TensorRT engine yolo11n-obb.engine imgsz, half, dynamic, simplify, workspace, int8, nms, batch, data, fraction, device
CoreML coreml yolo11n-obb.mlpackage imgsz, half, int8, nms, batch, device
TF SavedModel saved_model yolo11n-obb_saved_model/ imgsz, keras, int8, nms, batch, device
TF GraphDef pb yolo11n-obb.pb imgsz, batch, device
TF Lite tflite yolo11n-obb.tflite imgsz, half, int8, nms, batch, data, fraction, device
TF Edge TPU edgetpu yolo11n-obb_edgetpu.tflite imgsz, device
TF.js tfjs yolo11n-obb_web_model/ imgsz, half, int8, nms, batch, device
PaddlePaddle paddle yolo11n-obb_paddle_model/ imgsz, batch, device
MNN mnn yolo11n-obb.mnn imgsz, batch, int8, half, device
NCNN ncnn yolo11n-obb_ncnn_model/ imgsz, half, batch, device
IMX500 imx yolo11n-obb_imx_model/ imgsz, int8, data, fraction, device
RKNN rknn yolo11n-obb_rknn_model/ imgsz, batch, name, device

전체 export 세부 정보는 내보내기 페이지를 참조하세요.

실제 응용 분야

YOLO11을 사용한 OBB 감지는 다양한 산업 분야에서 수많은 실제 응용 분야를 가지고 있습니다.

  • 해양 및 항만 관리: 선단 관리 및 모니터링을 위해 다양한 각도에서 선박을 탐지합니다.
  • 도시 계획: 항공 이미지에서 건물 및 인프라 분석.
  • 농업: 드론 영상을 통한 작물 및 농업 장비 모니터링.
  • 에너지 부문: 다양한 방향에서 태양광 패널 및 풍력 터빈 검사.
  • 교통: 다양한 관점에서 도로 및 주차장의 차량 추적.

이러한 애플리케이션은 OBB가 모든 각도에서 객체를 정확하게 맞출 수 있는 기능의 이점을 활용하여 기존 경계 상자보다 더 정확한 감지를 제공합니다.

FAQ

OBB(Oriented Bounding Box)는 무엇이며 일반 경계 상자와 어떻게 다릅니까?

경사 바운딩 박스(OBB)는 이미지에서 객체 위치 정확도를 향상시키기 위해 추가 각도를 포함합니다. 축에 정렬된 사각형인 일반 바운딩 박스와 달리 OBB는 회전하여 객체의 방향에 더 잘 맞출 수 있습니다. 이는 항공 또는 위성 이미지와 같이 정확한 객체 배치가 필요한 애플리케이션에 특히 유용합니다(데이터 세트 가이드).

사용자 지정 데이터 세트를 사용하여 YOLO11n-obb 모델을 어떻게 학습시킬 수 있습니까?

사용자 지정 데이터 세트로 YOLO11n-obb 모델을 훈련하려면 python 또는 CLI를 사용하여 아래 예제를 따르십시오.

예시

from ultralytics import YOLO

# Load a pretrained model
model = YOLO("yolo11n-obb.pt")

# Train the model
results = model.train(data="path/to/custom_dataset.yaml", epochs=100, imgsz=640)
yolo obb train data=path/to/custom_dataset.yaml model=yolo11n-obb.pt epochs=100 imgsz=640

자세한 훈련 인수는 구성 섹션을 확인하십시오.

YOLO11-OBB 모델 학습에 사용할 수 있는 데이터 세트는 무엇입니까?

YOLO11-OBB 모델은 DOTAv1과 같은 데이터 세트에서 사전 훈련되지만 OBB용으로 포맷된 모든 데이터 세트를 사용할 수 있습니다. OBB 데이터 세트 형식에 대한 자세한 내용은 데이터 세트 가이드에서 확인할 수 있습니다.

YOLO11-OBB 모델을 ONNX 형식으로 어떻게 내보낼 수 있습니까?

python 또는 CLI를 사용하여 YOLO11-OBB 모델을 ONNX 형식으로 내보내는 것은 간단합니다.

예시

from ultralytics import YOLO

# Load a model
model = YOLO("yolo11n-obb.pt")

# Export the model
model.export(format="onnx")
yolo export model=yolo11n-obb.pt format=onnx

자세한 내보내기 형식 및 세부 정보는 내보내기 페이지를 참조하십시오.

YOLO11n-obb 모델의 정확성을 어떻게 검증합니까?

YOLO11n-obb 모델의 유효성을 검사하려면 아래와 같이 python 또는 CLI 명령을 사용할 수 있습니다.

예시

from ultralytics import YOLO

# Load a model
model = YOLO("yolo11n-obb.pt")

# Validate the model
metrics = model.val(data="dota8.yaml")
yolo obb val model=yolo11n-obb.pt data=dota8.yaml

전체 유효성 검사 세부 정보는 Val 섹션을 참조하십시오.



📅 1년 전에 생성됨 ✏️ 5일 전에 업데이트됨

댓글