ΠŸΠ΅Ρ€Π΅ΠΉΡ‚ΠΈ ΠΊ содСрТимому

БСгмСнтация экзСмпляров

ΠŸΡ€ΠΈΠΌΠ΅Ρ€Ρ‹ сСгмСнтации экзСмпляров

БСгмСнтация ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² ΠΈΠ΄Π΅Ρ‚ Π½Π° шаг дальшС, Ρ‡Π΅ΠΌ ΠΎΠ±Π½Π°Ρ€ΡƒΠΆΠ΅Π½ΠΈΠ΅ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ², ΠΈ Π²ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ Π² сСбя ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΡŽ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹Ρ… ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² Π½Π° ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠΈ ΠΈ ΠΈΡ… ΡΠ΅Π³ΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΡŽ ΠΎΡ‚ ΠΎΡΡ‚Π°Π»ΡŒΠ½ΠΎΠΉ части изобраТСния.

Π’Ρ‹Ρ…ΠΎΠ΄ ΠΌΠΎΠ΄Π΅Π»ΠΈ сСгмСнтации экзСмпляров - это Π½Π°Π±ΠΎΡ€ масок ΠΈΠ»ΠΈ ΠΊΠΎΠ½Ρ‚ΡƒΡ€ΠΎΠ², ΠΎΡ‡Π΅Ρ€Ρ‡ΠΈΠ²Π°ΡŽΡ‰ΠΈΡ… ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ Π½Π° ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠΈ, Π° Ρ‚Π°ΠΊΠΆΠ΅ ΠΌΠ΅Ρ‚ΠΊΠΈ классов ΠΈ Π±Π°Π»Π»Ρ‹ довСрия для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°. БСгмСнтация экзСмпляров ΠΏΠΎΠ»Π΅Π·Π½Π°, ΠΊΠΎΠ³Π΄Π° Ρ‚Π΅Π±Π΅ Π½ΡƒΠΆΠ½ΠΎ Π·Π½Π°Ρ‚ΡŒ Π½Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ мСстополоТСниС ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² Π½Π° ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠΈ, Π½ΠΎ ΠΈ ΠΈΡ… Ρ‚ΠΎΡ‡Π½ΡƒΡŽ Ρ„ΠΎΡ€ΠΌΡƒ.



Π‘ΠΌΠΎΡ‚Ρ€ΠΈ: Π’Ρ‹ΠΏΠΎΠ»Π½ΠΈ ΡΠ΅Π³ΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΡŽ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΏΡ€Π΅Π΄Π²Π°Ρ€ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΠΎΠ±ΡƒΡ‡Π΅Π½Π½ΠΎΠΉ 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
yolo segment val model=yolov8n-seg.pt  # val official model
yolo segment val model=path/to/best.pt  # val custom model

ΠŸΡ€Π΅Π΄ΡΠΊΠ°Π·Ρ‹Π²Π°ΠΉ

Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉ ΠΎΠ±ΡƒΡ‡Π΅Π½Π½ΡƒΡŽ модСль YOLOv8n-seg для выполнСния прСдсказаний Π½Π° изобраТСниях.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€

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

# Predict with the model
results = model('https://ultralytics.com/images/bus.jpg')  # predict on an image
yolo segment predict model=yolov8n-seg.pt source='https://ultralytics.com/images/bus.jpg'  # predict with official model
yolo segment predict model=path/to/best.pt source='https://ultralytics.com/images/bus.jpg'  # predict with custom model

Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ predict ΠŸΠΎΠ΄Ρ€ΠΎΠ±Π½ΠΎΡΡ‚ΠΈ ΠΎ Ρ€Π΅ΠΆΠΈΠΌΠ΅ Π² ΠŸΡ€Π΅Π΄ΡΠΊΠ°Π·Ρ‹Π²Π°ΠΉ Π‘Ρ‚Ρ€Π°Π½ΠΈΡ†Π°.

Экспорт

Экспортируй модСль YOLOv8n-seg Π² Π΄Ρ€ΡƒΠ³ΠΎΠΉ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ ONNX, CoreML, ΠΈ Ρ‚.Π΄.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€

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 trained model

# Export the model
model.export(format='onnx')
yolo export model=yolov8n-seg.pt format=onnx  # export official model
yolo export model=path/to/best.pt format=onnx  # export custom trained model

ДоступныС Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Ρ‹ экспорта 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)

ΠšΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΈ