Meet YOLO26: next-gen vision AI.

회전된 경계 상자 객체 탐지

회전된 객체 탐지는 이미지 내 객체를 더 정확하게 찾기 위해 추가적인 각도를 도입함으로써 표준 객체 탐지보다 한 단계 더 나아갑니다.

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

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



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

시각적 샘플

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

모델

여기에 DOTAv1 데이터셋으로 사전 훈련된 YOLO26 사전 훈련 OBB 모델들이 표시되어 있습니다.

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

모델크기
(픽셀)
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 평가에 제출하십시오.
  • 속도Amazon EC2 P4d 인스턴스를 사용하여 DOTAv1 val 이미지에서 평균을 낸 값입니다.
    yolo val obb data=DOTAv1.yaml batch=1 device=0|cpu를 실행하여 재현하십시오.
  • 파라미터FLOPs 값은 model.fuse() 후 융합된 모델 기준입니다. 이는 Conv 레이어와 BatchNorm 레이어를 병합하며, end2end 모델의 경우 보조적인 일대다(one-to-many) 감지 헤드를 제거합니다. 사전 학습된 체크포인트는 전체 학습 아키텍처를 유지하므로 더 높은 수치를 보일 수 있습니다.

학습(Train)

DOTA8 데이터셋에서 이미지 크기 640으로 100 에폭 동안 YOLO26n-obb를 훈련하십시오. 사용 가능한 인수의 전체 목록은 구성 페이지를 참조하십시오.

참고

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

예시
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 데이터셋 형식에 대한 자세한 내용은 데이터셋 가이드에서 확인할 수 있습니다. YOLO OBB 형식은 이 구조에 따라 0과 1 사이로 정규화된 좌표를 가진 4개의 모서리 지점으로 경계 상자를 지정합니다. Ultralytics 플랫폼은 전용 회전된 경계 상자 그리기 도구로 OBB 주석을 지원합니다:

class_index x1 y1 x2 y2 x3 y3 x4 y4

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

검증(Val)

Validate trained YOLO26n-obb model accuracy on the DOTA8 dataset. No arguments are needed as the model retains its training data and arguments as model attributes.

예시
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

예측

훈련된 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 및 신뢰도 점수가 포함되어 있습니다.

속성유형형태 (Shape)설명
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)4개의 모서리 포인트.
result.obb.conftorch.float32(N,)신뢰도 점수입니다.

모든 작업 전반에 걸친 작업별 Results 필드에 대해서는 작업별 예측 결과 섹션을 참조하십시오.

내보내기(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, half, dynamic, optimize, nms, batch, device
ONNXonnxyolo26n-obb.onnximgsz, half, dynamic, simplify, opset, nms, batch, device
OpenVINOopenvinoyolo26n-obb_openvino_model/imgsz, half, dynamic, int8, nms, batch, data, fraction, device
TensorRTengineyolo26n-obb.engineimgsz, half, dynamic, simplify, workspace, int8, nms, batch, data, fraction, device
CoreMLcoremlyolo26n-obb.mlpackageimgsz, dynamic, half, int8, nms, batch, device
TF SavedModelsaved_modelyolo26n-obb_saved_model/imgsz, keras, int8, nms, batch, data, fraction, device
TF GraphDefpbyolo26n-obb.pbimgsz, batch, device
TF Litetfliteyolo26n-obb.tfliteimgsz, half, int8, nms, batch, data, fraction, device
TF Edge TPUedgetpuyolo26n-obb_edgetpu.tfliteimgsz, int8, data, fraction, device
TF.jstfjsyolo26n-obb_web_model/imgsz, half, int8, nms, batch, data, fraction, device
PaddlePaddlepaddleyolo26n-obb_paddle_model/imgsz, batch, device
MNNmnnyolo26n-obb.mnnimgsz, batch, int8, half, device
NCNNncnnyolo26n-obb_ncnn_model/imgsz, half, batch, device
IMX500imxyolo26n-obb_imx_model/imgsz, int8, data, fraction, nms, device
RKNNrknnyolo26n-obb_rknn_model/imgsz, batch, name, device
ExecuTorchexecutorchyolo26n-obb_executorch_model/imgsz, batch, device
Axeleraaxelerayolo26n-obb_axelera_model/imgsz, batch, int8, data, fraction, device
DeepXdeepxyolo26n-obb_deepx_model/imgsz, int8, data, optimize, device

전체 export 세부 정보는 Export 페이지를 참조하십시오.

실제 응용 분야

YOLO26을 사용한 OBB 탐지는 다양한 산업 전반에서 수많은 실용적인 응용 분야를 가지고 있습니다:

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

이러한 응용 분야는 임의의 각도에서 객체를 정밀하게 맞추는 OBB의 기능 덕분에 기존 경계 상자보다 더 정확한 탐지 결과를 제공합니다.

FAQ

회전된 경계 상자(OBB)란 무엇이며 일반 경계 상자와 어떻게 다른가요?

회전된 경계 상자(OBB)는 이미지 내 객체 위치 정확도를 높이기 위해 추가적인 각도를 포함합니다. 축 정렬 사각형인 일반 경계 상자와 달리, OBB는 객체의 방향에 맞게 회전할 수 있습니다. 이는 항공 또는 위성 이미지와 같이 정밀한 객체 배치가 필요한 응용 분야에 특히 유용합니다(데이터셋 가이드).

사용자 지정 데이터셋을 사용하여 YOLO26n-obb 모델을 어떻게 훈련하나요?

사용자 지정 데이터셋으로 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)

더 많은 훈련 인수는 구성 섹션을 확인하십시오.

YOLO26-OBB 모델 훈련에는 어떤 데이터셋을 사용할 수 있나요?

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

YOLO26-OBB 모델을 ONNX 형식으로 어떻게 내보내나요?

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

예시
from ultralytics import YOLO

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

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

더 많은 내보내기 형식과 세부 사항은 내보내기 페이지를 참조하십시오.

YOLO26n-obb 모델의 정확도는 어떻게 검증하나요?

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 섹션을 참조하십시오.

댓글