快速入门指南:Raspberry Pi 与 Ultralytics YOLO26
这份综合指南提供了在Raspberry Pi设备上部署 Ultralytics YOLO26 的详细指南。此外,它还展示了性能基准,以证明 YOLO26 在这些小型而强大的设备上的能力。
观看: Raspberry Pi 5 的更新和改进。
注意
本指南已在运行最新 Raspberry Pi OS Bookworm (Debian 12) 的 Raspberry Pi 4 和 Raspberry Pi 5 上进行了测试。只要安装了相同的 Raspberry Pi OS Bookworm,将本指南用于较旧的 Raspberry Pi 设备(如 Raspberry Pi 3)预计也能正常工作。
什么是 Raspberry Pi?
Raspberry Pi 是一款小巧、经济实惠的单板计算机。它已广泛应用于各种项目和应用,从业余爱好者的家庭自动化到工业用途。Raspberry Pi 板能够运行各种操作系统,并提供 GPIO(通用输入/输出)引脚,可以轻松与传感器、执行器和其他硬件组件集成。它们有不同的型号,规格各不相同,但它们都具有低成本、紧凑和多功能的相同基本设计理念。
Raspberry Pi 系列比较
| Raspberry Pi 3 | Raspberry Pi 4 | Raspberry Pi 5 | |
|---|---|---|---|
| CPU | Broadcom BCM2837, Cortex-A53 64位 SoC | Broadcom BCM2711, Cortex-A72 64位 SoC | Broadcom BCM2712, Cortex-A76 64位 SoC |
| CPU 最大频率 | 1.4GHz | 1.8GHz | 2.4GHz |
| GPU | Videocore IV | Videocore VI | VideoCore VII |
| GPU 最大频率 | 400Mhz | 500Mhz | 800Mhz |
| 内存 | 1GB LPDDR2 SDRAM | 1GB, 2GB, 4GB, 8GB LPDDR4-3200 SDRAM | 4GB, 8GB LPDDR4X-4267 SDRAM |
| PCIe | N/A | N/A | 1xPCIe 2.0 接口 |
| 最大功耗 | 2.5A@5V | 3A@5V | 5A@5V (启用PD) |
什么是 Raspberry Pi OS?
Raspberry Pi OS(前称 Raspbian)是一个类 Unix 操作系统,它基于 Debian GNU/Linux 发行版,专为 Raspberry Pi 基金会发布的 Raspberry Pi 系列紧凑型单板计算机而设计。Raspberry Pi OS 针对配备 ARM CPU 的 Raspberry Pi 进行了高度优化,并使用修改后的 LXDE 桌面环境以及 Openbox 堆叠窗口管理器。Raspberry Pi OS 正在积极开发中,重点是提高尽可能多的 Debian 软件包在 Raspberry Pi 上的稳定性和性能。
将 Raspberry Pi OS 刷入 Raspberry Pi
获得 Raspberry Pi 后,首先要做的是将 Raspberry Pi OS 刷入 micro-SD 卡,插入设备并启动到操作系统。请按照 Raspberry Pi 提供的详细入门文档操作,为首次使用做好设备准备。
设置 Ultralytics
在 Raspberry Pi 上设置 Ultralytics 包以构建您的下一个计算机视觉项目有两种方法。您可以选择其中任何一种。
从 Docker 开始
在 Raspberry Pi 上开始使用 Ultralytics YOLO26 的最快方法是运行预构建的 Raspberry Pi Docker 镜像。
执行以下命令以拉取 Docker 容器并在 Raspberry Pi 上运行。这基于 arm64v8/debian Docker 镜像,其中包含 Python3 环境中的 Debian 12 (Bookworm)。
t=ultralytics/ultralytics:latest-arm64
sudo docker pull $t && sudo docker run -it --ipc=host $t
完成此操作后,请跳至在 Raspberry Pi 上使用 NCNN 部分。
不使用 Docker 启动
安装 Ultralytics 软件包
在这里,我们将在 Raspberry Pi 上安装 Ultralytics 包以及可选依赖项,以便我们可以将 PyTorch 模型导出为其他不同的格式。
更新软件包列表,安装 pip 并升级到最新版本
sudo apt update sudo apt install python3-pip -y pip install -U pip安装
ultralytics带有可选依赖项的 pip 软件包pip install ultralytics[export]重新启动设备
sudo reboot
在 Raspberry Pi 上使用 NCNN
在 Ultralytics 支持的所有模型导出格式中,NCNN 在使用 Raspberry Pi 设备时可提供最佳的推理性能,因为 NCNN 针对移动/嵌入式平台(如 ARM 架构)进行了高度优化。
将模型转换为 NCNN 并运行推理
PyTorch 格式的 YOLO26n 模型被转换为 NCNN,以便使用导出的模型运行推理。
示例
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")
# Export a YOLO26n PyTorch model to NCNN format
yolo export model=yolo26n.pt format=ncnn # creates 'yolo26n_ncnn_model'
# Run inference with the exported model
yolo predict model='yolo26n_ncnn_model' source='https://ultralytics.com/images/bus.jpg'
提示
有关支持的导出选项的更多详细信息,请访问 Ultralytics 文档页面上的部署选项。
Raspberry Pi 5 YOLO26 基准测试
Ultralytics 团队在十种不同的模型格式上对 YOLO26 进行了基准测试,衡量了速度和准确性,这些格式包括:PyTorch、TorchScript、ONNX、OpenVINO、TF SavedModel、TF GraphDef、TF Lite、MNN、NCNN、ExecuTorch。基准测试在 Raspberry Pi 5 上以 FP32 精度运行,默认输入图像大小为 640。
对比图
我们只包含了 YOLO26n 和 YOLO26s 模型的基准测试,因为其他模型尺寸过大,无法在 Raspberry Pi 上运行,并且无法提供良好的性能。

