转载自|OReillyData 作者|Lucas Biewald
物体识别是当前机器学习领域的热门话题之一。 相当长一段时间以来,计算机已经能够相当可靠地识别面孔或猫。 但识别较大图像中的特定物体仍然是人工智能的“圣杯”。 人脑非常擅长识别物体。 我们可以毫无问题地将物体反射的不同频率的光子转换成关于我们周围世界的极其丰富的信息。 而机器学习仍在努力完成这个简单的任务。 然而,机器学习近年来取得了长足的进步。
深度学习算法和称为 ImageNet 的大型公共训练数据集相结合,在对象识别方面取得了一系列令人印象深刻的进步。 TensorFlow 是一个众所周知的框架,可以轻松地在各种架构上实现深度学习算法。 TensorFlow 善于利用 GPU 的计算能力,非常适合运行深度学习算法。
◆◆◆打造我自己的机器人
我想建造一个可以自行识别物体的机器人。 多年的程序开发和测试使我变成了一个害怕使用真实物体的人。 在现实世界中,测试有缺陷的物理设备可能会烧毁房屋,或炸毁发动机,并让您等待很多天才能更换零件。
图1 能识别物体的机器人的架构。图片由Lukas Biewald授权使用
而全新的第三代Raspberry Pi板是完成该项目的最佳选择。 它在亚马逊上的售价仅为 36 美元,并配备无线功能、四核 CPU 和 1GB 内存。 添加 6 美元的迷你 SD 卡可以加载基于 Debian 的 Raspberian 操作系统。 图 1 显示了所有这些组件如何组合在一起。 图 2 是该板的照片。
图2 运行在我车库里的树莓派板。图片由Lukas Biewald授权使用
我喜欢 SainSmart 制造的机器人底盘仅需 11 美元。 这个底盘可以控制不同的车轮使用不同的转速,而且效果出奇的好(见图3)。
图3 机器人底盘。图片由Lukas Biewald授权使用
当有更便宜的选择时,唯一让我花更多钱的是 Adafruit 制造的电机护罩(见图 4)。 该直流电机的运行电压高于 Raspberry Pi 板所能提供的电压。 因此,一个单独的控制器就成为必须的。 Adafruit 电机扩展板极其方便且易于使用。 使用该电机扩展板需要进行一些焊接,但该设备的宽容度极高。 而且Adafruit还提供了一个很好的库和教程让你通过i2C总线控制电机。 我一开始使用的是便宜的电机控制器,但不小心烧坏了我的 Raspberry Pi 板,所以我决定购买质量更好的替代品。
图4 已经安装了摄像头和电机的树莓派板。图片由Lukas Biewald授权使用
适合安装在 Raspberry Pi 板上的 15 美元摄像头提供实时视频作为对象识别的输入。 有很多相机选项。 我选择了具有红外功能的摄像头,以便我的机器人具有夜视功能。
Raspberry Pi 板需要大约 2 安培的电源,但对于我想要安装的扬声器来说,3 安培是更安全的选择。 iPhone 移动电源是完成此任务的理想选择。 较低安培的移动电源通常不会产生足够的电流,这可能会导致问题。 不过Lumsing移动电源的这款移动电源非常好,而且只要18美元。
这些 HC-SR04 声纳传感器可以避免机器人崩溃。 11 美元即可购买 5 个。
我还买了我能找到的最便宜的 USB 扬声器,并使用一堆胶带、热熔胶和泡沫板将所有东西固定在一起。 作为再利用,我还从电子设备上剪下了一些包装材料,在上面画了一些东西,为机器人增添了一点人性。 我在这里要说的是,我实际上建造了两个机器人(见图 5),因为我尝试了不同的底盘、摄像头、声纳、软件和其他东西。 将结果合并起来,发现足以构建两个版本的机器人。
图5 我的四驱动机器人(右边的)和他的两驱动机器人妹妹。图片由Lukas Biewald授权使用
组装好机器人后,就该让它变得智能了。 网上有大量教程可以教您如何使用 Raspberry Pi。 如果您曾经使用过 Linux,那么关于 Raspberry Pi 的一切都会对您来说很熟悉。
如果您想从相机录制视频,RPi Cam 网络界面可以很好地完成这项工作。 配置非常简单。 默认情况下,将摄像机的最新图像存储在 RAM 磁盘上的 /dev/shm/mjpeg/cam.jpg 中。
如果你想将摄像头数据发布到网页上(这对调试很有帮助),你可以使用Nginx,一个速度极快的开源Web服务器。 我配置了 Nginx,以便对摄像头图像的网页请求直接指向上面文件的地址,而其他请求则发送到 Web 服务器。