рд╕рд╛рдордЧреНрд░реА рдкрд░ рдЬрд╛рдПрдВ

рдЯреАрдлрд╝реНрд▓рд╛рдЗрдЯ, ONNX, CoreML, TensorRT рдирд┐рд░реНрдпрд╛рддрд┐рдд рдорд╛рд▓

ЁЯУЪ рдпрд╣ рдорд╛рд░реНрдЧрджрд░реНрд╢рд┐рдХрд╛ рдмрддрд╛рддреА рд╣реИ рдХрд┐ рдкреНрд░рд╢рд┐рдХреНрд╖рд┐рдд рдХреЛ рдХреИрд╕реЗ рдирд┐рд░реНрдпрд╛рдд рдХрд┐рдпрд╛ рдЬрд╛рдП YOLOv5 ЁЯЪА рд╕реЗ рдореЙрдбрд▓ PyTorch рддрдХ ONNX рдФрд░ TorchScript рд╕реНрд╡рд░реВрдкреЛрдВред

рд╢реБрд░реВ рдХрд░рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ

рд░реЗрдкреЛ рдХреЛ рдХреНрд▓реЛрди рдХрд░реЗрдВ рдФрд░ requirements.txt рдХреЛ рдПрдХ рдореЗрдВ рд╕реНрдерд╛рдкрд┐рдд рдХрд░реЗрдВ Python> = 3.8.0 рдкрд░реНрдпрд╛рд╡рд░рдг, рд╕рд╣рд┐рдд PyTorch>=1.8ред рдореЙрдбрд▓ рдФрд░ рдбреЗрдЯрд╛рд╕реЗрдЯ рдирд╡реАрдирддрдо рд╕реЗ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рдбрд╛рдЙрдирд▓реЛрдб рд╣реЛрддреЗ рд╣реИрдВ YOLOv5 рд░рд┐рд▓реАрдЬред

git clone https://github.com/ultralytics/yolov5  # clone
cd yolov5
pip install -r requirements.txt  # install

рдХреЗ рд▓рд┐рдП TensorRT рдирд┐рд░реНрдпрд╛рдд рдЙрджрд╛рд╣рд░рдг (GPU рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ) рд╣рдорд╛рд░рд╛ Colab рджреЗрдЦреЗрдВ рдиреЛрдЯрдмреБрдХ рдкрд░рд┐рд╢рд┐рд╖реНрдЯ рдЕрдиреБрднрд╛рдЧред Colab рдореЗрдВ рдЦреЛрд▓реЗрдВ

рд╕реНрд╡рд░реВрдкреЛрдВ

YOLOv5 рдЕрдиреБрдорд╛рди рдЖрдзрд┐рдХрд╛рд░рд┐рдХ рддреМрд░ рдкрд░ 11 рдкреНрд░рд╛рд░реВрдкреЛрдВ рдореЗрдВ рд╕рдорд░реНрдерд┐рдд рд╣реИ:

ЁЯТб рдкреНрд░реЛ рдЯрд┐рдк: рдирд┐рд░реНрдпрд╛рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП ONNX рдирд╣реАрдВ рддреЛ OpenVINO 3x CPU рд╕реНрдкреАрдбрдЕрдк рддрдХред рд╕реАрдкреАрдпреВ рдмреЗрдВрдЪрдорд╛рд░реНрдХ рджреЗрдЦреЗрдВред ЁЯТб рдкреНрд░реЛ рдЯрд┐рдк: рдирд┐рд░реНрдпрд╛рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП TensorRT 5x GPU рд╕реНрдкреАрдбрдЕрдк рддрдХред GPU рдмреЗрдВрдЪрдорд╛рд░реНрдХ рджреЗрдЦреЗрдВред

рдкреНрд░рд╛рд░реВрдк export.py --include рдХреЛ рдЧрдврд╝рдирд╛
PyTorch - yolov5s.pt
TorchScript torchscript yolov5s.torchscript
ONNX onnx yolov5s.onnx
OpenVINO openvino yolov5s_openvino_model/
TensorRT engine yolov5s.engine
CoreML coreml yolov5s.mlmodel
TensorFlow SavedModel saved_model yolov5s_saved_model/
TensorFlow GraphDef pb yolov5s.pb
TensorFlow рд▓рд╛рдЗрдЯ tflite yolov5s.tflite
TensorFlow рдХрд┐рдирд╛рд░рд╛ TPU edgetpu yolov5s_edgetpu.tflite
TensorFlowредрдЬреЗ рдПрд╕ tfjs yolov5s_web_model/
PaddlePaddle paddle yolov5s_paddle_model/

