Bỏ để qua phần nội dung

Xuất mô hình với Ultralytics YOLO

Ultralytics YOLO Hệ sinh thái và tích hợp

Giới thiệu

Mục tiêu cuối cùng của việc đào tạo một mô hình là triển khai nó cho các ứng dụng trong thế giới thực. Chế độ xuất trong Ultralytics YOLOv8 Cung cấp một loạt các tùy chọn linh hoạt để xuất mô hình đã đào tạo của bạn sang các định dạng khác nhau, giúp nó có thể triển khai trên nhiều nền tảng và thiết bị khác nhau. Hướng dẫn toàn diện này nhằm mục đích hướng dẫn bạn qua các sắc thái của xuất mô hình, giới thiệu cách đạt được khả năng tương thích và hiệu suất tối đa.



Xem: Làm thế nào để xuất khẩu tùy chỉnh đào tạo Ultralytics YOLOv8 Mô hình hóa và chạy suy luận trực tiếp trên webcam.

Tại sao chọn YOLOv8Chế độ xuất của bạn?

  • Linh hoạt: Xuất sang nhiều định dạng bao gồm: ONNX, TensorRT, CoreMLvà hơn thế nữa.
  • Hiệu năng: Tăng tốc GPU lên đến 5x với TensorRT và tăng tốc CPU gấp 3 lần với ONNX hoặc OpenVINO.
  • Tương thích: Làm cho mô hình của bạn có thể triển khai phổ biến trên nhiều môi trường phần cứng và phần mềm.
  • Dễ sử dụng: Giản dị CLI và Python API để xuất mô hình nhanh chóng và đơn giản.

Các tính năng chính của chế độ xuất khẩu

Dưới đây là một số chức năng nổi bật:

  • Xuất bằng một cú nhấp chuột: Các lệnh đơn giản để xuất sang các định dạng khác nhau.
  • Xuất khẩu hàng loạt: Xuất các mô hình có khả năng suy luận hàng loạt.
  • Suy luận được tối ưu hóa: Các mô hình đã xuất được tối ưu hóa để có thời gian suy luận nhanh hơn.
  • Video hướng dẫn: Hướng dẫn và hướng dẫn chuyên sâu để có trải nghiệm xuất mượt mà.

Mẹo

  • Xuất sang ONNX hoặc OpenVINO để tăng tốc CPU lên đến 3x.
  • Xuất sang TensorRT để tăng tốc GPU lên đến 5x.

Ví dụ sử dụng

Xuất một YOLOv8n mô hình sang một định dạng khác như ONNX hoặc TensorRT. Xem phần Đối số bên dưới để biết danh sách đầy đủ các đối số xuất.

Ví dụ

from ultralytics import YOLO

