Hướng dẫn 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 về cách triển khai Ultralytics YOLO11 trên các thiết bị Raspberry Pi. Ngoài ra, nó còn trình bày các điểm chuẩn hiệu suất để chứng minh khả năng của YOLO11 trên các thiết bị nhỏ gọn và mạnh mẽ này.
Xem: Các bản cập nhật và cải tiến của Raspberry Pi 5.
Lưu ý
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. 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 dự kiến sẽ hoạt động miễn là Raspberry Pi OS Bookworm tương tự được cài đặt.
Raspberry Pi là gì?
Raspberry Pi là một máy tính đơn bảng nhỏ, giá cả phải chăng. Nó đã trở nên phổ biến cho một loạt các dự án và ứng dụng, từ tự động hóa nhà cho người có sở thích đến sử dụng trong công nghiệp. Các bảng 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 (General Purpose Input/Output) 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à chi phí thấp, nhỏ gọn và linh hoạt.
So sánh các dòng Raspberry Pi
Raspberry Pi 3 | Raspberry Pi 4 | Raspberry Pi 5 | |
---|---|---|---|
CPU | Broadcom BCM2837, Cortex-A53 64Bit SoC | Broadcom BCM2711, Cortex-A72 64Bit SoC | Broadcom BCM2712, Cortex-A76 64Bit SoC |
Tần số tối đa của CPU | 1.4GHz | 1.8GHz | 2.4GHz |
GPU | Videocore IV | Videocore VI | VideoCore VII |
Tần số tối đa của GPU | 400Mhz | 500Mhz | 800Mhz |
Bộ nhớ | 1GB LPDDR2 SDRAM | 1GB, 2GB, 4GB, 8GB LPDDR4-3200 SDRAM | 4GB, 8GB LPDDR4X-4267 SDRAM |
PCIe | Không áp dụng | Không áp dụng | 1xPCIe 2.0 Interface |
Công suất tiêu thụ tối đa | 2.5A@5V | 3A@5V | 5A@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 tương tự Unix dựa trên bản phân phối Debian GNU/Linux dành cho dòng máy tính đơn bảng 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 desktop LXDE đã được sửa đổi với trình quản lý cửa sổ xếp chồng Openbox. Raspberry Pi OS đang trong quá trình 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 suất của càng nhiều gói Debian càng tốt trên Raspberry Pi.
Cài đặt Raspberry Pi OS vào Raspberry Pi
Việc đầu tiên cần làm sau khi có trong tay một chiếc Raspberry Pi là flash thẻ micro-SD bằng Raspberry Pi OS, lắp vào thiết bị và khởi động vào hệ điều hành. Hãy làm theo Tài liệu Bắt đầu Chi tiết của Raspberry Pi để 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 để xây dựng dự án Thị Giác Máy Tính tiếp theo của bạn. Bạn có thể sử dụng một trong hai cách.
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 image docker dựng sẵn cho Raspberry Pi.
Thực thi lệnh bên dưới để kéo Docker container và chạy trên Raspberry Pi. Dựa trên image docker 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 mà không cần Docker
Cài đặt Gói Ultralytics
Ở đây, chúng ta sẽ cài đặt gói Ultralytics trên Raspberry Pi với các dependency tùy chọn để có thể xuất các mô hình PyTorch sang các định dạng khác nhau.
-
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
-
Cài đặt
ultralytics
gói pip với các dependency tùy chọnpip install ultralytics[export]
-
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 Ultralytics hỗ trợ, 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 các nền tảng di động/nhúng (chẳng hạn như kiến trúc ARM).
Chuyển đổi Mô hình sang NCNN và Chạy Suy luận
Mô hình YOLO11n ở định dạng PyTorch được chuyển đổi sang 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.
Điểm chuẩn YOLO11 trên Raspberry Pi 5
Điểm chuẩn YOLO11 được nhóm Ultralytics chạy trên mười đị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 Lite, PaddlePaddle, MNN, NCNN. Điểm chuẩn được chạy trên Raspberry Pi 5 ở FP32 độ chính xác 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 vào điểm chuẩn cho các mô hình YOLO11n và YOLO11s vì các kích thước mô hình khác quá lớn để chạy trên Raspberry Pi và không mang lại hiệu suất tốt.

