Bỏ qua nội dung

Sony IMX500 Export for Ultralytics YOLO11

This guide covers exporting and deploying Ultralytics YOLO11 models to Raspberry Pi AI Cameras that feature the Sony IMX500 sensor.

Việc triển khai các mô hình thị giác máy tính trên các thiết bị có sức mạnh tính toán hạn chế, chẳng hạn như Raspberry Pi AI Camera , có thể khá khó khăn. Sử dụng định dạng mô hình được tối ưu hóa để có hiệu suất nhanh hơn sẽ tạo ra sự khác biệt rất lớn.

The IMX500 model format is designed to use minimal power while delivering fast performance for neural networks. It allows you to optimize your Ultralytics YOLO11 models for high-speed and low-power inferencing. In this guide, we'll walk you through exporting and deploying your models to the IMX500 format while making it easier for your models to perform well on the Raspberry Pi AI Camera.

Máy ảnh AI Raspberry Pi

Tại sao bạn nên xuất sang IMX500

Cảm biến thị giác thông minh IMX500 của Sony là một phần cứng đột phá trong xử lý AI biên. Đây là cảm biến thị giác thông minh đầu tiên trên thế giới có khả năng AI trên chip. Cảm biến này giúp vượt qua nhiều thách thức trong AI biên, bao gồm tình trạng tắc nghẽn xử lý dữ liệu, mối quan ngại về quyền riêng tư và hạn chế về hiệu suất.
Trong khi các cảm biến khác chỉ truyền hình ảnh và khung hình, IMX500 kể toàn bộ câu chuyện. Nó xử lý dữ liệu trực tiếp trên cảm biến, cho phép các thiết bị tạo ra thông tin chi tiết theo thời gian thực.

Sony's IMX500 Export for YOLO11 Models

IMX500 được thiết kế để thay đổi cách các thiết bị xử lý dữ liệu trực tiếp trên cảm biến mà không cần phải gửi dữ liệu lên đám mây để xử lý.

IMX500 hoạt động với các mô hình lượng tử hóa. Lượng tử hóa làm cho các mô hình nhỏ hơn và nhanh hơn mà không làm mất nhiều độ chính xác . Nó lý tưởng cho các tài nguyên hạn chế của điện toán biên, cho phép các ứng dụng phản hồi nhanh chóng bằng cách giảm độ trễ và cho phép xử lý dữ liệu nhanh chóng tại địa phương, mà không phụ thuộc vào đám mây. Xử lý cục bộ cũng giữ dữ liệu người dùng riêng tư và an toàn vì nó không được gửi đến máy chủ từ xa.

Các tính năng chính của IMX500:

  • Đầu ra siêu dữ liệu: Thay vì chỉ truyền hình ảnh, IMX500 có thể xuất cả hình ảnh và siêu dữ liệu (kết quả suy luận) và chỉ có thể xuất siêu dữ liệu để giảm thiểu kích thước dữ liệu, giảm băng thông và giảm chi phí.
  • Giải quyết các vấn đề về quyền riêng tư: Bằng cách xử lý dữ liệu trên thiết bị, IMX500 giải quyết các vấn đề về quyền riêng tư, lý tưởng cho các ứng dụng lấy con người làm trung tâm như đếm người và theo dõi tình trạng hiện diện.
  • Xử lý thời gian thực: Xử lý nhanh trên cảm biến hỗ trợ các quyết định thời gian thực, hoàn hảo cho các ứng dụng AI biên như hệ thống tự động.

Before You Begin: For best results, ensure your YOLO11 model is well-prepared for export by following our Model Training Guide, Data Preparation Guide, and Hyperparameter Tuning Guide.

Ví dụ sử dụng

Export an Ultralytics YOLO11 model to IMX500 format and run inference with the exported model.

Ghi chú

Ở đây chúng tôi thực hiện suy luận chỉ để đảm bảo mô hình hoạt động như mong đợi. Tuy nhiên, để triển khai và suy luận trên Raspberry Pi AI Camera, vui lòng chuyển đến phần Sử dụng IMX500 Export trong phần Triển khai .

Ví dụ

from ultralytics import YOLO

# Load a YOLO11n PyTorch model
model = YOLO("yolo11n.pt")

# Export the model
model.export(format="imx", data="coco8.yaml")  # exports with PTQ quantization by default

# Load the exported model
imx_model = YOLO("yolo11n_imx_model")

# Run inference
results = imx_model("https://ultralytics.com/images/bus.jpg")
# Export a YOLO11n PyTorch model to imx format with Post-Training Quantization (PTQ)
yolo export model=yolo11n.pt format=imx data=coco8.yaml

# Run inference with the exported model
yolo predict model=yolo11n_imx_model source='https://ultralytics.com/images/bus.jpg'

Cảnh báo

