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

(文/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

原文发布于微信公众号 - 新智元(AI_era)

原文发表时间:2016-10-18

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏机器学习算法与Python学习

资源 | 中文NLP资源库

最近,在GitHub上,有人收罗了一份资源,汇集了40个关于中文NLP词库,涵盖了各个方面。

2152
来自专栏机器之心

开源 | 微软发行 Cognitive Toolkit 2.0 完整版:从性能更新到应用案例

选自Microsoft 作者:John Roach 机器之心编译 参与:黄小天、蒋思源 近日,微软在其官方博客上撰文宣布全面开源 Microsoft Cogn...

3448
来自专栏大数据文摘

DOTA2中打败Dendi的AI如何炼出?OpenAI公布两周集训细节(含实战视频)

2013
来自专栏深度学习思考者

深度学习数据集(一)

海量数据(又称大数据)已经成为各大互联网企业面临的最大问题,如何处理海量数据,提供更好的解决方案,是目前相当热门的一个话题。类似MapReduce、 Hadoo...

2257
来自专栏AI科技大本营的专栏

集合70多种推荐算法,东北大学老师用Java写了一个开源库,在GitHub上收获近1500个Star

【AI科技大本营导读】在经过一年多的开发工作之后,LibRec 3.0 版本终于发布了。LibRec 是一个基于 Java 的开源算法工具库,覆盖了 70 余个...

2046
来自专栏大数据文摘

网购评论是真是假?文本挖掘告诉你

1777
来自专栏CreateAMind

如何用100美元和TensorFlow来造一个能“看”东西的机器人

物体识别是现在机器学习领域的热点之一。相当长的时间里,计算机已经能相当可靠地识别人脸或者猫。但在更大的图片中去识别一个指定的物体还是人工智能领域的“圣杯”。人类...

1194
来自专栏新智元

【AI VS人类】医生水平大PK: 人工智能四胜三平一负绝对领先

【新智元导读】IEEE Spectrum 日前公布了一个“记分牌”,显示了在医疗领域的各个子类中,AI 和人类医生谁更占优势,其中涵盖了心脏病、中风、自闭症、脑...

2696
来自专栏新智元

FaceApp:基于深度网络为人像照片加笑容,实现年龄、性别变换

【新智元导读】 FaceApp 不仅是一个有趣的应用,它证明了人工智能如何使得处理照片变得前所未有的简单。比如,p上笑容、年龄和性别转换均可以轻松完成。过年拍...

41311
来自专栏数据派THU

独家 | 6步教你用R语言制作动图

原文标题:How to create animated GIF images for data visualization using gganimate (i...

3007

扫码关注云+社区

领取腾讯云代金券