AI技术精选:TensorFlow图像识别功能在树莓派的应用
作者头像
  • 马媛
  • 2022-06-19 21:54:41 7

【AI100 导读】上周 TensorFlow 1.0 的发布使其成为最具潜力的深度学习框架,并在中国的 AI 社区中引发了学习 TensorFlow 的热潮。然而,仅仅运行示例程序是无法脱颖而出的。本文是由数据科学公司(SVDS)的数据工程师马特·鲁巴什金撰写的一篇实战指南,详细介绍了他如何创造性地将深度学习与物联网技术结合,以解决实际问题的过程,颇具启发性。

SVDS 曾利用实时、公开的数据来优化加州火车到达时间的预测。但由于火车到站时间数据的不可靠性,准确预测变得困难。他们使用了 Raspberry Pi 摄像头和 USB 麦克风,以检测火车的经过及其速度和方向。在 Mountain View 办公室装配了一台新的 Raspberry Pi 后,他们遇到了一个问题:这台设备不仅检测到了加州火车(真阳性),还误检了其他类型的火车(假阳性)。为了确保能准确检测到加州火车的延迟,他们需要对不同类型的火车进行有效的分类。

用 TensorFlow 解决问题

幸运的是,他们在这个图像分类问题上遇到了 TensorFlow。作为深度学习领域的一个重要工具,TensorFlow 提供了简单的 Python API 和丰富的在线文档。作者参考了 Pete Warden 的博客《TensorFlow for Poets》,该博客介绍了如何利用高性能的 Inception V3 模型创建定制化的图像分类器。借助笔记本电脑,作者能够通宵训练模型,无需昂贵的 GPU 支持,未来还可以方便地微调模型。

作者从 TensorFlow 的官方教程开始,使用命令行接口对数据集中的图片进行分类,甚至包括梵高的《向日葵》这样的自定义图片。通过这一系列实践,他积累了使用 TensorFlow 创建图像分类器的经验,并希望构建一个稳定且无偏见的图像识别模型,用于识别火车。尽管之前拍摄的 Raspberry Pi 图片可用于训练模型,但他选择了更大、更多样化的数据集,包括小汽车和卡车,因为它们也可能出现在检测点附近。

测试及配置模型

经过一夜的训练,作者第二天早上检查模型的表现。他测试了一些未包含在训练集中的图片,惊讶地发现分类器能够准确地识别出正确的类别。这些图片包括从网上下载的训练集图片以及从 Raspberry Pi 获取的实际图片。

为了验证模型在 Raspberry Pi 上的适用性,作者在设备上运行了图像分类器。由于网络连接可能不稳定,直接在设备上运行分类器可以避免因传输图片而产生的延迟。Raspberry Pi 3 的性能足以支持实时处理,因此只需传输少量处理过的数据流,从而降低成本。整个设备的硬件成本约为130美元,所有代码均使用开源库编写。作者使用 JupyterHub 进行测试,以控制多个位置上的 Raspberry Pi 设备。有了可用的车辆分类器后,作者将模型部署到了 Raspberry Pi 上,并在实时流处理架构中实现。

解决 TensorFlow 在 Raspberry Pi 上的问题

虽然有关于在 Android 和其他小型计算设备上安装 TensorFlow 的良好文档,但大多数示例侧重于单张图片识别或批处理,而非实时流处理。在 Raspberry Pi 上,单张图片的分类可以稳健完成,如图所示:

[attach]740775[/attach]

然而,加载85MB的模型文件耗时较长,因此需要将分类器的图表加载到内存中。在加载完成后,Raspberry Pi 的1GB内存足以支持连续运行的摄像头和麦克风。不过,直接对每张图片进行分析会导致 CPU 使用率达到100%,进而引发过热问题。因此,只有当检测到移动物体时,图片才会被传送到 Raspberry Pi 上进行分类。

总结

如果你对使用物联网设备进行实时图像分类感兴趣,可以从这里开始:

本文作者马特·鲁巴什金目前是数据科学公司 SVDS 的数据工程师,拥有 UC Berkeley 博士学位,背景涉及光学物理和生物医学研究,并在软件开发、数据库工程和数据分析方面有丰富经验。

本文由 AI100 编译,转载需获得本公众号许可。

编译:AI100

原文链接:http://svds.com/tensorflow-image-recognition-raspberry-pi/

    本文来源:图灵汇
责任编辑: : 马媛
声明:本文系图灵汇原创稿件,版权属图灵汇所有,未经授权不得转载,已经协议授权的媒体下载使用时须注明"稿件来源:图灵汇",违者将依法追究责任。
    分享
树莓TensorFlow识别图像精选功能应用技术
    下一篇