树莓派运行TensorFlow-hotgarlic

来自52Pi社区的热人投稿~欢迎广大网友投稿至管理员

创客们,今天我来分享一下我在pi上运行tensorflow的经历。这篇帖子比较适合对深度学习有一点点了解的创客,最好用过这类开发包,比如keras,tensorflow等等。如果你是pi 的玩家,并且想做一些时髦的玩意,那可以从这里开始。

首先要感谢将谷歌正式发布的tensorflow1.0进行编译的作者Sam Abrahams,光编译就要花上10多个小时,更不用说编译之前的艰苦摸索,如果喜欢这个可以向他捐赠来维护这个平台。

 

Tensorflow的安装:

  1. 准备工作设备:pi3B

    操作系统:Raspbian Jessie with PIXEL(2017-03-02

  2. 登录编译者的GitHub,按照方法1来进行操作,只要网速稳定,半个小时就可以将tensorflow安装到pi上,如果下载太慢,可以下载我的例子,里面有安装包(后缀whl),放到合适的文件夹里面,然后pip install就可以了。图片2图片3
  3. 运行例子下载解压到pi上,然后进入pi的terminal,cd进入例子的文件夹,再运行digits_recog. Py。约十几秒后,在terminal上应该显示0.97,说明tensorflow已经可以在pi上使用了。

例子的制作:

可能看到这篇帖子的朋友大多是pi的玩家,对深度学习不是太了解,所以我就讲解一下例子,也当是深度学习技术的入门知识。

digits_recog. py是一个采用CNN方法,来识别手写数字的脚本。有3个主要部分。

  • 建立一个空的CNN模型(CNN是一种在机器视觉方面相当好的模型)
  • 载入这个模型需要的参数(model文件夹),这些参数是我在速度更快的主机上计算(训练)出来的
  • 运用完整的CNN模型,去识别手写的数字(pkl文件),然后再评估识别率(0.97代表识别正确率为97%)

具体可以看文件里面的comment。

训练的过程也需要先建立模型,并且和digits_recog. py中的模型一样,我的例子文件夹里有个train.py文件,你下载下来的model文件夹就是运行这个训练程序后产生的,你可以在你的台式机上跑一下train.py,当然也可以在pi上运行,只不过速度比较慢。还有,脚本运行时会载入tensorflow自带的训练集mnist,里面的东西是50000个手写数字的像素图片,以及这些图片的答案(对应的数字)。如果减少训练集,会导致模型的训练不充分,造成识别率降低。

图片5

Mnist还包含了测试用的数据,这些数据当然是训练集所不包含的,但是训练集也很大,所以我精简了一下。做成实际的项目后,也不会一下子运行几万个图片。

建模,训练,识别的整个过程,是用tensorflow这个开发工具来完成的,它就相当于一个python的library。

最后你可以自己写几个数字,然后用picamera录到pi上,运行digits_recog. py,看看准不准。

 

期间还遇到了一个坑,那就是用jupyter notebook调试代码,会出现莫名的错误,但是在terminal运行.py就没问题。查看了报错,是在加载参数时发生的,各位喜欢用jupyter的朋友要当心了。

在识别的过程中,也可能提示GPU不能使用等等问题,不用去管,等着输出结果就行。

GPU模式是在训练参数的过程中才起作用的,训练的过程非常消耗硬件资源,所以现在都采用了GPU来加速,将来的项目我打算在云服务器上进行训练,如果有兴趣可以去看看这个网站

 

类似的项目:

这个自动驾驶玩具车的项目,识别的过程不是在pi上运行的,而是其他主机上运行,再去控制小车,我猜一个是当时还没法在pi上装tensorflow,另一个就是担心pi的性能跟不上。

另一个识别物体的小车项目,是谷歌的工程师发布的,我的这次实验的思路也和他一样,就是将参数文件加载到pi上,然后让pi在当地运行识别程序,不过这个项目的模型和参数都是现成的。类似的还有这个项目,可惜这个项目的参数现在似乎下载不到了。所以我打算自己建立模型和训练,这样也可以根据自己设定的任务灵活调整参数和训练数据。

 

一些感想:

大家也不必太担心pi的性能不行,因为64位的系统,52pi的牛人们已经试过了,性能提高很多,官方可能不久就要发布。更值得一提的是谷歌这个tensorflow的开发者,也打算为pi定制人工智能的开发工具,到时候软件更容易装,使用更方便。你可以说他们是双赢互利,因为pi的社区聚集了人气和强烈的创造激情,而谷歌则可以提供强大的技术支持。所以,各位追求新奇的创客,又会有很多好玩的东西等着你们。

 

本人才刚刚开始玩pi,有些讲的不对的地方还请包涵。最后也要感谢52pi社区的牛人们,帮我这个新手解决了一些硬件方面的问题。

 

发表评论

您的电子邮箱地址不会被公开。

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据