在树莓派4B上使用YOLO v3 Tiny进行实时目标检测

在树莓派4B上使用YOLO v3 Tiny进行实时目标检测首先尝试使用yolo官网yolo给的教程,在树莓派上测试,但是在运行时出现段错误,尝试很多方法无法解决。在国外的网站找到darknet-nnpack这个东西,可以完美的在树莓派上运行。参考的文章darknet-nnpackhttps://github.com/zxzhaixiang/darknet-nnpackFunofDIYhttp://funofdiy.blogspot.c…

大家好,又见面了,我是你们的朋友全栈君。

首先尝试使用yolo官网yolo给的教程,在树莓派上测试,但是在运行时出现段错误,尝试很多方法无法解决。在国外的网站找到darknet-nnpack这个东西,可以完美的在树莓派上运行。

链接:https://pan.baidu.com/s/1-7DFRawhDDZXfrKH9aht6g 提取码:k3yp,评论说编译不通过,这里给出我用的ninja和NNPACK
参考的文章

  1. darknet-nnpack https://github.com/zxzhaixiang/darknet-nnpack
  2. Fun of DIY http://funofdiy.blogspot.com/2018/08/deep-learning-with-raspberry-pi-real.html
    第二个链接是树莓派3B+上使用yolo,不过国内正常是打不开,根据这篇文章在Raspberry Pi 4上使用yolov3 tiny版本,测试结果可以达到2帧,这个结果是做了很多加速之后的。
  3. 安装NNPACK,这是神经网络的加速库,可以在多核CPU上运行
  4. 在Makefile中添加一些特殊配置,以在Cortex CPU和NNPACK优化上编译Darknet Yolo源代码。
  5. 安装opencv C ++(在raspberry pi上非常麻烦),不过我没安装也可以使用(编译总是报错,没有成功)
  6. 使用Yolo小版本(不是完整版本)运行Darknet!下载Yolov3-tiny.cfg和Yolov3-tiny.weights。

步骤0:准备工作

  1. 在树莓派4上安装系统等参考我的这篇博客
  2. 准备Python和Pi相机,我用的是树莓派的相机,使用usb摄像头会慢很多。
    安装OpenCV。使用最简单的方法(不要从源代码构建!):
sudo apt-get install python-opencv

如果没有pip:

sudo apt-get install python-pip

启用pi相机:

sudo raspi-config

转到 Interfacing Options,然后启用 Pi/Camera,重启生效。

步骤1 安装 Ninja Building tool

安装 PeachPy 和 confu

sudo pip install --upgrade git+https://github.com/Maratyszcza/PeachPy
sudo pip install --upgrade git+https://github.com/Maratyszcza/confu

在 /home/pi目录下,安装ninja

git clone https://github.com/ninja-build/ninja.git
cd ninja
git checkout release
./configure.py --bootstrap
export NINJA_PATH=$PWD
cd

步骤2 安装修改后的 NNPACK

git clone https://github.com/shizukachan/NNPACK
cd NNPACK
confu setup
python ./configure.py --backend auto

用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/

步骤3 安装darknet-nnpack

上面这些步骤其实都是安装darknet-nnpack的准备工作,现在正式开始

cd
git clone -b yolov3 https://github.com/zxzhaixiang/darknet-nnpack
cd darknet-nnpack
git checkout yolov3
make

这就完成了,开始测试。

步骤4 用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)

看下结果,还需要优化
在这里插入图片描述
竟然把人检测出sofa了
在这里插入图片描述
检测速度可以达到每秒2帧,树莓派4的性能比3B+要强很多,3B+只能达到1帧。
总的来说非常棒了。
参考博客:http://funofdiy.blogspot.com/2018/08/deep-learning-with-raspberry-pi-real.html

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/133340.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • webpack devtools_webpack loader和plugin的区别

    webpack devtools_webpack loader和plugin的区别前言devtool也是之前常用的一个配置,我们稍微了解下吧,不研究太深,毕竟现在都不怎配置他。内容devtool是配置sourceMap的。sourceMap大家都知道,我们本地或者测试环境出了错误,可以在source中迅速定位错误,用到的就是.map(map文件),这个文件中是源文件映射(主要是源文件代码)。但是我们在network中看不到.map文件的请求,盲猜一波是浏览器做了屏蔽,不让我们看这种请求。(毕竟是源码,我单独下载map文件是可以下载下来的)接下来,当devtool被配置为

    2022年10月6日
    3
  • JVM内存结构和Java内存模型别再傻傻分不清了

    JVM内存结构和Java内存模型别再傻傻分不清了JVM内存结构和Java内存模型都是面试的热点问题,名字看感觉都差不多,网上有些博客也都把这两个概念混着用,实际上他们之间差别还是挺大的。通俗点说,JVM内存结构是与JVM的内部存储结构相关,而Java内存模型是与多线程编程相关,本文针对这两个总是被混用的概念展开讲解。文章目录JVM内存结构JVM构成JVM内存结构程序计数器虚拟机栈本地方法栈堆方法区GC垃圾回收机制1.垃圾判别方法引用计数算法可达性分析算法2.垃圾回收算法标记清除法标记整理法复制算法3.分代垃圾回收机制4.垃圾回收器5.四种引

    2022年4月28日
    45
  • 重启nginx命令

    重启nginx命令进入到nginx/sbin目录下面首先需要获取超级管理员的权限1、输入sudosu然后输入密码2、输入sudobash然后输入密码然后输入./nignx-sreloadnginx重启成功

    2022年6月19日
    36
  • h5页面 请在微信客户端打开链接_如何看到“请在微信客户端打开链接”页面的源码?…

    h5页面 请在微信客户端打开链接_如何看到“请在微信客户端打开链接”页面的源码?…在H5学习的过程中,看一些好的H5是很有必要的。但是经常有一些H5打开以后在页面显示如下,阻碍了我们探索的脚步~这是因为H5的开发者调用了微信获取用户信息的权限,这个时候你在浏览器打开获取不到微信用户的信息,自然会出现这样的页面了。但是,如果你探索的欲望比较强,那么也是可以看到源码的~具体步骤如下:①安装微信web开发者工具②在手机端打开你要查看的页面,复制页面的链接③进入微信web开发者工具,选…

    2022年6月7日
    131
  • 缓存

    缓存

    2021年3月12日
    178
  • Coreseek:第二步建索引及測试

    Coreseek:第二步建索引及測试

    2022年1月24日
    50

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号