рдорд╛рдирдХ

рдиреАрдЪреЗ рджрд┐рдП рдЧрдП рдмреЗрдВрдЪрдорд╛рд░реНрдХ Colab Pro рдкрд░ рдЪрд▓рддреЗ рд╣реИрдВ YOLOv5 рдЯреНрдпреВрдЯреЛрд░рд┐рдпрд▓ рдиреЛрдЯрдмреБрдХ Colab рдореЗрдВ рдЦреЛрд▓реЗрдВ. рдкреНрд░рдЬрдирди рдХрд░рдирд╛:

python benchmarks.py --weights yolov5s.pt --imgsz 640 --device 0

Colab Pro V100 GPU

benchmarks: weights=/content/yolov5/yolov5s.pt, imgsz=640, batch_size=1, data=/content/yolov5/data/coco128.yaml, device=0, half=False, test=False
Checking setup...
YOLOv5 ЁЯЪА v6.1-135-g7926afc torch 1.10.0+cu111 CUDA:0 (Tesla V100-SXM2-16GB, 16160MiB)
Setup complete тЬЕ (8 CPUs, 51.0 GB RAM, 46.7/166.8 GB disk)

Benchmarks complete (458.07s)
                   Format  mAP@0.5:0.95  Inference time (ms)
0                 PyTorch        0.4623                10.19
1             TorchScript        0.4623                 6.85
2                    ONNX        0.4623                14.63
3                OpenVINO           NaN                  NaN
4                TensorRT        0.4617                 1.89
5                  CoreML           NaN                  NaN
6   TensorFlow SavedModel        0.4623                21.28
7     TensorFlow GraphDef        0.4623                21.22
8         TensorFlow Lite           NaN                  NaN
9     TensorFlow Edge TPU           NaN                  NaN
10          TensorFlow.js           NaN                  NaN

рдХреЛрд▓рд╛рдм рдкреНрд░реЛ рд╕реАрдкреАрдпреВ

benchmarks: weights=/content/yolov5/yolov5s.pt, imgsz=640, batch_size=1, data=/content/yolov5/data/coco128.yaml, device=cpu, half=False, test=False
Checking setup...
YOLOv5 ЁЯЪА v6.1-135-g7926afc torch 1.10.0+cu111 CPU
Setup complete тЬЕ (8 CPUs, 51.0 GB RAM, 41.5/166.8 GB disk)

Benchmarks complete (241.20s)
                   Format  mAP@0.5:0.95  Inference time (ms)
0                 PyTorch        0.4623               127.61
1             TorchScript        0.4623               131.23
2                    ONNX        0.4623                69.34
3                OpenVINO        0.4623                66.52
4                TensorRT           NaN                  NaN
5                  CoreML           NaN                  NaN
6   TensorFlow SavedModel        0.4623               123.79
7     TensorFlow GraphDef        0.4623               121.57
8         TensorFlow Lite        0.4623               316.61
9     TensorFlow Edge TPU           NaN                  NaN
10          TensorFlow.js           NaN                  NaN

рдПрдХ рдкреНрд░рд╢рд┐рдХреНрд╖рд┐рдд рдирд┐рд░реНрдпрд╛рдд рдХрд░реЗрдВ YOLOv5 рдХреЛ рдЧрдврд╝рдирд╛

