硅谷数据科学公司的数据工程师Matt Rubashkin在公司网站上发表了一篇实战文章,描述了如何将深度学习与物联网相结合来解决实际问题的思路和具体步骤。
自谷歌开源Tensorflow以来,已经迅速占领了深度网络学习者与研究者的计算机,并产生了许多极具想象力的实验性项目。
在Pete Warden的博客中,有一篇文章介绍了如在Inception V3 模型上创建定制化图像分类器(https://codelabs.developers.google.com/codelabs/tensorflow-for-poets/#0)。在此基础上,Matt Rubashkin使用普通的笔记本电脑来对此模型的强化版本进行了训练。
实验过程是基于 TensorFlow 示例代码中对花朵的识别项目的。
首先通过命令行接口来分类数据集中的图片
图像中的名称,从上到下依次雏菊,向日葵,蒲公英,郁金香,玫瑰。
现在我们就得到了一个使用TensorFlow的图像分类器
Matt Rubashkin尝试了选择容量相对大、内容相对更加多样的数据集来进行测试。他通过谷歌手机了1,000张图片,内容包括:
- 加州火车
- 货运火车
- 轻轨
- 卡车
- 小汽车
测试及配置模型
在整夜对模型进行训练后了,先测试了不包含在训练集里图片,最终发现,分类器似乎可以完全挑出正确的分类。这里面包括从 Google 上找到的训练集的图片,也包括从 Raspberry Pi 采集到的图片。
图片中的名称,从上到下依次是:加州火车,运输火车,轻轨,汽车,卡车。
分类器可运行在树莓派上,这样可以保证用户是负担的起的。同时,因为无法保证网络连接的速度,一般是直接在设备上进行分类工作,这样便无需把待分类图片发送到主服务器,以减少网络造成的延迟。
Raspberry Pi3 的效率非常高,可以直接在设备上进行流处理。因而,只需要用网络发送小容量的,处理过的数据流,同时价格低廉也是这套设备的优势所在。
分类器的代码都是使用开源的库,硬件成本也十分低廉,只需要一百三十美金。为了方便控制多个位置上的树没皮设备,作者在 JupyterHub上 对其进行了测试,有了一个正常运行的车辆分类集,接下来我把模型加载到 Raspberry Pi 上,并在视听流架构下实现了它。
为了能够在树莓派的32位 ARM芯片上编译,作者参考了SamAbraham 上的指导性文章(https://github.com/samjabrahams/tensorflow-on-raspberry-pi),同时也与 谷歌 的 TensorFlow 团队进行了沟通。
解决 TensorFlow 在树莓派上出现的问题
目前有记录记载如何在小型设备上配置Tensorflow不过大多数例子都是批处理的方式或者是单个样本的示例。而此处的是基于流媒体的图像分类工作,且分类效果极佳,如下图所示:
不过,训练的到的模型有85兆,因此往内存加载所需的时间较长,因此需要把分类器图表加载到内存里。分类器图表加载到内存之后,树培派拥有总计1G的内存,在上面的火车侦测 Python 应用中,有足够的计算资源来处理连续运行的摄像头和麦克风。
即便如此,用 TensorFlow 分析 PiCamera 拍摄到的每一张图片也是不可行的,因为这样 CPU 的使用率最终将达到100%,导致树莓派系统过热,因此只有运动物体的图片传送给了 Pi 上的图片分类器,并用 TensorFlow 识别不同类型车辆。
文章来源: http://geek.csdn.net/news/detail/139127