主要参考文章:http://funofdiy.blogspot.com/2018/08/deep-learning-with-raspberry-pi-real.html(需要vpn)
https://blog.csdn.net/weixin_43878078/article/details/103893426
https://github.com/zxzhaixiang/darknet-nnpack/tree/yolov3

说明1:原版的yolo V3 完整版本是无法在树莓派上运行的,直接编译会报错如下的 段错误,原因是树莓派内存不够,使用官方权重会越界,所以只能只用yolo v3 -tiny版本

说明2:直接使用官方原版yolo v3 -tiny版本会非常慢,因为官方版本主要是靠GPU运算,对于只有CPU 的树莓派没有任何优化,跑起来效果很差,不过有了darknet-NNPACK这个东西,就可以在树莓派3B上优化到不错的水平(大概一秒一帧)

具体步骤:

  • 步骤0: 准备工作

1.安装NNPACK,这是神经网络的加速库,可以在多核CPU上运行
2.在Makefile中添加一些特殊配置,以在Cortex CPU和NNPACK优化上编译Darknet Yolo源代码。(还没有尝试)
3.安装opencv
4.使用Yolo小版本(不是完整版本)运行Darknet!下载Yolov3-tiny.cfg和Yolov3-tiny.weights。
1
如果没有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

./configure.py --bootstrap如果报错

"warning: A compatible version of re2c (>= 0.11.3) was not found. changes to src/*.in.cc will not affect your build."
后面用nanja编译nnpack可能会继续报错 "[53/140] CXX test/convolution-output/overfeat-fast.cc" (waited many hours in one run)
解决办法:The ninja step throws: "warning: A compatible version of re2c (>= 0.11.3) was not found. changes to src/*.in.cc will not affect your build."==>>sudo apt-get install re2c
  • 步骤2 安装修改后的 NNPACK

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

用ninja构建NNPACK(需要一段时间,耐心等待,并且第一次可能崩溃。只需重新启动并再次运行):

$NINJA_PATH/ninja

在这里遇到问题:用ninja构建NNPACK时候我的树莓派频繁死机,据说是SSH+VNC
的锅,也可能是nanja版本的问题,因为我没有外接显示器,这个改天再验证

可以用 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)

看下结果,还需要优化

总结:结果置信度不高,然后我的速度大概是2s一帧,显然是没有优化到位,明天再继续探索,先从单个物体开始

  • 性能对比:

使用前:

使用nnpack加速后:

遇到的问题:

1.刚开始遇到上面的问题,解决后,用ninja构建NNPACK时候我的树莓派频繁死机,据说是SSH+VNC 的锅,也可能是nanja版本的问题,因为我没有外接显示器,这个改天再验证
2.我后面用的别人成功过的版本:链接:https://pan.baidu.com/s/1-7DFRawhDDZXfrKH9aht6g 提取码:k3yp ,编译通过,这里也遇到了点小问题:使用filezera上传的文件全部没有执行权限,导致很多莫名其妙的错误,解决办法 使用命令

sudo chmod -R 777  filename
或者
sudo a+x -R filename

关于linux权限的问题参考如下文章https://www.cnblogs.com/cwwmmv/p/10535175.html
菜鸟教程:https://www.runoob.com/linux/linux-file-attr-permission.html

