在嵌入式应用程序中加入人工智能的做法有着显而易见的吸引力,例如使用人脸识别来管理工厂车间的机器控制装置的访问权限。人脸识别、语音控制、异常检测——人工智能带来了如此多的可能性。在本篇博客中,我将以人脸识别为例。与传统的人机界面和密码相比,人脸识别更易用、更智能、更强大。况且,大家都在这么干。人工智能的工作原理看似神奇,但它所能做到的功能正迅速成为理所应当的标配。没有人愿意多看一眼那些还在采用以往技术的产品。
(图片来源:CEVA)
挑战
对于产品构建者而言存在一个问题:基于人工智能的开发与标准的嵌入式开发有很大不同。您不是在写软件,至少就核心功能而言不是这样。您必须训练一个神经网络来识别图形(比如图片),就像您在学校教育孩子一样。然后,您必须根据嵌入式设备的有限功能优化该网络,以满足尺寸和功耗目标。神经网络可能不是常规代码,但网络及其计算仍然消耗内存和功率。作为一名嵌入式开发人员,您知道尽可能地压缩这些指标是何等的重要。我会在下一篇博客中谈到这一点。现在让我们至少了解一下这些神经网络是如何工作的。
基础知识
我不想对神经网络进行冗长的解释,只想告诉您为了使应用程序运行,您必须要做些什么。神经网络在概念上是一系列“神经元”层。每个神经元从前一神经元层或输入数据中读取两个(或更多)输入,使用训练过的权重进行计算并向前反馈结果。一个神经元层基于这些权重检测出各种特征,随着数据在各层之间移动,这些特征逐渐变得更加复杂,最终在输出端识别出一个复杂的图像。
第一个巧妙的地方在于网络的设计 —— 有多少层、层与层之间的连接等等,即核心的神经网络算法。第二个巧妙的部分则是在训练中。这是一个过程,而在这个过程中,许多图像通过网络运行,并带有标签,以便识别那些应该被识别出的内容。而这些运行构建了识别所需的权重值。
如果您有凌云壮志,可以从头开始为诸如TensorFlow等标准网络建立神经网络。您也可以从脸部识别等开源选项开始。您可以把所有这些都融合在一个应用程序中,并且这个应用程序可以在笔记本电脑上运行。这对于那些想要注册新的认证人脸的客户而言是很方便的。现在您可以开始用一组多角度拍摄的认证人脸来测试和训练您的网络。
为什么不直接在云端进行呢?
我们提供在线人脸识别的服务 ——不需要在您的设备上植入乱七八糟的人工智能。只需拍下照片,上传到云端,应用程序回传一个OK,您的产品就能进行下一步认证。
但是,所有经认证的员工都需要将他们的照片及其他安全凭证上传到云端。也许就安全和隐私而言这并不是个好主意。每次工作人员想要访问一台机器时,将图像传输到云端会消耗相当多的电量。如果网络瘫痪,任何人都不能获得认证,除非网络恢复。而在设备上进行身份验证则可以保护隐私和安全,同时保持低功耗,并且即使在网络连接中断时也能继续工作。
责编:Yvonne Geng