Chuyển đến nội dung

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?

PyTorch Tổng quan về 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:

  1. 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
  2. Mô hình tải: Tải .pte nộp hồ sơ vào đơn đăng ký của bạn
  3. 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ặc imgsz=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 qua pip 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ợ.



📅 Đã tạo 0 ngày trước ✏️ Đã cập nhật 0 ngày trước

Bình luận