Π‘Π΅Π³ΠΌΠ΅Π½ΡΠ°ΡΠΈΡ ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡΠΎΠ²
Π‘Π΅Π³ΠΌΠ΅Π½ΡΠ°ΡΠΈΡ ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ² ΠΈΠ΄Π΅Ρ Π½Π° ΡΠ°Π³ Π΄Π°Π»ΡΡΠ΅, ΡΠ΅ΠΌ ΠΎΠ±Π½Π°ΡΡΠΆΠ΅Π½ΠΈΠ΅ ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ², ΠΈ Π²ΠΊΠ»ΡΡΠ°Π΅Ρ Π² ΡΠ΅Π±Ρ ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΈΡ ΠΎΡΠ΄Π΅Π»ΡΠ½ΡΡ ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ² Π½Π° ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠΈ ΠΈ ΠΈΡ ΡΠ΅Π³ΠΌΠ΅Π½ΡΠ°ΡΠΈΡ ΠΎΡ ΠΎΡΡΠ°Π»ΡΠ½ΠΎΠΉ ΡΠ°ΡΡΠΈ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ.
ΠΡΡ ΠΎΠ΄ ΠΌΠΎΠ΄Π΅Π»ΠΈ ΡΠ΅Π³ΠΌΠ΅Π½ΡΠ°ΡΠΈΠΈ ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡΠΎΠ² - ΡΡΠΎ Π½Π°Π±ΠΎΡ ΠΌΠ°ΡΠΎΠΊ ΠΈΠ»ΠΈ ΠΊΠΎΠ½ΡΡΡΠΎΠ², ΠΎΡΠ΅ΡΡΠΈΠ²Π°ΡΡΠΈΡ ΠΊΠ°ΠΆΠ΄ΡΠΉ ΠΎΠ±ΡΠ΅ΠΊΡ Π½Π° ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠΈ, Π° ΡΠ°ΠΊΠΆΠ΅ ΠΌΠ΅ΡΠΊΠΈ ΠΊΠ»Π°ΡΡΠΎΠ² ΠΈ Π±Π°Π»Π»Ρ Π΄ΠΎΠ²Π΅ΡΠΈΡ Π΄Π»Ρ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΎΠ±ΡΠ΅ΠΊΡΠ°. Π‘Π΅Π³ΠΌΠ΅Π½ΡΠ°ΡΠΈΡ ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡΠΎΠ² ΠΏΠΎΠ»Π΅Π·Π½Π°, ΠΊΠΎΠ³Π΄Π° ΡΠ΅Π±Π΅ Π½ΡΠΆΠ½ΠΎ Π·Π½Π°ΡΡ Π½Π΅ ΡΠΎΠ»ΡΠΊΠΎ ΠΌΠ΅ΡΡΠΎΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ² Π½Π° ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠΈ, Π½ΠΎ ΠΈ ΠΈΡ ΡΠΎΡΠ½ΡΡ ΡΠΎΡΠΌΡ.
Π‘ΠΌΠΎΡΡΠΈ: ΠΡΠΏΠΎΠ»Π½ΠΈ ΡΠ΅Π³ΠΌΠ΅Π½ΡΠ°ΡΠΈΡ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΠΏΡΠ΅Π΄Π²Π°ΡΠΈΡΠ΅Π»ΡΠ½ΠΎ ΠΎΠ±ΡΡΠ΅Π½Π½ΠΎΠΉ Ultralytics YOLOv8 ΠΌΠΎΠ΄Π΅Π»ΠΈ Π² Python.
ΠΠ°ΠΊΠΎΠ½Π΅ΡΠ½ΠΈΠΊ
YOLOv8 ΠΠΎΠ΄Π΅Π»ΠΈ ΡΠ΅Π³ΠΌΠ΅Π½ΡΠΎΠ² ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡ -seg
ΡΡΡΡΠΈΠΊΡ, ΡΠΎ Π΅ΡΡΡ yolov8n-seg.pt
ΠΈ ΠΏΡΠ΅Π΄Π²Π°ΡΠΈΡΠ΅Π»ΡΠ½ΠΎ ΠΎΠ±ΡΡΠ΅Π½Ρ Π½Π° COCO.
ΠΠΎΠ΄Π΅Π»ΠΈ
YOLOv8 ΠΠ΄Π΅ΡΡ ΠΏΠΎΠΊΠ°Π·Π°Π½Ρ ΠΏΡΠ΅Π΄Π²Π°ΡΠΈΡΠ΅Π»ΡΠ½ΠΎ ΠΎΠ±ΡΡΠ΅Π½Π½ΡΠ΅ ΠΌΠΎΠ΄Π΅Π»ΠΈ Segment. ΠΠΎΠ΄Π΅Π»ΠΈ Detect, Segment ΠΈ Pose Π±ΡΠ»ΠΈ ΠΏΡΠ΅Π΄Π²Π°ΡΠΈΡΠ΅Π»ΡΠ½ΠΎ ΠΎΠ±ΡΡΠ΅Π½Ρ Π½Π° Π½Π°Π±ΠΎΡΠ΅ Π΄Π°Π½Π½ΡΡ COCO, Π° ΠΌΠΎΠ΄Π΅Π»ΠΈ Classify - Π½Π° Π½Π°Π±ΠΎΡΠ΅ Π΄Π°Π½Π½ΡΡ ImageNet.
ΠΠΎΠ΄Π΅Π»ΠΈ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈ Π·Π°Π³ΡΡΠΆΠ°ΡΡΡΡ Ρ ΠΏΠΎΡΠ»Π΅Π΄Π½Π΅Π³ΠΎΡΠ΅Π»ΠΈΠ·Π° Ultralytics ΠΏΡΠΈ ΠΏΠ΅ΡΠ²ΠΎΠΌ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠΈ.
ΠΠΎΠ΄Π΅Π»Ρ | Π Π°Π·ΠΌΠ΅Ρ (ΠΏΠΈΠΊΡΠ΅Π»Π΅ΠΉ) |
mAPbox 50-95 |
mAPmask 50-95 |
Π‘ΠΊΠΎΡΠΎΡΡΡ CPU ONNX (ΠΌΡ) |
Π‘ΠΊΠΎΡΠΎΡΡΡ A100 TensorRT (ΠΌΡ) |
params (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 val Ρ ΠΏΠΎΠΌΠΎΡΡΡ Amazon EC2 P4d Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ.
Π Π°Π·ΠΌΠ½ΠΎΠΆΠ°ΠΉΡΡ Ρ ΠΏΠΎΠΌΠΎΡΡΡyolo val segment data=coco8-seg.yaml batch=1 device=0|cpu
ΠΠΎΠ΅Π·Π΄
ΠΠ±ΡΡΠΈ YOLOv8n-seg Π½Π° Π½Π°Π±ΠΎΡΠ΅ Π΄Π°Π½Π½ΡΡ COCO128-seg Π² ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ 100 ΡΠΏΠΎΡ ΠΏΡΠΈ ΡΠ°Π·ΠΌΠ΅ΡΠ΅ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ 640. ΠΠΎΠ»Π½ΡΠΉ ΡΠΏΠΈΡΠΎΠΊ Π΄ΠΎΡΡΡΠΏΠ½ΡΡ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠΎΠ² ΡΠΌΠΎΡΡΠΈ Π½Π° ΡΡΡΠ°Π½ΠΈΡΠ΅ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΈ.
ΠΡΠΈΠΌΠ΅Ρ
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.
ΠΡΠ»
ΠΡΠΎΠ²Π΅ΡΡ ΡΠΎΡΠ½ΠΎΡΡΡ ΠΎΠ±ΡΡΠ΅Π½Π½ΠΎΠΉ ΠΌΠΎΠ΄Π΅Π»ΠΈ YOLOv8n-seg Π½Π° Π½Π°Π±ΠΎΡΠ΅ Π΄Π°Π½Π½ΡΡ
COCO128-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 ΠΡΠ°ΠΉ 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)