์ฝ˜ํ…์ธ ๋กœ ๊ฑด๋„ˆ๋›ฐ๊ธฐ

Oriented Bounding Boxes Object Detection

๋ฐฉํ–ฅ์„ฑ ๋ฌผ์ฒด ๊ฐ์ง€๋Š” ๋ฌผ์ฒด ๊ฐ์ง€๋ณด๋‹ค ํ•œ ๋‹จ๊ณ„ ๋” ๋‚˜์•„๊ฐ€ ์ด๋ฏธ์ง€์—์„œ ๋ฌผ์ฒด๋ฅผ ๋” ์ •ํ™•ํ•˜๊ฒŒ ์ฐพ์„ ์ˆ˜ ์žˆ๋„๋ก ์ถ”๊ฐ€ ๊ฐ๋„๋ฅผ ๋„์ž…ํ•ฉ๋‹ˆ๋‹ค.

๋ฐฉํ–ฅ์„ฑ ๊ฐ์ฒด ๊ฐ์ง€๊ธฐ์˜ ์ถœ๋ ฅ์€ ์ด๋ฏธ์ง€์—์„œ ๊ฐ์ฒด๋ฅผ ์ •ํ™•ํžˆ ๋‘˜๋Ÿฌ์‹ธ๋Š” ํšŒ์ „๋œ ๊ฒฝ๊ณ„ ์ƒ์ž ์ง‘ํ•ฉ๊ณผ ๊ฐ ์ƒ์ž์— ๋Œ€ํ•œ ํด๋ž˜์Šค ๋ ˆ์ด๋ธ” ๋ฐ ์‹ ๋ขฐ๋„ ์ ์ˆ˜๋กœ ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค. ๊ฐ์ฒด ๊ฐ์ง€๋Š” ์žฅ๋ฉด์—์„œ ๊ด€์‹ฌ ์žˆ๋Š” ๊ฐ์ฒด๋ฅผ ์‹๋ณ„ํ•ด์•ผ ํ•˜์ง€๋งŒ ๊ฐ์ฒด์˜ ์ •ํ™•ํ•œ ์œ„์น˜๋‚˜ ๋ชจ์–‘์„ ์ •ํ™•ํžˆ ์•Œ ํ•„์š”๋Š” ์—†๋Š” ๊ฒฝ์šฐ์— ์ ํ•ฉํ•œ ์„ ํƒ์ž…๋‹ˆ๋‹ค.

ํŒ

YOLO11 OBB models use the -obb ์ ‘๋ฏธ์‚ฌ, ์ฆ‰ yolo11n-obb.pt ์— ๋Œ€ํ•ด ์‚ฌ์ „ ๊ต์œก์„ ๋ฐ›์•˜์œผ๋ฉฐ DOTAv1.



Watch: Object Detection using Ultralytics YOLO Oriented Bounding Boxes (YOLO-OBB)

์‹œ๊ฐ์  ์ƒ˜ํ”Œ

OBB๋ฅผ ์‚ฌ์šฉํ•œ ์„ ๋ฐ• ๊ฐ์ง€ OBB๋ฅผ ์‚ฌ์šฉํ•œ ์ฐจ๋Ÿ‰ ๊ฐ์ง€
OBB๋ฅผ ์‚ฌ์šฉํ•œ ์„ ๋ฐ• ๊ฐ์ง€ OBB๋ฅผ ์‚ฌ์šฉํ•œ ์ฐจ๋Ÿ‰ ๊ฐ์ง€

๋ชจ๋ธ

YOLO11 pretrained OBB models are shown here, which are pretrained on the DOTAv1 dataset.

๋ชจ๋ธ์€ ์ฒ˜์Œ ์‚ฌ์šฉํ•  ๋•Œ ์ตœ์‹  Ultralytics ๋ฆด๋ฆฌ์Šค์—์„œ ์ž๋™์œผ๋กœ ๋‹ค์šด๋กœ๋“œ๋ฉ๋‹ˆ๋‹ค.

๋ชจ๋ธ ํฌ๊ธฐ
(ํ”ฝ์…€)
mAPtest
50
์†๋„
CPU ONNX
(ms)
Speed
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 ์ด๋ฏธ์ง€์— ๋Œ€ํ•œ ํ‰๊ท ๊ฐ’์„ Amazon EC2 P4d ์ธ์Šคํ„ด์Šค.
    ๋ณต์ œ ๋Œ€์ƒ yolo val obb data=DOTAv1.yaml batch=1 device=0|cpu

๊ธฐ์ฐจ

Train YOLO11n-obb on the dota8.yaml dataset for 100 epochs at image size 640. For a full list of available arguments see the ๊ตฌ์„ฑ ํŽ˜์ด์ง€๋กœ ์ด๋™ํ•ฉ๋‹ˆ๋‹ค.

์˜ˆ

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: How to Train Ultralytics YOLO-OBB (Oriented Bounding Boxes) Models on DOTA Dataset using Ultralytics HUB

๋ฐ์ดํ„ฐ ์ง‘ํ•ฉ ํ˜•์‹

OBB ๋ฐ์ดํ„ฐ์…‹ ํ˜•์‹์€ ๋ฐ์ดํ„ฐ์…‹ ๊ฐ€์ด๋“œ์—์„œ ์ž์„ธํžˆ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

Val

