查看: 19445|回复: 33

[经验] 一键部署基于树莓派和tensorflow的神经网络图像识别程序

  [复制链接]
  • TA的每日心情

    2020-3-6 09:52
  • 签到天数: 13 天

    连续签到: 1 天

    [LV.3]偶尔看看II

    发表于 2019-1-9 13:37:37 | 显示全部楼层 |阅读模式
    分享到:
    1.png

    树莓派买了很久,各种小程序倒腾了半天,无非是控制个电灯开关,打开个网页,做个xmbc媒体播放器,但总是没有找到吊炸天的应用对不?


    现在的树莓派3代,其实性能已经跟上来了,即使在上面跑神经网络图像识别软件,速度也勉强能接受了。本文教你如何一步完成这个神软件的部署。


    谷歌2015年发布了tensorflow平台,2017年继续发布armv7版本,因此树莓派上现在能顺利跑tensorflow了。大家都知道,训练神经网络,非常耗费时间,要动用大量计算资源,还动不动得跑十几天才能完成,一般人玩不起这个。谷歌慷慨的将其在图像分类识别领域的最新训练成果Inception-v3模型的训练结果公布出来。这个模型在imageNet上面训练了几十万张共1000个不同类型的物品的图片,最终训练的错误率为3.46%(据说人眼识别的错误率仅为5.1%)。也就是说对于这1000种物品的识别率,Inception-v3模型已经高于人眼。

    2.png
    △ 模型识别

    那就让我们在树莓派上开始部署这个程序吧!


    为了让大家很方便的使用到这个程序,笔者将将所有准备工作都编译到docker镜像中去了,这样大家可以跳过繁杂的安装过程,同时笔者还略微修改了谷歌的代码,使得输出结果能翻译成中文,便于理解。


    首先您要先确定您的树莓派操作系统(raspbian)的版本要至少为jessie,如果还没有升级到这个版本,请先刷到这个版本。树莓派板卡最好为pi 3,前面几代应该也能运行(笔者没有测试过),但CPU速度比较慢,运行时间会比较长。


    部署的过程其实只有一行代码:

    在树莓派的命令行终端上输入以下代码
    游客,如果您要查看本帖隐藏内容请回复


    这是一个脚本,会自动帮你把源代码下载下来,如果没有安装docker,会自动安装docker,并下载相关的docker镜像。tensorflow所需的所有组件都已经在docker中预先准备好了,您只要运行程序就行了。整个过程需要下载700M左右的数据,请耐心等待。部署完以后,将你要识别的图像放到image_recognition文件夹里面,然后运行:

    cd image-recognition/

    bash imgdetect.sh [你的图片文件名]

    就可以啦。例如
    bash imgdetect.sh demo01.jpg

    demo01.jpg是一个橙子的图片,程序会返回
    orange(橙色)---(Matching = 0.85452)

    受限于树莓派的CPU速度,您大约需要30秒才能得到识别结果,但已经很好玩了不是?借助这个程序,您可以往下拓展,例如利用树莓派的摄像头,定时拍摄一幅照片,然后用这个程序来进行图像识别,用喇叭说出识别的结果来。这个用来给小朋友做玩具用,还是不错的。觉得本文有帮助的,被忘了给我点个赞。感兴趣的人多的话,笔者将继续发布《一行代码在树莓派上进行人脸识别》哦。

    PS:
    近期由于“网络安全原因”,部分读者反映有几种异常情况,统一回复如下:
    1)在git clone的时候等待很久,实际是因为网络原因无法在github上抓取代码,我把项目代码共享到百度网盘 https://pan.baidu.com/s/1b3R65g ,大家可以随意下载。下载后进入image-recogintion-master 运行 bash install.sh 即可。
    2)有部分用户在执行过程中,显示“docker未安装”,然后长时间等待。这种情况也是因为网络不良导致无法安装docker。建议在树莓派上反复执行:curl -sSL https://get.docker.com | sh     直到成功为止。
    3)镜像下载是一个比较长的过程,建议耐心等待。镜像文件托管到dockerhub上,如果不成功,建议在网络良好的时候执行 docker pull clarkchan/rpi-tensorflow-imagenet
    4) 部分用户在执行的时候反映“memory”问题,主要是前几代树莓派内存不足,无法运行程序导致的,请确认你的硬件升级到树莓派3




    PS(2018-06-03):
    今天重新运行了一次,发现由于网络原因,原来的安装脚本有些步骤我也不能用了。顺便修改了一下。改了几个地方:
    1) docker的安装。由于官网经常失联,安装改为apt-get install docker-ce,不从官网直接下载了。
    2)镜像获取的时候,改使用root权限,避免permission denied 问题。
    3) 中文翻译的功能,采用简友 阿群1986 的方案,从百度翻译改为爱词霸翻译。

    作者:clarkchan
    來源:简书









    回复

    使用道具 举报

    该用户从未签到

    发表于 2019-1-14 10:42:37 | 显示全部楼层
    如果再加上Intel的神经棒的话,识别速度还会有所提高。
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2016-7-1 11:44
  • 签到天数: 3 天

    连续签到: 1 天

    [LV.2]偶尔看看I

    发表于 2019-1-14 14:17:31 | 显示全部楼层
    sewawa 发表于 2019-1-14 10:42
    如果再加上Intel的神经棒的话,识别速度还会有所提高。

    说的太对了,如果再加几个RTX 2081 Ti 识别速度还会有大幅提升
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    发表于 2019-1-15 18:05:41 | 显示全部楼层
    谢谢楼主分享!
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    发表于 2019-1-22 11:34:17 | 显示全部楼层
    22222222222222222222
    回复 支持 反对

    使用道具 举报

    您需要登录后才可以回帖 注册/登录

    本版积分规则

    关闭

    站长推荐上一条 /5 下一条



    手机版|小黑屋|与非网

    GMT+8, 2024-12-20 16:53 , Processed in 0.244900 second(s), 37 queries , MemCache On.

    ICP经营许可证 苏B2-20140176  苏ICP备14012660号-2   苏州灵动帧格网络科技有限公司 版权所有.

    苏公网安备 32059002001037号

    Powered by Discuz! X3.4

    Copyright © 2001-2024, Tencent Cloud.