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

效果视频

视频内容

物体识别是现在机器学习领域的热点之一。相当长的时间里,计算机已经能相当可靠地识别人脸或者猫。但在更大的图片中去识别一个指定的物体还是人工智能领域的“圣杯”。人类的大脑能非常好地识别物体。我们可以毫无困难地把从物体上反射出来的具有不同频率的光子转化为关于我们周边世界的极度丰富的信息集。而机器学习还依然在为了完成这个简单的任务而奋斗。不过近几年,机器学习已经取得了相当不错的进步。

深度学习算法和一个超大的公共训练数据集(称为ImageNet)共同促成了物体识别领域的一系列令人映像深刻的进步。TensorFlow是一个广为人知的框架,它让在多种架构上实现深度学习算法变得很容易。TensorFlow善于利用GPU的运算能力,从而使得它非常适合运行深度学习的算法。

造我自己的机器人

我想造一个能自己识别物体的机器人。多年的开发程序和测试的经验已经把我塑造成了害怕和实际物体打交道。现实世界里,测试一个有缺陷的物理设备可能会把房子烧了,或是烧毁引擎,并让你等很多天才能拿到替换的零件。

图1 能识别物体的机器人的架构。图片由Lukas Biewald授权使用

而新的第三代树莓派板是完成这个项目的最佳选择。在亚马孙上它仅售36美元,还带有无线功能、一个四核的CPU、1G的内存。加上一个报价6美元的迷你SD卡就可以载入一个基于DebianRaspberian操作系统。图1显示了所有这些部件是怎么组合在一起的。而图2则是这块板子的照片。

图2 运行在我车库里的树莓派板。图片由Lukas Biewald授权使用

我很喜欢SainSmart制造的只用11美元的机器人底盘。这个底盘可以控制不同轮子采用不同的转速,运转的令人惊讶得好(见图3)。

图3 机器人底盘。图片由Lukas Biewald授权使用

唯一让我在有更便宜的选择的时候还多花钱的东西就是这个Adafruit制造的电机扩展板(见图4)。这个直流电机的运行电压超过了树莓派板子可以提供的电压。所以单独的控制器就成为必须。而Adafruit电机扩展板极其方便好用。使用这个电机扩展板是会要做一点焊接,但这个设备是极度的容错。而且Adafruit还提供了一个很好的库和教程来让你通过i2C总线来控制电机。我一开始用的是一个便宜的电机控制器,但不小心把我的树莓派板给烧掉了,所以我决定买一个质量好一点的替代品。

图4 已经安装了摄像头和电机的树莓派板。图片由Lukas Biewald授权使用

一个标价15美元的摄像头正好能装在树莓派板上,它能提供实时的视频来作为物体识别的输入。摄像头的选择就太多了。我选了一个带红外功能的摄像头,这样就可以让我的机器人有夜视功能了。

树莓派板需要大概2安培的电源,但3安培电流对于我要装的扬声器是一个更保险的选择。iPhone的充电宝是这一任务的理想选择。更低安培的充电宝一般不能产生足够的电流,从而会导致一些问题。不过这个Lumsing power bank的充电宝却很不错,而且只用18美元。

这几个HC-SR04型的声呐传感器可以让机器人免于撞车。11美元就能买到5个。

我还买了我能找到的最便宜的USB扬声器,然后用了一堆的胶带、热胶和泡沫板来把所有的东西粘到一起。作为废物利用,我还把一些电子设备的包装材料给剪了,并在上面画了一些东西来给这个机器人增加一点点人性。这里我要说的是,我实际上造了两个机器人(见图5),因为我实验了不同的底盘、摄像头、声呐、软件和其他的东西。结果加在一起发现足够造两个版本的机器人了。

图5 我的四驱动机器人(右边的)和他的两驱动机器人妹妹。图片由Lukas Biewald授权使用

把机器人组装好了之后,就该让它变聪明了。网上有海量的教程教你如何使用树莓派。如果你曾用过Linux,树莓派的一切对你而言就都很熟悉了。

如果你想把摄像头的视频记录下来,RPi Cam Web接口能很好地胜任。它非常容易配置。默认是把来自摄像头的最新的画面存放在RAM磁盘的/dev/shm/mjpeg/cam.jpg里。

如果你想把摄像头的数据发布到网页里(这对调试是非常有帮助的),你可以用Nginx,一个极度快的开源网页服务器。我把Nginx配成对摄像头画面的网页请求直接指向上面文件的地址,而其他的请求都发送到网页服务器。

http {

server {

location / {

proxy_pass http://unix:/home/pi/drive.sock;

}

location /cam.jpg {

root /dev/shm/mjpeg;

}

}

}

我随后开发了一个简单的Python 网站服务器,可以接收键盘的指令来转动机器人的轮子。控制键盘本来是一个的遥控汽车的。

另外要说的是,利用声呐和驾驶系统来控制机器人的行驶路线从而让它能避开物体是一件非常有趣的事。

给我的机器人开发程序

终于,是时候安装TensorFlow了。安装TensorFlow有很多种方法,但TensorFlow提供了makefile命令,从而能针对你特定的操作系统进行编译。这一步骤花费了我几个小时,并需要一些依赖包,但总体来说还算顺利。

