μ½˜ν…μΈ λ‘œ κ±΄λ„ˆλ›°κΈ°

μ˜€λ¦¬μ—”ν‹°λ“œ λ°”μš΄λ”© λ°•μŠ€ 였브젝트 감지

λ°©ν–₯μ„± 물체 κ°μ§€λŠ” 물체 감지보닀 ν•œ 단계 더 λ‚˜μ•„κ°€ μ΄λ―Έμ§€μ—μ„œ 물체λ₯Ό 더 μ •ν™•ν•˜κ²Œ 찾을 수 μžˆλ„λ‘ μΆ”κ°€ 각도λ₯Ό λ„μž…ν•©λ‹ˆλ‹€.

λ°©ν–₯μ„± 객체 κ°μ§€κΈ°μ˜ 좜λ ₯은 μ΄λ―Έμ§€μ—μ„œ 객체λ₯Ό μ •ν™•νžˆ λ‘˜λŸ¬μ‹ΈλŠ” νšŒμ „λœ 경계 μƒμž 집합과 각 μƒμžμ— λŒ€ν•œ 클래슀 λ ˆμ΄λΈ” 및 신뒰도 점수둜 ν‘œμ‹œλ©λ‹ˆλ‹€. 객체 κ°μ§€λŠ” μž₯λ©΄μ—μ„œ 관심 μžˆλŠ” 객체λ₯Ό 식별해야 ν•˜μ§€λ§Œ 객체의 μ •ν™•ν•œ μœ„μΉ˜λ‚˜ λͺ¨μ–‘을 μ •ν™•νžˆ μ•Œ ν•„μš”λŠ” μ—†λŠ” κ²½μš°μ— μ ν•©ν•œ μ„ νƒμž…λ‹ˆλ‹€.

팁

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 데이터셋 ν˜•μ‹μ€ 데이터셋 κ°€μ΄λ“œμ—μ„œ μžμ„Ένžˆ 확인할 수 μžˆμŠ΅λ‹ˆλ‹€.

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
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, batch
ONNX onnx yolo11n-obb.onnx βœ… imgsz, half, dynamic, simplify, opset, batch
OpenVINO openvino yolo11n-obb_openvino_model/ βœ… imgsz, half, int8, batch
TensorRT engine yolo11n-obb.engine βœ… imgsz, half, dynamic, simplify, workspace, int8, batch
CoreML coreml yolo11n-obb.mlpackage βœ… imgsz, half, int8, nms, batch
TF SavedModel saved_model yolo11n-obb_saved_model/ βœ… imgsz, keras, int8, batch
TF GraphDef pb yolo11n-obb.pb ❌ imgsz, batch
TF Lite tflite yolo11n-obb.tflite βœ… imgsz, half, int8, batch
TF Edge TPU edgetpu yolo11n-obb_edgetpu.tflite βœ… imgsz
TF.js tfjs yolo11n-obb_web_model/ βœ… imgsz, half, int8, 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

전체 보기 export μ„ΈλΆ€ μ •λ³΄μ—μ„œ 내보내기 νŽ˜μ΄μ§€λ‘œ μ΄λ™ν•©λ‹ˆλ‹€.

자주 λ¬»λŠ” 질문

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 μ„Ήμ…˜μ—μ„œ 전체 μœ νš¨μ„± 검사 μ„ΈλΆ€ 정보λ₯Ό ν™•μΈν•˜μ„Έμš”.

10κ°œμ›” μ „ 생성됨 ✏️ μ—…λ°μ΄νŠΈλ¨ 27일 μ „

λŒ“κΈ€