The Ultralytics package installs additional export dependencies at runtime. The first time you run the export command, you may need to restart your console to ensure it works correctly.

Xuất khẩu đối số

Lý lẽ Kiểu Mặc định Sự miêu tả
format str 'imx' Định dạng mục tiêu cho mô hình được xuất ra, 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ể.
int8 bool True 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.
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 quá trình lượng tử hóa.
fraction float 1.0 Chỉ định phần của tập dữ liệu để sử dụng cho hiệu chuẩn lượng tử INT8. Cho phép hiệu chuẩn trên một tập hợp con của toàn bộ tập dữ liệu, hữu ích cho các thí nghiệm hoặc khi tài nguyên bị hạn chế. Nếu không chỉ định với INT8 được bật, toàn bộ tập dữ liệu sẽ được sử dụng.
device str None Chỉ định thiết bị để xuất: GPU (device=0), CPU (device=cpu).

Mẹo

Nếu bạn đang xuất khẩu trên một GPU với CUDA hỗ trợ, xin hãy đưa ra lập luận device=0 để xuất khẩu nhanh hơn.

Để biết thêm chi tiết về quy trình xuất, hãy truy cập trang tài liệu Ultralytics về xuất .

Quá trình xuất khẩu sẽ tạo ra một ONNX mô hình để xác thực lượng tử hóa, cùng với một thư mục có tên <model-name>_imx_model. Thư mục này sẽ bao gồm packerOut.zip tệp, rất cần thiết để đóng gói mô hình để triển khai trên phần cứng IMX500. Ngoài ra, <model-name>_imx_model thư mục sẽ chứa một tập tin văn bản (labels.txt) liệt kê tất cả các nhãn liên quan đến mô hình.

yolo11n_imx_model
├── dnnParams.xml
├── labels.txt
├── packerOut.zip
├── yolo11n_imx.onnx
├── yolo11n_imx500_model_MemoryReport.json
└── yolo11n_imx500_model.pbtxt

Sử dụng IMX500 Export trong triển khai

After exporting Ultralytics YOLO11n model to IMX500 format, it can be deployed to Raspberry Pi AI Camera for inference.

Điều kiện tiên quyết về phần cứng

Hãy đảm bảo bạn có phần cứng dưới đây:

  1. Raspberry Pi 5 hoặc Raspberry Pi 4 Model B
  2. Máy ảnh AI Raspberry Pi

Kết nối camera Raspberry Pi AI với đầu nối MIPI CSI 15 chân trên Raspberry Pi và bật nguồn Raspberry Pi

Phần mềm tiên quyết

Ghi chú

Hướng dẫn này đã được thử nghiệm với Raspberry Pi OS Bookworm chạy trên Raspberry Pi 5

Bước 1: Mở cửa sổ terminal và thực hiện các lệnh sau để cập nhật phần mềm Raspberry Pi lên phiên bản mới nhất.

sudo apt update && sudo apt full-upgrade

Bước 2: Cài đặt phần mềm IMX500 cần thiết để vận hành cảm biến IMX500 cùng với công cụ đóng gói.

sudo apt install imx500-all imx500-tools

Bước 3: Cài đặt các điều kiện tiên quyết để chạy picamera2 ứng dụng. Chúng tôi sẽ sử dụng ứng dụng này sau cho quá trình triển khai.

sudo apt install python3-opencv python3-munkres

Bước 4: Khởi động lại Raspberry Pi để những thay đổi có hiệu lực

sudo reboot

Mô hình gói và triển khai đến Camera AI

Sau khi có được packerOut.zip từ quá trình chuyển đổi IMX500, bạn có thể chuyển tệp này vào công cụ đóng gói để có được tệp RPK. Sau đó, tệp này có thể được triển khai trực tiếp đến Camera AI bằng cách sử dụng picamera2.

Bước 1: Đóng gói mô hình vào tệp RPK

imx500-package -i path/to/packerOut.zip -o path/to/output/folder

Những điều trên sẽ tạo ra một network.rpk tập tin bên trong thư mục đầu ra được chỉ định.

Bước 2: Nhân bản picamera2 kho lưu trữ, cài đặt nó và điều hướng đến các ví dụ imx500

git clone https://github.com/raspberrypi/picamera2
cd picamera2
pip install -e . --break-system-packages
cd examples/imx500

Step 3: Run YOLO11 object detection, using the labels.txt file that has been generated during the IMX500 export.

python imx500_object_detection_demo.py --model path/to/network.rpk --fps 17 --bbox-normalization --ignore-dash-labels --bbox-order xy --labels path/to/labels.txt

Sau đó, bạn sẽ có thể thấy kết quả suy luận trực tiếp như sau

Suy luận về Camera AI Raspberry Pi

Tiêu chuẩn

YOLOv8 and YOLO11n benchmarks below were run by the Ultralytics team on Raspberry Pi AI Camera with imx định dạng mô hình đo tốc độ và độ chính xác.

