一款可以运行神经网络的掌上游戏机
让机器学习兼容 Arduino
━━━━我想知道,如果将机器学习运用到能配备各种传感器且能够在各种环境中运行的廉价、粗糙的设备,会出现什么情况?我需要你的帮助。30或40美元系统里的人工智能肯定不如智能语言Go,但它可为一些我们想都没想到过的应用打开一扇大门。
我特别想把机器学习加入到Arduino生态系统。得益于硬件和软件的改善,我的想法最近已成为可能。
在硬件方面,摩尔定律对最先进的处理器可能已不再适用,不过对微控制器还有发展空间。例如,在早年的Arduino生态系统中,基于8位自动语音识别处理器的微控制器占主导地位,不过最近几年,嵌入式芯片制造商开始转向更强大的基于ARM的芯片。我们现在能够为这些廉价粗糙的设备赋予足够的处理能力,可以与20世纪90年代中期的桌面电脑相媲美。
软件方面,谷歌发布的TensorFlow Lite是软件上的一大步,这种框架可以在边缘设备上运行预先训练过的神经网络(也称为模型)。Coral包含一个专门的张量处理器,它非常强大,足够实时处理视频内容和识别数百种物体。但可惜的是,它的价格为150美元,需要强大的电源,而且庞大的散热器和风扇导致很难对它进行封装。
━━━━
不过幸运的是,皮特•沃登(Pete Warden)和他的团队在将TensorFlow Lite引入基于ARM的Cortex系列处理器芯片方面取得了出色的成绩。这对我来说是好消息,因为在我的开源硬件公司——阿德福利特工业公司,我们目前最受欢迎的处理器是32位的SAMD51,它包含一个Cortex-M4CPU。近期我们的许多兼容Arduino的开发板都采用了SADM51作为基础,包括一款使用电池的简单掌上游戏机PyGamer。那么,利用它直接将人工智能放到人们的手中,会怎样呢?
沃登制造过一种语音识别模型,它可以识别输入的模拟音频中字词的“yes”和“no”。于是我准备看看能否将这个模型用到PyGamer中,看看一个只能识别两个词的模型能做些什么。我想要创办一个能够激发制造商想象力的项目,并鼓励他们开始在这种硬件上探索机器学习。
我决定尽可能地让它变得好玩。它越有趣味性,缺点就越容易被原谅。索尼的人工宠物Aibo之所以是一只小狗的模样,就是因为真正的狗笨笨的,有时候会撞到墙而且不听指挥。
我想起来,《电子世界争霸战》原版电影中的英雄被困在赛博空间时,他选择了一个老朋友——只能伴随外形变化说“yes”或“no”的单字节。PyGamer有一个1.8英寸的彩色显示屏,随机存取存储器(RAM)为192千字节,闪存为8兆字节,可以播放电影《电子世界争霸战》中说“yes”和“no”的那个片段。PyGamer的SAMD51处理器的一般运行频率为120兆赫,为了提升其性能,我把它的频率调整到了200兆赫。我把一个板上驻极体麦克风连接到了PyGamer3个JST端口中的一个。
接下来是最棘手的部分:移植沃登写的TensorFlowLite ARM代码并将其加入到任何一个Arduino程序员都能使用的程序库中(但不适用于所有Arduino开发板!即便是“lite”框架,RAM的要求也远远超过了ArduinoUno的2千字节)。
我发现源代码写得非常好,所以最大的挑战就是理解它是怎样处理输入数据的。数据的处理方式不是线性流,而是重叠组块式。我还想以Arduino程序员熟悉的方式展示这些代码而不掩盖它们的功能。我挑选了一些对程序员可能最有用的功能,可以很容易地将数据从传感器(例如麦克风)输入到模型中,结果可输出到其他代码,便于根据需要来处理。之后我创建了一个包含这些功能的Arduino库,Adafruit的Github资源库中就能找到这个库。
准备就绪后,使用这个新库,我写了一个简短的程序。现在我按下按钮,并对PyGamer附带的麦克风说话,如果我说“yes”或者“no”,就会触发相应的《电子世界争霸战》片段,我就可以和我的动画朋友一起漫步了。
虽然这个项目只体现了有限(但有趣)的机器学习,但我希望它能够激发更多的制造商和工程师探索如何将人工智能与硬件相结合。阿德福利特工业公司下一步将致力于更便捷地安装各种不同的模型并制造新的模型。如果RAM达到200千字节,模型将能够识别10到20个词。而比语音识别更让人振奋的是,使用这种廉价的开发板获取数据并运行模型,可以生成各种不同类型的信号。我们是否可以使用PyGamer机载加速度器的数据来学习辨别执行不同任务时用户的移动?能否积攒数据并训练模型,识别伺服系统或开关电源的故障声音?未来会有什么样的惊喜?揭晓答案的唯一方法就是尝试。
--end--
声明:本文章由网友投稿作为教育分享用途,如有侵权原作者可通过邮件及时和我们联系删除:freemanzk@qq.com