рдпрд╣ рдХрдорд╛рдВрдб рдПрдХ рдкреВрд░реНрд╡-рдкреНрд░рд╢рд┐рдХреНрд╖рд┐рдд YOLOv5s рдореЙрдбрд▓ рдХреЛ рдирд┐рд░реНрдпрд╛рдд рдХрд░рддрд╛ рд╣реИ TorchScript рдФрд░ ONNX рд╕реНрд╡рд░реВрдкреЛрдВред yolov5s.pt 'рдЫреЛрдЯрд╛' рдореЙрдбрд▓ рд╣реИ, рджреВрд╕рд░рд╛ рд╕рдмрд╕реЗ рдЫреЛрдЯрд╛ рдореЙрдбрд▓ рдЙрдкрд▓рдмреНрдз рд╣реИред рдЕрдиреНрдп рд╡рд┐рдХрд▓реНрдк рд╣реИрдВ yolov5n.pt, yolov5m.pt, yolov5l.pt рдФрд░ yolov5x.pt, рдЙрдирдХреЗ рдкреА 6 рд╕рдордХрдХреНрд╖реЛрдВ рдХреЗ рд╕рд╛рде рдЕрд░реНрдерд╛рддреН yolov5s6.pt рдпрд╛ рдЖрдк рдХрд╕реНрдЯрдо рдкреНрд░рд╢рд┐рдХреНрд╖рдг рдЪреЗрдХрдкреЙрдЗрдВрдЯ рдпрд╛рдиреА runs/exp/weights/best.pt. рд╕рднреА рдЙрдкрд▓рдмреНрдз рдореЙрдбрд▓реЛрдВ рдХреЗ рд╡рд┐рд╡рд░рдг рдХреЗ рд▓рд┐рдП рдХреГрдкрдпрд╛ рд╣рдорд╛рд░рд╛ README рджреЗрдЦреЗрдВ рд╕рд╛рд░рдгреА.

python export.py --weights yolov5s.pt --include torchscript onnx

ЁЯТб рдкреНрд░реЛ рдЯрд┐рдк: рдЬреЛрдбрд╝реЗрдВ --half FP16 рдкрд░ рдореЙрдбрд▓ рдирд┐рд░реНрдпрд╛рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЫреЛрдЯреЗ рдлрд╝рд╛рдЗрд▓ рдЖрдХрд╛рд░реЛрдВ рдХреЗ рд▓рд┐рдП рдЖрдзрд╛ рдкрд░рд┐рд╢реБрджреНрдзрддрд╛

рдЖрдЙрдЯрдкреБрдЯ:

export: data=data/coco128.yaml, weights=['yolov5s.pt'], imgsz=[640, 640], batch_size=1, device=cpu, half=False, inplace=False, train=False, keras=False, optimize=False, int8=False, dynamic=False, simplify=False, opset=12, verbose=False, workspace=4, nms=False, agnostic_nms=False, topk_per_class=100, topk_all=100, iou_thres=0.45, conf_thres=0.25, include=['torchscript', 'onnx']
YOLOv5 ЁЯЪА v6.2-104-ge3e5122 Python-3.8.0 torch-1.12.1+cu113 CPU

Downloading https://github.com/ultralytics/yolov5/releases/download/v6.2/yolov5s.pt to yolov5s.pt...
100% 14.1M/14.1M [00:00<00:00, 274MB/s]

Fusing layers...
YOLOv5s summary: 213 layers, 7225885 parameters, 0 gradients

PyTorch: starting from yolov5s.pt with output shape (1, 25200, 85) (14.1 MB)

TorchScript: starting export with torch 1.12.1+cu113...
TorchScript: export success тЬЕ 1.7s, saved as yolov5s.torchscript (28.1 MB)

ONNX: starting export with onnx 1.12.0...
ONNX: export success тЬЕ 2.3s, saved as yolov5s.onnx (28.0 MB)

Export complete (5.5s)
Results saved to /content/yolov5
Detect:          python detect.py --weights yolov5s.onnx
Validate:        python val.py --weights yolov5s.onnx
PyTorch Hub:     model = torch.hub.load('ultralytics/yolov5', 'custom', 'yolov5s.onnx')
Visualize:       https://netron.app/

рдирд┐рд░реНрдпрд╛рдд рдХрд┐рдП рдЧрдП 3 рдореЙрдбрд▓ рдореВрд▓ рдХреЗ рд╕рд╛рде рд╕рд╣реЗрдЬреЗ рдЬрд╛рдПрдВрдЧреЗ PyTorch рдХреЛ рдЧрдврд╝рдирд╛:

YOLO рд╕реНрдерд╛рди рдирд┐рд░реНрдпрд╛рдд рдХрд░реЗрдВ

рдирд┐рд░реНрдпрд╛рдд рдХрд┐рдП рдЧрдП рдореЙрдбрд▓ рдХреЛ рджреЗрдЦрдиреЗ рдХреЗ рд▓рд┐рдП Netron рд╡реНрдпреВрдЕрд░ рдХреА рд╕рд┐рдлрд╛рд░рд┐рд╢ рдХреА рдЬрд╛рддреА рд╣реИ:

YOLO рдореЙрдбрд▓ рд╡рд┐рдЬрд╝реБрдЕрд▓рд╛рдЗрдЬрд╝реЗрд╢рди

