Bỏ qua nội dung

Hướng dẫn bắt đầu nhanh: Raspberry Pi với Ultralytics YOLO11

Hướng dẫn toàn diện này cung cấp hướng dẫn chi tiết để triển khai Ultralytics YOLO11 trên các thiết bị Raspberry Pi . Ngoài ra, nó còn giới thiệu các điểm chuẩn hiệu suất để chứng minh khả năng của YOLO11 trên những thiết bị nhỏ và mạnh mẽ này.



Đồng hồ: Bản cập nhật và cải tiến của Raspberry Pi 5.

Ghi chú

Hướng dẫn này đã được thử nghiệm với Raspberry Pi 4 và Raspberry Pi 5 chạy Raspberry Pi OS Bookworm (Debian 12) mới nhất. Sử dụng hướng dẫn này cho các thiết bị Raspberry Pi cũ hơn như Raspberry Pi 3 dự kiến sẽ hoạt động miễn là cùng một Raspberry Pi OS Bookworm được cài đặt.

Raspberry Pi là gì?

Raspberry Pi là một máy tính bảng nhỏ, giá cả phải chăng. Nó đã trở nên phổ biến cho nhiều dự án và ứng dụng, từ tự động hóa gia đình cho đến các ứng dụng công nghiệp. Các bo mạch Raspberry Pi có khả năng chạy nhiều hệ điều hành khác nhau và chúng cung cấp các chân GPIO (Đầu vào/Đầu ra mục đích chung) cho phép tích hợp dễ dàng với các cảm biến, bộ truyền động và các thành phần phần cứng khác. Chúng có nhiều kiểu máy khác nhau với các thông số kỹ thuật khác nhau, nhưng tất cả đều có chung triết lý thiết kế cơ bản là giá thành thấp, nhỏ gọn và đa năng.

So sánh dòng Raspberry Pi

Mâm xôi Pi 3 Mâm xôi Pi 4 Mâm xôi Pi 5
CPU Broadcom BCM2837, Cortex-A53 64Bit SoC Broadcom BCM2711, Cortex-A72 64Bit SoC Broadcom BCM2712, Cortex-A76 64Bit SoC
CPU Tần số tối đa 1,4GHz 1,8GHz 2,4GHz
GPU Videocore IV Videocore VI VideoCore VII
GPU Tần số tối đa 400MHz 500MHz 800MHz
Ký ức BỘ NHỚ RAM LPDDR2 1GB BỘ NHỚ 1GB, 2GB, 4GB, 8GB LPDDR4-3200 SDRAM BỘ NHỚ 4GB, 8GB LPDDR4X-4267
PCIe KHÔNG CÓ KHÔNG CÓ Giao diện 1xPCIe 2.0
Công suất rút tối đa 2.5A@5V 3A@5V 5A@5V (hỗ trợ PD)

Hệ điều hành Raspberry Pi là gì?

Raspberry Pi OS (trước đây gọi là Raspbian) là một hệ điều hành giống Unix dựa trên bản phân phối Debian GNU/Linux cho dòng máy tính bảng đơn nhỏ gọn Raspberry Pi do Raspberry Pi Foundation phân phối. Raspberry Pi OS được tối ưu hóa cao cho Raspberry Pi với CPU ARM và sử dụng môi trường máy tính để bàn LXDE đã sửa đổi với trình quản lý cửa sổ xếp chồng Openbox. Raspberry Pi OS đang được phát triển tích cực, tập trung vào việc cải thiện tính ổn định và hiệu suất của càng nhiều gói Debian càng tốt trên Raspberry Pi.

Flash Raspberry Pi OS vào Raspberry Pi

Điều đầu tiên cần làm sau khi sở hữu Raspberry Pi là flash thẻ nhớ micro-SD với Raspberry Pi OS, lắp vào thiết bị và khởi động vào hệ điều hành. Làm theo Tài liệu hướng dẫn bắt đầu chi tiết của Raspberry Pi để chuẩn bị cho thiết bị của bạn sử dụng lần đầu.

Cài đặt Ultralytics

Có hai cách để thiết lập Ultralytics trên Raspberry Pi để xây dựng dự án Computer Vision tiếp theo của bạn. Bạn có thể sử dụng bất kỳ gói nào trong số chúng.