Người mẫu Định dạng Trạng thái Size of RPK (MB) mAP50-95(B) Thời gian suy luận (ms/im)
YOLOv8n imx 3.1 0.602 58.82
YOLO11n imx 3.2 0.644 62.50

Ghi chú

Validation for the above benchmark was done using coco8 dataset on a Raspberry Pi 5

Có gì bên dưới mui xe?

Triển khai IMX500

Bộ công cụ nén mô hình Sony (MCT)

Bộ công cụ nén mô hình (MCT) của Sony là một công cụ mạnh mẽ để tối ưu hóa các mô hình học sâu thông qua lượng tử hóa và cắt tỉa. Nó hỗ trợ nhiều phương pháp lượng tử hóa khác nhau và cung cấp các thuật toán tiên tiến để giảm kích thước mô hình và độ phức tạp tính toán mà không làm giảm đáng kể độ chính xác. MCT đặc biệt hữu ích để triển khai các mô hình trên các thiết bị hạn chế về tài nguyên, đảm bảo suy luận hiệu quả và giảm độ trễ.

Các tính năng được hỗ trợ của MCT

MCT của Sony cung cấp một loạt các tính năng được thiết kế để tối ưu hóa các mô hình mạng nơ-ron:

  1. Tối ưu hóa đồ thị : Chuyển đổi các mô hình thành các phiên bản hiệu quả hơn bằng cách gộp các lớp như chuẩn hóa hàng loạt vào các lớp trước đó.
  2. Tìm kiếm tham số lượng tử hóa : Giảm thiểu nhiễu lượng tử hóa bằng các số liệu như Lỗi bình phương trung bình, Không cắt và Lỗi trung bình trung bình.
  3. Thuật toán lượng tử hóa nâng cao:
    • Hiệu chỉnh chuyển dịch âm : Xử lý các vấn đề về hiệu suất từ lượng tử hóa kích hoạt đối xứng.
    • Lọc giá trị ngoại lai : Sử dụng điểm z để phát hiện và loại bỏ giá trị ngoại lai.
    • Phân cụm : Sử dụng lưới lượng tử không đồng nhất để phân phối dữ liệu khớp hơn.
    • Tìm kiếm độ chính xác hỗn hợp : Chỉ định các độ rộng bit lượng tử khác nhau cho mỗi lớp dựa trên độ nhạy.
  4. Hình ảnh hóa : Sử dụng TensorBoard để quan sát thông tin chi tiết về hiệu suất mô hình, giai đoạn lượng tử hóa và cấu hình độ rộng bit.

Lượng tử hóa

MCT hỗ trợ một số phương pháp lượng tử hóa để giảm kích thước mô hình và cải thiện tốc độ suy luận:

  1. Lượng tử hóa sau đào tạo (PTQ):
    • Có sẵn thông qua Keras và PyTorch API.
    • Độ phức tạp: Thấp
    • Chi phí tính toán: Thấp ( CPU phút)
  2. Lượng tử hóa sau đào tạo dựa trên gradient (GPTQ):
    • Có sẵn thông qua Keras và PyTorch API.
    • Độ phức tạp: Trung bình
    • Chi phí tính toán: Trung bình (2-3 GPU giờ)
  3. Đào tạo về lượng tử hóa (QAT):
    • Độ phức tạp: Cao
    • Chi phí tính toán: Cao (12-36 GPU giờ)

MCT cũng hỗ trợ nhiều lược đồ lượng tử hóa khác nhau cho trọng số và kích hoạt:

  1. Power-of-Two (thân thiện với phần cứng)
  2. Đối xứng
  3. Đồng phục

Cắt tỉa có cấu trúc

MCT giới thiệu phương pháp cắt tỉa mô hình có cấu trúc, nhận biết phần cứng được thiết kế cho các kiến trúc phần cứng cụ thể. Kỹ thuật này tận dụng khả năng Single Instruction, Multiple Data (SIMD) của nền tảng mục tiêu bằng cách cắt tỉa các nhóm SIMD. Điều này làm giảm kích thước và độ phức tạp của mô hình trong khi tối ưu hóa việc sử dụng kênh, phù hợp với kiến trúc SIMD để sử dụng tài nguyên mục tiêu của dấu chân bộ nhớ trọng số. Có sẵn thông qua Keras và PyTorch API.

Công cụ chuyển đổi IMX500 (Trình biên dịch)

The IMX500 Converter Tool is integral to the IMX500 toolset, allowing the compilation of models for deployment on Sony's IMX500 sensor (for instance, Raspberry Pi AI Cameras). This tool facilitates the transition of Ultralytics YOLO11 models processed through Ultralytics software, ensuring they are compatible and perform efficiently on the specified hardware. The export procedure following model quantization involves the generation of binary files that encapsulate essential data and device-specific configurations, streamlining the deployment process on the Raspberry Pi AI Camera.

