콘텐츠로 건너뛰기

오리엔티드 바운딩 박스 오브젝트 감지

방향성 물체 감지는 이미지에서 물체를 더 정확하게 찾을 수 있도록 추가 각도를 도입하여 표준 물체 감지보다 한 단계 더 발전한 기능입니다.

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

YOLO11 OBB 모델은 -obb 접미사, 즉 yolo11n-obb.pt 에 대해 사전 교육을 받았으며 DOTAv1.



Watch: Ultralytics YOLO 오리엔티드 바운딩 박스(YOLO-OBB)를 사용한 객체 감지

시각적 샘플

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

모델

YOLO11 DOTAv1 데이터 세트에서 사전 학습된 OBB 모델이 여기에 나와 있습니다.

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

모델 크기
(픽셀)
mAPtest
50
속도
CPU ONNX
(ms)
속도
T4TensorRT10
(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 이미지에 대한 평균값을 Amazon EC2 P4d 인스턴스입니다.
    복제 대상 yolo val obb data=DOTAv1.yaml batch=1 device=0|cpu

기차

이미지 크기 640으로 100개의 에포크에 대해 DOTA8 데이터 세트에서 YOLO11n-obb를 훈련합니다. 사용 가능한 인수의 전체 목록은 구성 페이지를 참조하세요.

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



Watch: Ultralytics YOLO -OBB(오리엔티드 바운딩 박스) 모델을 DOTA 데이터셋에서 훈련하는 방법 Ultralytics HUB 사용

데이터 집합 형식

OBB 데이터 세트 형식은 데이터 세트 가이드에서 자세히 확인할 수 있습니다. YOLO OBB 형식은 이 구조에 따라 0에서 1 사이로 정규화된 좌표를 사용하여 네 모서리 점으로 바운딩 박스를 지정합니다:

class_index x1 y1 x2 y2 x3 y3 x4 y4

내부적으로는 YOLO 에서 손실 및 출력을 처리합니다. xywhr 형식을 나타내는 바운딩 박스의 중심점(xy), 너비, 높이 및 회전.

Val

학습된 YOLO11n-obb 모델 검증하기 정확성 로 설정할 수 있습니다. 인수가 필요하지 않으므로 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.keypoints.xy  # 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



Watch: Ultralytics YOLO -OBB | 오리엔티드 바운딩 박스 | DOTA를 사용하여 저장 탱크를 감지하고 추적하는 방법

전체 보기 predict 모드 세부 정보에서 예측 페이지로 이동합니다.

내보내기

ONNX, CoreML 등과 같은 다른 형식으로 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 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, optimize, nms, batch
ONNX onnx yolo11n-obb.onnx imgsz, half, dynamic, simplify, opset, nms, batch
OpenVINO openvino yolo11n-obb_openvino_model/ imgsz, half, dynamic, int8, nms, batch, data
TensorRT engine yolo11n-obb.engine imgsz, half, dynamic, simplify, workspace, int8, nms, batch, data
CoreML coreml yolo11n-obb.mlpackage imgsz, half, int8, nms, batch
TF SavedModel saved_model yolo11n-obb_saved_model/ imgsz, keras, int8, nms, batch
TF GraphDef pb yolo11n-obb.pb imgsz, batch
TF Lite tflite yolo11n-obb.tflite imgsz, half, int8, nms, batch, data
TF Edge TPU edgetpu yolo11n-obb_edgetpu.tflite imgsz
TF.js tfjs yolo11n-obb_web_model/ imgsz, half, int8, nms, batch
PaddlePaddle paddle yolo11n-obb_paddle_model/ imgsz, batch
MNN mnn yolo11n-obb.mnn imgsz, batch, int8, half
NCNN ncnn yolo11n-obb_ncnn_model/ imgsz, half, batch
IMX500 imx yolo11n-obb_imx_model/ imgsz, int8, data
RKNN rknn yolo11n-obb_rknn_model/ imgsz, batch, name

전체 보기 export 세부 정보에서 내보내기 페이지로 이동합니다.

실제 애플리케이션

YOLO11 이용한 OBB 감지는 다양한 산업 분야에서 실용적으로 활용되고 있습니다:

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

이러한 애플리케이션은 어떤 각도에서도 오브젝트를 정확하게 맞출 수 있어 기존 바운딩 박스보다 더 정확한 감지 기능을 제공하는 OBB의 이점을 활용할 수 있습니다.

자주 묻는 질문

OBB(오리엔티드 바운딩 박스)란 무엇이며 일반 바운딩 박스와 어떻게 다른가요?

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 형식으로 내보내려면 어떻게 해야 하나요?

YOLO11-OBB 모델을 ONNX 형식으로 내보내는 방법은 Python 또는 CLI 을 사용하여 간단하게 수행할 수 있습니다:

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 모델의 정확성을 어떻게 검증하나요?

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

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 년 전 생성됨 ✏️ 1 일 전 업데이트됨

댓글