YOLO Vision 2026:

회전된 바운딩 박스(OBB) Object Detection#

회전된 객체 탐지는 이미지 내의 객체 위치를 더 정확하게 파악하기 위해 각도를 추가하여 표준 객체 탐지보다 한 단계 더 나아갑니다.

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

YOLO26 OBB 모델은 -obb 접미사를 사용하며(예: yolo26n-obb.pt), DOTAv1에서 사전 학습되었습니다.



Watch: How to Detect & Track Objects with Ultralytics YOLO26 Oriented Bounding Boxes (OBB) | Ship Tracking 🚢

시각적 샘플#

OBB를 사용한 선박 탐지OBB를 사용한 차량 탐지
Ships Detection using OBBVehicle Detection using OBB

Models#

여기에 표시된 YOLO26 사전 학습된 OBB 모델은 DOTAv1 데이터셋에서 사전 학습되었습니다.

Models는 첫 사용 시 최신 Ultralytics release에서 자동으로 다운로드됩니다.

모델크기
(픽셀)
mAPtest
50-95(e2e)
mAPtest
50(e2e)
속도
CPU ONNX
(ms)
속도
T4 TensorRT10
(ms)
파라미터
(M)
FLOPs
(B)
YOLO26n-obb102452.478.997.7 ± 0.92.8 ± 0.02.514.0
YOLO26s-obb102454.880.9218.0 ± 1.44.9 ± 0.19.855.1
YOLO26m-obb102455.381.0579.2 ± 3.810.2 ± 0.321.2183.3
YOLO26l-obb102456.281.6735.6 ± 3.113.0 ± 0.225.6230.0
YOLO26x-obb102456.781.71485.7 ± 11.530.5 ± 0.957.6516.5
  • mAPtest 값은 DOTAv1 데이터셋에서의 단일 모델 다중 스케일 기준입니다.
    yolo val obb data=DOTAv1.yaml device=0 split=test(으)로 재현하고 병합된 결과를 DOTA evaluation에 제출하세요.
  • Amazon EC2 P4d 인스턴스를 사용하여 DOTAv1 검증 이미지에서 평균 낸 **속도(Speed)**입니다.
    yolo val obb data=DOTAv1.yaml batch=1 device=0|cpu(으)로 재현하세요.
  • ParamsFLOPs 값은 Conv 및 BatchNorm 레이어를 병합하고 end2end 모델의 경우 보조 one-to-many 탐지 헤드를 제거하는 model.fuse() 이후의 융합 모델 기준입니다. 사전 학습된 체크포인트는 전체 학습 아키텍처를 유지하므로 더 높은 수치를 보일 수 있습니다.

학습(Train)#

이미지 크기 640으로 DOTA8 데이터셋에서 100 epochs 동안 YOLO26n-obb를 학습시킵니다. 사용 가능한 전체 인자 목록은 Configuration 페이지를 참조하세요.

참고

OBB와 그 180° 회전은 동일하므로 회전은 180° 모듈로로 정의되며 박스에는 방향이 없습니다. 학습 레이블은 긴 변 형식으로 표준화됩니다. 박스 너비 w은 더 긴 변이고, 각도는 양의 x축에서 w 변의 방향까지 시계 방향으로 측정되며 [-π/4, 3π/4)([-45°, 135°))에 라디안 단위로 저장됩니다. 예측은 표준화되지 않으므로 예측된 박스는 짧은 변을 w(으)로 보고할 수 있습니다. Results Output을 참조하십시오. [0°, 90°) 형식은 정규화된 DOTA 스타일 규칙이며 학습이나 추론 시 적용되지 않습니다.

예시
from ultralytics import YOLO

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

# Train the model
results = model.train(data="dota8.yaml", epochs=100, imgsz=640)


Watch: How to Train Ultralytics YOLO-OBB (Oriented Bounding Boxes) Models on DOTA Dataset using Ultralytics Platform

데이터셋 형식#

OBB 데이터셋 형식에 대한 자세한 내용은 Dataset Guide에서 확인할 수 있습니다. YOLO OBB 형식은 이 구조에 따라 좌표가 0과 1 사이로 정규화된 네 개의 모서리 점으로 바운딩 박스를 지정합니다. Ultralytics Platform annotation은 전용 회전 바운딩 박스 그리기 도구를 사용하여 OBB 레이블을 지원합니다:

