์ธ์คํด์ค ์ธ๋ถํ
์ธ์คํด์ค ๋ถํ ์ ๊ฐ์ฒด ๊ฐ์ง๋ณด๋ค ํ ๋จ๊ณ ๋ ๋์๊ฐ ์ด๋ฏธ์ง์์ ๊ฐ๋ณ ๊ฐ์ฒด๋ฅผ ์๋ณํ๊ณ ๋๋จธ์ง ์ด๋ฏธ์ง์์ ๊ฐ์ฒด๋ฅผ ๋ถํ ํ๋ ์์ ์ ํฌํจํฉ๋๋ค.
์ธ์คํด์ค ๋ถํ ๋ชจ๋ธ์ ์ถ๋ ฅ์ ์ด๋ฏธ์ง์ ๊ฐ ๊ฐ์ฒด์ ๋ํ ํด๋์ค ๋ ์ด๋ธ ๋ฐ ์ ๋ขฐ ์ ์์ ํจ๊ป ๊ฐ ๊ฐ์ฒด์ ์ค๊ณฝ์ ๋ํ๋ด๋ ๋ง์คํฌ ๋๋ ์ค๊ณฝ์ ์งํฉ์ ๋๋ค. ์ธ์คํด์ค ์ธ๋ถํ๋ ์ด๋ฏธ์ง์์ ๊ฐ์ฒด์ ์์น๋ฟ๋ง ์๋๋ผ ์ ํํ ๋ชจ์์ ์์์ผ ํ ๋ ์ ์ฉํฉ๋๋ค.
Watch: Python ์์ ์ฌ์ ํ์ต๋ Ultralytics YOLOv8 ๋ชจ๋ธ๋ก ์ธ๋ถํ ์คํ .
ํ
YOLOv8 ์ธ๊ทธ๋จผํธ ๋ชจ๋ธ์ -seg
์ ๋ฏธ์ฌ, ์ฆ yolov8n-seg.pt
์ ๋ํด ์ฌ์ ๊ต์ก์ ๋ฐ์์ผ๋ฉฐ COCO.
๋ชจ๋ธ
YOLOv8 ์ฌ์ ํ์ต๋ ์ธ๊ทธ๋จผํธ ๋ชจ๋ธ์ด ์ฌ๊ธฐ์ ๋์ ์์ต๋๋ค. ๊ฐ์ง, ์ธ๊ทธ๋จผํธ ๋ฐ ํฌ์ฆ ๋ชจ๋ธ์ COCO ๋ฐ์ดํฐ ์ธํธ์์ ์ฌ์ ํ์ต๋ ๋ชจ๋ธ์ด๋ฉฐ, ๋ถ๋ฅ ๋ชจ๋ธ์ ImageNet ๋ฐ์ดํฐ ์ธํธ์์ ์ฌ์ ํ์ต๋ ๋ชจ๋ธ์ ๋๋ค.
๋ชจ๋ธ์ ์ฒ์ ์ฌ์ฉํ ๋ ์ต์ Ultralytics ๋ฆด๋ฆฌ์ค์์ ์๋์ผ๋ก ๋ค์ด๋ก๋๋ฉ๋๋ค.
๋ชจ๋ธ | ํฌ๊ธฐ (ํฝ์ ) |
mAPbox 50-95 |
mAPmask 50-95 |
์๋ CPU ONNX (ms) |
์๋ A100 TensorRT (ms) |
๋งค๊ฐ๋ณ์ (M) |
FLOPs (B) |
---|---|---|---|---|---|---|---|
YOLOv8n-seg | 640 | 36.7 | 30.5 | 96.1 | 1.21 | 3.4 | 12.6 |
YOLOv8s-seg | 640 | 44.6 | 36.8 | 155.7 | 1.47 | 11.8 | 42.6 |
YOLOv8m-seg | 640 | 49.9 | 40.8 | 317.0 | 2.18 | 27.3 | 110.2 |
YOLOv8l-seg | 640 | 52.3 | 42.6 | 572.4 | 2.79 | 46.0 | 220.5 |
YOLOv8x-seg | 640 | 53.4 | 43.4 | 712.1 | 4.02 | 71.8 | 344.1 |
- mAPval ๊ฐ์ ๋จ์ผ ๋ชจ๋ธ ๋จ์ผ ์ค์ผ์ผ์ ๋ํ ๊ฒ์
๋๋ค. COCO val2017 ๋ฐ์ดํฐ ์ธํธ.
๋ณต์ ๋์yolo val segment data=coco.yaml device=0
- ์๋ ๋ฅผ ์ฌ์ฉํ์ฌ COCO ๊ฐ ์ด๋ฏธ์ง์ ๋ํ ํ๊ท ์ ๊ตฌํฉ๋๋ค. Amazon EC2 P4d ์ธ์คํด์ค.
๋ณต์ ๋์yolo val segment data=coco8-seg.yaml batch=1 device=0|cpu
๊ธฐ์ฐจ
COCO128-seg ๋ฐ์ดํฐ ์ธํธ์์ ์ด๋ฏธ์ง ํฌ๊ธฐ 640์ผ๋ก 100๊ฐ ์ํฌํฌ์ ๋ํด YOLOv8n-seg๋ฅผ ํ๋ จํฉ๋๋ค. ์ฌ์ฉ ๊ฐ๋ฅํ ์ธ์์ ์ ์ฒด ๋ชฉ๋ก์ ๊ตฌ์ฑ ํ์ด์ง๋ฅผ ์ฐธ์กฐํ์ธ์.
์
from ultralytics import YOLO
# Load a model
model = YOLO('yolov8n-seg.yaml') # build a new model from YAML
model = YOLO('yolov8n-seg.pt') # load a pretrained model (recommended for training)
model = YOLO('yolov8n-seg.yaml').load('yolov8n.pt') # build from YAML and transfer weights
# Train the model
results = model.train(data='coco8-seg.yaml', epochs=100, imgsz=640)
# Build a new model from YAML and start training from scratch
yolo segment train data=coco8-seg.yaml model=yolov8n-seg.yaml epochs=100 imgsz=640
# Start training from a pretrained *.pt model
yolo segment train data=coco8-seg.yaml model=yolov8n-seg.pt epochs=100 imgsz=640
# Build a new model from YAML, transfer pretrained weights to it and start training
yolo segment train data=coco8-seg.yaml model=yolov8n-seg.yaml pretrained=yolov8n-seg.pt epochs=100 imgsz=640
๋ฐ์ดํฐ ์งํฉ ํ์
YOLO ์ธ๋ถํ ๋ฐ์ดํฐ ์ธํธ ํ์์ ๋ฐ์ดํฐ ์ธํธ ๊ฐ์ด๋์์ ์์ธํ ํ์ธํ ์ ์์ต๋๋ค. ๊ธฐ์กด ๋ฐ์ดํฐ์ ์ ๋ค๋ฅธ ํ์(์: COCO ๋ฑ)์์ YOLO ํ์์ผ๋ก ๋ณํํ๋ ค๋ฉด JSON2YOLO ๋๊ตฌ( Ultralytics)๋ฅผ ์ฌ์ฉํ์ธ์.
Val
COCO128-seg ๋ฐ์ดํฐ ์ธํธ์ ๋ํด ํ์ต๋ YOLOv8n-seg ๋ชจ๋ธ ์ ํ๋๋ฅผ ๊ฒ์ฆํฉ๋๋ค. ์ธ์๋ฅผ ์ ๋ฌํ ํ์๊ฐ ์์ต๋๋ค. model
๊ต์ก์ ์ ์งํฉ๋๋ค. data
๋ฐ ์ธ์๋ฅผ ๋ชจ๋ธ ์์ฑ์ผ๋ก ์ฌ์ฉํฉ๋๋ค.
์
from ultralytics import YOLO
# Load a model
model = YOLO('yolov8n-seg.pt') # load an official model
model = YOLO('path/to/best.pt') # load a custom model
# Validate the model
metrics = model.val() # 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
metrics.seg.map # map50-95(M)
metrics.seg.map50 # map50(M)
metrics.seg.map75 # map75(M)
metrics.seg.maps # a list contains map50-95(M) of each category
์์ธก
ํ์ต๋ YOLOv8n-seg ๋ชจ๋ธ์ ์ฌ์ฉํ์ฌ ์ด๋ฏธ์ง์ ๋ํ ์์ธก์ ์คํํฉ๋๋ค.
์
์ ์ฒด ๋ณด๊ธฐ predict
๋ชจ๋ ์ธ๋ถ ์ ๋ณด์์ ์์ธก ํ์ด์ง๋ก ์ด๋ํฉ๋๋ค.
๋ด๋ณด๋ด๊ธฐ
YOLOv8n-seg ๋ชจ๋ธ์ ONNX, CoreML ๋ฑ๊ณผ ๊ฐ์ ๋ค๋ฅธ ํ์์ผ๋ก ๋ด๋ณด๋ ๋๋ค.
์
์ฌ์ฉ ๊ฐ๋ฅํ YOLOv8-seg ๋ด๋ณด๋ด๊ธฐ ํ์์ ์๋ ํ์ ๋์ ์์ต๋๋ค. ๋ค์์ ์ฌ์ฉํ์ฌ ๋ชจ๋ ํ์์ผ๋ก ๋ด๋ณด๋ผ ์ ์์ต๋๋ค. format
์ธ์, ์ฆ format='onnx'
๋๋ format='engine'
. ๋ด๋ณด๋ธ ๋ชจ๋ธ์์ ์ง์ ์์ธกํ๊ฑฐ๋ ๊ฒ์ฆํ ์ ์์ต๋๋ค. yolo predict model=yolov8n-seg.onnx
. ๋ด๋ณด๋ด๊ธฐ๊ฐ ์๋ฃ๋ ํ ๋ชจ๋ธ์ ๋ํ ์ฌ์ฉ ์๊ฐ ํ์๋ฉ๋๋ค.
ํ์ | format ์ธ์ |
๋ชจ๋ธ | ๋ฉํ๋ฐ์ดํฐ | ์ธ์ |
---|---|---|---|---|
PyTorch | - | yolov8n-seg.pt |
โ | - |
TorchScript | torchscript |
yolov8n-seg.torchscript |
โ | imgsz , optimize , batch |
ONNX | onnx |
yolov8n-seg.onnx |
โ | imgsz , half , dynamic , simplify , opset , batch |
OpenVINO | openvino |
yolov8n-seg_openvino_model/ |
โ | imgsz , half , int8 , batch |
TensorRT | engine |
yolov8n-seg.engine |
โ | imgsz , half , dynamic , simplify , workspace , batch |
CoreML | coreml |
yolov8n-seg.mlpackage |
โ | imgsz , half , int8 , nms , batch |
TF SavedModel | saved_model |
yolov8n-seg_saved_model/ |
โ | imgsz , keras , int8 , batch |
TF GraphDef | pb |
yolov8n-seg.pb |
โ | imgsz , batch |
TF Lite | tflite |
yolov8n-seg.tflite |
โ | imgsz , half , int8 , batch |
TF Edge TPU | edgetpu |
yolov8n-seg_edgetpu.tflite |
โ | imgsz , batch |
TF.js | tfjs |
yolov8n-seg_web_model/ |
โ | imgsz , half , int8 , batch |
PaddlePaddle | paddle |
yolov8n-seg_paddle_model/ |
โ | imgsz , batch |
NCNN | ncnn |
yolov8n-seg_ncnn_model/ |
โ | imgsz , half , batch |
์ ์ฒด ๋ณด๊ธฐ export
์ธ๋ถ ์ ๋ณด์์ ๋ด๋ณด๋ด๊ธฐ ํ์ด์ง๋ก ์ด๋ํฉ๋๋ค.
์์ฑ 2023-11-12, ์ ๋ฐ์ดํธ 2024-04-27
์์ฑ์: glenn-jocher (14), Burhan-Q (1), Laughing-q (1), AyushExel (1)