原创深度:让现实世界的情感为人工智能所用(一)

Michael Parks(贸泽电子)

过去数十万年来,人脑一直堪称地球上最强大的计算机。我们的大脑是无与伦比的进化杰作,它不仅具有逻辑和推理能力,更具有创造力和情感。时至如今,科学家依然热衷于人脑的生物学研究,而工程师则始终致力于采用硅电子和软件技术来复刻人脑的功能。

“”

深度学习(DL)是一种机器学习(ML)技术。作为一项新兴的人工智能(AI)技术,深度学习在第二代英特尔NCS(NCS2)中居于核心地位。深度神经网络依靠ML算法和样本训练数据来生成数学模型。要生成经过训练的模型,需要非常大量的计算工作,只有专用于重度计算的硬件才能胜任,但训练完成后的模型却可以运行在树莓派(Raspberry Pi)、NCS2等相对低成本的硬件上。通过推测技术,这些模型在遇到新的现实世界输入时便可以迅速作出预测。

例如,如果让一个视觉模型处理成千上万的红色和绿色苹果图片,就可以训练这个模型识别这两种颜色的苹果。然后,在NCS2上运行训练过的模型,并将通过网络摄像头获取的新图像输入到模型中,此时神经网络便可以对摄像头视野中的苹果进行识别和分类。

物理计算:让技术与现实更息息相关

就在不久前,创建人工大脑的想法还纯粹是科幻小说中的脑洞。如今,虽然我们距离真正的通用AI还有很长的路要走,但技术正持续以疾速发展,这是不可否认的。不过,虽然追求技术成就本质上就值得我们为之付出,但我们不能忘了生活中不可或缺的艺术和创造。物理计算可以在无形的数字技术与有形事物的更直观本质之间建立起一座桥梁,并且项目中的「黑科技」本身就有助于化解公众接受新技术的障碍,而人工智能显然就是一项可以从这种相关性中受益的创新。

在本文所述的项目中,我们将采用尖端的AI驱动机器视觉新技术,并将物理计算为人与技术间交互带来的乐趣和新奇之处融会于其中。我们将使用两个NCS2、一台树莓派、一台摄像头和数个伺服电机来构建一台面部表情识别设备,它可以观察一个人的面部并确定其表情,然后根据特定种类的表情在现实世界中执行某些动作。

背景

如果您从没有接触过神经网络或从未使用Python编写过程序,那么这个项目就非常适合用来了解这两项技能,而且尝试在一个项目中集成英特尔第二代神经计算棒(NCS2),这本身也是一种不错的学习体验。在此过程中,当您看到机器学习、深度学习、神经网络等术语时,与其说它们写在数据表或应用笔记里面,更不如说它们就好像从科幻小说的书页里飞出来一般。

“”
图1:人工智能是一个广泛而深入的研究领域,本项目实现的是卷积神经网络(CNN)

本项目的核心是NCS2。这是一款USB 3.0设备,嵌入式系统开发人员若要在自己的产品中实现基于视觉的智能,便可以通过这款设备获得近乎即插即用的AI推理功能。NCS2基于Movidius Myriad X视觉处理单元(VPU)构建,这是一款针对AI优化的芯片,对基于卷积神经网络(CNN)的视觉计算可以起到加速作用。使用此技术可以进行对象识别和分类(即识别摄像头视野中是否存在人脸以及这张脸是否在微笑)。

如果您对这一切都感到陌生,无法理解一个想法如何最终变成一套使用NCS2并借助摄像头来识别和分类物体,并且还真的能够运行起来的系统,那么我们不妨花点时间来厘清其中涉及的工作流程。

1、训练神经网络(NN):神经网络的训练可以采用多种机器学习框架来进行,包括Caffe、TensorFlow、Kaldi、MXNet和开放神经网络交换(ONNX),其中部分框架可以在台式计算机上运行,还有一些能够以容器的形式借助AWS或Google Compute Engine等云服务来运行。对训练神经网络而言,算力(CPU和GPU)是最重要的因素;投入的算力越多,最终得出的模型就越快、越靠谱,因为要让神经网络检测一种物体,就必须要用这种物体的图片来训练它,而且至少需要用到数千张描绘简单物体的图片,因而算法需要处理大量数据,最终导致的结果就是训练神经网络需要极高的处理能力。如果使用监督学习模式进行训练,那么训练图像的数据集必须事先进行标注,这也极有可能耗费掉训练人员的大量时间。