рдирд┐рд░реНрдпрд╛рдд рдХрд┐рдП рдЧрдП рдореЙрдбрд▓ рдЙрдкрдпреЛрдЧ рдХреЗ рдЙрджрд╛рд╣рд░рдг

detect.py рдирд┐рд░реНрдпрд╛рдд рдХрд┐рдП рдЧрдП рдореЙрдбрд▓ рдкрд░ рдЕрдиреБрдорд╛рди рдЪрд▓рд╛рддрд╛ рд╣реИ:

python detect.py --weights yolov5s.pt                 # PyTorch
                           yolov5s.torchscript        # TorchScript
                           yolov5s.onnx               # ONNX Runtime or OpenCV DNN with dnn=True
                           yolov5s_openvino_model     # OpenVINO
                           yolov5s.engine             # TensorRT
                           yolov5s.mlmodel            # CoreML (macOS only)
                           yolov5s_saved_model        # TensorFlow SavedModel
                           yolov5s.pb                 # TensorFlow GraphDef
                           yolov5s.tflite             # TensorFlow Lite
                           yolov5s_edgetpu.tflite     # TensorFlow Edge TPU
                           yolov5s_paddle_model       # PaddlePaddle

val.py рдирд┐рд░реНрдпрд╛рдд рдХрд┐рдП рдЧрдП рдореЙрдбрд▓ рдкрд░ рд╕рддреНрдпрд╛рдкрди рдЪрд▓рд╛рддрд╛ рд╣реИ:

python val.py --weights yolov5s.pt                 # PyTorch
                        yolov5s.torchscript        # TorchScript
                        yolov5s.onnx               # ONNX Runtime or OpenCV DNN with dnn=True
                        yolov5s_openvino_model     # OpenVINO
                        yolov5s.engine             # TensorRT
                        yolov5s.mlmodel            # CoreML (macOS Only)
                        yolov5s_saved_model        # TensorFlow SavedModel
                        yolov5s.pb                 # TensorFlow GraphDef
                        yolov5s.tflite             # TensorFlow Lite
                        yolov5s_edgetpu.tflite     # TensorFlow Edge TPU
                        yolov5s_paddle_model       # PaddlePaddle

рдкреНрд░рдпреЛрдЧ PyTorch рдирд┐рд░реНрдпрд╛рдд рдХреЗ рд╕рд╛рде рд╣рдм YOLOv5 рдореЙрдбрд▓:

import torch

# Model
model = torch.hub.load('ultralytics/yolov5', 'custom', 'yolov5s.pt')
model = torch.hub.load('ultralytics/yolov5', 'custom', 'yolov5s.torchscript ')  # TorchScript
model = torch.hub.load('ultralytics/yolov5', 'custom', 'yolov5s.onnx')  # ONNX Runtime
model = torch.hub.load('ultralytics/yolov5', 'custom', 'yolov5s_openvino_model')  # OpenVINO
model = torch.hub.load('ultralytics/yolov5', 'custom', 'yolov5s.engine')  # TensorRT
model = torch.hub.load('ultralytics/yolov5', 'custom', 'yolov5s.mlmodel')  # CoreML (macOS Only)
model = torch.hub.load('ultralytics/yolov5', 'custom', 'yolov5s_saved_model')  # TensorFlow SavedModel
model = torch.hub.load('ultralytics/yolov5', 'custom', 'yolov5s.pb')  # TensorFlow GraphDef
model = torch.hub.load('ultralytics/yolov5', 'custom', 'yolov5s.tflite')  # TensorFlow Lite
model = torch.hub.load('ultralytics/yolov5', 'custom', 'yolov5s_edgetpu.tflite')  # TensorFlow Edge TPU
model = torch.hub.load('ultralytics/yolov5', 'custom', 'yolov5s_paddle_model')  # PaddlePaddle

# Images
img = 'https://ultralytics.com/images/zidane.jpg'  # or file, Path, PIL, OpenCV, numpy, list

# Inference
results = model(img)

# Results
results.print()  # or .show(), .save(), .crop(), .pandas(), etc.

рдУрдкрдирд╕реАрд╡реА рдбреАрдПрдирдПрди рдЕрдиреБрдорд╛рди

OpenCV рдЕрдиреБрдорд╛рди рдХреЗ рд╕рд╛рде ONNX рдореЙрдбрд▓:

