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à nhiều hơn nữa.
- 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' , 'tensorflow' hoặc những cách khác, xác định khả năng tương thích với nhiều 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 ảnh vuông 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. |
half |
bool |
False |
Cho phép lượng tử hóa FP16 (bán 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, 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. |
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. |
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. |
opset |
int |
None |
Chỉ định ONNX phiên bản opset để tương thích với các ONNX trình phân tích cú pháp và thời gian chạy. Nếu không được thiết lập, 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 chức năng ức chế không tối đa (NMS) vào CoreML xuất, cần thiết cho quá trình xử lý phát hiện sau đó chính xác và hiệu quả. |
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 cách thức. |
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 ). |
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 , batch |
ONNX | onnx |
yolo11n.onnx |
✅ | imgsz , half , dynamic , simplify , opset , batch |
OpenVINO | openvino |
yolo11n_openvino_model/ |
✅ | imgsz , half , int8 , batch |
TensorRT | engine |
yolo11n.engine |
✅ | imgsz , half , dynamic , simplify , workspace , int8 , batch |
CoreML | coreml |
yolo11n.mlpackage |
✅ | imgsz , half , int8 , nms , batch |
TF SavedModel | saved_model |
yolo11n_saved_model/ |
✅ | imgsz , keras , int8 , batch |
TF GraphDef | pb |
yolo11n.pb |
❌ | imgsz , batch |
TF Nhẹ | tflite |
yolo11n.tflite |
✅ | imgsz , half , int8 , batch |
TF Bờ rìa TPU | edgetpu |
yolo11n_edgetpu.tflite |
✅ | imgsz |
TF .js | tfjs |
yolo11n_web_model/ |
✅ | imgsz , half , int8 , 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 |
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 phần 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 Và CoreML . Bạn có thể tìm thấy thêm thông tin chi tiết trong phần Xuất .
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 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 kích hoạ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ụ
Để biết thêm bối cảnh, hãy tham khảo cấu hình kích thước đầu vào động .
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 việc triển khai biên.
Để biết danh sách chi tiết và giải thích về tất cả các đối số xuất, hãy truy cập phần Đối số xuất .