BSD 3-Clause "New" or "Revised" License

技术解读

以下内容由 GitRead 中文社区 编辑团队基于项目 README 与官方资料整理, 结合中文开发者的常见使用场景补充技术选型建议。具体以项目官方文档为准。

YoloV8-ncnn-Raspberry-Pi-4 项目分析

项目背景与痛点

面对边缘计算和移动设备上的实时物体检测需求,传统的深度学习模型往往因为模型大小和计算复杂度在性能上难以满足要求。特别是针对 Raspberry Pi 4 这类资源受限的平台,需要一个既高效又经济的解决方案。

YoloV8 for Raspberry Pi 项目正是为了应对这一挑战,通过将 YoloV8 模型集成到 ncnn 深度学习框架中,有效利用了 Raspberry Pi 4 的硬件加速能力。这样的集成不仅显著提升了物体检测的速度,还大幅减少了内存占用,使得在资源有限的平台上的实时应用成为可能。

核心技术揭秘

该项目通过对 YoloV8 模型的适配,借助 ncnn 框架在 Raspberry Pi 上实现了高效的推理。以下是技术架构的关键点:

  • 模型优化:适应 ncnn 的 PB 模型训练,并通过定点化提升计算效率。
  • 硬件加速:充分运用 Raspberry Pi 4 内置的 NEON 协处理器,实现多线程并行计算,降低时间消耗。
  • 代码优化:使用 ncnn 提供的多种优化手段,如权重重排序和卷积层加速实现。
graph TD A[模型输入] --> B{"硬件加速"} B -->|"开启"| C[NEON 协处理器] B -->|"关闭"| D[单线程] C --> E[多线程并行] E --> F[高性能推理] D --> F F --> G[模型输出]

功能亮点与差异

YoloV8-ncnn-Raspberry-Pi-4 项目相较于同类竞品具有以下特色:

  • 低功耗:项目优化后的模型在 Raspberry Pi 4 上保持了极低的功耗。
  • 高效率:利用 NEON 协处理器进行加速,大幅提升了检测速度。
  • 灵活性:支持多种分辨率输入,能够适应不同的应用场景。

这些设计使得该项目在边缘计算和智能物联网设备上有得天独厚的优势。

应用场景与落地建议

在实际应用中,项目可以广泛用于监控、安防系统和智能家居等领域。在生产环境部署时需要注意以下几点:

  • 硬件配置:务必确保硬件符合系统要求,尤其是 Raspberry Pi 4 及更高版本,以充分利用硬件加速优势。
  • 资源占用:尽管项目针对资源有限设备做了优化,但仍需留意系统整体资源占用情况,避免多任务运行导致性能瓶颈。
  • 持续优化:随着硬件和框架的更新,需保持对模型和框架的持续优化,以应对新的挑战和更高的性能要求。

综合评价

尽管 YoloV8-ncnn-Raspberry-Pi-4 项目具备很强的技术优势,但也存在局限性。主要优点在于高度适配嵌入式计算环境,实现高性能物体检测;然而不足之处则反映在边界设备上对新硬软件适配的繁琐及维护成本。总体而言,该项目提供了一个有效的解决方案,适用于诸多物联网项目,并值得进一步探索和优化。

关于

GitHub 原始描述(英文)

YoloV8 for a bare Raspberry Pi 4 or 5

描述取自 GitHub 官方 API,保持仓库作者书写的原文。

语言占比

C++

贡献者

README

YoloV8 Raspberry Pi 4 or 5

output image

YoloV8 with the ncnn framework.

License

For now: https://github.com/akashAD98/yolov8_in_depth
Paper: on Ultralytics TODO list https://github.com/ultralytics/ultralytics

Special made for a bare Raspberry Pi, see Q-engineering deep learning examples


Benchmark.

Numbers in FPS and reflect only the inference timing. Grabbing frames, post-processing and drawing are not taken into account.

Model size mAP Jetson Nano RPi 4 1950 RPi 5 2900 Rock 5 RK35881
NPU
RK3566/682
NPU
Nano
TensorRT
Orin
TensorRT
NanoDet 320x320 20.6 26.2 13.0 43.2 36.0
NanoDet Plus 416x416 30.4 18.5 5.0 30.0 24.9
PP-PicoDet 320x320 27.0 24.0 7.5 53.7 46.7
YoloFastestV2 352x352 24.1 38.4 18.8 78.5 65.4
YoloV2 20 416x416 19.2 10.1 3.0 24.0 20.0
YoloV3 20 352x352 tiny 16.6 17.7 4.4 18.1 15.0
YoloV4 416x416 tiny 21.7 16.1 3.4 17.5 22.4
YoloV4 608x608 full 45.3 1.3 0.2 1.82 1.5
YoloV5 640x640 nano 22.5 5.0 1.6 13.6 12.5 58.8 14.8 19.0 100
YoloV5 640x640 small 22.5 5.0 1.6 6.3 12.5 37.7 11.7 9.25 100
YoloV6 640x640 nano 35.0 10.5 2.7 15.8 20.8 63.0 18.0
YoloV7 640x640 tiny 38.7 8.5 2.1 14.4 17.9 53.4 16.1 15.0
YoloV8 640x640 nano 37.3 14.5 3.1 20.0 16.3 53.1 18.2
YoloV8 640x640 small 44.9 4.5 1.47 11.0 9.2 28.5 8.9
YoloV9 640x640 comp 53.0 1.2 0.28 1.5 1.2
YoloX 416x416 nano 25.8 22.6 7.0 38.6 28.5
YoloX 416x416 tiny 32.8 11.35 2.8 17.2 18.1
YoloX 640x640 small 40.5 3.65 0.9 4.5 7.5 30.0 10.0

1 The Rock 5 and Orange Pi5 have the RK3588 on board.
2 The Rock 3, Radxa Zero 3 and Orange Pi3B have the RK3566 on board.
20 Recognize 20 objects (VOC) instead of 80 (COCO)


Dependencies.

To run the application, you have to:

  • A Raspberry Pi 4 or 5 with a 32 or 64-bit operating system. It can be the Raspberry 64-bit OS, or Ubuntu 18.04 / 20.04. Install 64-bit OS
  • The Tencent ncnn framework installed. Install ncnn
  • OpenCV 64-bit installed. Install OpenCV 4.5
  • Code::Blocks installed. ($ sudo apt-get install codeblocks)

Installing the app.

To extract and run the network in Code::Blocks
$ mkdir MyDir
$ cd MyDir
$ wget https://github.com/Qengineering/YoloV8-ncnn-Raspberry-Pi-4/archive/refs/heads/main.zip
$ unzip -j master.zip
Remove master.zip, LICENSE and README.md as they are no longer needed.
$ rm master.zip
$ rm LICENSE
$ rm README.md

Your MyDir folder must now look like this:
parking.jpg
busstop.jpg
YoloV8.cpb
yoloV8main.cpp
yoloV8.cpp
yoloV8.h
yolov8s.bin
yolov8s.param
yolov8n.bin
yolov8n.param


Running the app.

To run the application load the project file YoloV8.cbp in Code::Blocks. More info or
if you want to connect a camera to the app, follow the instructions at Hands-On.


Thanks.

A more than special thanks to FeiGeChuanShu, who adapted the YoloV8 model to the ncnn framework.

output image


paypal

评论

暂无评论