友思特案例
搭载NXT一体化推理相机的机器人玩“石头、剪刀、布”
前言导读
IDS NXT一体化推理相机是一个用于智能图像处理的完整系统,在人工智能的帮助下,无需额外的PC,就可以在相机内或者借助相机完成对图像的评估和结果传输,从而实现手势识别,并进行进一步处理,成功让机器人也能玩“石头、剪刀、布”。
智能相机手势识别
Sebastian Trella对技术和机器人充满热情。在他自己的博客中,他总是勇于迎接新挑战。然而,他几乎从未从事过图像处理工作。他看到一位同事的乐高头脑风暴机器人可以用几个不同的传感器识别手势,就产生了一个想法:“机器人应该能够‘看见’。” 到目前为止,机器人只能可靠识别在面前一个特定点上做出的各个手势。为此需要多个传感器,这降低了系统的灵活度,也影响了游戏的乐趣。图像处理能更“优雅”地完成这项任务吗?
从理念到实施
在寻找合适的相机时,他发现了IDS NXT – 一个用于智能图像处理的完整系统。它满足了所有这些要求,而且在人工智能的帮助下,相机不但可以识别手势,还可以满足更多要求。这激发了特雷拉的兴趣。这是因为无需额外的PC,就可以在相机内或者借助相机完成对图像的评估和结果传输。此外,IDS NXT Experience Kit提供了各种组件,方便您在没有任何人工智能知识储备的情况下立即开始使用应用。
Trella进一步发展了这个想法,并开始开发一种可以玩“石头、剪刀、布”游戏的机器人,游戏过程遵循经典玩法:(人类)玩家需要在镜头前做一个熟悉的手势(石头、剪刀、布)。虚拟对手此时已经随机确定了他的手势。系统实时评估动作,并显示获胜者。
第一步:基于图像处理的手势识别
但在此之前,还需要一些中间步骤。Trella开始使用图像处理实现手势识别,这是这位机器人迷的新领域。然而,在IDS lighthouse(一个基于云的人工智能视觉工作室)的帮助下,实现起来比预期更容易。在这里,您可以根据想法打造完善的应用。为了实现目标,需要通过包含必要产品知识的应用图像训练神经网络(在本例中就是从不同角度做出的一次手势),并打包成相应的应用工作流。“训练过程非常简单,我在不同的背景下以不同的角度用石头、剪刀或布的手势拍了几百张手的照片后,使用IDS Lighthouse的分步向导就可以轻松完成。第一个经过训练的AI就可以直接可靠地识别手势,”Sebastian Trella解释说。这不受左利手或右利手的影响,识别率约为95%。按标签“石头”、“布”、“剪刀”或“无”返回概率。一个令人满意的结果。但是现在如何处理所获得的数据呢?
进一步处理
可以通过专门创建的vision app对识别出的手势进行进一步处理。为此,在人工智能评估后,必须将捕捉到的各个手势的图像传递给应用。后者“知道”游戏规则,因此可以决定哪个手势胜过另一个手势。然后决定获胜者。在开发的第一阶段,应用还将模拟对手。所有这些目前都在制作中,下一步将成为一个“石头、剪刀、布”游戏机器人。
进一步处理已分析的图像数据
这款应用成为项目第二阶段的基础,这一阶段的目标是让玩家能够与模拟计算机对手玩游戏。它依托经过训练的 AI,并利用 AI 所获得的结果。在这个过程中,它设置了 AI 对手,这位对手会随机“输出”三个定义好的手部动作中的一个,并将这一动作与玩家的手部动作进行比较。然后决定谁是获胜者或者是否出现了平局。因此,Vision app 是电脑显示器上玩家的界面,而相机是捕捉玩家手势的界面。
这一应用是在基于云的AI Vision Studio IDS lighthouse 中创建的,神经网络的训练也在这里完成。模块化代码编辑器类似于 Scratch 这样的免费图形编程环境,这让 Sebastian Trella 用起来很轻松:“我熟悉 LEGO® MINDSTORMS® 和其他各种机器人产品的 Scratch/Blockly Vision app 编程,这样,我很快就找到了解决办法。编程界面基本没有区别,所运用的思维方式对我来说驾轻就熟。因为无论我是在 IDS NXT 相机上开发 AI 支持的 Vision app,还是为机器人开发动作序列,编程的方式都完全相同。”
直接在相机上进行“微调”
然而,Trella 对如何在图像上显示文本并不熟悉:“到目前为止,我编程的机器人只通过控制台输出内容。将 Vision app 的输出直接集成到相机图像中对我来说是一种新方法。” Trella 对能够在云中和相机上编辑 Vision app 感到惊讶,在设备上开发如此便利,且相机硬件性能那么强大,这些优势更让 Trella 欣喜不已:“可以直接在相机上测试对程序代码的小幅修改,无需重新编译云中的所有内容。编程环境运行非常稳定顺畅。” 然而,调试嵌入式设备上的错误让他感到仍有改进空间,尤其是在对相机进行调整后,嵌入式设备和云系统同步不够理想。
Trella 在相机的网站界面上发现了一个突出优点,他表示“棒极了”。在这里您可以找到 Swagger UI,这是一组用于记录和测试集成 REST 接口的开源工具,包括各种示例。这大大方便了他的工作。他还在此基础上为 IDS NXT 系统的未来发展提出了一些建议:“如果能提供可切换的模块与第三方机器人系统进行通信,这样用户就可以直接从 Vision app 编程环境中为机器人手臂进行“联合编程”,如果能够实现这一点就太好了。这样就无需在机器人和相机之间布线,从而可以节省成本,简化开发工作。除此之外,我也非常喜欢直接通过编程环境导入图像文件的功能,一直以来,这一目标只能通过FTP实现。例如,在我的应用中,我会为获胜者展示一张奖杯的图片。”