Validate trained YOLO11n-obb model accuracy on the DOTA8 dataset. No arguments are needed as the 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

์˜ˆ์ธก

Use a trained YOLO11n-obb model to run predictions on images.

์˜ˆ

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/bus.jpg")  # predict on an image
yolo obb predict model=yolo11n-obb.pt source='https://ultralytics.com/images/bus.jpg'  # predict with official model
yolo obb predict model=path/to/best.pt source='https://ultralytics.com/images/bus.jpg'  # predict with custom model



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

์ „์ฒด ๋ณด๊ธฐ predict ๋ชจ๋“œ ์„ธ๋ถ€ ์ •๋ณด์—์„œ ์˜ˆ์ธก ํŽ˜์ด์ง€๋กœ ์ด๋™ํ•ฉ๋‹ˆ๋‹ค.

๋‚ด๋ณด๋‚ด๊ธฐ

Export a YOLO11n-obb model to a different format like ONNX, CoreML, etc.

์˜ˆ

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

Available YOLO11-obb export formats are in the table below. You can export to any format using the 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
NCNN ncnn yolo11n-obb_ncnn_model/ โœ… imgsz, half, batch

์ „์ฒด ๋ณด๊ธฐ export ์„ธ๋ถ€ ์ •๋ณด์—์„œ ๋‚ด๋ณด๋‚ด๊ธฐ ํŽ˜์ด์ง€๋กœ ์ด๋™ํ•ฉ๋‹ˆ๋‹ค.

์ž์ฃผ ๋ฌป๋Š” ์งˆ๋ฌธ

OBB(์˜ค๋ฆฌ์—”ํ‹ฐ๋“œ ๋ฐ”์šด๋”ฉ ๋ฐ•์Šค)๋ž€ ๋ฌด์—‡์ด๋ฉฐ ์ผ๋ฐ˜ ๋ฐ”์šด๋”ฉ ๋ฐ•์Šค์™€ ์–ด๋–ป๊ฒŒ ๋‹ค๋ฅธ๊ฐ€์š”?

OBB(์˜ค๋ฆฌ์—”ํ‹ฐ๋“œ ๋ฐ”์šด๋”ฉ ๋ฐ•์Šค)๋Š” ์ด๋ฏธ์ง€์—์„œ ๊ฐ์ฒด์˜ ์œ„์น˜ ์ •ํ™•๋„๋ฅผ ๋†’์ด๊ธฐ ์œ„ํ•ด ์ถ”๊ฐ€ ๊ฐ๋„๋ฅผ ํฌํ•จํ•ฉ๋‹ˆ๋‹ค. ์ถ•์ด ์ •๋ ฌ๋œ ์ง์‚ฌ๊ฐํ˜•์ธ ์ผ๋ฐ˜ ๋ฐ”์šด๋”ฉ ๋ฐ•์Šค์™€ ๋‹ฌ๋ฆฌ OBB๋Š” ๊ฐ์ฒด์˜ ๋ฐฉํ–ฅ์— ๋” ์ž˜ ๋งž๋„๋ก ํšŒ์ „ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋Š” ํ•ญ๊ณต ๋˜๋Š” ์œ„์„ฑ ์ด๋ฏธ์ง€์™€ ๊ฐ™์ด ์ •ํ™•ํ•œ ๊ฐ์ฒด ๋ฐฐ์น˜๊ฐ€ ํ•„์š”ํ•œ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์— ํŠนํžˆ ์œ ์šฉํ•ฉ๋‹ˆ๋‹ค(๋ฐ์ดํ„ฐ ์„ธํŠธ ๊ฐ€์ด๋“œ).

How do I train a YOLO11n-obb model using a custom dataset?

To train a YOLO11n-obb model with a custom dataset, follow the example below using Python or 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

๋” ๋งŽ์€ ๊ต์œก ์ธ์ˆ˜๋ฅผ ํ™•์ธํ•˜๋ ค๋ฉด ๊ตฌ์„ฑ ์„น์…˜์„ ํ™•์ธํ•˜์„ธ์š”.

What datasets can I use for training YOLO11-OBB models?

YOLO11-OBB models are pretrained on datasets like DOTAv1 but you can use any dataset formatted for OBB. Detailed information on OBB dataset formats can be found in the Dataset Guide.

How can I export a YOLO11-OBB model to ONNX format?

Exporting a YOLO11-OBB model to ONNX format is straightforward using either Python or 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

๋‚ด๋ณด๋‚ด๊ธฐ ํ˜•์‹ ๋ฐ ์ž์„ธํ•œ ๋‚ด์šฉ์€ ๋‚ด๋ณด๋‚ด๊ธฐ ํŽ˜์ด์ง€๋ฅผ ์ฐธ์กฐํ•˜์„ธ์š”.

How do I validate the accuracy of a YOLO11n-obb model?

To validate a YOLO11n-obb model, you can use Python or CLI commands as shown below:

์˜ˆ

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 ์„น์…˜์—์„œ ์ „์ฒด ์œ ํšจ์„ฑ ๊ฒ€์‚ฌ ์„ธ๋ถ€ ์ •๋ณด๋ฅผ ํ™•์ธํ•˜์„ธ์š”.


9๊ฐœ์›” ์ „ ์ƒ์„ฑ๋จ โœ๏ธ ์—…๋ฐ์ดํŠธ๋จ 7์ผ ์ „

๋Œ“๊ธ€