详细对比表
下表展示了在 Raspberry Pi 5 上运行的两种不同模型(YOLO26n、YOLO26s)在十种不同格式(PyTorch、TorchScript、ONNX、OpenVINO、TF SavedModel、TF GraphDef、TF Lite、MNN、NCNN、ExecuTorch)下的基准测试结果,提供了每种组合的状态、大小、mAP50-95(B) 指标和推理时间。
性能
| 格式 | 状态 | 磁盘占用空间 (MB) | mAP50-95(B) | 推理时间 (ms/im) |
|---|---|---|---|---|
| PyTorch | ✅ | 5.3 | 0.4798 | 302.15 |
| TorchScript | ✅ | 9.8 | 0.4764 | 357.58 |
| ONNX | ✅ | 9.5 | 0.4764 | 130.33 |
| OpenVINO | ✅ | 9.6 | 0.4818 | 70.74 |
| TF SavedModel | ✅ | 24.6 | 0.4764 | 213.58 |
| TF GraphDef | ✅ | 9.5 | 0.4764 | 213.5 |
| TF Lite | ✅ | 9.9 | 0.4764 | 251.41 |
| MNN | ✅ | 9.4 | 0.4784 | 90.89 |
| NCNN | ✅ | 9.4 | 0.4805 | 67.69 |
| ExecuTorch | ✅ | 9.4 | 0.4764 | 148.36 |
| 格式 | 状态 | 磁盘占用空间 (MB) | mAP50-95(B) | 推理时间 (ms/im) |
|---|---|---|---|---|
| PyTorch | ✅ | 19.5 | 0.5740 | 836.54 |
| TorchScript | ✅ | 36.8 | 0.5665 | 1032.25 |
| ONNX | ✅ | 36.5 | 0.5665 | 351.96 |
| OpenVINO | ✅ | 36.7 | 0.5654 | 158.6 |
| TF SavedModel | ✅ | 92.2 | 0.5665 | 507.6 |
| TF GraphDef | ✅ | 36.5 | 0.5665 | 525.64 |
| TF Lite | ✅ | 36.9 | 0.5665 | 805.3 |
| MNN | ✅ | 36.4 | 0.5644 | 236.47 |
| NCNN | ✅ | 36.4 | 0.5697 | 168.47 |
| ExecuTorch | ✅ | 36.5 | 0.5665 | 388.72 |
使用 Ultralytics 8.4.1 进行基准测试
注意
推理时间不包括预处理/后处理。
复现我们的结果
要复现上述 Ultralytics 在所有导出格式上的基准测试,请运行以下代码:
示例
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)
# Benchmark YOLO26n speed and accuracy on the COCO128 dataset for all export formats
yolo benchmark model=yolo26n.pt data=coco128.yaml imgsz=640
请注意,基准测试结果可能因系统的具体硬件和软件配置而异,也可能因运行基准测试时系统的当前工作负载而异。为了获得最可靠的结果,请使用包含大量图像的数据集,例如: data='coco.yaml' (5000 张验证图像)。
使用 Raspberry Pi 摄像头
在将 Raspberry Pi 用于计算机视觉项目时,获取实时视频流以执行推理至关重要。Raspberry Pi 上的板载 MIPI CSI 连接器允许您连接官方 Raspberry Pi 摄像头模块。在本指南中,我们使用了Raspberry Pi 摄像头模块 3来获取视频流并使用 YOLO26 模型执行推理。
提示
了解更多关于 Raspberry Pi 提供的不同摄像头模块,以及 如何开始使用 Raspberry Pi 摄像头模块。
注意
Raspberry Pi 5 使用比 Raspberry Pi 4 更小的 CSI 连接器(15 针 vs 22 针),因此您需要一根 15 针转 22 针的适配器电缆才能连接到 Raspberry Pi Camera。
测试摄像头
将摄像头连接到 Raspberry Pi 后,执行以下命令。您应该会看到来自摄像头的实时视频流,持续约 5 秒。
rpicam-hello
提示
使用摄像头进行推理
有两种方法可以使用 Raspberry Pi 摄像头对 YOLO26 模型运行推理。
用法
我们可以使用 picamera2 预装在 Raspberry Pi OS 中,用于访问摄像头并对 YOLO26 模型运行推理。
示例
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()
我们需要用 rpicam-vid 从连接的摄像头启动一个 TCP 流,这样我们就可以在稍后进行推理时使用这个流 URL 作为输入。执行以下命令以启动 TCP 流。
rpicam-vid -n -t 0 --inline --listen -o tcp://127.0.0.1:8888
了解更多关于 rpicam-vid 在官方 Raspberry Pi 文档上的用法
示例
from ultralytics import YOLO
# Load a YOLO26n PyTorch model
model = YOLO("yolo26n.pt")
# Run inference
results = model("tcp://127.0.0.1:8888")
yolo predict model=yolo26n.pt source="tcp://127.0.0.1:8888"
提示
如果您想更改图像/视频输入类型,请查看我们的推理源文档
使用 Raspberry Pi 时的最佳实践
为了使运行 YOLO26 的 Raspberry Pi 设备发挥最大性能,需要遵循一些最佳实践。
使用固态硬盘 (SSD)
当 Raspberry Pi 用于 24x7 全天候持续使用时,建议使用 SSD 作为系统盘,因为 SD 卡无法承受连续写入,可能会损坏。借助 Raspberry Pi 5 上的板载 PCIe 连接器,现在您可以使用适配器(例如 NVMe Base for Raspberry Pi 5)连接 SSD。
无 GUI 刷写
刷写 Raspberry Pi OS 时,您可以选择不安装桌面环境 (Raspberry Pi OS Lite),这样可以节省设备上的一些 RAM,从而为计算机视觉处理留下更多空间。
树莓派超频
如果您想在 Raspberry Pi 5 上运行 Ultralytics YOLO26 模型时稍微提升性能,可以将 CPU 从其基频 2.4GHz 超频到 2.9GHz,并将 GPU 从 800MHz 超频到 1GHz。如果系统变得不稳定或崩溃,请以 100MHz 的增量降低超频值。确保有适当的散热措施,因为超频会增加发热量并可能导致热节流。
a. 升级软件
sudo apt update && sudo apt dist-upgradeb. 打开以编辑配置文件
sudo nano /boot/firmware/config.txtc. 在底部添加以下行
arm_freq=3000 gpu_freq=1000 force_turbo=1d. 按 CTRL + X 保存并退出,然后按 Y,然后按 ENTER
e. 重启 Raspberry Pi
下一步
您已成功在 Raspberry Pi 上设置 YOLO。如需进一步学习和支持,请访问Ultralytics YOLO26 文档和Kashmir World Foundation。
致谢与引用
本指南最初由 Daan Eeltink 为 Kashmir World Foundation 创建,该组织致力于使用 YOLO 来保护濒危物种。我们感谢他们在目标检测技术领域的开创性工作和教育重点。
有关 Kashmir World Foundation 活动的更多信息,您可以访问他们的网站。
常见问题
如何在不使用 Docker 的情况下在 Raspberry Pi 上设置 Ultralytics YOLO26?
要在 Raspberry Pi 上不使用 Docker 设置 Ultralytics YOLO26,请遵循以下步骤:
- 更新软件包列表并安装
pip:sudo apt update sudo apt install python3-pip -y pip install -U pip - 安装带有可选依赖项的 Ultralytics 软件包:
pip install ultralytics[export] - 重新启动设备以应用更改:
sudo reboot
有关详细说明,请参阅在没有 Docker 的情况下启动部分。
为什么我应该在 Raspberry Pi 上为 AI 任务使用 Ultralytics YOLO26 的 NCNN 格式?
Ultralytics YOLO26 的 NCNN 格式针对移动和嵌入式平台进行了高度优化,使其非常适合在 Raspberry Pi 设备上运行 AI 任务。NCNN 通过利用 ARM 架构最大限度地提高推理性能,与其他格式相比,提供更快、更高效的处理。有关支持的导出选项的更多详细信息,请访问Ultralytics 部署选项文档页面。
如何将 YOLO26 模型转换为 NCNN 格式以在 Raspberry Pi 上使用?
您可以使用 python 或 CLI 命令将 PyTorch YOLO26 模型转换为 NCNN 格式:
示例
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")
# Export a YOLO26n PyTorch model to NCNN format
yolo export model=yolo26n.pt format=ncnn # creates 'yolo26n_ncnn_model'
# Run inference with the exported model
yolo predict model='yolo26n_ncnn_model' source='https://ultralytics.com/images/bus.jpg'
有关更多详细信息,请参见在 Raspberry Pi 上使用 NCNN部分。
Raspberry Pi 4 和 Raspberry Pi 5 之间与运行 YOLO26 相关的硬件差异是什么?
主要区别包括:
- CPU:Raspberry Pi 4 使用 Broadcom BCM2711、Cortex-A72 64 位 SoC,而 Raspberry Pi 5 使用 Broadcom BCM2712、Cortex-A76 64 位 SoC。
- 最大 CPU 频率:Raspberry Pi 4 的最大频率为 1.8GHz,而 Raspberry Pi 5 达到 2.4GHz。
- 内存:Raspberry Pi 4 提供高达 8GB 的 LPDDR4-3200 SDRAM,而 Raspberry Pi 5 具有 LPDDR4X-4267 SDRAM,提供 4GB 和 8GB 两种型号。
这些增强功能有助于 YOLO26 模型在 Raspberry Pi 5 上实现比 Raspberry Pi 4 更好的性能基准。有关更多详细信息,请参阅Raspberry Pi 系列比较表。
如何设置 Raspberry Pi 摄像头模块以与 Ultralytics YOLO26 配合使用?
有两种方法可以设置 Raspberry Pi 摄像头以进行 YOLO26 推理:
使用
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()使用 TCP 流:
rpicam-vid -n -t 0 --inline --listen -o tcp://127.0.0.1:8888from ultralytics import YOLO model = YOLO("yolo26n.pt") results = model("tcp://127.0.0.1:8888")
有关详细的设置说明,请访问摄像头推理部分。