2、下载模型:要让我们的设备检测出摄像头拍摄到的物体,模型训练只是第一步,无论它执行起来是多么的费时。在本文所述的项目中,该模型将检测人脸,并对人脸所表现的情感进行分类。英特尔NCS2可以和多种流行的框架一起使用,这些框架包括.caffemodel(Caffe)、.pb(TensorFlow)、.params(MXNet)、.onnx(ONNX)和.nnet(Kaldi)。

不过在这里要告诉大家一个好消息:一些大神已经分享了他们以往训练并生成的模型,并通过网络提供下载;但就和采用其它预先构建的软件一样,由于每个用户的具体情况各不相同,最终的效果便会因人而异,也许并不一定如预期那样理想。不过,在许多情况下,直接使用预先训练好的库就已经足够。在本文所述的项目中,我们将会用到人脸检测模型,并对检测到的人脸所做出的表情进行分类。

3、为推测硬件准备模型:获取到经过训练的模型后,下一步就是通过一定的准备工作让它运行在选定的终端设备上。英特尔的OpenVINO工具套件正是为此准备的。该套件提供的模型优化器(Model Optimizer)可读取Caffe、TensorFlow等神经网络框架产生的数据,然后输出中间表示(Intermediate Representation, IR)数据,其中包含一个.xml文件和一个.bin文件,前者包含了描述神经网络拓扑结构的代码,后者包含了二进制的权值和阈值数据;换言之,.xml文件描述了神经网络内部如何互联,.bin文件则表明了分配给每条路径的值(权重)。

4、推测:目前为止,我们还没有用上英特尔NCS2。正如前面说的那样,训练模型需要由非常「高大上」的计算硬件来做。至于「推测」,说白了就是把新的输入内容交给神经网络来辨识、分类和处理,这就是NCS2发挥作用的地方了。OpenVINO将会读取IR内容,对神经网络执行准备工作,然后将之加载到选定的终端设备(本例中为NCS2)上,并设置所需的配置参数。随后,NCS2上搭载的推理引擎(Inference Engine, IE)将执行该深度学习模型,并在提供输入数据时对其进行推测。它还提供了一组便于使用的库,以便将IE的输出集成到定制的应用程序中。

5、使用API开发增值功能:数十年来,嵌入式系统的固件开发一直由C编程语言主导,但近年来Python在应用程序开发方面越来越受到关注。随着MicroPython和CircuitPython分支的创建,Python也开始涉足嵌入式开发领域。在本文所述的项目中,我们将采用英特尔的Python API与推理引擎进行交互。对于希望继续使用C/C++的人士,英特尔还提供了一个C++库。借助这套Python API,与推理引擎的交互问题便可转化为简洁的函数调用。

物料

本项目将使用4GB版本的树莓派4单板机作为系统核心,此外还包括以下关键组件:

“”
图2:树莓派4依旧保持了小巧的尺寸,但硬件进行了大幅度升级

1、两个英特尔NCS2
2、一个OV5647摄像头(也可采用USB摄像头)
3、三个伺服电机

物料清单(BOM)

本项目的物料清单如表1所示。或者,您可以单击此处访问mouser.com加载预定义的购物车,一次性买齐这些部件。本文撰写时,以下物料清单不含运费和税费的总价约为370美元。

表1:AI+物理计算项目物料清单

“”

工具和其他资源

以下所列是完成本项目推荐使用的工具:

● 基于Windows,运行OpenVINO工具套件的计算机
● 带有HDMI端口的电脑显示器或电视机
● 无线或有线Internet连接
● USB 3.0集线器
● USB键盘
● USB鼠标
● USB摄像头(可选项,不使用OV5647摄像头时需要使用)
● 剥线钳
● 数字万用表
● 尖嘴钳

系统概览

“”
图3:构思想法时,随笔画是一种不错的做法

该系统由五个主要部件构成:

1、树莓派:新款树莓派可谓单板机(SBC)中的实力派,它搭载了一颗主频1.5GHz的Broadcom BCM2711四核Cortex-A72 64位SoC,这里我们采用的是带4GB LPDDR4-2400 SDRAM的型号。该产品采用已成为现行标准的40引脚GPIO接头与伺服电机进行交互。同时,树莓派还将用于运行Python脚本、摄像头和HDMI监视器的主机,并与两个NCS2设备配合工作。