Bắt đầu với Docker

Cách nhanh nhất để bắt đầu với Ultralytics YOLO11 trên Raspberry Pi là chạy với hình ảnh docker được dựng sẵn cho Raspberry Pi.

Thực hiện lệnh bên dưới để kéo container Docker và chạy trên Raspberry Pi. Lệnh này dựa trên arm64v8/debian docker image có chứa Debian 12 (Bookworm) trong môi trường Python3.

t=ultralytics/ultralytics:latest-arm64 && sudo docker pull $t && sudo docker run -it --ipc=host $t

Sau khi thực hiện xong, hãy chuyển tới phần Sử dụng NCNN trên Raspberry Pi .

Bắt đầu mà không cần Docker

Cài đặt Ultralytics Bưu kiện

Ở đây chúng ta sẽ cài đặt Ultralytics gói trên Raspberry Pi với các phụ thuộc tùy chọn để chúng ta có thể xuất các mô hình PyTorch sang các định dạng khác nhau.

  1. Cập nhật danh sách các gói, cài đặt pip và nâng cấp lên phiên bản mới nhất

    sudo apt update
    sudo apt install python3-pip -y
    pip install -U pip
    
  2. Cài đặt ultralytics gói pip với các phụ thuộc tùy chọn

    pip install ultralytics[export]
    
  3. Khởi động lại thiết bị

    sudo reboot
    

Sử dụng NCNN trên Raspberry Pi

Trong số tất cả các định dạng xuất mô hình được hỗ trợ bởi Ultralytics , NCNN mang lại hiệu suất suy luận tốt nhất khi làm việc với các thiết bị Raspberry Pi vì NCNN được tối ưu hóa cao cho nền tảng di động/nhúng (như kiến trúc ARM). Do đó, chúng tôi khuyến nghị sử dụng NCNN với Raspberry Pi.

Chuyển đổi mô hình thành NCNN và chạy suy luận

Mô hình YOLO11n trong PyTorch định dạng được chuyển đổi thành NCNN để chạy suy luận với mô hình đã xuất.

Ví dụ

from ultralytics import YOLO

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

# Export the model to NCNN format
model.export(format="ncnn")  # creates 'yolo11n_ncnn_model'

# Load the exported NCNN model
ncnn_model = YOLO("yolo11n_ncnn_model")

# Run inference
results = ncnn_model("https://ultralytics.com/images/bus.jpg")
# Export a YOLO11n PyTorch model to NCNN format
yolo export model=yolo11n.pt format=ncnn  # creates 'yolo11n_ncnn_model'

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

Mẹo

Để biết thêm chi tiết về các tùy chọn xuất được hỗ trợ, hãy truy cập trang tài liệu Ultralytics về các tùy chọn triển khai .

Mâm xôi Pi 5 YOLO11 Tiêu chuẩn

YOLO11 chuẩn mực đã được chạy bởi Ultralytics nhóm nghiên cứu về chín định dạng mô hình khác nhau để đo tốc độ và độ chính xác : PyTorch , TorchScript , ONNX , OpenVINO , TF SavedModel , TF GraphDef , TF Nhẹ, PaddlePaddle , NCNN . Điểm chuẩn được chạy trên Raspberry Pi 5 ở độ chính xác FP32 với kích thước hình ảnh đầu vào mặc định là 640.

Biểu đồ so sánh

Chúng tôi chỉ đưa ra điểm chuẩn cho các mẫu YOLO11n và YOLO11s vì các mẫu khác có kích thước quá lớn để chạy trên Raspberry Pis và không mang lại hiệu suất tốt.

YOLO11 chuẩn mực trên RPi 5
Được đánh dấu bằng Ultralytics 8.3.39

Bảng so sánh chi tiết

Bảng dưới đây thể hiện kết quả chuẩn cho hai mô hình khác nhau (YOLO11n, YOLO11s) trên chín định dạng khác nhau ( PyTorch , TorchScript , ONNX , OpenVINO , TF SavedModel , TF GraphDef , TF Nhẹ, PaddlePaddle , NCNN ), chạy trên Raspberry Pi 5, cung cấp cho chúng ta trạng thái, kích thước, số liệu mAP50-95(B) và thời gian suy luận cho mỗi kết hợp.

