सामग्री पर जाएं

टीफ़्लाइट, ONNX, CoreML, TensorRT निर्यातित माल

📚 यह मार्गदर्शिका बताती है कि प्रशिक्षित को कैसे निर्यात किया जाए YOLOv5 🚀 से मॉडल PyTorch तक ONNX और TorchScript स्वरूपों।

शुरू करने से पहले

रेपो क्लोन करें और आवश्यकताओं को स्थापित करें.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 Hub निर्यात के साथ 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)

टिप्पणियाँ