2、神经计算棒:NCS2设备上将运行两个神经网络,其中一个神经网络负责对摄像头获取的视频流进行分析,检测视频帧中是否出现人脸;另一个神经网络则负责推测这个人的脸上流露出怎样的表情。

3、摄像头:摄像头会将图像流输入到NCS设备进行分析。本项目中可以使用USB摄像头,也可以使用Raspberry Pi OV5647摄像头。运行Python脚本时,可以借助一个命令行标志来设置使用的摄像头。

4、伺服电机:三个伺服器将与机械滑块一同使用,以便与现实世界互动。具体而言,本项目将根据用户对摄像头呈现的表情向用户展示不同颜色的花朵:黄色表示快乐,蓝色表示悲伤,红色则表示愤怒。

5、HDMI监视器:HDMI监视器将用于向用户显示终端和摄像头的输出内容。

构建电子元件

“”
图4:硬件之间的连接非常简单明了

本项目组装非常简单明了,唯一需要提出的建议是等到树莓派完全启动后再将NCS2插入USB中;如果在初次启动前插入NCS2,树莓派可能会无法启动,虽然我们并不清楚问题是不是出在这里。后续的启动没有问题,并且也不会再重现该问题。

1、将micro-HDMI转HDMI适配器插入树莓派。

2、将HDMI数据线插入电脑显示器或电视机的HDMI端口。

3、将刷入最新版Raspbian的MicroSD存储卡插入到树莓派。有关如何将Raspbian操作系统安装到MicroSD存储卡上的说明,请单击此处

4、将USB键盘和鼠标插入USB 2.0端口,也就是带黑色塑料连接器的USB端口,而不是带蓝色塑料连接器的USB 3.0端口。

5、安装摄像头。

(1) 如果使用OV5647摄像机,请轻轻打开连接器,插入排线,然后合上连接器。

(2) 如果使用USB摄像头,请将其插入树莓派的USB 3.0端口。

6、将USB-C电源的一端插入交流电源插座。

7、将USB-C电源的另一端插入树莓派的USB电源插孔。

8、启动树莓派并完成初始设置,然后关闭树莓派。初始设置步骤至此完成。

“”
图5:树莓派的PIO接头引脚分布

完成初始设置后,下一步就是安装伺服电机。我们将在树莓派上安装三个伺服电机。

9、使用连接线将树莓派的GND引脚连接到迷你试验板的GND(蓝色)电极。

10、使用连接线将树莓派的5V引脚连接到迷你试验板的电源(红色)电极。

11、将每个伺服电机的GND电缆连接到试验板的GND电极。

12、将每个伺服电机的Vcc电缆连接到试验板的电源电极。

13、将第一个伺服电机的控制信号连接到树莓派的GPIO12引脚。此为「快乐」伺服电机。

14、将第一个伺服电机的控制信号连接到树莓派的GPIO13引脚。此为「悲伤」伺服电机。

15、将第一个伺服电机的控制信号连接到树莓派的GPIO18引脚。此为「愤怒」伺服电机。

现在,伺服电机接线完成,接下来要进行最后的组装步骤,就是实现与两个NCS设备共同工作。

1、将两个英特尔神经计算棒插入USB 3.0集线器。暂时先不要把集线器插入到树莓派。

2、再次启动树莓派并登录。

3、安装运行NCS设备所需的软件(参见本文的“软件”一节),然后再次重新启动树莓派。看到指示后,将USB 3.0集线器插入树莓派的USB 3.0端口。

精彩内容未完待续......

作者简介

“”

Michael Parks产品工程师(P.E.)是贸泽电子的特约作者,同时也是Green Shoe Garage的所有者。Green Shoe Garage是一家提供定制电子设计的工作室和技术咨询机构,位于马里兰州南部。Michael Parks创办了《S.T.E.A.M. Power Podcast》播客来提升公众对科技的认知。他拥有马里兰州专业工程师资质,并拥有约翰·霍普金斯大学的系统工程硕士学位。

原文链接:
https://www.mouser.cn/applications/empower-emotions-physical-world/

该发布文章为独家原创文章,转载请注明来源。对于未经许可的复制和不符合要求的转载我们将保留依法追究法律责任的权利。

最新文章