快速入门指南:Raspberry Pi 与Ultralytics YOLO11
本综合指南提供了在Raspberry Pi设备上部署Ultralytics YOLO11 的详细攻略。此外,它还展示了性能基准,以证明YOLO11 在这些小巧而功能强大的设备上的能力。
观看: Raspberry Pi 5 的更新和改进。
备注
本指南已在运行最新 Raspberry PiOS Bookworm(Debian 12)的 Raspberry Pi 4 和 Raspberry Pi 5 上进行了测试。对于较旧的 Raspberry Pi 设备(如 Raspberry Pi 3),只要安装了相同的 Raspberry Pi OS Bookworm,使用本指南也可正常工作。
什么是 Raspberry Pi?
Raspberry Pi 是一种小型、经济实惠的单板计算机。从业余爱好者的家庭自动化到工业用途,它在各种项目和应用中广受欢迎。Raspberry Pi 板能够运行各种操作系统,并提供 GPIO(通用输入/输出)引脚,可轻松与传感器、执行器和其他硬件组件集成。它们有不同的型号,规格也各不相同,但都具有相同的基本设计理念,即低成本、紧凑型和多功能。
树莓派系列比较
树莓派 3 | 树莓派 4 | 树莓派 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 | 视频核心 VII |
GPU 最大频率 | 400Mhz | 500Mhz | 800MHz |
内存 | 1GB LPDDR2 SDRAM | 1GB、2GB、4GB、8GB LPDDR4-3200 SDRAM | 4GB, 8GB LPDDR4X-4267 SDRAM |
PCIe | 不适用 | 不适用 | 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 操作系统闪存到 Raspberry Pi 上
拿到 Raspberry Pi 后,要做的第一件事就是用 Raspberry Pi OS 闪存 micro-SD 卡,插入设备并启动操作系统。按照Raspberry Pi 提供的详细入门文档,为首次使用设备做好准备。
设置Ultralytics
在 Raspberry Pi 上安装Ultralytics 软件包以构建下一个计算机视觉项目有两种方法。你可以使用其中任何一种。
从 Docker 开始
在 Raspberry Pi 上开始使用Ultralytics YOLO11 的最快方法是使用为 Raspberry Pi 预制的 docker 镜像。
执行下面的命令,调出 Docker 容器并在 Raspberry Pi 上运行。这是基于arm64v8/debiandocker 镜像,其中包含 Python3 环境下的 Debian 12 (Bookworm)。
完成上述步骤后,请跳至在 Raspberry Pi 上使用NCNN 部分。
不使用 Docker 启动
安装Ultralytics 软件包
在这里,我们将在 Raspberry Pi 上安装Ultralytics 软件包和可选依赖项,以便导出 PyTorch模型导出为其他不同格式。
-
更新软件包列表,安装 pip 并升级到最新版本
-
安装
ultralytics
pip 软件包与可选依赖项 -
重启设备
在 Raspberry Pi 上使用NCNN
在Ultralytics.NET 支持的所有模型导出格式中,.NET 是最受欢迎的、 NCNN由于NCNN 针对移动/嵌入式平台(如 ARM 架构)进行了高度优化,因此在使用 Raspberry Pi 设备时可提供最佳推理性能。因此,我们建议在使用 Raspberry Pi 时使用NCNN 。
将模型转换为NCNN 并运行推理
PyTorch 格式的 YOLO11n 模型被转换为NCNN ,以便使用导出的模型进行推理。
示例
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")
提示
有关支持的导出选项的详细信息,请访问Ultralytics 部署选项文档页面。
Raspberry Pi 5YOLO11 基准测试
YOLO11 Ultralytics 团队在九种不同的模型格式上运行了基准测试,测量速度和精度: , , , , , , Lite, , 。基准测试在 Raspberry Pi 5 上以 FP32PyTorch TorchScript ONNX OpenVINO TF SavedModel TF GraphDef TF PaddlePaddle NCNN精度运行,默认输入图像大小为 640。
对比图表
我们只对 YOLO11n 和 YOLO11s 型号进行了基准测试,因为其他型号尺寸太大,无法在 Raspberry Pis 上运行,也无法提供良好的性能。
详细对照表
下表列出了在 Raspberry Pi 5 上运行的两种不同模型(YOLO11n 和 YOLO11s)在九种不同格式(PyTorch,TorchScript,ONNX,OpenVINO,TF SavedModel ,TF GraphDef ,TF Lite,PaddlePaddle,NCNN )下的基准测试结果,并给出了每种组合的状态、大小、mAP50-95(B) 指标和推理时间。
性能
格式 | 现状 | 磁盘大小(MB) | mAP50-95(B) | 推理时间(毫秒/分钟) |
---|---|---|---|---|
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 轻型 | ✅ | 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 |
格式 | 现状 | 磁盘大小(MB) | mAP50-95(B) | 推理时间(毫秒/分钟) |
---|---|---|---|---|
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 轻型 | ✅ | 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 |
使用Ultralytics 8.3.39 进行基准测试
复制我们的结果
要在所有导出格式上重现上述Ultralytics 基准,请运行此代码:
示例
请注意,基准测试结果可能会因系统的具体硬件和软件配置以及运行基准测试时系统的当前工作量而有所不同。为了获得最可靠的结果,请使用包含大量图像的数据集,即 data='coco8.yaml' (4 val images), or
data='coco.yaml'` (5000 val images)。
使用 Raspberry Pi 摄像头
在使用 Raspberry Pi 进行计算机视觉项目时,抓取实时视频馈送以执行推理是非常重要的。Raspberry Pi 上的板载 MIPI CSI 连接器允许您连接官方的 Raspberry Pi 摄像头模块。在本指南中,我们使用Raspberry Pi 摄像头模块 3抓取视频源,并使用YOLO11 模型进行推理。
提示
备注
Raspberry Pi 5 使用比 Raspberry Pi 4 更小的 CSI 接头(15 针与 22 针),因此您需要15 针到 22 针的转接线来连接 Raspberry Pi 摄像头。
测试相机
将摄像头连接到 Raspberry Pi 后执行以下命令。你应该能看到摄像机的实时视频画面,大约持续 5 秒钟。
用相机推理
使用 Raspberry Pi 相机推理YOLO11 模型有两种方法。
使用方法
我们可以使用 picamera2
它预装了 Raspberry Pi OS,可以访问摄像头和推理YOLO11 模型。
示例
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()
我们需要用 rpicam-vid
这样我们就可以在以后推理时将此流 URL 用作输入。执行以下命令启动 TCP 流。
提示
如果您想更改图像/视频输入类型,请查看我们的推理源文档
使用 Raspberry Pi 的最佳实践
要在运行YOLO11 的 Raspberry Pis 上实现最高性能,需要遵循几个最佳实践。
-
使用固态硬盘
在全天候持续使用 Raspberry Pi 时,建议使用固态硬盘作为系统的固态硬盘,因为 SD 卡无法承受连续写入,可能会损坏。有了 Raspberry Pi 5 的板载 PCIe 接口,现在就可以使用适配器(如Raspberry Pi 5 的 NVMe Base)连接固态硬盘了。
-
无图形用户界面的 Flash
闪存 Raspberry Pi OS 时,可以选择不安装桌面环境(Raspberry Pi OS Lite),这样可以节省设备的内存,为计算机视觉处理留出更多空间。
下一步工作
恭喜您在 Raspberry Pi 上成功设置YOLO !如需进一步学习和支持,请访问Ultralytics YOLO11 Docs和克什米尔世界基金会。
致谢和引用
本指南最初由 Daan Eeltink 为克什米尔世界基金会(Kashmir World Foundation)制作,该组织致力于利用YOLO 保护濒危物种。我们对他们在物体检测技术领域的开拓性工作和教育重点表示感谢。
有关克什米尔世界基金会活动的更多信息,请访问其网站。
常见问题
不使用 Docker,如何在 Raspberry Pi 上设置Ultralytics YOLO11 ?
要在没有 Docker 的 Raspberry Pi 上设置Ultralytics YOLO11 ,请按照以下步骤操作:
- 更新软件包列表并安装
pip
: - 安装Ultralytics 软件包及可选依赖项:
- 重新启动设备以应用更改:
有关详细说明,请参阅 "不使用 Docker 启动"部分。
为什么要在 Raspberry Pi 上使用Ultralytics YOLO11 的NCNN 格式来执行人工智能任务?
Ultralytics YOLO11 NCNN 格式针对移动和嵌入式平台进行了高度优化,是在 Raspberry Pi 设备上运行人工智能任务的理想选择。 利用 ARM 架构最大限度地提高了推理性能,与其他格式相比,处理速度更快,效率更高。有关支持的导出选项的更多详情,请访问NCNN Ultralytics 文档页面的部署选项。
如何将YOLO11 模型转换为NCNN 格式,以便在 Raspberry Pi 上使用?
您可以使用Python 或CLI 命令将PyTorch YOLO11 模型转换为NCNN 格式:
示例
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")
更多详情,请参阅在 Raspberry Pi 上使用NCNN 部分。
Raspberry Pi 4 和 Raspberry Pi 5 在运行YOLO11 方面有哪些硬件差异?
主要区别包括
- 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 两种规格。
与 Raspberry Pi 4 相比,这些增强功能有助于提高YOLO11 型号在 Raspberry Pi 5 上的性能基准。更多详情,请参阅Raspberry Pi 系列对比表。
如何设置 Raspberry Pi 摄像头模块以便与Ultralytics YOLO11 一起使用?
有两种方法可以设置 Raspberry Pi 摄像机,用于YOLO11 推理:
-
使用
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()
-
使用 TCP 流
有关详细设置说明,请访问 "使用摄像头推理"部分。