class_index x1 y1 x2 y2 x3 y3 x4 y4

내부적으로 YOLO는 bounding box의 중심점(xy), 너비, 높이, 회전을 나타내는 xywhr 형식으로 손실과 출력을 처리합니다.

검증(Val)#

DOTA8 데이터셋에서 학습된 YOLO26n-obb 모델 accuracy를 검증합니다. model이 학습된 data 및 인자를 모델 속성으로 유지하므로 인자가 필요하지 않습니다.

예시
from ultralytics import YOLO

# Load a model
model = YOLO("yolo26n-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 containing mAP50-95(B) for each category
metrics.box.image_metrics  # per-image metrics dictionary with precision, recall, F1, TP, FP, and FN

추론(Predict)#

훈련된 YOLO26n-obb 모델을 사용하여 이미지에 대한 예측을 수행합니다.

예시
from ultralytics import YOLO

# Load a model
model = YOLO("yolo26n-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


Watch: How to Detect and Track Storage Tanks using Ultralytics YOLO-OBB | Oriented Bounding Boxes | DOTA

전체 predict 모드 세부 정보는 Predict 페이지에서 확인하세요.

결과 출력#

회전된 바운딩 박스 검출은 이미지당 하나의 Results 객체를 반환합니다. 주요 예측 필드는 result.obb이며, 이는 검출된 각 객체에 대한 회전된 박스, 클래스 ID, 신뢰도 점수를 포함합니다.

속성유형형태설명
result.obbOBB(N)회전된 박스(Oriented boxes)입니다.
result.obb.datatorch.float32(N,7/8)신뢰도/클래스를 포함한 원시 회전 박스입니다.
result.obb.xywhrtorch.float32(N,5)xywhr 회전된 박스.
result.obb.xyxyxyxytorch.float32(N,4,2)네 개의 모서리 점입니다.
result.obb.conftorch.float32(N,)신뢰도 점수입니다.

레이블은 긴 변 규칙으로 표준화되지만 예측은 그렇지 않으므로 result.obb.xywhr은 짧은 변에서 측정한 회전과 함께 h보다 작은 w을 보고할 수 있습니다. 두 형식 모두 동일한 직사각형을 설명하므로 어느 쪽이든 result.obb.xyxyxyxy이 올바릅니다. 다운스트림 코드에서 긴 변 형식이 필요할 때 모서리를 다시 변환하되, 박스 매개변수를 다시 작성하면 모서리 순서가 순환적으로 이동할 수 있음을 유념하세요:

from ultralytics.utils.ops import xyxyxyxy2xywhr

xywhr = xyxyxyxy2xywhr(result.obb.xyxyxyxy)  # w >= h, rotation in [-pi/4, 3pi/4)

모든 작업에 걸친 작업별 Results 필드는 Predict Results by Task 섹션을 참조하십시오.

내보내기(Export)#

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

예시
from ultralytics import YOLO

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

# Export the model
model.export(format="onnx")

사용 가능한 YOLO26-obb 내보내기 형식은 아래 표에 있습니다. format 인자(예: format='onnx' 또는 format='engine')를 사용하여 모든 형식으로 내보낼 수 있습니다. 내보낸 모델에 대해 직접 예측하거나 검증할 수 있습니다(예: yolo predict model=yolo26n-obb.onnx). 내보내기가 완료된 후 모델에 대한 사용 예시가 표시됩니다.

형식format 인수모델메타데이터인수
PyTorch-yolo26n-obb.pt-
TorchScripttorchscriptyolo26n-obb.torchscriptimgsz, quantize, dynamic, nms, batch, device
ONNXonnxyolo26n-obb.onnximgsz, quantize, dynamic, simplify, opset, nms, batch, data, fraction, device
OpenVINOopenvinoyolo26n-obb_openvino_model/imgsz, quantize, dynamic, nms, batch, data, fraction, device
TensorRTengineyolo26n-obb.engineimgsz, quantize, dynamic, simplify, opset, workspace, nms, batch, data, fraction, device
CoreMLcoremlyolo26n-obb.mlpackageimgsz, dynamic, quantize, nms, batch, device
TF SavedModelsaved_modelyolo26n-obb_saved_model/imgsz, keras, quantize, opset, nms, batch, data, fraction, device
TF GraphDefpbyolo26n-obb.pbimgsz, opset, batch, device
TF Edge TPUedgetpuyolo26n-obb_edgetpu.tfliteimgsz, quantize, opset, data, fraction, device
PaddlePaddlepaddleyolo26n-obb_paddle_model/imgsz, batch, device
MNNmnnyolo26n-obb.mnnimgsz, batch, dynamic, quantize, simplify, opset, nms, device
NCNNncnnyolo26n-obb_ncnn_model/imgsz, quantize, batch, device
IMX500imxyolo26n-obb_imx_model/imgsz, quantize, data, fraction, nms, device
RKNNrknnyolo26n-obb_rknn_model/imgsz, batch, name, quantize, simplify, opset, data, fraction, device
ExecuTorchexecutorchyolo26n-obb_executorch_model/imgsz, batch, device
Axeleraaxelerayolo26n-obb_axelera_model/imgsz, batch, quantize, data, fraction, device
DEEPXdeepxyolo26n-obb_deepx_model/imgsz, quantize, simplify, opset, data, optimize, device
Qualcomm QNNqnnyolo26n-obb_qnn.onnximgsz, batch, name, quantize, simplify, opset, data, fraction, device
LiteRTlitertyolo26n-obb.tfliteimgsz, quantize, batch, data, fraction, device
Hailohailoyolo26n-obb_hailo_model/imgsz, name, quantize, data, fraction, simplify, conf, iou
Huawei Ascendascendyolo26n-obb_ascend_model/imgsz, batch, name, quantize, opset, simplify, nms

전체 export 세부 정보는 Export 페이지에서 확인하세요.

실제 활용 사례#

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

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

이러한 응용 프로그램은 객체를 모든 각도에서 정확하게 맞추는 OBB의 기능으로 혜택을 보며, 기존의 경계 상자보다 더 정확한 탐지 성능을 제공합니다.

FAQ#

  • 회전된 바운딩 박스(OBB)에는 이미지 내 객체 현지화 정확도를 높이기 위한 추가 각도가 포함됩니다. 축에 정렬된 직사각형인 일반 바운딩 박스와 달리 OBB는 객체의 방향에 더 잘 맞도록 회전할 수 있습니다. 이는 항공 또는 위성 imagery(Dataset Guide)와 같이 정밀한 객체 배치가 필요한 애플리케이션에 특히 유용합니다.

  • 사용자 지정 데이터셋으로 YOLO26n-obb 모델을 훈련하려면 Python이나 CLI를 사용하여 아래 예제를 따르십시오.

    예시
    from ultralytics import YOLO
    
    # Load a pretrained model
    model = YOLO("yolo26n-obb.pt")
    
    # Train the model
    results = model.train(data="path/to/custom_dataset.yaml", epochs=100, imgsz=640)

    더 많은 학습 인자에 대해서는 Configuration 섹션을 확인하세요.

  • YOLO26-OBB 모델은 DOTAv1과 같은 데이터셋에서 사전 학습되지만, OBB용으로 포맷된 모든 데이터셋을 사용할 수 있습니다. OBB 데이터셋 형식에 대한 자세한 정보는 Dataset Guide에서 확인할 수 있습니다.

  • Python이나 CLI를 사용하여 YOLO26-OBB 모델을 ONNX 형식으로 내보내는 방법은 간단합니다.

    예시
    from ultralytics import YOLO
    
    # Load a model
    model = YOLO("yolo26n-obb.pt")
    
    # Export the model
    model.export(format="onnx")

    더 많은 내보내기 형식과 세부 정보는 Export 페이지를 참조하세요.

  • YOLO26n-obb 모델을 검증하려면 아래와 같이 Python 또는 CLI 명령어를 사용할 수 있습니다.

    예시
    from ultralytics import YOLO
    
    # Load a model
    model = YOLO("yolo26n-obb.pt")
    
    # Validate the model
    metrics = model.val(data="dota8.yaml")

    전체 검증 세부 정보는 Val 섹션을 참조하세요.

댓글