在树莓派3B+ 上使用YOLO v3 Tiny进行实时对象检测
主要参考文章: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进行实时对象检测相关推荐
- 树莓派安装win10arm linux,在树莓派3B 上安装 Windows 10 ARM 版的方法
早先关注我们的朋友可能对<国外开发者尝试在树莓派3上运行Windows 10桌面版>有印象.本文转自 amatfan.com,文末视频来自 daveb778(感谢柠栀和刺分享),给出了如何 ...
- 树莓派3B上用Python编程获取TSL2561光传感器数据
在树莓派3B上用Python编程,通过I2C协议,利用TSL2561光照强度传感器获取环境光强 嵌入式萌新一枚,文章有解释不清或者错误的地方希望大佬能在评论区指正,感激不尽! 大概原理: 通过TSL2 ...
- OpenHarmony3.0在树莓派3B上的烧录与通讯
OpenHarmony3.0已于2021年9月30号正式发布,本篇文章详细给出OpenHarmony3.0在树莓派3B上的烧录与通讯步骤,对其中使用的指令进行详细解释,同时附有烧录与通讯过程中使用的各 ...
- yolo v3制作自己的数据_必看!一文掌握最先进的实时对象检测系统YOLO
全文共3866字,预计学习时长20分钟或更长 本文将详细分析如何使用YOLO(You Only Look Once)进行对象检测.要想完全理解这一技术,首先应该知道对象分类.检测和分割之间的区别. 对 ...
- 使用YOLO Core ML模型构建对象检测iOS应用(七)
目录 在我们的应用程序中添加模型 在捕获的视频帧上运行目标检测 绘制边界框 实际应用 下一步? 总目录 将ONNX对象检测模型转换为iOS Core ML(一) 解码Core ML YOLO对象检测器 ...
- 在树莓派3B+上安装大疆EP的SDK全纪录
目录 First Blood: 一.设备清单: 二.系统: 三.烧录工具: 四.正式开始:树莓派系统的安装 Double Kill: 一.设备清单: 二.系统: 三.烧录工具: 四.格式化工具: 步骤 ...
- 在树莓派3B+上部署Intel NCS2神经网络计算棒
2018.12.20日 英特尔更新了OpenVINO Toolkit R5版本.该版本添加了对树莓派的支持.作为NCS2的官方开发套件,OpenVINO在此之前只能在台式机ubuntu 16.04上使 ...
- AI队列长度检测:使用YOLO进行视频中的对象检测
下载源219 MB 到目前为止,在本系列中,我们一直在处理静止图像数据.在本文中,我们将使用YOLO的基本实现来检测和计数视频序列中的人物. 让我们再次从导入所需的库开始. import cv2 im ...
- AI队列长度检测:使用YOLO进行图像中的对象检测
目录 YOLO简介 创建和加载模型 预处理输入 获取边界框 下一步是什么? 下载源219 MB 在本系列的前几篇文章中,我们从头开始实现了对象检测.我们观察到从头训练模型需要大量的计算资源和时间.这些 ...
最新文章
- 趣学python3(46)--求素数
- 成本直降50% | 阿里云发布云原生网关,开启下一代网关新进程
- C++笔记——malloc基本用法
- 10个人里有几个大学生?
- C# 8 新特性 - 只读struct成员
- 阿里巴巴在内蒙古旱区试水物联网灌溉技术,一年省出1.5个西湖
- 爬虫前期知识的储备(二)
- Matplotlib 中文用户指南 4.5 标注
- init.d目录理解
- Lvs别样的自动部署监控shell脚本
- python安装好后打不开_解决安装pyqt5之后无法打开spyder的问题
- [2018.10.10 T3] 三米诺
- 思科无线服务器,Cisco统一无线网络TACACS+配置
- opencv答题卡识别
- Linux下挂载大容量存储
- 剖析2015四大合并案:滴滴快的、58赶集、美团大众点评、携程去哪儿 1+12?
- 刚申请的博客,就发一个老师让做的“一分钟打动面试官”作业做为纪念吧!!!...
- 关于计算机的英语单词及例句,小学生必背英语单词及例句(四年级).doc
- 结合RocketMQ 源码,带你了解并发编程的三大神器
- 商业需求文档该如何去写?
热门文章
- QQ 邮箱漂流瓶将下线;华为美国公司起诉美商务部;Ubuntu 不会放弃 32 位应用程序支持 | 极客头条...
- 生产环境下 RocketMQ 为什么不能开启自动创建主题?
- 迅雷发布了自主研发的TCFS协议,有意转型区块链开发的必看
- 牛逼!java开发环境配置视频教程
- typora markdown 标题自动编号
- idea拦截了html中的静态资源,IDEA配置静态资源热加载操作(Springboot修改静态资源不重启)...
- mysql 创建十万测试表_用MYSQL的存储过程创建百万级测试数据表
- linux包含绝对路径头文件,linux-kernel - 访问用户空间内存访问函数(如access_ok(),get_from_user())需要包含的头文件的确切路径。 - 堆栈内存溢出...
- python实现knn分类_KNN图像分类及Python实现
- 表分析oracle的作用,Oracle中分析表的作用