# Load a model
model = YOLO('yolov8n.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.pt format=onnx  # export official model
yolo export model=path/to/best.pt format=onnx  # export custom trained model

Lập luận

Bảng này chi tiết các cấu hình và tùy chọn có sẵn để xuất YOLO mô hình đến các định dạng khác nhau. Các cài đặt này rất quan trọng để tối ưu hóa hiệu suất, kích thước và khả năng tương thích của mô hình đã xuất trên các nền tảng và môi trường khác nhau. Cấu hình phù hợp đảm bảo rằng mô hình đã sẵn sàng để triển khai trong ứng dụng dự định với hiệu quả tối ưu.

Lý lẽ Kiểu Mặc định Sự miêu tả
format str 'torchscript' Định dạng đích cho mô hình đã xuất, chẳng hạn như 'onnx', 'torchscript', 'tensorflow'hoặc các môi trường khác, xác định khả năng tương thích với các môi trường triển khai khác nhau.
imgsz int hoặc tuple 640 Kích thước hình ảnh mong muốn cho đầu vào mô hình. Có thể là số nguyên cho hình vuông hoặc bộ dữ liệu (height, width) cho các kích thước cụ thể.
keras bool False Cho phép xuất sang định dạng Keras cho TensorFlow SavedModel, cung cấp khả năng tương thích với TensorFlow phục vụ và API.
optimize bool False Áp dụng tối ưu hóa cho thiết bị di động khi xuất sang TorchScript, có khả năng giảm kích thước mô hình và cải thiện hiệu suất.
half bool False Cho phép lượng tử hóa FP16 (nửa chính xác), giảm kích thước mô hình và có khả năng tăng tốc độ suy luận trên phần cứng được hỗ trợ.
int8 bool False Kích hoạt lượng tử hóa INT8, tiếp tục nén mô hình và tăng tốc độ suy luận với tổn thất độ chính xác tối thiểu, chủ yếu cho các thiết bị biên.
dynamic bool False Cho phép kích thước đầu vào động cho ONNX và TensorRT xuất khẩu, tăng cường tính linh hoạt trong việc xử lý các kích thước hình ảnh khác nhau.
simplify bool False Đơn giản hóa biểu đồ mô hình cho ONNX xuất khẩu, có khả năng cải thiện hiệu suất và khả năng tương thích.
opset int None Chỉ định ONNX Phiên bản opset để tương thích với khác nhau ONNX Trình phân tích cú pháp và thời gian chạy. Nếu không được đặt, hãy sử dụng phiên bản được hỗ trợ mới nhất.
workspace float 4.0 Đặt kích thước không gian làm việc tối đa tính bằng GB cho TensorRT tối ưu hóa, cân bằng giữa việc sử dụng bộ nhớ và hiệu suất.
nms bool False Thêm chế áp không tối đa (NMS) vào CoreML xuất khẩu, cần thiết để xử lý hậu kỳ phát hiện chính xác và hiệu quả.
batch int 1 Chỉ định kích thước suy luận hàng loạt mô hình xuất hoặc số lượng hình ảnh tối đa mà mô hình đã xuất sẽ xử lý đồng thời trong predict chế độ.

Điều chỉnh các tham số này cho phép tùy chỉnh quy trình xuất để phù hợp với các yêu cầu cụ thể, chẳng hạn như môi trường triển khai, ràng buộc phần cứng và mục tiêu hiệu suất. Chọn định dạng và cài đặt thích hợp là điều cần thiết để đạt được sự cân bằng tốt nhất giữa kích thước, tốc độ và độ chính xác của mô hình.

Định dạng xuất

Có sẵn YOLOv8 Định dạng xuất có trong bảng dưới đây. Bạn có thể xuất sang bất kỳ định dạng nào bằng cách sử dụng format lập luận, tức là format='onnx' hoặc format='engine'. Bạn có thể dự đoán hoặc xác thực trực tiếp trên các mô hình đã xuất, tức là yolo predict model=yolov8n.onnx. Ví dụ sử dụng được hiển thị cho mô hình của bạn sau khi xuất hoàn tất.

Định dạng format Lý lẽ Mẫu Siêu dữ liệu Lập luận
PyTorch - yolov8n.pt -
TorchScript torchscript yolov8n.torchscript imgsz, optimize, batch
ONNX onnx yolov8n.onnx imgsz, half, dynamic, simplify, opset, batch
OpenVINO openvino yolov8n_openvino_model/ imgsz, half, int8, batch
TensorRT engine yolov8n.engine imgsz, half, dynamic, simplify, workspace, batch
CoreML coreml yolov8n.mlpackage imgsz, half, int8, nms, batch
TF SavedModel saved_model yolov8n_saved_model/ imgsz, keras, int8, batch
TF GraphDef pb yolov8n.pb imgsz, batch
TF Lite tflite yolov8n.tflite imgsz, half, int8, batch
TF Cạnh TPU edgetpu yolov8n_edgetpu.tflite imgsz, batch
TF.Js tfjs yolov8n_web_model/ imgsz, half, int8, batch
PaddlePaddle paddle yolov8n_paddle_model/ imgsz, batch
NCNN ncnn yolov8n_ncnn_model/ imgsz, half, batch


Đã tạo 2023-11-12, Cập nhật 2024-04-27
Tác giả: glenn-jocher (11), Burhan-Q (2)

Ý kiến