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

๋ฐฉํ–ฅ์„ฑ ๋ฐ”์šด๋”ฉ ๋ฐ•์Šค ์˜ค๋ธŒ์ ํŠธ ๊ฐ์ง€

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

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

ํŒ

YOLOv8 OBB ๋ชจ๋ธ์€ -obb ์ ‘๋ฏธ์‚ฌ, ์ฆ‰ yolov8n-obb.pt ์— ๋Œ€ํ•œ ์‚ฌ์ „ ๊ต์œก์„ ๋ฐ›์•˜์œผ๋ฉฐ DOTAv1.



Watch: Ultralytics YOLOv8 ์˜ค๋ฆฌ์—”ํ‹ฐ๋“œ ๋ฐ”์šด๋”ฉ ๋ฐ•์Šค(YOLOv8-OBB)๋ฅผ ์‚ฌ์šฉํ•œ ๊ฐ์ฒด ๊ฐ์ง€

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

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

๋ชจ๋ธ

YOLOv8 DOTAv1 ๋ฐ์ดํ„ฐ ์„ธํŠธ์— ๋Œ€ํ•ด ์‚ฌ์ „ ํ•™์Šต๋œ OBB ๋ชจ๋ธ์ด ์—ฌ๊ธฐ์— ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค.

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

๋ชจ๋ธ ํฌ๊ธฐ
(ํ”ฝ์…€)
mAPtest
50
์†๋„
CPU ONNX
(ms)
์†๋„
A100 TensorRT
(ms)
params
(M)
FLOPs
(B)
YOLOv8n-obb 1024 78.0 204.77 3.57 3.1 23.3
YOLOv8s-obb 1024 79.5 424.88 4.07 11.4 76.3
YOLOv8m-obb 1024 80.5 763.48 7.61 26.4 208.6
YOLOv8l-obb 1024 80.7 1278.42 11.83 44.5 433.8
YOLOv8x-obb 1024 81.36 1759.10 13.23 69.5 676.7
  • mAPtest ๊ฐ’์€ ๋‹จ์ผ ๋ชจ๋ธ ๋‹ค์ค‘ ์Šค์ผ€์ผ์—์„œ DOTAv1 ํ…Œ์ŠคํŠธ ๋ฐ์ดํ„ฐ์„ธํŠธ.
    ๋ณต์ œ ๋Œ€์ƒ yolo val obb data=DOTAv1.yaml device=0 split=test ์„ ํด๋ฆญํ•˜๊ณ  ๋ณ‘ํ•ฉ๋œ ๊ฒฐ๊ณผ๋ฅผ ๋‹ค์Œ ์ฃผ์†Œ๋กœ ์ œ์ถœํ•ฉ๋‹ˆ๋‹ค. DOTA ํ‰๊ฐ€.
  • ์†๋„ ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ DOTAv1 ๊ฐ’ ์ด๋ฏธ์ง€์— ๋Œ€ํ•œ ํ‰๊ท ๊ฐ’์„ Amazon EC2 P4d ์ธ์Šคํ„ด์Šค์ž…๋‹ˆ๋‹ค.
    ๋ณต์ œ ๋Œ€์ƒ yolo val obb data=DOTAv1.yaml batch=1 device=0|cpu

๊ธฐ์ฐจ

๊ธฐ์ฐจ YOLOv8n-obb์—์„œ dota8.yaml ๋ฐ์ดํ„ฐ ์„ธํŠธ๋ฅผ ์ด๋ฏธ์ง€ ํฌ๊ธฐ 640์œผ๋กœ 100๊ฐœ์˜ ์—ํฌํฌ์— ๋Œ€ํ•ด ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ์ธ์ˆ˜์˜ ์ „์ฒด ๋ชฉ๋ก์€ ๊ตฌ์„ฑ ํŽ˜์ด์ง€๋กœ ์ด๋™ํ•ฉ๋‹ˆ๋‹ค.

์˜ˆ์ œ

from ultralytics import YOLO