Hiệu suất

Định dạng Trạng thái Kích thước trên đĩa (MB) mAP50-95(B) Thời gian suy luận (ms/im)
PyTorch 5.4 0.6100 405.238
TorchScript 10.5 0.6082 526.628
ONNX 10.2 0.6082 168.082
OpenVINO 10.4 0.6082 81.192
TF SavedModel 25.8 0.6082 377.968
TF GraphDef 10.3 0.6082 487.244
TF Nhẹ 10.3 0.6082 317.398
PaddlePaddle 20.4 0.6082 561.892
MNN 10.1 0.6106 112.554
NCNN 10.2 0.6106 88.026
Định dạng Trạng thái Kích thước trên đĩa (MB) mAP50-95(B) Thời gian suy luận (ms/im)
PyTorch 18.4 0.7526 1011.60
TorchScript 36.5 0.7416 1268.502
ONNX 36.3 0.7416 324.17
OpenVINO 36.4 0.7416 179.324
TF SavedModel 91.1 0.7416 714.382
TF GraphDef 36.4 0.7416 1019.83
TF Nhẹ 36.4 0.7416 849.86
PaddlePaddle 72.5 0.7416 1276.34
MNN 36.2 0.7409 273.032
NCNN 36.2 0.7419 194.858

Được đánh dấu bằng Ultralytics 8.3.39

Tái tạo kết quả của chúng tôi

Để tái tạo những điều trên Ultralytics chuẩn mực trên tất cả các định dạng xuất , hãy chạy mã này:

Ví dụ

from ultralytics import YOLO

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

# Benchmark YOLO11n speed and accuracy on the COCO8 dataset for all all export formats
results = model.benchmarks(data="coco8.yaml", imgsz=640)
# Benchmark YOLO11n speed and accuracy on the COCO8 dataset for all all export formats
yolo benchmark model=yolo11n.pt data=coco8.yaml imgsz=640

