前言
为了实现在树莓派上实现object detection的功能,我fork了一个仓库:https://github.com/yoyojacky/TensorFlowObjectDetectionontheRaspberryPi
并且按照仓库的readme做了一下测试。
2
测试环境
3
操作步骤
1. 更新系统及软件
如果遭遇报错:
执行这条命令:
2. 创建TF 的目录
实际上官方已经支持树莓派了,https://www.tensorflow.org/install/install_raspbian这里有。我是直接这里下载的:https://github.com/lhelontra/tensorflowonarm/
releases
然后安装:
然后发现…官方都是骗人的...
PiaPia的打脸啊!我~不想吐槽了。。。
还好1.13.1 还能支持,暂时先用着。
接下来要安装atlasbasedev
继续安装依赖:
3. 安装openCV
安装openCV要先安装一些依赖,而且记得要用aptget update更新。
安装opencvpython
4. 编译安装protobuf
这个是最耗费时间的一步应该说,我估计需要很久时间才可以搞定。
先安装编译需要的工具:
下载最新的源码,编译安装。
解压并进入源码目录进行预编译,编译和安装
让4个CPU都跑满。。。
算算时间。现在是16:43
突然想看看温度,然后发现温度真的很感人。。。
编译完温度降到54度了
安装完成。
接下来是调整一下环境变量。
接着继续:
然后定义protobuf的变量环境:
好了,protobuf已经安装完成了,测试一下。
接下来重启一下系统:
5. 设置tensorflow目录结构及python路径变量
下载Tensorflow模型:
需要改动.bashrc,让每次登陆的时候都能够初始化变量。文档末尾加这段话:
保存后退出,然后关闭终端重启打开终端,测试变量看在不在,如果不在继续重复上面
的操作,如果ok 了,就继续下面的操作。现在,我们需要使用Protoc来编译Object
Detection API使用的Protocol Buffer(.proto)文件。.proto文件位于/ research /
object_detection / protos中,但我们需要从/ research目录来执行命令。
此命令将所有“name”.proto文件转换为“name_pb2”.py文件。接下来,进入
object_detection目录:
我采用别的方法,目标是一样的。
现在模型位于object_detection目录中,可以使用了。
6. 检测物体开始
好的,现在一切都设置为在Pi上执行对象检测!此存储库中的Python脚本
Object_detection_picamera.py可检测来自Picamera或USB网络摄像头的实时源中
的对象。基本上,脚本设置模型和标签贴图的路径,将模型加载到内存中,初始化
Picamera,然后开始在Picamera的每个视频帧上执行对象检测。
如果您使用的是Picamera,请确保在Raspberry Pi配置菜单中启用它。
通过发出以下命令将Object_detection_picamera.py文件下载到object_detection目录:
然后接上摄像头,让我们测试一下。
发现报错:
安装一个包试试看:
继续尝试:
提示我import .cv2 失败,缺少libqt4test.so, 我查了一下安装了libqtgui4 的包,还是不行,我就重新通过apt安装了python3opencv的包。
继续安装一个软件包:
这些都搞定了就开始测试吧:
因为我是远程终端测试,没有图形环境,所以我用了DISPLAY=:0.0 指定了显示的桌面
环境,直接在终端执行命令,然后显示在屏幕上,效果非常不错哦。不过要确认一下,
你所在的工作目录是:
~/tensorflow1/models/research/object_detection/
执行的命令是:
我测试树莓派4B的4GB版本,在没有做任何优化的情况下可以达到2帧每秒…..真是慢啊
不过识别还是不错的,就是对象检测已经成型,可以检测到物体,并且提供可信度的信
息。
后面就可以通过这些做一些扩展性的应用了。
英国疫情越来越严重,趁着树莓派价格还如此优惠的时候,创客精神走一波—生命在于折腾!!!
閱讀更多 電子芯吧客 的文章