# Load a model
model = YOLO('yolov8n-obb.yaml')  # build a new model from YAML
model = YOLO('yolov8n-obb.pt')  # load a pretrained model (recommended for training)
model = YOLO('yolov8n-obb.yaml').load('yolov8n.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=yolov8n-obb.yaml epochs=100 imgsz=640

# Start training from a pretrained *.pt model
yolo obb train data=dota8.yaml model=yolov8n-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=yolov8n-obb.yaml pretrained=yolov8n-obb.pt epochs=100 imgsz=640

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

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

Val

ํ•™์Šต๋œ YOLOv8n-obb ๋ชจ๋ธ ์ •ํ™•๋„๋ฅผ DOTA8 ๋ฐ์ดํ„ฐ ์„ธํŠธ์—์„œ ๊ฒ€์ฆํ•ฉ๋‹ˆ๋‹ค. ์ธ์ˆ˜๋ฅผ ์ „๋‹ฌํ•  ํ•„์š”๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค. model ๊ต์œก ์œ ์ง€ data ๋ฐ ์ธ์ˆ˜๋ฅผ ๋ชจ๋ธ ์†์„ฑ์œผ๋กœ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

์˜ˆ์ œ

from ultralytics import YOLO

# Load a model
model = YOLO('yolov8n-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=yolov8n-obb.pt data=dota8.yaml  # val official model
yolo obb val model=path/to/best.pt data=path/to/data.yaml  # val custom model

์˜ˆ์ธก

ํ•™์Šต๋œ YOLOv8n-obb ๋ชจ๋ธ์„ ์‚ฌ์šฉํ•˜์—ฌ ์ด๋ฏธ์ง€์— ๋Œ€ํ•œ ์˜ˆ์ธก์„ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค.

์˜ˆ์ œ

from ultralytics import YOLO

# Load a model
model = YOLO('yolov8n-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=yolov8n-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

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

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

YOLOv8n-obb ๋ชจ๋ธ์„ ONNX, CoreML ๋“ฑ๊ณผ ๊ฐ™์€ ๋‹ค๋ฅธ ํ˜•์‹์œผ๋กœ ๋‚ด๋ณด๋ƒ…๋‹ˆ๋‹ค.

์˜ˆ์ œ

from ultralytics import YOLO

# Load a model
model = YOLO('yolov8n-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=yolov8n-obb.pt format=onnx  # export official model
yolo export model=path/to/best.pt format=onnx  # export custom trained model

์‚ฌ์šฉ ๊ฐ€๋Šฅ YOLOv8-obb ๋‚ด๋ณด๋‚ด๊ธฐ ํ˜•์‹์€ ์•„๋ž˜ ํ‘œ์— ๋‚˜์™€ ์žˆ์Šต๋‹ˆ๋‹ค. ๋‚ด๋ณด๋‚ธ ๋ชจ๋ธ์—์„œ ์ง์ ‘ ์˜ˆ์ธกํ•˜๊ฑฐ๋‚˜ ๊ฒ€์ฆํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. yolo predict model=yolov8n-obb.onnx. ๋‚ด๋ณด๋‚ด๊ธฐ๊ฐ€ ์™„๋ฃŒ๋œ ํ›„ ๋ชจ๋ธ์— ๋Œ€ํ•œ ์‚ฌ์šฉ ์˜ˆ๊ฐ€ ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค.

ํ˜•์‹ format ์ธ์ˆ˜ ๋ชจ๋ธ ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ ์ธ์ˆ˜
PyTorch - yolov8n-obb.pt โœ… -
TorchScript torchscript yolov8n-obb.torchscript โœ… imgsz, optimize
ONNX onnx yolov8n-obb.onnx โœ… imgsz, half, dynamic, simplify, opset
OpenVINO openvino yolov8n-obb_openvino_model/ โœ… imgsz, half, int8
TensorRT engine yolov8n-obb.engine โœ… imgsz, half, dynamic, simplify, workspace
CoreML coreml yolov8n-obb.mlpackage โœ… imgsz, half, int8, nms
TF SavedModel saved_model yolov8n-obb_saved_model/ โœ… imgsz, keras
TF GraphDef pb yolov8n-obb.pb โŒ imgsz
TF Lite tflite yolov8n-obb.tflite โœ… imgsz, half, int8
TF Edge TPU edgetpu yolov8n-obb_edgetpu.tflite โœ… imgsz
TF.js tfjs yolov8n-obb_web_model/ โœ… imgsz, half, int8
PaddlePaddle paddle yolov8n-obb_paddle_model/ โœ… imgsz
NCNN ncnn yolov8n-obb_ncnn_model/ โœ… imgsz, half

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



์ƒ์„ฑ 2024-01-05, ์—…๋ฐ์ดํŠธ 2024-03-01
์ž‘์„ฑ์ž: glenn-jocher (11), Laughing-q (3), AyushExel (1)

๋Œ“๊ธ€