Lưu ý rằng kết quả chuẩn có thể thay đổi tùy thuộc vào cấu hình phần cứng và phần mềm chính xác của hệ thống, cũng như khối lượng công việc hiện tại của hệ thống tại thời điểm chạy chuẩn. Để có kết quả đáng tin cậy nhất, hãy sử dụng tập dữ liệu có số lượng hình ảnh lớn, tức là data='coco8.yaml' (4 val images), ordata='coco.yaml'` (5000 hình ảnh giá trị).

Sử dụng Camera Raspberry Pi

Khi sử dụng Raspberry Pi cho các dự án Computer Vision, về cơ bản có thể là lấy nguồn cấp dữ liệu video thời gian thực để thực hiện suy luận. Đầu nối MIPI CSI tích hợp trên Raspberry Pi cho phép bạn kết nối các mô-đun camera Raspberry PI chính thức. Trong hướng dẫn này, chúng tôi đã sử dụng Mô-đun camera Raspberry Pi 3 để lấy nguồn cấp dữ liệu video và thực hiện suy luận bằng YOLO11 mô hình.

Ghi chú

Raspberry Pi 5 sử dụng đầu nối CSI nhỏ hơn Raspberry Pi 4 (15 chân so với 22 chân), do đó bạn sẽ cần cáp chuyển đổi 15 chân sang 22 chân để kết nối với Camera Raspberry Pi.

Kiểm tra máy ảnh

Thực hiện lệnh sau sau khi kết nối camera với Raspberry Pi. Bạn sẽ thấy video trực tiếp từ camera trong khoảng 5 giây.

rpicam-hello

Suy luận với Camera

Có 2 phương pháp sử dụng Camera Raspberry Pi để suy luận YOLO11 mô hình.

Cách sử dụng

Chúng ta có thể sử dụng picamera2được cài đặt sẵn với Raspberry Pi OS để truy cập vào camera và suy luận YOLO11 mô hình.

Ví dụ

import cv2
from picamera2 import Picamera2

from ultralytics import YOLO

# Initialize the Picamera2
picam2 = Picamera2()
picam2.preview_configuration.main.size = (1280, 720)
picam2.preview_configuration.main.format = "RGB888"
picam2.preview_configuration.align()
picam2.configure("preview")
picam2.start()

# Load the YOLO11 model
model = YOLO("yolo11n.pt")

while True:
    # Capture frame-by-frame
    frame = picam2.capture_array()

    # Run YOLO11 inference on the frame
    results = model(frame)

    # Visualize the results on the frame
    annotated_frame = results[0].plot()

    # Display the resulting frame
    cv2.imshow("Camera", annotated_frame)

    # Break the loop if 'q' is pressed
    if cv2.waitKey(1) == ord("q"):
        break

# Release resources and close windows
cv2.destroyAllWindows()

Chúng ta cần khởi tạo một luồng TCP với rpicam-vid từ camera được kết nối để chúng ta có thể sử dụng URL luồng này làm đầu vào khi chúng ta suy luận sau này. Thực hiện lệnh sau để bắt đầu luồng TCP.

rpicam-vid -n -t 0 --inline --listen -o tcp://127.0.0.1:8888

Tìm hiểu thêm về rpicam-vid sử dụng trên tài liệu chính thức của Raspberry Pi

Ví dụ

from ultralytics import YOLO

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

# Run inference
results = model("tcp://127.0.0.1:8888")
yolo predict model=yolo11n.pt source="tcp://127.0.0.1:8888"

Mẹo

Kiểm tra tài liệu của chúng tôi về Nguồn suy luận nếu bạn muốn thay đổi loại hình ảnh/video đầu vào

Thực hành tốt nhất khi sử dụng Raspberry Pi

Có một số biện pháp thực hành tốt nhất cần tuân theo để đạt được hiệu suất tối đa khi chạy Raspberry Pis YOLO11 .

  1. Sử dụng ổ SSD

    Khi sử dụng Raspberry Pi để sử dụng liên tục 24x7, bạn nên sử dụng SSD cho hệ thống vì thẻ SD sẽ không thể chịu được việc ghi liên tục và có thể bị hỏng. Với đầu nối PCIe tích hợp trên Raspberry Pi 5, giờ đây bạn có thể kết nối SSD bằng bộ chuyển đổi như NVMe Base cho Raspberry Pi 5 .

  2. Flash không có GUI

    Khi cài đặt Raspberry Pi OS, bạn có thể chọn không cài đặt môi trường Desktop (Raspberry Pi OS Lite) và điều này có thể tiết kiệm một chút RAM trên thiết bị, để lại nhiều không gian hơn cho quá trình xử lý thị giác máy tính.

Các bước tiếp theo

Xin chúc mừng bạn đã thiết lập thành công YOLO trên Raspberry Pi của bạn! Để tìm hiểu thêm và được hỗ trợ, hãy truy cập Ultralytics YOLO11 DocsKashmir World Foundation .

Lời cảm ơn và trích dẫn

Hướng dẫn này ban đầu được tạo ra bởi Daan Eeltink cho Kashmir World Foundation, một tổ chức dành riêng cho việc sử dụng YOLO để bảo tồn các loài có nguy cơ tuyệt chủng. Chúng tôi ghi nhận công trình tiên phong và trọng tâm giáo dục của họ trong lĩnh vực công nghệ phát hiện vật thể.

Để biết thêm thông tin về các hoạt động của Kashmir World Foundation, bạn có thể truy cập trang web của họ.

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

Làm thế nào để tôi thiết lập Ultralytics YOLO11 trên Raspberry Pi mà không sử dụng Docker?

Để thiết lập Ultralytics YOLO11 trên Raspberry Pi không có Docker, hãy làm theo các bước sau:

  1. Cập nhật danh sách gói và cài đặt pip:
    sudo apt update
    sudo apt install python3-pip -y
    pip install -U pip
    
  2. Cài đặt Ultralytics gói có các phụ thuộc tùy chọn:
    pip install ultralytics[export]
    
  3. Khởi động lại thiết bị để áp dụng thay đổi:
    sudo reboot
    

Để biết hướng dẫn chi tiết, hãy tham khảo phần Bắt đầu mà không cần Docker .

Tại sao tôi nên sử dụng Ultralytics YOLO11 'S NCNN định dạng trên Raspberry Pi cho các tác vụ AI?

Ultralytics YOLO11 'S NCNN Định dạng này được tối ưu hóa cao cho các nền tảng di động và nhúng, rất lý tưởng để chạy các tác vụ AI trên thiết bị Raspberry Pi. NCNN tối đa hóa hiệu suất suy luận bằng cách tận dụng kiến trúc ARM, cung cấp khả năng xử lý nhanh hơn và hiệu quả hơn so với các định dạng khác. Để biết thêm chi tiết về các tùy chọn xuất được hỗ trợ, hãy truy cập trang tài liệu Ultralytics về các tùy chọn triển khai .

Làm thế nào tôi có thể chuyển đổi một YOLO11 mô hình để NCNN định dạng nào để sử dụng trên Raspberry Pi?

Bạn có thể chuyển đổi một PyTorch YOLO11 mô hình để NCNN định dạng sử dụng một trong hai Python hoặc CLI lệnh:

Ví dụ

from ultralytics import YOLO

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

# Export the model to NCNN format
model.export(format="ncnn")  # creates 'yolo11n_ncnn_model'

# Load the exported NCNN model
ncnn_model = YOLO("yolo11n_ncnn_model")

# Run inference
results = ncnn_model("https://ultralytics.com/images/bus.jpg")
# Export a YOLO11n PyTorch model to NCNN format
yolo export model=yolo11n.pt format=ncnn  # creates 'yolo11n_ncnn_model'

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

Để biết thêm chi tiết, hãy xem phần Sử dụng NCNN trên Raspberry Pi .

Sự khác biệt về phần cứng giữa Raspberry Pi 4 và Raspberry Pi 5 liên quan đến việc chạy là gì? YOLO11 ?

Những điểm khác biệt chính bao gồm:

  • CPU : Raspberry Pi 4 sử dụng Broadcom BCM2711, Cortex-A72 64-bit SoC, trong khi Raspberry Pi 5 sử dụng Broadcom BCM2712, Cortex-A76 64-bit SoC.
  • Tần số CPU tối đa : Raspberry Pi 4 có tần số tối đa là 1,8 GHz, trong khi Raspberry Pi 5 đạt 2,4 GHz.
  • Bộ nhớ : Raspberry Pi 4 cung cấp tới 8GB LPDDR4-3200 SDRAM, trong khi Raspberry Pi 5 có LPDDR4X-4267 SDRAM, có sẵn ở các biến thể 4GB và 8GB.

Những cải tiến này góp phần nâng cao hiệu suất chuẩn mực cho YOLO11 các mẫu trên Raspberry Pi 5 so với Raspberry Pi 4. Tham khảo bảng So sánh dòng Raspberry Pi để biết thêm chi tiết.

Làm thế nào tôi có thể thiết lập một Mô-đun Camera Raspberry Pi để hoạt động với Ultralytics YOLO11 ?

Có hai phương pháp để thiết lập Camera Raspberry Pi cho YOLO11 suy luận:

  1. Sử dụng picamera2:

    import cv2
    from picamera2 import Picamera2
    
    from ultralytics import YOLO
    
    picam2 = Picamera2()
    picam2.preview_configuration.main.size = (1280, 720)
    picam2.preview_configuration.main.format = "RGB888"
    picam2.preview_configuration.align()
    picam2.configure("preview")
    picam2.start()
    
    model = YOLO("yolo11n.pt")
    
    while True:
        frame = picam2.capture_array()
        results = model(frame)
        annotated_frame = results[0].plot()
        cv2.imshow("Camera", annotated_frame)
    
        if cv2.waitKey(1) == ord("q"):
            break
    
    cv2.destroyAllWindows()
    
  2. Sử dụng luồng TCP :

    rpicam-vid -n -t 0 --inline --listen -o tcp://127.0.0.1:8888
    
    from ultralytics import YOLO
    
    model = YOLO("yolo11n.pt")
    results = model("tcp://127.0.0.1:8888")
    

Để biết hướng dẫn thiết lập chi tiết, hãy truy cập phần Suy luận bằng Camera .

📅 Được tạo ra cách đây 1 năm ✏️ Đã cập nhật cách đây 8 ngày

Bình luận