Xuất mô hình với Ultralytics YOLO
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 YOLO11 cung cấp nhiều tùy chọn đa dạng để xuất mô hình đã đào tạo của bạn sang các định dạng khác nhau, giúp 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 hướng dẫn bạn qua các sắc thái của việc 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.
Đồng hồ: Làm thế nào để xuất khẩu đào tạo tùy chỉnh Ultralytics YOLO Mô hình hóa và chạy suy luận trực tiếp trên Webcam.
Tại sao chọn YOLO11 Chế độ xuất khẩu của?
- Tính linh hoạt: Xuất sang nhiều định dạng bao gồm ONNX , TensorRT , CoreML , v.v.
- Hiệu suất: Tăng lên đến 5x GPU tăng tốc với TensorRT và 3x CPU tăng tốc với ONNX hoặc OpenVINO .
- Khả năng tương thích: Giúp mô hình của bạn có thể triển khai rộng rãi trên nhiều môi trường phần cứng và phần mềm.
- Dễ sử dụng: Đơn giản CLI Và Python API để xuất mô hình nhanh chóng và dễ dàng.
Các tính năng chính của chế độ xuất khẩu
Sau đây là một số chức năng nổi bật:
- Xuất chỉ 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 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 ra đượ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à bài hướng dẫn chuyên sâu để có trải nghiệm xuất dữ liệu suôn sẻ.
Mẹo
Ví dụ sử dụng
Xuất mô hình YOLO11n 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ụ
Lập luận
Bảng này trình bày chi tiết các cấu hình và tùy chọn có sẵn để xuất YOLO mô hình sang các định dạng khác nhau. Các thiết lập 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 được xuất trên nhiều 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 mục tiêu cho mô hình được xuất ra, chẳng hạn như 'onnx' , 'torchscript' , 'engine' ( TensorRT ), hoặc những định dạng khác. Mỗi định dạng cho phép tương thích với các định dạng khác nhau môi trường triển khai. |
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 ảnh vuông (ví dụ: 640 cho 640×640) hoặc một bộ (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 suy luận . Không tương thích với NCNN định dạng hoặc CUDA thiết bị. |
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ợ. Không tương thích với lượng tử hóa INT8 hoặc CPU -chỉ xuất khẩu cho ONNX . |
int8 |
bool |
False |
Kích hoạt lượng tử hóa INT8, nén mô hình hơn nữa và tăng tốc suy luận với mức độ mất độ chính xác tối thiểu, chủ yếu dành cho các thiết bị biên . Khi được sử dụng với TensorRT , thực hiện lượng tử hóa sau đào tạo (PTQ). |
dynamic |
bool |
False |
Cho phép kích thước đầu vào động cho ONNX , TensorRT Và OpenVINO 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. Tự động thiết lập thành True khi sử dụng TensorRT với INT8. |
simplify |
bool |
True |
Đơn giản hóa đồ thị mô hình cho ONNX xuất khẩu với onnxslim , có khả năng cải thiện hiệu suất và khả năng tương thích với các công cụ suy luận. |
opset |
int |
None |
Chỉ định ONNX opset phiên bản để tương thích với các trình phân tích cú pháp và thời gian chạy ONNX khác nhau. Nếu không được thiết lập, hãy sử dụng phiên bản được hỗ trợ mới nhất. |
workspace |
float hoặc None |
None |
Đặt kích thước không gian làm việc tối đa theo GiB cho TensorRT tối ưu hóa, cân bằng việc sử dụng bộ nhớ và hiệu suất. Sử dụng None để tự động phân bổ bởi TensorRT lên đến mức tối đa của thiết bị. |
nms |
bool |
False |
Thêm Non-Maximum Suppression (NMS) vào mô hình đã xuất khi được hỗ trợ (xem Định dạng xuất ), cải thiện hiệu quả xử lý sau phát hiện. Không khả dụng cho các mô hình end2end. |
batch |
int |
1 |
Chỉ định kích thước suy luận lô 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 với Edge TPU xuất khẩu, mục này sẽ tự động được đặt thành 1. |
device |
str |
None |
Chỉ định thiết bị để xuất: GPU (device=0 ), CPU (device=cpu ), MPS cho silicon của Apple (device=mps ) hoặc DLA cho NVIDIA Máy bay phản lực (device=dla:0 hoặc device=dla:1 ). TensorRT xuất khẩu tự động sử dụng GPU . |
data |
str |
'coco8.yaml' |
Đường dẫn đến tập dữ liệu tập tin cấu hình (mặc định: coco8.yaml ), cần thiết cho hiệu chuẩn lượng tử INT8. Nếu không được chỉ định với INT8 được bật, một tập dữ liệu mặc định sẽ được chỉ định. |
Việc điều chỉnh các thông 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, hạn chế phần cứng và mục tiêu hiệu suất. Việc lựa chọn định dạng và cài đặt phù 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 mô hình, tốc độ và độ chính xác .
Định dạng xuất khẩu
Có sẵn YOLO11 định dạng xuất khẩu nằm trong bảng dưới đây. Bạn có thể xuất khẩu 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=yolo11n.onnx
. Các ví dụ sử dụng sẽ được hiển thị cho mô hình của bạn sau khi quá trình xuất hoàn tất.
Định dạng | format Lý lẽ |
Người mẫu | Siêu dữ liệu | Lập luận |
---|---|---|---|---|
PyTorch | - | yolo11n.pt |
✅ | - |
TorchScript | torchscript |
yolo11n.torchscript |
✅ | imgsz , optimize , nms , batch |
ONNX | onnx |
yolo11n.onnx |
✅ | imgsz , half , dynamic , simplify , opset , nms , batch |
OpenVINO | openvino |
yolo11n_openvino_model/ |
✅ | imgsz , half , dynamic , int8 , nms , batch , data |
TensorRT | engine |
yolo11n.engine |
✅ | imgsz , half , dynamic , simplify , workspace , int8 , nms , batch , data |
CoreML | coreml |
yolo11n.mlpackage |
✅ | imgsz , half , int8 , nms , batch |
TF SavedModel | saved_model |
yolo11n_saved_model/ |
✅ | imgsz , keras , int8 , nms , batch |
TF GraphDef | pb |
yolo11n.pb |
❌ | imgsz , batch |
TF Nhẹ | tflite |
yolo11n.tflite |
✅ | imgsz , half , int8 , nms , batch , data |
TF Bờ rìa TPU | edgetpu |
yolo11n_edgetpu.tflite |
✅ | imgsz |
TF .js | tfjs |
yolo11n_web_model/ |
✅ | imgsz , half , int8 , nms , batch |
PaddlePaddle | paddle |
yolo11n_paddle_model/ |
✅ | imgsz , batch |
MNN | mnn |
yolo11n.mnn |
✅ | imgsz , batch , int8 , half |
NCNN | ncnn |
yolo11n_ncnn_model/ |
✅ | imgsz , half , batch |
IMX500 | imx |
yolov8n_imx_model/ |
✅ | imgsz , int8 , data |
RKNN | rknn |
yolo11n_rknn_model/ |
✅ | imgsz , batch , name |
CÂU HỎI THƯỜNG GẶP
Làm thế nào để tôi xuất khẩu một YOLO11 mô hình để ONNX định dạng?
Xuất khẩu một YOLO11 mô hình để ONNX định dạng là đơn giản với Ultralytics . Nó cung cấp cả hai Python Và CLI phương pháp xuất mô hình.
Ví dụ
Để biết thêm chi tiết về quy trình, bao gồm các tùy chọn nâng cao như xử lý các kích thước đầu vào khác nhau, hãy tham khảo hướng dẫn tích hợp ONNX .
Lợi ích của việc sử dụng là gì? TensorRT để xuất khẩu mô hình?
Sử dụng TensorRT để xuất mô hình mang lại những cải tiến hiệu suất đáng kể. YOLO11 mô hình xuất khẩu sang TensorRT có thể đạt tới 5x GPU tăng tốc, lý tưởng cho các ứng dụng suy luận thời gian thực.
- Tính linh hoạt: Tối ưu hóa mô hình cho thiết lập phần cứng cụ thể.
- Tốc độ: Đạt được khả năng suy luận nhanh hơn thông qua các tối ưu hóa nâng cao.
- Khả năng tương thích: Tích hợp trơn tru với NVIDIA phần cứng.
Để tìm hiểu thêm về việc tích hợp TensorRT , hãy xem hướng dẫn tích hợp TensorRT .
Làm thế nào để tôi kích hoạt lượng tử hóa INT8 khi xuất YOLO11 người mẫu?
Lượng tử hóa INT8 là một cách tuyệt vời để nén mô hình và tăng tốc suy luận, đặc biệt là trên các thiết bị biên. Sau đây là cách bạn có thể bật lượng tử hóa INT8:
Ví dụ
Lượng tử hóa INT8 có thể được áp dụng cho nhiều định dạng khác nhau, chẳng hạn như TensorRT, OpenVINO, Và CoreML. Để có kết quả lượng tử hóa tối ưu, hãy cung cấp một đại diện tập dữ liệu sử dụng data
tham số.
Tại sao kích thước đầu vào động lại quan trọng khi xuất mô hình?
Kích thước đầu vào động cho phép mô hình được xuất ra xử lý các kích thước hình ảnh khác nhau, mang lại sự linh hoạt và tối ưu hóa hiệu quả xử lý cho các trường hợp sử dụng khác nhau. Khi xuất sang các định dạng như ONNX hoặc TensorRT , việc bật kích thước đầu vào động đảm bảo rằng mô hình có thể thích ứng liền mạch với các hình dạng đầu vào khác nhau.
Để kích hoạt tính năng này, hãy sử dụng dynamic=True
cờ trong quá trình xuất khẩu:
Ví dụ
Việc thay đổi kích thước đầu vào động đặc biệt hữu ích cho các ứng dụng mà kích thước đầu vào có thể thay đổi, chẳng hạn như xử lý video hoặc khi xử lý hình ảnh từ các nguồn khác nhau.
Những lập luận xuất khẩu quan trọng cần xem xét để tối ưu hóa hiệu suất mô hình là gì?
Việc hiểu và cấu hình các đối số xuất là rất quan trọng để tối ưu hóa hiệu suất mô hình:
format:
Định dạng mục tiêu cho mô hình được xuất ra (ví dụ:onnx
,torchscript
,tensorflow
).imgsz:
Kích thước hình ảnh mong muốn cho đầu vào mô hình (ví dụ:640
hoặc(height, width)
).half:
Cho phép lượng tử hóa FP16, giảm kích thước mô hình và có khả năng tăng tốc suy luận.optimize:
Áp dụng các tối ưu hóa cụ thể cho môi trường di động hoặc môi trường hạn chế.int8:
Cho phép lượng tử hóa INT8, rất có lợi cho AI cạnh triển khai.
Để triển khai trên các nền tảng phần cứng cụ thể, hãy cân nhắc sử dụng các định dạng xuất chuyên biệt như TensorRT cho NVIDIA GPU, CoreML cho các thiết bị Apple hoặc Edge TPU cho Google Thiết bị san hô.