Hướng dẫn Bắt đầu Nhanh: Raspberry Pi với Ultralytics YOLO26

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



Watch: Raspberry Pi 5 updates and improvements.
Lưu ý

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

Raspberry Pi là gì?

Raspberry Pi là một chiếc máy tính bảng đơn nhỏ gọn, giá cả phải chăng. Nó đã trở nên phổ biến cho nhiều dự án và ứng dụng đa dạng, từ tự động hóa nhà thông minh của người dùng nghiệp dư đế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à cung cấp các chân GPIO (General Purpose Input/Output) cho phép tích hợp dễ dàng với cảm biến, thiết bị truyền động và các linh kiện phần cứng khác. Chúng có các model khác nhau với thông số kỹ thuật tùy biến, nhưng tất cả đều có chung triết lý thiết kế cơ bản là chi phí thấp, nhỏ gọn và linh hoạt.

So sánh các dòng Raspberry Pi

Raspberry Pi 3Raspberry Pi 4Raspberry Pi 5
CPUBroadcom BCM2837, Cortex-A53 64Bit SoCBroadcom BCM2711, Cortex-A72 64Bit SoCBroadcom BCM2712, Cortex-A76 64Bit SoC
Tần số tối đa của CPU1.4GHz1.8GHz2.4GHz
GPUVideocore IVVideocore VIVideoCore VII
Tần số tối đa của GPU400Mhz500Mhz800Mhz
Bộ nhớ1GB LPDDR2 SDRAM1GB, 2GB, 4GB, 8GB LPDDR4-3200 SDRAM4GB, 8GB LPDDR4X-4267 SDRAM
PCIeN/AN/AGiao diện 1xPCIe 2.0
Mức tiêu thụ điện tối đa2.5A@5V3A@5V5A@5V (đã bật PD)

Raspberry Pi OS 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 phân phối Debian GNU/Linux dành cho dòng máy tính bảng đơn nhỏ gọn Raspberry Pi, được phân phối bởi Raspberry Pi Foundation. Raspberry Pi OS được tối ưu hóa cao độ cho Raspberry Pi với các CPU ARM và sử dụng môi trường desktop LXDE đã sửa đổi cùng 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, với trọng tâm là cải thiện tính ổn định và hiệu năng 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

Việc đầu tiên cần làm sau khi cầm trên tay thiết bị Raspberry Pi là flash thẻ micro-SD với Raspberry Pi OS, cắm vào thiết bị và khởi động vào OS. Hãy làm theo Tài liệu Bắt đầu của Raspberry Pi chi tiết để chuẩn bị thiết bị của bạn cho lần sử dụng đầu tiên.

Thiết lập Ultralytics

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

Bắt đầu với Docker

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

Thực thi lệnh dưới đây để pull container Docker và chạy trên Raspberry Pi. Lệnh này dựa trên docker image arm64v8/debian 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 hoàn tất, hãy chuyển đến phần Sử dụng NCNN trên Raspberry Pi.

Bắt đầu không dùng Docker

Cài đặt gói Ultralytics

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

  1. Cập nhật danh sách 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 gói ultralytics bằng 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 model được Ultralytics hỗ trợ, NCNN mang lại hiệu năng 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 các nền tảng di động/nhúng (như kiến trúc ARM).

Chuyển đổi Model sang NCNN và Chạy Suy luận

Model YOLO26n ở định dạng PyTorch được chuyển đổi sang NCNN để chạy suy luận với model đã xuất.

Ví dụ
from ultralytics import YOLO

# Load a YOLO26n PyTorch model
model = YOLO("yolo26n.pt")

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

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

