深度学习动手实践:用 TensorFlow 打造“会看”的机器人

新智元编译1

来源:oreilly.com

作者:Lukas Biewald

译者:刘小芹

  (文/Lukas Biewald)物体识别是当前机器学习最热门的方向。计算机早已能够识别如人脸、猫之类的物体,但识别更大范围里的任意物体对人工智能来说仍是难题。也许真正让人惊奇的是人脑在识别物体上表现得如此之好。我们能够毫不费力地将反射频率只有细微不同的光子转换为有关周围世界的十分丰富的信息。机器学习仍在与这些对人类来说十分简单的任务作着苦斗,但在过去几年里已经有了很大进步。

  深度学习以及大型公共训练数据集 ImageNet 让物体识别有了令人瞩目的进步。TensorFlow是一个著名的深度学习系统,它能非常方便地在多种架构下实现深度学习算法。TensorFlow在充分利用GPU方面表现特别好,相应地在运行深度学习算法上也表现很好。

  自制机器人

  我想造一个能识别物体的机器人。我在计算机编程和测试驱动开发领域有多年的经验,这让我对物理项目非常狂热。在现实世界里,测试你的越野车设备可能会烧掉你的房子,或者至少会烧掉发动机,让你不得不花好几天等待部件更换。

  图1:物体识别机器人的架构

  新的第三代 Raspberry Pi 对该项目来说非常好。Amazon上的售价是36美元,搭载WiFi、四核CPU和千兆字节RAM。一个6美元的microSD卡就可以加载主要基于Debian的Raspberian。图1展示了这些组件的组装架构,图二是Pi的照片。

  

  图2:在我的车库里运行的Raspberry Pi

  我很喜欢这个便宜的机器人底盘,它是Sain Smart的,售价约11美元。底盘通过轮子不同速度的转动运动,行动起来非常顺畅(见图3)。

  

  图3:机器人底盘

  花费较多的是Adafruit的电机扩展板(图4),尽管也有便宜一些的选择。DC电机运行的电流比 Raspberry Pi 能提供的电流要高,所以还需要一个单独的控制器,Adafruit电机扩展板就超级方便。使用扩展板需要稍稍焊接一下,不过硬件条件能完全容忍这点,而且Adafruit提供了很好的库和教程来通过i2C控制电机。最初我用的是较便宜的电机控制器,但不小心把 Raspberry Pi 烧掉了,所以我决定买个质量更好的。

  

  图4:搭载电机扩展板和摄像头的Raspberry Pi

  这个15美元的摄像头刚好能与 Raspberry Pi 连接,它能提供用于识别物体的实时录像。好用的摄像头非常多,我喜欢有夜视功能的红外线摄像头。

  Raspberry Pi 所需电流大约是2安倍,但我们还要连音箱,所以3安倍的电流更安全。这项任务用iPhone的充电器就行了。小型充电器输出的实际电流不够,可能引起问题,但Lumsing的移动电源就非常好,花费18美元。

  一对HC-SR04声呐传感器能帮助机器人避免撞到东西,可以买5个11美元。

  最后是我能找到的最便宜的USB音箱,然后用一捆束线带、热熔胶和泡沫板把所有部件固定到一起。另外,我把这些电子元件的包装裁剪一下,给机器人做了一些个性装饰。在这里提一下,我实际上是做了两个机器人(图5),因为我用不同的底板、摄像头、声呐设备、软件等做测试,最终买的材料足够做两个版本的机器人了。

  

  图5:我的4WD机器人(右)和他的姐姐

  机器人装配好了,下一步就是让它变得智能。关于 Raspberry Pi 的入门网上已有无数教程,如果你使用Linux,会很熟悉这些。

  摄像头的话,RPi Cam Web接口就非常好。它的可配置性很高,默认配置下会把摄像头拍到的最新图像传到 /dev/shm/mjpeg/cam.jpg 的RAM磁盘上

  如果你想将摄像机数据传到网页(这对调试非常有用),可以安装Nginx,它是超快的开源网络服务器/代理。我配置的Nginx能让它将请求的摄像机图像直接传到文件位置,将其它所有数据传到我的网络服务器。

  

  然后,我建了一个简单的Python网络服务器,这能让我用键盘灵活遥控机器人。

  不得不说,在障碍物周围操纵声呐和驱动系统的机器人非常有趣!

  为机器人编程

  最后,是时候安装TensorFlow了。安装的方法有许多,但实际上TensorFlow配有makefile文件,能让你把它正确安装到系统上。安装过程需要几个小时,还会出现一些dependency,不过对我来说还算顺利。

  TensorFlow附带有一个叫做“inception”的预制模型,能实现物体识别。你可以按照教程运行它。

  用摄像机的一张图像运行 tensorflow/contrib/pi_examples/label_image/gen/bin/label_image,会输出前5个猜想。模型对很大范围的各种输入都运行得很好,但它显然缺少准确的“prior”,或是说缺少对“可能会看到的东西”的感知,而且训练数据中有相当多的对象丢失了。例如,它能一直认得我的笔记本电脑,即使是从奇怪的角度看;但当我把它开到散乱的电线篮前,它会以为那是一个烤面包机。如果摄像头被挡住,它得到的图像变暗或模糊了,它会以为它看到的是线虫——显然是它曾被训练的数据中的人造物品。

  

  图6:接入我的键盘和显示器的机器人

  最后,我把输出连接到能进行文本-语音转换的Flite开源软件包,以让机器人说话,告诉大家它看到了什么(图6)。

  测试机器人

  这是我的两个运用深度学习进行物体识别的自制机器人。

  后记

  我从2003年到2005年在斯坦福机器人实验室工作,那儿的机器人耗资数百万美元,在物体识别方便却还不如我的小机器人。我已经迫不及待想用这些软件来做一架无人驾驶飞机,以后就再也不用找钥匙了。

  我想感谢所有帮助我完成这个有趣的项目的人。我的邻居Chris Van Dyke和Shruti Gandhi帮我把机器人打扮得很有个性。我的朋友Ed McCullough对硬件设计做了很大改善,还教我使用热熔胶和塑料板。在 Google 工作的 Pete Warden 帮我把 TensorFlow 编译得适用 Raspberry Pi,还给我提供了许多客户支持。

  【作者介绍】Lukas Biewald 是 CrowdFlower的创立者和CEO。CrowdFlower创于2009年,是一个数据扩充平台,通过挖掘按需劳动力帮助企业收集训练数据和进行人参与在回路中的机器学习。Lukas Biewald 拥有斯坦福大学数学理科学士和计算机科学硕士学位,曾领导Yahoo! Japan的搜索团队。他随后在Powerset做高级数据科学家,Powerset在2008年被微软收购。

  原文链接:https://www.oreilly.com/learning/how-to-build-a-robot-that-sees-with-100-and-tensorflow

  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值