在树莓派4B上使用YOLO v3 Tiny进行实时目标检测_倾尽_天下的博客-程序员信息网

技术标签: yolo  python  目标检测  深度学习  树莓派  神经网络  

首先尝试使用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

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/weixin_43878078/article/details/103893426

智能推荐

用VS2015 Debug MySQL5.7源码_80152的博客-程序员信息网

一、软件准备: Cmake : https://cmake.org/download/ActivePerl: 百度ActivePerl 安装即可boost库: https://sourceforge.net/projects/boost/files/boost-binaries/1.59.0/ 下载exe文件安装到指定目录MySQL 源码: https://dev.mysql.com/do

Echarts 自定义颜色_Mr-K的博客-程序员信息网_echarts自定义颜色

series: [ { name:'邮件营销', type:'line', stack: '总量', data:[120, 132, 101, 134, 90, 230, 210], itemStyle:{ normal:{ ...

关于响应式编程_Mislead的博客-程序员信息网

近来响应式编程成为一种流行的模式,涌现出很多支持各种编程语言的库和框架和相关的博文文章。像Facebook,SoundCloud,Microsoft,Netflix等大公司也开始支持和使用这种模式。所以我们这些程序员需要弄清楚关于响应式编程的一些问题。为什么人们会对于响应式编程如此狂热?什么事响应式编程?使用它会对于我们的项目有哪些帮助?我们应该去学习和使用它吗?同时,Java作为一门支持多线程、高

URDF语法+练习案例(与Rviz的集成使用)+URDF工具_嘻·嘻的博客-程序员信息网

目录URDF语法练习案例URDF工具URDF语法1.URDF是 Unified Robot Description Format 的首字母缩写,直译为统一(标准化)机器人描述格式,可以以一种 XML 的方式描述机器人的部分结构,比如底盘、摄像头、激光雷达、机械臂以及不同关节的自由度.....,该文件可以被 C++ 内置的解释器转换成可视化的机器人模型,是 ROS 中实现机器人仿真的重要组件。2.URDF 文件是一个标准的 XML 文件,在 ROS 中预定义了一系列的标签用于描述机器人

C#详解值类型和引用类型区别_HawkJony的博客-程序员信息网_值类型和引用类型区别

首先,什么是值类型,什么是引用类型?在C#中值类型的变量直接存储数据,而引用类型的变量持有的是数据的引用,数据存储在数据堆中。值类型(value type):byte,short,int,long,float,double,decimal,char,bool 和 struct 统称为值类型。值类型变量声明后,不管是否已经赋值,编译器为其分配内存。        引用类型

jpa specification条件查询_petercnmei的博客-程序员信息网

spring data jpa 通过创建方法名来做查询,只能做简单的查询,那如果我们要做复杂一些的查询呢,多条件分页怎么办,这里,spring data jpa为我们提供了JpaSpecificationExecutor接口,只要简单实现toPredicate方法就可以实现复杂的查询1.首先让我们的接口继承于JpaSpecificationExecutor /* 

随便推点

虚拟摄像头之九: IMX8Q 的 camera.imx8.hal 框架详解_老理说的好的博客-程序员信息网_android 虚拟摄像头

android 系统的 camera hal 框架不同厂家设计思路、不尽相同;本篇梳理 NXP android8 的 camera hal 设计框架。笔者再次特别说明:在《虚拟摄像头之三: 重构android8.1 的 v4l2_camera_HAL 支持虚拟摄像头》文章中声称、虚拟摄像头 HAL 方案计划采用Android8 中的 v4l2_camera_HAL 来重构实现;现在更改为 NXP 的 CameraHAL 框架来实现,因此采用此篇梳理学习笔记内容。

visual stdio 2019 安装opencv及报错处理_CV-杨帆的博客-程序员信息网

VS2019配置opencv详细图文教程和测试代码这里面有一些是错的,不适合vs2019第一个错误:由于找不到opencv_world440d.dll,无法继续执行代码。解决方案第二个错误OpenCV中出现“Microsoft C++ 异常: cv::Exception,位于内存位置 0x0000005C8ECFFA80 处。”的异常:解决方案(不是主文,在评论里)使用vs2019 新手按照 網路安裝流程 通常會寫到 屬性->連結器->相依性 opencv_world410d.li

objective c之中的类和实例,方法等基本语法(一)_holydancer的博客-程序员信息网_objective c 类的定义与继承例子

holydancer原创,如需转载,请在显要位置注明:转自holydancer的CSDN专栏,原文地址:http://blog.csdn.net/holydancer/article/details/7329490我们知道,在objective c之中是有面向对象的概念的,这也是为什么别人说oc要比c优雅的原因。虽然objective c继承了c的语法习惯等,但是在涉及到面向对象时

深度学习之目标检测(二)-- Faster R-CNN 理论_木卯_THU的博客-程序员信息网_统计标记结果的长宽比特征,调整目标候选区域提取网络的长宽比特征

深度学习之目标检测(二)-- Faster R-CNN 理论深度学习之目标检测(二)Faster R-CNN理论1. R-CNN (Region with CNN feature)1.1 候选区域的生成1.2 对每个候选区域使用深度网络提取特征1.3 特征送入每一类的SVM分类器,判定类别1.4 使用回归器精细修正候选框位置1.5 小结2. Fast R-CNN2.1 CNN 模块2.2 损失函数2.3 小结3. Faster R-CNN3.1 RPN 网络结构3.2 RPN 损失3.3 Faster R-

认识Robei及Robei优势_FPGA攻城狮的博客-程序员信息网_robei

第一章:认识工具,掌握基础通过今天的学习,读者可以了解集成电路设计工具的历史背景情况,同时熟悉国内外的产业差距。今天的学习将为后面的操作打下基础,读者需要尽可能的熟悉软件和Verilog语法,了解Robei软件的结构和操作方式,并知道如何注册和寻找Robei资源。今天学习完成后,熟悉Verilog语言的读者可以加深记忆,刚刚开始学习FPGA设计的读者也可以轻松地掌握Verilog语言的结构和语法...

Word XP 中目录的编制方法,Word XP 功能键使用大全_citywalker007的博客-程序员信息网

Word XPWord XP 中目录的编制方法  1.单击要插入目录的位置。  2.指向"插入"菜单上的"引用",再单击"索引和目录"。  3.单击"目录"选项卡。  4.若要使用现有的设计,请在"格式"框中单击进行选择。  5.根据需要,选择其他与目录有关的选项。  如果目前未使用大纲级别或内置样式,请进行下列操作之一: 用大纲级别创建目录 1.指向"视图"菜单上的"工具栏",再单击"大