# Run inference
results = ncnn_model("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.

Cải tiến hiệu năng của YOLO26 so với YOLO11

YOLO26 được thiết kế đặc biệt để chạy trên các thiết bị hạn chế về phần cứng như Raspberry Pi 5. So với YOLO11n, YOLO26n đạt mức tăng ~15% FPS (6.79 → 7.79) đồng thời mang lại mAP cao hơn (40.1 so với 39.5) ở kích thước đầu vào 640 với các model xuất ONNX trên Raspberry Pi 5. Bảng và biểu đồ dưới đây cho thấy sự so sánh này.

YOLO26 benchmarks on RPi 5
Benchmarked with Ultralytics 8.4.14
Hiệu suất
ModelmAP50-95(B)Thời gian inference (ms/im)
YOLO26n40.1128.42
YOLO26s47.8352.84
YOLO26m52.5993.78
YOLO26l54.41259.46
YOLO26x56.92636.26

Được đo điểm chuẩn với Ultralytics 8.4.14.

Điểm chuẩn YOLO26 trên Raspberry Pi 5

Các điểm chuẩn YOLO26 đã được nhóm Ultralytics thực hiện trên mười định dạng model khác nhau để đo tốc độ và độ chính xác: PyTorch, TorchScript, ONNX, OpenVINO, TF SavedModel, TF GraphDef, TF Lite, MNN, NCNN, ExecuTorch. Các điểm chuẩn được chạy trên Raspberry Pi 5 ở độ chính xác FP32 với kích thước ảnh đầu vào mặc định là 640.

Biểu đồ so sánh

Chúng tôi chỉ bao gồm các điểm chuẩn cho các model YOLO26n và YOLO26s vì các kích thước model khác quá lớn để chạy trên Raspberry Pi và không mang lại hiệu năng tốt.

YOLO26 benchmarks on RPi 5
Benchmarked with Ultralytics 8.4.1

Bảng so sánh chi tiết

Bảng dưới đây hiển thị kết quả đo điểm chuẩn cho hai model khác nhau (YOLO26n, YOLO26s) trên mười định dạng khác nhau (PyTorch, TorchScript, ONNX, OpenVINO, TF SavedModel, TF GraphDef, TF Lite, MNN, NCNN, ExecuTorch), chạy trên Raspberry Pi 5, cung cấp cho chúng ta trạng thái, kích thước, chỉ số mAP50-95(B) và thời gian suy luận cho mỗi kết hợp.

Hiệu suất
Định dạngTrạng tháiKích thước trên đĩa (MB)mAP50-95(B)Thời gian inference (ms/im)
PyTorch5.30.4798302.15
TorchScript9.80.4764357.58
ONNX9.50.4764130.33
OpenVINO9.60.481870.74
TF SavedModel24.60.4764213.58
TF GraphDef9.50.4764213.5
TF Lite9.90.4764251.41
MNN9.40.478490.89
NCNN9.40.480567.69
ExecuTorch9.40.4764148.36

Được đo điểm chuẩn với Ultralytics 8.4.1

Lưu ý

Thời gian suy luận (inference) không bao gồm xử lý trước/sau (pre/post-processing).

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

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

Ví dụ
from ultralytics import YOLO

# Load a YOLO26n PyTorch model
model = YOLO("yolo26n.pt")

# Benchmark YOLO26n speed and accuracy on the COCO128 dataset for all export formats
results = model.benchmark(data="coco128.yaml", imgsz=640)

Lưu ý rằng kết quả benchmark có thể khác nhau dựa trên 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 benchmark. Để có kết quả đáng tin cậy nhất, hãy sử dụng tập dữ liệu có số lượng ảnh lớn, ví dụ: data='coco.yaml' (5000 ảnh val).

Sử dụng Camera Raspberry Pi

Khi sử dụng Raspberry Pi cho các dự án Computer Vision, việc lấy luồng video thời gian thực để thực hiện suy luận là rất cần thiết. Đầu nối MIPI CSI trên bo mạch Raspberry Pi cho phép bạn kết nối các module camera Raspberry Pi chính thức. Trong hướng dẫn này, chúng tôi đã sử dụng Raspberry Pi Camera Module 3 để lấy luồng video và thực hiện suy luận bằng các model YOLO26.

Mẹo
Lưu ý

Raspberry Pi 5 sử dụng các đầu nối CSI nhỏ hơn Raspberry Pi 4 (15-pin so với 22-pin), vì vậy bạn sẽ cần một cáp chuyển đổi 15-pin sang 22-pin để kết nối với Camera Raspberry Pi.

Kiểm tra Camera

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

rpicam-hello
Mẹo

Suy luận (Inference) với Camera

Có 2 phương pháp sử dụng Raspberry Pi Camera để chạy suy luận trên các model YOLO26.

Cách sử dụng

Chúng ta có thể sử dụng picamera2, được cài đặt sẵn cùng với Raspberry Pi OS, để truy cập camera và chạy suy luận trên các model YOLO26.

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 YOLO26 model
model = YOLO("yolo26n.pt")

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

    # Run YOLO26 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()
Mẹo

Xem 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 đầu vào hình ảnh/video

Các phương pháp tối ưu khi sử dụng Raspberry Pi

Có một vài phương pháp tối ưu cần tuân theo để đạt được hiệu suất tối đa trên Raspberry Pi khi chạy YOLO26.

  1. Sử dụng SSD

    Khi sử dụng Raspberry Pi để chạy liên tục 24/7, 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 dữ liệu 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 for Raspberry Pi 5.

  2. Cài đặt không cần 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) để tiết kiệm một chút RAM trên thiết bị, dành thêm dung lượng cho việc xử lý thị giác máy tính.

  3. Ép xung (Overclock) Raspberry Pi

    Nếu bạn muốn tăng hiệu suất một chút khi chạy các model Ultralytics YOLO26 trên Raspberry Pi 5, bạn có thể ép xung CPU từ mức cơ bản 2.4GHz lên 2.9GHz và GPU từ 800MHz lên 1GHz. Nếu hệ thống trở nên không ổn định hoặc bị treo, hãy giảm giá trị ép xung xuống 100MHz mỗi lần. Đảm bảo hệ thống làm mát hoạt động tốt, vì ép xung làm tăng nhiệt độ và có thể dẫn đến hiện tượng giảm xung nhịp do quá nhiệt (thermal throttling).

    a. Nâng cấp phần mềm

    sudo apt update && sudo apt dist-upgrade

    b. Mở để chỉnh sửa tệp cấu hình

    sudo nano /boot/firmware/config.txt

    c. Thêm các dòng sau vào cuối tệp

    arm_freq=3000
    gpu_freq=1000
    force_turbo=1

    d. Lưu và thoát bằng cách nhấn CTRL + X, sau đó nhấn Y, và nhấn ENTER

    e. Khởi động lại Raspberry Pi