python export.py --weights yolov5s.pt --include onnx

python detect.py --weights yolov5s.onnx --dnn  # detect
python val.py --weights yolov5s.onnx --dnn  # validate

рд╕реА ++ рдЕрдиреБрдорд╛рди

YOLOv5 рдирд┐рд░реНрдпрд╛рдд рдкрд░ рдУрдкрдирд╕реАрд╡реА рдбреАрдПрдирдПрди рд╕реА ++ рдЕрдиреБрдорд╛рди ONNX рдореЙрдбрд▓ рдЙрджрд╛рд╣рд░рдг:

YOLOv5 OpenVINO рд╕реА ++ рдЕрдиреБрдорд╛рди рдЙрджрд╛рд╣рд░рдг:

TensorFlow.js рд╡реЗрдм рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдЕрдиреБрдорд╛рди

рд╕рдорд░реНрдерд┐рдд рд╡рд╛рддрд╛рд╡рд░рдг

Ultralytics рдЙрдкрдпреЛрдЧ рдХреЗ рд▓рд┐рдП рддреИрдпрд╛рд░ рд╡рд╛рддрд╛рд╡рд░рдг рдХреА рдПрдХ рд╢реНрд░реГрдВрдЦрд▓рд╛ рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИ, рдкреНрд░рддреНрдпреЗрдХ рдЖрд╡рд╢реНрдпрдХ рдирд┐рд░реНрднрд░рддрд╛рдУрдВ рдЬреИрд╕реЗ CUDA, CUDNN рдХреЗ рд╕рд╛рде рдкреВрд░реНрд╡-рд╕реНрдерд╛рдкрд┐рдд, PythonрдФрд░ PyTorch, рдЕрдкрдиреА рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдХреЛ рдХрд┐рдХрд╕реНрдЯрд╛рд░реНрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдПред

рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреА рд╕реНрдерд┐рддрд┐

YOLOv5 рд╕реАрдЖрдИ

рдпрд╣ рдмреИрдЬ рдЗрдВрдЧрд┐рдд рдХрд░рддрд╛ рд╣реИ рдХрд┐ рд╕рднреА YOLOv5 GitHub рдХреНрд░рд┐рдпрд╛рдПрдБ рд╕рддрдд рдПрдХреАрдХрд░рдг (CI) рдкрд░реАрдХреНрд╖рдг рд╕рдлрд▓рддрд╛рдкреВрд░реНрд╡рдХ рдкрд╛рд╕ рд╣реЛ рд░рд╣реЗ рд╣реИрдВред рдпреЗ рд╕реАрдЖрдИ рдкрд░реАрдХреНрд╖рдг рд╕рдЦреНрддреА рд╕реЗ рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдФрд░ рдкреНрд░рджрд░реНрд╢рди рдХреА рдЬрд╛рдВрдЪ рдХрд░рддреЗ рд╣реИрдВ YOLOv5 рд╡рд┐рднрд┐рдиреНрди рдкреНрд░рдореБрдЦ рдкрд╣рд▓реБрдУрдВ рдХреЗ рдкрд╛рд░: рдкреНрд░рд╢рд┐рдХреНрд╖рдг, рд╕рддреНрдпрд╛рдкрди, рдЕрдиреБрдорд╛рди, рдирд┐рд░реНрдпрд╛рдд рдФрд░ рдмреЗрдВрдЪрдорд╛рд░реНрдХред рд╡реЗ macOS, Windows рдФрд░ Ubuntu рдкрд░ рд▓рдЧрд╛рддрд╛рд░ рдФрд░ рд╡рд┐рд╢реНрд╡рд╕рдиреАрдп рд╕рдВрдЪрд╛рд▓рди рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рддреЗ рд╣реИрдВ, рд╣рд░ 24 рдШрдВрдЯреЗ рдореЗрдВ рдФрд░ рдкреНрд░рддреНрдпреЗрдХ рдирдИ рдкреНрд░рддрд┐рдмрджреНрдзрддрд╛ рдкрд░ рдкрд░реАрдХреНрд╖рдг рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВред



2023-11-12 рдмрдирд╛рдпрд╛ рдЧрдпрд╛, рдЕрдкрдбреЗрдЯ рдХрд┐рдпрд╛ рдЧрдпрд╛ 2024-01-12
рд▓реЗрдЦрдХ: рдЧреНрд▓реЗрди-рдЬреЛрдЪрд░ (5)

рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