You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
109 lines
7.8 KiB
109 lines
7.8 KiB
2 years ago
|
---
|
||
|
comments: true
|
||
1 year ago
|
description: Step-by-step guide on exporting your YOLOv8 models to various format like ONNX, TensorRT, CoreML and more for deployment. Explore now!.
|
||
|
keywords: YOLO, YOLOv8, Ultralytics, Model export, ONNX, TensorRT, CoreML, TensorFlow SavedModel, OpenVINO, PyTorch, export model
|
||
2 years ago
|
---
|
||
|
|
||
1 year ago
|
# Model Export with Ultralytics YOLO
|
||
|
|
||
1 year ago
|
<img width="1024" src="https://github.com/ultralytics/assets/raw/main/yolov8/banner-integrations.png" alt="Ultralytics YOLO ecosystem and integrations">
|
||
2 years ago
|
|
||
1 year ago
|
## Introduction
|
||
|
|
||
|
The ultimate goal of training a model is to deploy it for real-world applications. Export mode in Ultralytics YOLOv8 offers a versatile range of options for exporting your trained model to different formats, making it deployable across various platforms and devices. This comprehensive guide aims to walk you through the nuances of model exporting, showcasing how to achieve maximum compatibility and performance.
|
||
|
|
||
|
<p align="center">
|
||
|
<br>
|
||
1 year ago
|
<iframe width="720" height="405" src="https://www.youtube.com/embed/WbomGeoOT_k?si=aGmuyooWftA0ue9X"
|
||
|
title="YouTube video player" frameborder="0"
|
||
|
allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share"
|
||
1 year ago
|
allowfullscreen>
|
||
|
</iframe>
|
||
|
<br>
|
||
|
<strong>Watch:</strong> How To Export Custom Trained Ultralytics YOLOv8 Model and Run Live Inference on Webcam.
|
||
|
</p>
|
||
|
|
||
|
## Why Choose YOLOv8's Export Mode?
|
||
|
|
||
|
- **Versatility:** Export to multiple formats including ONNX, TensorRT, CoreML, and more.
|
||
|
- **Performance:** Gain up to 5x GPU speedup with TensorRT and 3x CPU speedup with ONNX or OpenVINO.
|
||
|
- **Compatibility:** Make your model universally deployable across numerous hardware and software environments.
|
||
|
- **Ease of Use:** Simple CLI and Python API for quick and straightforward model exporting.
|
||
|
|
||
|
### Key Features of Export Mode
|
||
|
|
||
|
Here are some of the standout functionalities:
|
||
|
|
||
|
- **One-Click Export:** Simple commands for exporting to different formats.
|
||
|
- **Batch Export:** Export batched-inference capable models.
|
||
|
- **Optimized Inference:** Exported models are optimized for quicker inference times.
|
||
|
- **Tutorial Videos:** In-depth guides and tutorials for a smooth exporting experience.
|
||
2 years ago
|
|
||
|
!!! tip "Tip"
|
||
|
|
||
|
* Export to ONNX or OpenVINO for up to 3x CPU speedup.
|
||
|
* Export to TensorRT for up to 5x GPU speedup.
|
||
|
|
||
|
## Usage Examples
|
||
|
|
||
1 year ago
|
Export a YOLOv8n model to a different format like ONNX or TensorRT. See Arguments section below for a full list of export arguments.
|
||
2 years ago
|
|
||
|
!!! example ""
|
||
|
|
||
|
=== "Python"
|
||
1 year ago
|
|
||
2 years ago
|
```python
|
||
|
from ultralytics import YOLO
|
||
1 year ago
|
|
||
2 years ago
|
# Load a model
|
||
2 years ago
|
model = YOLO('yolov8n.pt') # load an official model
|
||
1 year ago
|
model = YOLO('path/to/best.pt') # load a custom trained model
|
||
1 year ago
|
|
||
2 years ago
|
# Export the model
|
||
2 years ago
|
model.export(format='onnx')
|
||
2 years ago
|
```
|
||
|
=== "CLI"
|
||
1 year ago
|
|
||
2 years ago
|
```bash
|
||
|
yolo export model=yolov8n.pt format=onnx # export official model
|
||
|
yolo export model=path/to/best.pt format=onnx # export custom trained model
|
||
|
```
|
||
|
|
||
|
## Arguments
|
||
|
|
||
1 year ago
|
Export settings for YOLO models refer to the various configurations and options used to save or export the model for use in other environments or platforms. These settings can affect the model's performance, size, and compatibility with different systems. Some common YOLO export settings include the format of the exported model file (e.g. ONNX, TensorFlow SavedModel), the device on which the model will be run (e.g. CPU, GPU), and the presence of additional features such as masks or multiple labels per box. Other factors that may affect the export process include the specific task the model is being used for and the requirements or constraints of the target environment or platform. It is important to carefully consider and configure these settings to ensure that the exported model is optimized for the intended use case and can be used effectively in the target environment.
|
||
2 years ago
|
|
||
|
| Key | Value | Description |
|
||
|
|-------------|-----------------|------------------------------------------------------|
|
||
|
| `format` | `'torchscript'` | format to export to |
|
||
|
| `imgsz` | `640` | image size as scalar or (h, w) list, i.e. (640, 480) |
|
||
|
| `keras` | `False` | use Keras for TF SavedModel export |
|
||
|
| `optimize` | `False` | TorchScript: optimize for mobile |
|
||
|
| `half` | `False` | FP16 quantization |
|
||
|
| `int8` | `False` | INT8 quantization |
|
||
2 years ago
|
| `dynamic` | `False` | ONNX/TensorRT: dynamic axes |
|
||
|
| `simplify` | `False` | ONNX/TensorRT: simplify model |
|
||
2 years ago
|
| `opset` | `None` | ONNX: opset version (optional, defaults to latest) |
|
||
|
| `workspace` | `4` | TensorRT: workspace size (GB) |
|
||
|
| `nms` | `False` | CoreML: add NMS |
|
||
|
|
||
|
## Export Formats
|
||
|
|
||
1 year ago
|
Available YOLOv8 export formats are in the table below. You can export to any format using the `format` argument, i.e. `format='onnx'` or `format='engine'`.
|
||
2 years ago
|
|
||
2 years ago
|
| Format | `format` Argument | Model | Metadata | Arguments |
|
||
|
|--------------------------------------------------------------------|-------------------|---------------------------|----------|-----------------------------------------------------|
|
||
|
| [PyTorch](https://pytorch.org/) | - | `yolov8n.pt` | ✅ | - |
|
||
|
| [TorchScript](https://pytorch.org/docs/stable/jit.html) | `torchscript` | `yolov8n.torchscript` | ✅ | `imgsz`, `optimize` |
|
||
|
| [ONNX](https://onnx.ai/) | `onnx` | `yolov8n.onnx` | ✅ | `imgsz`, `half`, `dynamic`, `simplify`, `opset` |
|
||
|
| [OpenVINO](https://docs.openvino.ai/latest/index.html) | `openvino` | `yolov8n_openvino_model/` | ✅ | `imgsz`, `half` |
|
||
|
| [TensorRT](https://developer.nvidia.com/tensorrt) | `engine` | `yolov8n.engine` | ✅ | `imgsz`, `half`, `dynamic`, `simplify`, `workspace` |
|
||
1 year ago
|
| [CoreML](https://github.com/apple/coremltools) | `coreml` | `yolov8n.mlpackage` | ✅ | `imgsz`, `half`, `int8`, `nms` |
|
||
2 years ago
|
| [TF SavedModel](https://www.tensorflow.org/guide/saved_model) | `saved_model` | `yolov8n_saved_model/` | ✅ | `imgsz`, `keras` |
|
||
|
| [TF GraphDef](https://www.tensorflow.org/api_docs/python/tf/Graph) | `pb` | `yolov8n.pb` | ❌ | `imgsz` |
|
||
|
| [TF Lite](https://www.tensorflow.org/lite) | `tflite` | `yolov8n.tflite` | ✅ | `imgsz`, `half`, `int8` |
|
||
|
| [TF Edge TPU](https://coral.ai/docs/edgetpu/models-intro/) | `edgetpu` | `yolov8n_edgetpu.tflite` | ✅ | `imgsz` |
|
||
|
| [TF.js](https://www.tensorflow.org/js) | `tfjs` | `yolov8n_web_model/` | ✅ | `imgsz` |
|
||
1 year ago
|
| [PaddlePaddle](https://github.com/PaddlePaddle) | `paddle` | `yolov8n_paddle_model/` | ✅ | `imgsz` |
|
||
1 year ago
|
| [ncnn](https://github.com/Tencent/ncnn) | `ncnn` | `yolov8n_ncnn_model/` | ✅ | `imgsz`, `half` |
|