Các bước tiếp theo

Bạn đã thiết lập thành công YOLO trên Raspberry Pi. Để học hỏi và nhận hỗ trợ thêm, hãy truy cập Tài liệu Ultralytics YOLO26Kashmir World Foundation.

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

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

Để 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 (FAQ)

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

Để thiết lập Ultralytics YOLO26 trên Raspberry Pi mà không cần 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 gói Ultralytics cùng với các phần 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 không cần Docker.

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

Định dạng NCNN của Ultralytics YOLO26 được tối ưu hóa cao cho các nền tảng di động và nhúng, giúp nó trở nên lý tưởng cho việc 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, mang lại 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 của Ultralytics về các tùy chọn triển khai.

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

Bạn có thể chuyển đổi model PyTorch YOLO26 sang định dạng NCNN bằng cách sử dụng Python hoặc các lệnh CLI:

Ví dụ
from ultralytics import YOLO

# Load a YOLO26n PyTorch model
model = YOLO("yolo26n.pt")

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

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

# Run inference
results = ncnn_model("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 YOLO26 là gì?

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

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

Những cải tiến này góp phần mang lại hiệu suất tốt hơn cho các model YOLO26 trên Raspberry Pi 5 so với Raspberry Pi 4. Hãy 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 thiết lập Raspberry Pi Camera Module để hoạt động với Ultralytics YOLO26?

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

  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("yolo26n.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("yolo26n.pt")
    results = model("tcp://127.0.0.1:8888")

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

Bình luận