在树莓派3B+ 上使用YOLO v3 Tiny进行实时对象检测相关推荐

  1. 树莓派安装win10arm linux,在树莓派3B 上安装 Windows 10 ARM 版的方法

    早先关注我们的朋友可能对<国外开发者尝试在树莓派3上运行Windows 10桌面版>有印象.本文转自 amatfan.com,文末视频来自 daveb778(感谢柠栀和刺分享),给出了如何 ...

  2. 树莓派3B上用Python编程获取TSL2561光传感器数据

    在树莓派3B上用Python编程,通过I2C协议,利用TSL2561光照强度传感器获取环境光强 嵌入式萌新一枚,文章有解释不清或者错误的地方希望大佬能在评论区指正,感激不尽! 大概原理: 通过TSL2 ...

  3. OpenHarmony3.0在树莓派3B上的烧录与通讯

    OpenHarmony3.0已于2021年9月30号正式发布,本篇文章详细给出OpenHarmony3.0在树莓派3B上的烧录与通讯步骤,对其中使用的指令进行详细解释,同时附有烧录与通讯过程中使用的各 ...

  4. yolo v3制作自己的数据_必看!一文掌握最先进的实时对象检测系统YOLO

    全文共3866字,预计学习时长20分钟或更长 本文将详细分析如何使用YOLO(You Only Look Once)进行对象检测.要想完全理解这一技术,首先应该知道对象分类.检测和分割之间的区别. 对 ...

  5. 使用YOLO Core ML模型构建对象检测iOS应用(七)

    目录 在我们的应用程序中添加模型 在捕获的视频帧上运行目标检测 绘制边界框 实际应用 下一步? 总目录 将ONNX对象检测模型转换为iOS Core ML(一) 解码Core ML YOLO对象检测器 ...

  6. 在树莓派3B+上安装大疆EP的SDK全纪录

    目录 First Blood: 一.设备清单: 二.系统: 三.烧录工具: 四.正式开始:树莓派系统的安装 Double Kill: 一.设备清单: 二.系统: 三.烧录工具: 四.格式化工具: 步骤 ...

  7. 在树莓派3B+上部署Intel NCS2神经网络计算棒

    2018.12.20日 英特尔更新了OpenVINO Toolkit R5版本.该版本添加了对树莓派的支持.作为NCS2的官方开发套件,OpenVINO在此之前只能在台式机ubuntu 16.04上使 ...

  8. AI队列长度检测:使用YOLO进行视频中的对象检测

    下载源219 MB 到目前为止,在本系列中,我们一直在处理静止图像数据.在本文中,我们将使用YOLO的基本实现来检测和计数视频序列中的人物. 让我们再次从导入所需的库开始. import cv2 im ...

  9. AI队列长度检测:使用YOLO进行图像中的对象检测

    目录 YOLO简介 创建和加载模型 预处理输入 获取边界框 下一步是什么? 下载源219 MB 在本系列的前几篇文章中,我们从头开始实现了对象检测.我们观察到从头训练模型需要大量的计算资源和时间.这些 ...

最新文章

  1. 趣学python3(46)--求素数
  2. 成本直降50% | 阿里云发布云原生网关,开启下一代网关新进程
  3. C++笔记——malloc基本用法
  4. 10个人里有几个大学生?
  5. C# 8 新特性 - 只读struct成员
  6. 阿里巴巴在内蒙古旱区试水物联网灌溉技术,一年省出1.5个西湖
  7. 爬虫前期知识的储备(二)
  8. Matplotlib 中文用户指南 4.5 标注
  9. init.d目录理解
  10. Lvs别样的自动部署监控shell脚本
  11. python安装好后打不开_解决安装pyqt5之后无法打开spyder的问题
  12. [2018.10.10 T3] 三米诺
  13. 思科无线服务器,Cisco统一无线网络TACACS+配置
  14. opencv答题卡识别
  15. Linux下挂载大容量存储
  16. 剖析2015四大合并案:滴滴快的、58赶集、美团大众点评、携程去哪儿 1+12?
  17. 刚申请的博客,就发一个老师让做的“一分钟打动面试官”作业做为纪念吧!!!...
  18. 关于计算机的英语单词及例句,小学生必背英语单词及例句(四年级).doc
  19. 结合RocketMQ 源码,带你了解并发编程的三大神器
  20. 商业需求文档该如何去写?

热门文章

  1. QQ 邮箱漂流瓶将下线;华为美国公司起诉美商务部;Ubuntu 不会放弃 32 位应用程序支持 | 极客头条...
  2. 生产环境下 RocketMQ 为什么不能开启自动创建主题?
  3. 迅雷发布了自主研发的TCFS协议,有意转型区块链开发的必看
  4. 牛逼!java开发环境配置视频教程
  5. typora markdown 标题自动编号
  6. idea拦截了html中的静态资源,IDEA配置静态资源热加载操作(Springboot修改静态资源不重启)...
  7. mysql 创建十万测试表_用MYSQL的存储过程创建百万级测试数据表
  8. linux包含绝对路径头文件,linux-kernel - 访问用户空间内存访问函数(如access_ok(),get_from_user())需要包含的头文件的确切路径。 - 堆栈内存溢出...
  9. python实现knn分类_KNN图像分类及Python实现
  10. 表分析oracle的作用,Oracle中分析表的作用