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

简介:



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

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


 ◆ 

造我自己的机器人


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


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


而新的第三代树莓派板是完成这个项目的最佳选择。在亚马孙上它仅售36美元,还带有无线功能、一个四核的CPU、1G的内存。加上一个报价6美元的迷你SD卡就可以载入一个基于Debian的Raspberian操作系统。图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个可能物体的猜测。这个模型对于相当多的东西的识别都非常好,但是它也很明显地缺少一个确定的“先验条件”,即它不知道将会看到的东西是什么。它的训练数据里也明显漏掉了不少物品。比如,它能很好的识别我的笔记本,即使是从很特殊的角度看。但当让它看我的装一堆电线的篮子的时候,它就一直认为这是个烤面包机。当摄像头被遮挡,拍到的图像为黑屏或是比较模糊的时候,它就会认为是在看一些线虫。很明显线虫是它的训练数据里的东西。


图6 接着键盘和显示器的机器人。图片由Lukas Biewald授权使用

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

原文发布时间为:2016-10-22

本文来自云栖社区合作伙伴“大数据文摘”,了解相关信息可以关注“BigDataDigest”微信公众号

相关文章
|
机器学习/深度学习 自然语言处理 机器人
【Tensorflow+自然语言处理+LSTM】搭建智能聊天客服机器人实战(附源码、数据集和演示 超详细)
【Tensorflow+自然语言处理+LSTM】搭建智能聊天客服机器人实战(附源码、数据集和演示 超详细)
1325 15
|
机器学习/深度学习 自然语言处理 机器人
【Tensorflow+自然语言处理+RNN】实现中文译英文的智能聊天机器人实战(附源码和数据集 超详细)
【Tensorflow+自然语言处理+RNN】实现中文译英文的智能聊天机器人实战(附源码和数据集 超详细)
279 1
|
自然语言处理 机器人 TensorFlow
基于OneAPI工具分析包TensorFlow的聊天机器人设计分析和总结
基于OneAPI工具分析包TensorFlow的聊天机器人设计分析和总结
219 0
|
机器学习/深度学习 存储 人工智能
人工智能不过尔尔,基于Python3深度学习库Keras/TensorFlow打造属于自己的聊天机器人(ChatRobot)
聊天机器人(ChatRobot)的概念我们并不陌生,也许你曾经在百无聊赖之下和Siri打情骂俏过,亦或是闲暇之余与小爱同学谈笑风生,无论如何,我们都得承认,人工智能已经深入了我们的生活。目前市面上提供三方api的机器人不胜枚举:微软小冰、图灵机器人、腾讯闲聊、青云客机器人等等,只要我们想,就随时可以在app端或者web应用上进行接入。但是,这些应用的底层到底如何实现的?在没有网络接入的情况下,我们能不能像美剧[《西部世界》(Westworld)](https://movie.douban.com/subject/2338055/)里面描绘的那样,机器人只需要存储在本地的“心智球”就可以和人类沟
人工智能不过尔尔,基于Python3深度学习库Keras/TensorFlow打造属于自己的聊天机器人(ChatRobot)
|
SQL 机器人 数据库
Python 数据科学入门教程:TensorFlow 聊天机器人
TensorFlow 聊天机器人 原文:Creating a Chatbot with Deep Learning, Python, and TensorFlow 译者:飞龙 协议:CC BY-NC-SA 4.0 一、使用深度学习创建聊天机器人 你好,欢迎阅读 Python 聊天机器人系列教程。
1312 0
|
机器学习/深度学习 机器人 Go
如何用TensorFlow训练聊天机器人(附github)
前言 实际工程中很少有直接用深度学习实现端对端的聊天机器人,但这里我们来看看怎么用深度学习的seq2seq模型来实现一个简易的聊天机器人。
2320 0
|
机器人 TensorFlow 算法框架/工具
5步做一个 TensorFlow 聊天机器人:DeepQA
项目截图: 实测截图: 一步一步教程: 1.下载这个项目: https://github.com/Conchylicultor/DeepQA 2.
2356 0
|
机器学习/深度学习 机器人 TensorFlow
我用 tensorflow 实现的“一个神经聊天模型”:一个基于深度学习的聊天机器人
概述 这个工作尝试重现这个论文的结果 A Neural Conversational Model (aka the Google chatbot). 它使用了循环神经网络(seq2seq 模型)来进行句子预测。
1519 0
|
人工智能 机器人 TensorFlow
TensorFlow 聊天机器人开源项目评测第一期:DeepQA
聊天机器人开源项目评测第一期:DeepQA https://github.com/Conchylicultor/DeepQA 用 i5 的笔记本早上运行到下午,跑了 3 轮的结果,最后效果并不理想。
1422 0
|
机器学习/深度学习 机器人 TensorFlow
ChatGirl 一个基于 TensorFlow Seq2Seq 模型的聊天机器人[中文文档]
ChatGirl 一个基于 TensorFlow Seq2Seq 模型的聊天机器人[中文文档] 简介 简单地说就是该有的都有了,但是总体跑起来效果还不好。
2182 0

热门文章

最新文章