Các trường hợp sử dụng thực tế

Xuất sang định dạng IMX500 có khả năng ứng dụng rộng rãi trong nhiều ngành công nghiệp. Sau đây là một số ví dụ:

  • AI và IoT biên : Cho phép phát hiện đối tượng trên máy bay không người lái hoặc camera an ninh, nơi xử lý thời gian thực trên các thiết bị công suất thấp là điều cần thiết.
  • Thiết bị đeo được : Triển khai các mô hình được tối ưu hóa để xử lý AI quy mô nhỏ trên thiết bị đeo theo dõi sức khỏe.
  • Smart Cities: Use IMX500-exported YOLO11 models for traffic monitoring and safety analysis with faster processing and minimal latency.
  • Phân tích bán lẻ : Nâng cao khả năng giám sát tại cửa hàng bằng cách triển khai các mô hình được tối ưu hóa trong hệ thống điểm bán hàng hoặc kệ thông minh.

Phần kết luận

Exporting Ultralytics YOLO11 models to Sony's IMX500 format allows you to deploy your models for efficient inference on IMX500-based cameras. By leveraging advanced quantization techniques, you can reduce model size and improve inference speed without significantly compromising accuracy.

Để biết thêm thông tin và hướng dẫn chi tiết, hãy tham khảo trang web IMX500 của Sony.

CÂU HỎI THƯỜNG GẶP

How do I export a YOLO11 model to IMX500 format for Raspberry Pi AI Camera?

To export a YOLO11 model to IMX500 format, use either the Python API or CLI command:

from ultralytics import YOLO

model = YOLO("yolo11n.pt")
model.export(format="imx")  # Exports with PTQ quantization by default

Quá trình xuất sẽ tạo một thư mục chứa các tệp cần thiết để triển khai, bao gồm packerOut.zip có thể sử dụng với công cụ đóng gói IMX500 trên Raspberry Pi.

Những lợi ích chính của việc sử dụng định dạng IMX500 để triển khai AI biên là gì?

Định dạng IMX500 mang lại một số lợi thế quan trọng cho việc triển khai ở biên:

  • Xử lý AI trên chip giúp giảm độ trễ và mức tiêu thụ điện năng
  • Xuất ra cả hình ảnh và siêu dữ liệu (kết quả suy luận) thay vì chỉ có hình ảnh
  • Nâng cao quyền riêng tư bằng cách xử lý dữ liệu cục bộ mà không phụ thuộc vào đám mây
  • Khả năng xử lý thời gian thực lý tưởng cho các ứng dụng nhạy cảm về thời gian
  • Lượng tử hóa được tối ưu hóa để triển khai mô hình hiệu quả trên các thiết bị có nguồn lực hạn chế

Cần có những điều kiện tiên quyết nào về phần cứng và phần mềm để triển khai IMX500?

Để triển khai các mô hình IMX500, bạn sẽ cần:

Phần cứng:

  • Raspberry Pi 5 hoặc Raspberry Pi 4 Model B
  • Camera Raspberry Pi AI với cảm biến IMX500

Phần mềm:

  • Raspberry Pi OS Bookworm
  • Phần mềm và công cụ IMX500 (sudo apt install imx500-all imx500-tools)
  • Python gói cho picamera2 (sudo apt install python3-opencv python3-munkres)

What performance can I expect from YOLO11 models on the IMX500?

Dựa trên Ultralytics điểm chuẩn trên Raspberry Pi AI Camera:

  • YOLO11n achieves 58.82ms inference time per image
  • mAP50-95 của 0,522 trên tập dữ liệu COCO8
  • Kích thước mô hình chỉ 2,9MB sau khi lượng tử hóa

Điều này chứng minh rằng định dạng IMX500 cung cấp khả năng suy luận thời gian thực hiệu quả trong khi vẫn duy trì độ chính xác tốt cho các ứng dụng AI biên.

Làm thế nào để đóng gói và triển khai mô hình đã xuất của tôi vào Camera AI Raspberry Pi?

Sau khi xuất sang định dạng IMX500:

  1. Sử dụng công cụ đóng gói để tạo tệp RPK:

    imx500-package -i path/to/packerOut.zip -o path/to/output/folder
    
  2. Sao chép và cài đặt picamera2:

    git clone https://github.com/raspberrypi/picamera2
    cd picamera2 && pip install -e . --break-system-packages
    
  3. Chạy suy luận bằng cách sử dụng tệp RPK đã tạo:

    python imx500_object_detection_demo.py --model path/to/network.rpk --fps 17 --bbox-normalization --labels path/to/labels.txt
    


📅 Được tạo cách đây 5 tháng ✏️ Đã cập nhật cách đây 11 ngày

Bình luận