TensorFlow自带了一个预建好的模型,叫inception。它可以完成物体识别。这是如何使用运行它的教程

对一张来自摄像头的画面运行tensorflow/contrib/pi_examples/label_image/gen/bin/label_image命令,TensorFlow会返回5个可能物体的猜测。这个模型对于相当多的东西的识别都非常好,但是它也很明显地缺少一个确定的“先验条件”,即它不知道将会看到的东西是什么。它的训练数据里也明显漏掉了不少物品。比如,它能很好的识别我的笔记本,即使是从很特殊的角度看。但当让它看我的装一堆电线的篮子的时候,它就一直认为这是个烤面包机。当摄像头被遮挡,拍到的图像为黑屏或是比较模糊的时候,它就会认为是在看一些线虫。很明显线虫是它的训练数据里的东西。

最后我采用Flite开源软件包来作为机器人的输出部分,把文字变成语音。这样机器人就可以说出它看到的物体了(见图6)。

测试我的机器人

看,这里就是我自制的两个可以使用深度学习进行物体识别的机器人。

视频内容

最后的一些想法

2003到2005期间,我在斯坦福机器人实验室工作。那时候的机器人一般会要花费几十万美元,而且物体识别的能力也比不上我现在的这个机器人。我很希望能把这个软件装入我的无人机里,这样就再也不用我自己找钥匙了。

这里我也希望感谢在这个项目里帮助过我的人。我的邻居克里斯·冯·达克、施鲁蒂·甘地带给了我的机器人的友好的人性。我的朋友艾德·麦克洛大大提升了硬件部分的设计,并教会我使用热胶和泡沫板。工作在谷歌的皮蒂·沃顿帮助我在树莓派上很好地编译了TensorFlow,并提供了非常棒的客户支持。

Lukas Biewald

Lukas Biewald是CrowdFlower的创始人兼CEO。CrowdFlower始于2009年,是一个数据增强的平台,可以帮助企业获得随需的人力来收集、产生训练数据,以及参与人-机器学习循环的工作。 在从斯坦福大学拿到数学学士和计算机科学硕士学位后,Lukas领导了雅虎日本的搜索相关团队。随后他去了Powerset,作为一个资深数据科学家进行工作。2008年Powerset被微软收购。Lukas还被《公司》杂志评选为30位30岁以下的著名人士。 Lukas还是一位专家级的围棋选手。

原文发布于微信公众号 - CreateAMind(createamind)

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

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

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏互联网研发闲思录

个性化推荐系统(四)--- 推荐系统服务端

 推荐系统怎样稳定高效提供服务,持续不断满足业务需求,持续不断面对技术挑战,是每一个服务端开发同学应该持续思考,和持续不断优化线上服务。 ?         以...

4504
来自专栏人工智能快报

比人类更准确:人工智能可有效预测心脏病与中风

在许多实验中(尽管还并没有出现在许多临床中),人工智能系统在诊断疾病、分析医学图像以及预测健康状况方面展示出很好的前景。它们在某些任务中,甚至比医生们做的还要好...

3236
来自专栏新智元

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

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

2696
来自专栏新智元

【44.99美元】谷歌推出树莓派计算机视觉盒子,自己动手组装深度学习套件

来源:blog.google 编译:弗格森 【新智元导读】 谷歌为树莓派制作了一个具有设备上的神经网络加速功能的套件,在没有云连接的情况下提供强大的计算机视觉能...

45612
来自专栏BestSDK

Cloudsight推出图像识别API,免费开放给教育机构

如果自己研发做图像识别的成本比较高,尤其是在没有一个很好的硬件设施(GPU)的情况下,还是通过API比较合适。 ? 计算机科学学位的技术往往要落后于现实。许多学...

4263
来自专栏ATYUN订阅号

AI Benchmark可以测试智能手机的神经网络性能

芯片制造商高通,华为和联发科有什么共同之处?所有这三种市场硬件架构都可以加速计算机视觉,自然语言处理以及智能手机,平板电脑和其他移动设备中的其他机器学习任务。麻...

1975
来自专栏新智元

【Science重磅】自学习人工智能在预测心脏病发作上击败人类医生

【新智元导读】Science 今日报道,科学家使用能够自学习的人工智能技术,让计算机在预测心脏病的发作上击败了人类医生。一旦投入使用,这一新的诊疗手段每年将拯救...

3766
来自专栏大数据文摘

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

2013
来自专栏互联网数据官iCDO

【分析方法】十一种营销归因模型大诠释

今天这篇文章将会一起深入探究十一种归因模型并分析它们各自的优缺点。   每种归因模型都有各自适用的场景和环境,实际使用中通常结合业务场景,对比测试模型的效果,...

3522
来自专栏机器之心

前沿 | Science:自学习式人工智能可协助预测心脏病发作

选自Science 作者:Matthew Hutson 机器之心编译 参与:蒋思源、黄小天 近年来,将人工智能应用于医疗健康已经在蓬勃发展,机器之心也曾报道过医...

39812

扫码关注云+社区

领取腾讯云代金券