Triển khai YOLO11 trên Mobile & Edge với ExecuTorch
Việc triển khai các mô hình thị giác máy tính trên các thiết bị biên như điện thoại thông minh, máy tính bảng và hệ thống nhúng đòi hỏi thời gian chạy được tối ưu hóa để cân bằng hiệu suất với các hạn chế về tài nguyên. ExecuTorch, PyTorch Giải pháp của Ultralytics dành cho điện toán biên, cho phép suy luận hiệu quả trên thiết bị cho các mô hình YOLO Ultralytics .
Hướng dẫn này phác thảo cách xuất Ultralytics YOLO chuyển đổi mô hình sang định dạng ExecuTorch, cho phép bạn triển khai mô hình trên thiết bị di động và thiết bị biên với hiệu suất được tối ưu hóa.
Tại sao nên xuất sang ExecuTorch?
ExecuTorch là PyTorch Giải pháp toàn diện của ExecuTorch cho phép khả năng suy luận trên thiết bị trên các thiết bị di động và thiết bị biên. Được xây dựng với mục tiêu di động và hiệu quả, ExecuTorch có thể được sử dụng để chạy PyTorch các chương trình trên nhiều nền tảng máy tính khác nhau.
Các tính năng chính của ExecuTorch
ExecuTorch cung cấp một số tính năng mạnh mẽ để triển khai Ultralytics YOLO các mô hình trên thiết bị biên:
-
Định dạng mô hình di động: ExecuTorch sử dụng
.pte
( PyTorch Định dạng ExecuTorch được tối ưu hóa về kích thước và tốc độ tải trên các thiết bị có tài nguyên hạn chế. -
XNNPACK Backend : Tích hợp mặc định với XNNPACK cung cấp khả năng suy luận được tối ưu hóa cao trên CPU di động, mang lại hiệu suất tuyệt vời mà không cần phần cứng chuyên dụng.
-
Hỗ trợ lượng tử hóa : Hỗ trợ tích hợp cho các kỹ thuật lượng tử hóa để giảm kích thước mô hình và cải thiện tốc độ suy luận trong khi vẫn duy trì độ chính xác.
-
Hiệu quả bộ nhớ : Quản lý bộ nhớ được tối ưu hóa giúp giảm dung lượng bộ nhớ thời gian chạy, phù hợp với các thiết bị có RAM hạn chế.
-
Siêu dữ liệu mô hình : Các mô hình được xuất bao gồm siêu dữ liệu (kích thước hình ảnh, tên lớp, v.v.) trong một tệp YAML riêng để dễ dàng tích hợp.
Tùy chọn triển khai với ExecuTorch
Các mô hình ExecuTorch có thể được triển khai trên nhiều nền tảng di động và biên khác nhau:
-
Ứng dụng di động : Triển khai trên iOS Và Android các ứng dụng có hiệu suất gốc, cho phép phát hiện đối tượng theo thời gian thực trong ứng dụng di động.
-
Hệ thống nhúng : Chạy trên các thiết bị Linux nhúng như Raspberry Pi, NVIDIA Jetson và các hệ thống dựa trên ARM khác có hiệu suất được tối ưu hóa.
-
Thiết bị AI biên : Triển khai trên phần cứng AI biên chuyên dụng với các đại biểu tùy chỉnh để suy luận nhanh hơn.
-
Thiết bị IoT : Tích hợp vào các thiết bị IoT để suy luận trên thiết bị mà không cần kết nối đám mây.
Xuất khẩu Ultralytics YOLO11 Các mô hình cho ExecuTorch
Chuyển đổi Ultralytics YOLO11 các mô hình sang định dạng ExecuTorch cho phép triển khai hiệu quả trên các thiết bị di động và thiết bị biên.
Cài đặt
Xuất ExecuTorch yêu cầu Python 3.10 trở lên và các phụ thuộc cụ thể:
Cài đặt
# Install Ultralytics package
pip install ultralytics
Để có hướng dẫn chi tiết và các phương pháp hay nhất liên quan đến quy trình cài đặt, hãy xem Hướng dẫn cài đặt YOLO11 của chúng tôi. Trong khi cài đặt các gói cần thiết cho YOLO11, nếu bạn gặp bất kỳ khó khăn nào, hãy tham khảo Hướng dẫn về các vấn đề thường gặp của chúng tôi để biết các giải pháp và mẹo.
Cách sử dụng
Xuất khẩu YOLO11 các mô hình cho ExecuTorch rất đơn giản:
Cách sử dụng
from ultralytics import YOLO
# Load the YOLO11 model
model = YOLO("yolo11n.pt")
# Export the model to ExecuTorch format
model.export(format="executorch") # creates 'yolo11n_executorch_model' directory
executorch_model = YOLO("yolo11n_executorch_model")
results = executorch_model.predict("https://ultralytics.com/images/bus.jpg")
# Export a YOLO11n PyTorch model to ExecuTorch format
yolo export model=yolo11n.pt format=executorch # creates 'yolo11n_executorch_model' directory
# Run inference with the exported model
yolo predict model=yolo11n_executorch_model source=https://ultralytics.com/images/bus.jpg
Các đối số xuất
Khi xuất sang định dạng ExecuTorch, bạn có thể chỉ định các đối số sau:
Đối số | Loại | Mặc định | Mô tả |
---|---|---|---|
imgsz |
int hoặc list |
640 |
Kích thước hình ảnh cho đầu vào mô hình (chiều cao, chiều rộng) |
device |
str |
'cpu' |
Thiết bị sử dụng để xuất khẩu ('cpu' ) |
Cấu trúc đầu ra
Xuất ExecuTorch tạo một thư mục chứa mô hình và siêu dữ liệu:
yolo11n_executorch_model/
├── yolo11n.pte # ExecuTorch model file
└── metadata.yaml # Model metadata (classes, image size, etc.)
Sử dụng các mô hình ExecuTorch đã xuất
Sau khi xuất mô hình, bạn sẽ cần tích hợp nó vào ứng dụng mục tiêu bằng cách sử dụng thời gian chạy ExecuTorch.
Tích hợp di động
Đối với ứng dụng di động ( iOS / Android ), bạn sẽ cần phải:
- Thêm ExecuTorch Runtime : Bao gồm thư viện thời gian chạy ExecuTorch trong dự án di động của bạn
- Mô hình tải: Tải
.pte
nộp hồ sơ vào đơn đăng ký của bạn - Chạy suy luận : Xử lý hình ảnh và đưa ra dự đoán
Ví dụ iOS tích hợp (Objective-C/C++):
// iOS uses C++ APIs for model loading and inference
// See https://pytorch.org/executorch/stable/using-executorch-ios.html for complete examples
#include <executorch/extension/module/module.h>
using namespace ::executorch::extension;
// Load the model
Module module("/path/to/yolo11n.pte");
// Create input tensor
float input[1 * 3 * 640 * 640];
auto tensor = from_blob(input, {1, 3, 640, 640});
// Run inference
const auto result = module.forward(tensor);
Ví dụ Android tích hợp (Kotlin):
import org.pytorch.executorch.EValue
import org.pytorch.executorch.Module
import org.pytorch.executorch.Tensor
// Load the model
val module = Module.load("/path/to/yolo11n.pte")
// Prepare input tensor
val inputTensor = Tensor.fromBlob(floatData, longArrayOf(1, 3, 640, 640))
val inputEValue = EValue.from(inputTensor)
// Run inference
val outputs = module.forward(inputEValue)
val scores = outputs[0].toTensor().dataAsFloatArray
Linux nhúng
Đối với hệ thống Linux nhúng, hãy sử dụng API ExecuTorch C++:
#include <executorch/extension/module/module.h>
// Load model
auto module = torch::executor::Module("yolo11n.pte");
// Prepare input
std::vector<float> input_data = preprocessImage(image);
auto input_tensor = torch::executor::Tensor(input_data, {1, 3, 640, 640});
// Run inference
auto outputs = module.forward({input_tensor});
Để biết thêm chi tiết về cách tích hợp ExecuTorch vào ứng dụng của bạn, hãy truy cập Tài liệu ExecuTorch .
Tối ưu hóa hiệu suất
Tối ưu hóa kích thước mô hình
Để giảm kích thước mô hình khi triển khai:
- Sử dụng các mô hình nhỏ hơn : Bắt đầu với YOLO11n (nano) để có diện tích nhỏ nhất
- Độ phân giải đầu vào thấp hơn: Sử dụng kích thước hình ảnh nhỏ hơn (ví dụ:
imgsz=320
hoặcimgsz=416
) - Lượng tử hóa : Áp dụng các kỹ thuật lượng tử hóa (được hỗ trợ trong các phiên bản ExecuTorch trong tương lai)
Tối ưu hóa tốc độ suy luận
Để suy luận nhanh hơn:
- XNNPACK Backend : Backend XNNPACK mặc định cung cấp khả năng tối ưu hóa CPU suy luận
- Tăng tốc phần cứng : Sử dụng các đại biểu dành riêng cho nền tảng (ví dụ: CoreML vì iOS )
- Xử lý hàng loạt : Xử lý nhiều hình ảnh khi có thể
Điểm chuẩn
Các Ultralytics nhóm được đánh giá chuẩn YOLO11 các mô hình, so sánh tốc độ và độ chính xác giữa PyTorch và ExecuTorch.
Hiệu suất
Mô hình | Định dạng | Trạng thái | Kích thước (MB) | metrics/mAP50-95(B) | Thời gian suy luận (ms/ảnh) |
---|---|---|---|---|---|
YOLO11n | PyTorch | ✅ | 5.4 | 0.5060 | 337.67 |
YOLO11n | ExecuTorch | ✅ | 11 | 0.5080 | 167.28 |
YOLO11s | PyTorch | ✅ | 19 | 0.5770 | 928.80 |
YOLO11s | ExecuTorch | ✅ | 37 | 0.5780 | 388.31 |
Lưu ý
Thời gian suy luận không bao gồm tiền/hậu xử lý.
Khắc phục sự cố
Các Vấn Đề Thường Gặp
Vấn đề: Python version error
Giải pháp : ExecuTorch yêu cầu Python 3.10 trở lên. Nâng cấp Python cài đặt:
```bash
# Using conda
conda create -n executorch python=3.10
conda activate executorch
```
Vấn đề: Export fails during first run
Giải pháp : ExecuTorch có thể cần tải xuống và biên dịch các thành phần khi sử dụng lần đầu. Hãy đảm bảo bạn có:
```bash
pip install --upgrade executorch
```
Vấn đề: Import errors for ExecuTorch modules
Giải pháp : Đảm bảo ExecuTorch được cài đặt đúng cách:
```bash
pip install executorch --force-reinstall
```
Để biết thêm trợ giúp khắc phục sự cố, hãy truy cập Sự cố GitHub Ultralytics hoặc Tài liệu ExecuTorch .
Tóm tắt
Xuất khẩu YOLO11 các mô hình sang định dạng ExecuTorch cho phép triển khai hiệu quả trên các thiết bị di động và thiết bị biên. Với PyTorch -Tích hợp gốc, hỗ trợ đa nền tảng và hiệu suất được tối ưu hóa, ExecuTorch là lựa chọn tuyệt vời cho các ứng dụng AI biên.
Những điểm chính cần ghi nhớ:
- ExecuTorch cung cấp PyTorch -triển khai edge gốc với hiệu suất tuyệt vời
- Xuất khẩu thật đơn giản với
format='executorch'
tham số - Các mô hình được tối ưu hóa cho CPU di động thông qua phần phụ trợ XNNPACK
- Hỗ trợ iOS , Android và nền tảng Linux nhúng
- Yêu cầu Python Trình biên dịch 3.10+ và FlatBuffers
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 sang định dạng ExecuTorch?
Xuất khẩu một YOLO11 mô hình để ExecuTorch sử dụng một trong hai Python hoặc CLI :
```python
from ultralytics import YOLO
model = YOLO("yolo11n.pt")
model.export(format="executorch")
```
hoặc
```bash
yolo export model=yolo11n.pt format=executorch
```
Yêu cầu hệ thống để xuất ExecuTorch là gì?
Xuất ExecuTorch yêu cầu:
- Python 3.10 trở lên
executorch
gói (cài đặt quapip install executorch
)- PyTorch (được cài đặt tự động với ultralytics )
Lưu ý: Trong lần xuất đầu tiên, ExecuTorch sẽ tự động tải xuống và biên dịch các thành phần cần thiết bao gồm trình biên dịch FlatBuffers.
Tôi có thể chạy suy luận với các mô hình ExecuTorch trực tiếp trong Python ?
Các mô hình ExecuTorch (.pte
Các tệp) được thiết kế để triển khai trên thiết bị di động và thiết bị biên bằng cách sử dụng thời gian chạy ExecuTorch. Chúng không thể được tải trực tiếp bằng YOLO()
để suy luận trong Python . Bạn cần tích hợp chúng vào ứng dụng mục tiêu của mình bằng cách sử dụng thư viện thời gian chạy ExecuTorch.
ExecuTorch hỗ trợ những nền tảng nào?
ExecuTorch hỗ trợ:
- Di động : iOS Và Android
- Linux nhúng : Raspberry Pi, NVIDIA Jetson và các thiết bị ARM khác
- Máy tính để bàn : Linux, macOS và Windows (dành cho phát triển)
ExecuTorch so với TFLite như thế nào khi triển khai trên thiết bị di động?
Cả ExecuTorch và TFLite đều tuyệt vời cho việc triển khai trên thiết bị di động:
- ExecuTorch : Tốt hơn PyTorch tích hợp, bản địa PyTorch quy trình làm việc, hệ sinh thái đang phát triển
- TFLite : Hoàn thiện hơn, hỗ trợ phần cứng rộng hơn, nhiều ví dụ triển khai hơn
Chọn ExecuTorch nếu bạn đã sử dụng PyTorch và muốn có một lộ trình triển khai gốc. Hãy chọn TFLite để có khả năng tương thích tối đa và công cụ hoàn thiện.
Tôi có thể sử dụng các mô hình ExecuTorch với GPU gia tốc?
Có! ExecuTorch hỗ trợ tăng tốc phần cứng thông qua nhiều nền tảng khác nhau:
- GPU di động : Thông qua các đại biểu Vulkan, Metal hoặc OpenCL
- NPU/DSP : Thông qua các đại biểu dành riêng cho nền tảng
- Mặc định : XNNPACK để tối ưu hóa CPU suy luận
Tham khảo Tài liệu ExecuTorch để biết cách thiết lập cụ thể cho phần phụ trợ.