Oriented Bounding Boxes Object Detection
방향이 지정된 객체 감지는 이미지에서 객체의 위치를 보다 정확하게 파악하기 위해 추가 각도를 도입하여 표준 객체 감지보다 한 단계 더 나아갑니다.
방향이 지정된 객체 감지기의 출력은 이미지 내 객체를 정확하게 둘러싸는 회전된 경계 상자 세트와 각 상자에 대한 클래스 레이블 및 신뢰도 점수입니다. 방향이 지정된 경계 상자는 객체가 다양한 각도로 나타나는 경우, 특히 기존의 축 정렬 경계 상자가 불필요한 배경을 포함할 수 있는 항공 이미지에서 유용합니다.
팁
YOLO11 OBB 모델은 다음을 사용합니다. -obb
접미사(예: yolo11n-obb.pt
에 대해 사전 훈련되었습니다. DOTAv1.
참고: Ultralytics YOLO를 사용한 경사 바운딩 박스(YOLO-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 섹션을 참조하십시오.