Sony IMX500 Xuất khẩu cho Ultralytics YOLOv8
Hướng dẫn này bao gồm việc xuất và triển khai Ultralytics YOLOv8 các mẫu máy ảnh Raspberry Pi AI có cảm biến Sony IMX500.
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.
Định dạng mô hình IMX500 được thiết kế để sử dụng năng lượng tối thiểu trong khi vẫn mang lại hiệu suất nhanh cho mạng nơ-ron. Nó cho phép bạn tối ưu hóa các mô hình Ultralytics YOLOv8 của mình để suy luận tốc độ cao và năng lượng thấp. Trong hướng dẫn này, chúng tôi sẽ hướng dẫn bạn cách xuất và triển khai các mô hình của mình sang định dạng IMX500 đồng thời giúp các mô hình của bạn hoạt động tốt hơn trên Raspberry Pi AI Camera .
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.
Xuất khẩu IMX500 của Sony cho YOLOv8 Mô hình
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.
Trước khi bắt đầu: Để có kết quả tốt nhất, hãy đảm bảo YOLOv8 mô hình được chuẩn bị tốt để xuất bằng cách làm theo Hướng dẫn đào tạo mô hình , Hướng dẫn chuẩn bị dữ liệu và Hướng dẫn điều chỉnh siêu tham số của chúng tôi.
Ví dụ sử dụng
Xuất khẩu một Ultralytics YOLOv8 chuyển đổi mô hình sang định dạng IMX500 và chạy suy luận với mô hình đã xuất.
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 YOLOv8n PyTorch model
model = YOLO("yolov8n.pt")
# Export the model
model.export(format="imx") # exports with PTQ quantization by default
# Load the exported model
imx_model = YOLO("yolov8n_imx_model")
# Run inference
results = imx_model("https://ultralytics.com/images/bus.jpg")
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.
yolov8n_imx_model
├── dnnParams.xml
├── labels.txt
├── packerOut.zip
├── yolov8n_imx.onnx
├── yolov8n_imx500_model_MemoryReport.json
└── yolov8n_imx500_model.pbtxt
Lập luận
Khi xuất mô hình sang định dạng IMX500, bạn có thể chỉ định nhiều đối số khác nhau:
Chìa khóa | Giá trị | Sự miêu tả |
---|---|---|
format |
imx |
Định dạng để xuất sang (imx) |
int8 |
True |
Bật lượng tử hóa INT8 cho mô hình (mặc định: True ) |
imgsz |
640 |
Kích thước hình ảnh cho đầu vào mô hình (mặc định: 640 ) |
Sử dụng IMX500 Export trong triển khai
Sau khi xuất khẩu Ultralytics YOLOv8n mô hình sang định dạng IMX500, có thể triển khai vào Camera AI Raspberry Pi để suy luận.
Đ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:
- Raspberry Pi 5 hoặc Raspberry Pi 4 Model B
- 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.
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.
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.
Bước 4: Khởi động lại Raspberry Pi để những thay đổi có hiệu lực
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
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 -b next https://github.com/raspberrypi/picamera2
cd picamera2
pip install -e . --break-system-packages
cd examples/imx500
Bước 3: Chạy YOLOv8 phát hiện đối tượng bằng cách sử dụng tệp labels.txt được tạo trong quá trình xuất IMX500.
python imx500_object_detection_demo.py --model <path to network.rpk> --fps 25 --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
Tiêu chuẩn
YOLOv8 các tiêu chuẩn dưới đây được chạy bởi Ultralytics nhóm trên Raspberry Pi AI Camera với 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 | Kích thước (MB) | mAP50-95(B) | Thời gian suy luận (ms/im) |
---|---|---|---|---|---|
YOLOv8n | imx | ✅ | 2.9 | 0.522 | 66.66 |
Ghi chú
Xác thực cho điểm chuẩn trên được thực hiện bằng cách sử dụng tập dữ liệu coco8
Có gì bên dưới mui xe?
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:
- 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 đó.
- 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.
- 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.
- 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:
- 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)
- 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ờ)
- Đà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:
- Power-of-Two (thân thiện với phần cứng)
- Đối xứng
- Đồ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)
Công cụ chuyển đổi IMX500 là một phần không thể thiếu của bộ công cụ IMX500, cho phép biên soạn các mô hình để triển khai trên cảm biến IMX500 của Sony (ví dụ: Máy ảnh AI Raspberry Pi). Công cụ này tạo điều kiện thuận lợi cho quá trình chuyển đổi Ultralytics YOLOv8 mô hình được xử lý thông qua Ultralytics phần mềm, đảm bảo chúng tương thích và hoạt động hiệu quả trên phần cứng được chỉ định. Quy trình xuất sau khi lượng tử hóa mô hình bao gồm việc tạo các tệp nhị phân đóng gói dữ liệu cần thiết và cấu hình cụ thể của thiết bị, hợp lý hóa quy trình triển khai trên Camera AI Raspberry Pi.
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.
- Thành phố thông minh : Sử dụng IMX500-exported YOLOv8 mô hình giám sát giao thông và phân tích an toàn với tốc độ xử lý nhanh hơn và độ trễ tối thiểu.
- 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
Xuất khẩu Ultralytics YOLOv8 mô hình sang định dạng IMX500 của Sony cho phép bạn triển khai mô hình của mình để suy luận hiệu quả trên các camera dựa trên IMX500. Bằng cách tận dụng các kỹ thuật lượng tử hóa tiên tiến, bạn có thể giảm kích thước mô hình và cải thiện tốc độ suy luận mà không làm giảm đáng kể độ chính xác.
Để 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
Làm thế nào để tôi xuất khẩu một YOLOv8 mô hình sang định dạng IMX500 cho Camera AI Raspberry Pi?
Để xuất khẩu một YOLOv8 mô hình sang định dạng IMX500, sử dụng một trong hai Python API hoặc CLI yêu cầu:
from ultralytics import YOLO
model = YOLO("yolov8n.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
)
Tôi có thể mong đợi hiệu suất gì từ YOLOv8 các mô hình trên IMX500?
Dựa trên Ultralytics điểm chuẩn trên Raspberry Pi AI Camera:
- YOLOv8n đạt được thời gian suy luận 66,66ms cho mỗi hình ảnh
- 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:
-
Sử dụng công cụ đóng gói để tạo tệp RPK:
-
Sao chép và cài đặt picamera2:
-
Chạy suy luận bằng cách sử dụng tệp RPK đã tạo: