首先尝试使用yolo官网yolo给的教程,在树莓派上测试,但是在运行时出现段错误,尝试很多方法无法解决。在国外的网站找到darknet-nnpack这个东西,可以完美的在树莓派上运行。
链接:https://pan.baidu.com/s/1-7DFRawhDDZXfrKH9aht6g 提取码:k3yp,评论说编译不通过,这里给出我用的ninja和NNPACK
参考的文章
sudo apt-get install python-opencv
如果没有pip:
sudo apt-get install python-pip
启用pi相机:
sudo raspi-config
转到 Interfacing Options,然后启用 Pi/Camera,重启生效。
安装 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
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/
上面这些步骤其实都是安装darknet-nnpack的准备工作,现在正式开始
cd
git clone -b yolov3 https://github.com/zxzhaixiang/darknet-nnpack
cd darknet-nnpack
git checkout yolov3
make
这就完成了,开始测试。
运行:
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