zl程序教程

您现在的位置是:首页 >  大数据

当前栏目

【树莓派4B深度学习 yolo】Chap.1 给树莓派配置yolo模型(darknet-nnpack)【深度学习 招式篇】

配置学习 模型 深度 树莓 yolo 4b
2023-09-27 14:28:02 时间

【树莓派4B深度学习 yolo】Chap.1 给树莓派配置yolo模型(darknet-nnpack)【深度学习 招式篇】

参考链接

在树莓派4B上使用YOLO
https://yanwei-liu.medium.com/raspberry-pi%E5%AD%B8%E7%BF%92%E7%AD%86%E8%A8%98-%E4%BA%8C%E5%8D%81%E4%B8%83-%E5%9C%A8pi%E4%B8%8A%E5%9F%B7%E8%A1%8Cyolov3-9cf124d5d582
任剑杰

一、运行方式:

  1. AlexeyAB—不是很稳定。我没试过
    执行速度很慢,YOLOv3-tiny花費約 30秒。
    原版的yolo V3 完整版本是无法在树莓派上运行的,直接编译会报错如下的 段错误,原因是树莓派内存不够,使用官方权重会越界,所以只能只用yolo v3 -tiny版本。Yolo V3版本基于darknet直接编译

  2. darknet-nnpack——已成功
    针对Arm处理器优化,使用YOLOv3-tiny进行识别只要1-1.2秒,不用使用额外的GPU.不能执行YOLOv3,只能执行tiny

  3. 购买额外的运算棒Intel NCS I (570块人民币)

二、步骤:

  1. 安装系统,建议选Raspbian Buster 系统,换源。
  2. 准备Python和Pi相机, 先添加python-opencv的依赖库.opencv 3.2.0.
    sudo apt-get install python-pip
    sudo apt install libopencv-dev
    sudo apt-get install python-opencv
    sudo raspi-config 转到 Interfacing Options,然后启用 Pi/Camera,重启生效。启用pi相机
  3. 安装 Ninja Building tool;安装 PeachPy 0.2.0和 confu 0.0.1
    sudo pip install --upgrade git+https://github.com/Maratyszcza/PeachPy
    sudo pip install --upgrade git+https://github.com/Maratyszcza/confu
  4. 在 /home/pi目录下,安装ninja. Re2c是一个用于编写快速灵活的词法分析器的工具.
    本人在实验的时候安装最新版本的ninja和NNPACK 尝试了三四次都没有成功,所以直接下载了别人之前下载好的,然后copy到 ~/ 下。可能是最新版的出问题了。
    git clone https://github.com/ninja-build/ninja.git
    cd ninja
    git checkout release
    sudo apt-get install re2c

chmod +x ./configure.py
chmod 777 configure
sudo chmod +x ./src/inline.sh

./configure.py --bootstrap
export NINJA_PATH=$PWD
cd

  1. 安装修改后的 NNPACK
    git clone https://github.com/shizukachan/NNPACK
    cd NNPACK
    confu setup
    python ./configure.py --backend auto
  2. ninja构建NNPACK(需要一段时间,耐心等待,并且第一次可能崩溃。只需重新启动并再次运行):
    $NINJA_PATH/ninja
    可以用 ls ,有文件夹 lib , include 就成功了。

测试NNPACK是否正常工作:
bin/convolution-inference-smoketest
我第一次失败了,不过再次运行了测试,所有项目都通过了。因此,如果测试失败,请不要慌张,再尝试一次。
将库和头文件复制到系统环境:
sudo cp -a lib/* /usr/lib/
sudo cp include/nnpack.h /usr/include/
sudo cp deps/pthreadpool/include/pthreadpool.h /usr/include/

  1. 安装darknet-nnpack
    上面这些步骤其实都是安装darknet-nnpack的准备工作,现在正式开始,半个小时
    cd
    git clone -b yolov3 https://github.com/zxzhaixiang/darknet-nnpack
    cd darknet-nnpack
    git checkout yolov3
    make
    这就完成了,开始测试。Make差不多五分钟。
  2. 用YoloV3-tiny测试
    运行:
    sudo python rpi_video.py
    或者:

sudo python rpi_record.py
也可以调一下参数:
yolo_proc = Popen(["./darknet",
“detect”,
“./cfg/yolov3-tiny.cfg”,
“./yolov3-tiny.weights”,
“-thresh”, “0.1”],
stdin = PIPE, stdout = PIPE)
这两个python文件,只是提供了一个进出的功能。
rpi_video.py 以动画形式在屏幕上显示实时目标检测结果;
rpi_record.py 会将每一帧结果保存(如之后制作git动画)。
另外YoloV3-tiny不在乎输入图像的大小。因此,只要高度和宽度均为32的整数倍,就可以随意调整相机分辨率。
#camera.resolution = (224, 224)
#camera.resolution = (608, 608)
camera.resolution = (544, 416)

检测速度达到每秒2帧(fps)