Bảng so sánh chi tiết
Bảng dưới đây thể hiện kết quả benchmark cho hai mô hình khác nhau (YOLO11n, YOLO11s) trên mười định dạng khác nhau (PyTorch, TorchScript, ONNX, OpenVINO, TF SavedModel, TF GraphDef, TF Lite, PaddlePaddle, MNN, NCNN), chạy trên Raspberry Pi 5, cho chúng ta biết trạng thái, kích thước, số liệu mAP50-95(B) và thời gian suy luận cho mỗi sự kết hợp.
Hiệu suất
Định dạng | Trạng thái | Dung lượng trên ổ cứng (MB) | mAP50-95(B) | Thời gian suy luận (ms/ảnh) |
---|---|---|---|---|
PyTorch | ✅ | 5.4 | 0.5101 | 387.63 |
TorchScript | ✅ | 10.5 | 0.5077 | 457.84 |
ONNX | ✅ | 10.2 | 0.5077 | 191.09 |
OpenVINO | ✅ | 10.4 | 0.5058 | 84.76 |
TF SavedModel | ✅ | 25.9 | 0.5077 | 306.94 |
TF GraphDef | ✅ | 10.3 | 0.5077 | 309.82 |
TF Lite | ✅ | 10.3 | 0.5077 | 425.77 |
PaddlePaddle | ✅ | 20.5 | 0.5077 | 463.93 |
MNN | ✅ | 10.1 | 0.5059 | 114.97 |
NCNN | ✅ | 10.2 | 0.5031 | 94.03 |
Định dạng | Trạng thái | Dung lượng trên ổ cứng (MB) | mAP50-95(B) | Thời gian suy luận (ms/ảnh) |
---|---|---|---|---|
PyTorch | ✅ | 18.4 | 0.5791 | 962.69 |
TorchScript | ✅ | 36.5 | 0.5782 | 1181.94 |
ONNX | ✅ | 36.3 | 0.5782 | 449.85 |
OpenVINO | ✅ | 36.4 | 0.5810 | 181.53 |
TF SavedModel | ✅ | 91.0 | 0.5782 | 660.62 |
TF GraphDef | ✅ | 36.4 | 0.5782 | 669.23 |
TF Lite | ✅ | 36.3 | 0.5782 | 1093.41 |
PaddlePaddle | ✅ | 72.6 | 0.5782 | 1140.61 |
MNN | ✅ | 36.2 | 0.5805 | 274.63 |
NCNN | ✅ | 36.2 | 0.5784 | 224.20 |
Được đánh giá bằng Ultralytics 8.3.152
Lưu ý
Thời gian suy luận không bao gồm tiền/hậu xử lý.
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 YOLO11n PyTorch model
model = YOLO("yolo11n.pt")
# Benchmark YOLO11n speed and accuracy on the COCO128 dataset for all all export formats
results = model.benchmark(data="coco128.yaml", imgsz=640)
# Benchmark YOLO11n speed and accuracy on the COCO128 dataset for all all export formats
yolo benchmark model=yolo11n.pt data=coco128.yaml imgsz=640
Xin lưu ý rằng kết quả đánh giá hiệu năng có thể khác nhau 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 đánh giá. Để có kết quả đáng tin cậy nhất, hãy sử dụng bộ dữ liệu có số lượng lớn hình ảnh, 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, điều cần thiết là nắm bắt các nguồn cấp video theo thời gian thực để thực hiện suy luận. Đầu nối MIPI CSI 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 Raspberry Pi Camera Module 3 để lấy nguồn cấp video và thực hiện suy luận bằng các mô hình YOLO11.
Mẹo
Tìm hiểu thêm về các mô-đun camera khác nhau do Raspberry Pi cung cấp và cách bắt đầu với các mô-đun camera Raspberry Pi.
Lưu ý
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), vì vậy bạn sẽ cần cáp bộ điều hợp 15 chân sang 22 chân để kết nối với Camera Raspberry Pi.
Kiểm tra Camera
Thực hiện lệnh sau sau khi kết nối camera với Raspberry Pi. Bạn sẽ thấy luồng video trực tiếp từ camera trong khoảng 5 giây.
rpicam-hello
Mẹo
Tìm hiểu thêm về rpicam-hello
cách sử dụng trên tài liệu chính thức của Raspberry Pi
Suy luận với Camera
Có 2 phương pháp sử dụng Camera Raspberry Pi để suy luận các mô hình YOLO11.
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 camera và suy luận các mô hình YOLO11.
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 luồng TCP với rpicam-vid
từ camera đã 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
cách 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
Hãy 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 hay nhất khi sử dụng Raspberry Pi
Có một vài phương pháp hay nhất cần tuân theo để cho phép hiệu suất tối đa trên Raspberry Pi chạy YOLO11.
-
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 các thao tác ghi liên tục và có thể bị hỏng. Với đầu nối PCIe trên bo mạch của Raspberry Pi 5, giờ đây bạn có thể kết nối SSD bằng bộ điều hợp như NVMe Base cho Raspberry Pi 5.
-
Flash không có GUI
Khi flash 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ị, giúp có thêm không gian cho quá trình xử lý thị giác máy tính.
-
Ép xung Raspberry Pi
Nếu bạn muốn tăng một chút hiệu suất khi chạy các mô hình Ultralytics YOLO11 trên Raspberry Pi 5, bạn có thể ép xung CPU từ 2.4GHz cơ bản 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 theo gia số 100MHz. Đảm bảo hệ thống làm mát phù hợp, vì ép xung làm tăng sinh nhiệt và có thể dẫn đến điều chỉnh nhiệt.
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
arm_freq=3000 gpu_freq=1000 force_turbo=1
d. Lưu và thoát bằng cách nhấn CTRL + X, sau đó Y và nhấn ENTER
e. Khởi động lại Raspberry Pi
Các bước tiếp theo
Chúc mừng bạn đã thiết lập thành công YOLO trên Raspberry Pi của mình! Để học hỏi và hỗ trợ thêm, hãy truy cập Tài liệu Ultralytics YOLO11 và Kashmir 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 có nguy cơ tuyệt chủng. Chúng tôi ghi nhận công việc tiên phong và tập trung vào 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
Làm cách nào để thiết lập Ultralytics YOLO11 trên Raspberry Pi mà không cần sử dụng Docker?
Để thiết lập Ultralytics YOLO11 trên Raspberry Pi mà không cần Docker, hãy làm theo các bước sau:
- 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
- Cài đặt gói Ultralytics với các phụ thuộc tùy chọn:
pip install ultralytics[export]
- Khởi động lại thiết bị để áp dụng các 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 YOLO11 trên Raspberry Pi cho các tác vụ AI?
Định dạng NCNN của Ultralytics YOLO11 được tối ưu hóa cao cho các nền tảng di động và nhúng, khiến nó trở nên lý tưởng để chạy các tác vụ AI trên các 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 cách nào để chuyển đổi mô hình YOLO11 sang định dạng NCNN để sử dụng trên Raspberry Pi?
Bạn có thể chuyển đổi mô hình PyTorch YOLO11 sang định dạng NCNN bằng các lệnh Python hoặc CLI:
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 YOLO11 là gì?
Các đ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.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, có sẵn các biến thể 4GB và 8GB.
Những cải tiến này đóng góp vào các chuẩn mực hiệu suất tốt hơn cho các mô hình YOLO11 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 cách nào để thiết lập Raspberry Pi Camera Module để hoạt động với Ultralytics YOLO11?
Có hai phương pháp để thiết lập Camera Raspberry Pi cho suy luận YOLO11:
-
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()
-
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 với Camera.