草榴社区

采用ARC处理器滨笔实现高效面部检测和识别

草榴社区 产物营销经理 Gordon Cooper

介绍

人脸识别(即识别和验证照片中的人脸的挑战)对人类来说是一个简单的问题,但对计算机来说却是一个复杂的问题。经过 60 年的研究,最近的深度学习进步使人脸识别技术可以广泛应用于各种应用场景。电池供电设备的访问控制? 在银行应用中对用户进行身份验证? 取代您的汽车对车钥匙的需求? 医院提供更加个性化的患者护理? 所有这些用例都可以从人脸识别中获益。在边缘设备应用中实现人脸识别将需要高效、低功耗的处理器,并且要专门支持最新的人工智能 (AI) 算法。

由于计算机化的人脸识别测量人类的独特身体特征,因此人脸识别是一种生物特征识别。由于人脸的多变性,可能难以实现准确性。捕捉的任何图像都可能包括表情、位置、姿势、方向或光照条件的变化。每个人的脸部也可能因肤色、面部毛发的不同或是否佩戴眼镜而不同。尽管如此,与虹膜或语音识别等其他生物特征识别技术相比,人脸识别更容易部署和实现。而且与指纹识别不同,人脸识别不需要最终用户进行任何身体互动。

人脸识别的步骤

对于计算机来说,人脸识别可以划分为不同的步骤(图 1)。人脸检测定位图像中的一个或多个人脸。人脸归一化将捕捉的人脸进行对齐,以便与数据库中已经存储的人脸保持一致。特征提取用于提取和测量关键特征(例如眼睛或嘴唇上的点)之间的距离,以进行图形匹配。最后,人脸匹配是识别的最后一步,将输入人脸的提取特征与数据库中的人脸提取特征进行比较。

人脸识别的步骤

图 1:人脸识别的步骤

人脸识别的历史

人脸识别技术最早出现于 20 世纪 60 年代,当时,数学家和计算机科学家 Woodrow (Woody) Bledsoe 首次将计算机应用于人脸识别挑战。与 Panoramic Research, Inc (PRI) 的 Helen Chan 和 Charles Bisson 合作,Bledsoe 帮助开发了一个系统,从一批照片(比如一册脸部照片)中手动提取并记录各种面部特征(眼睛、鼻子、发际线、嘴巴等)的坐标位置。这些指标随后被输入计算机数据库。对于一张新照片,数据库会确定哪张原始照片与新照片最相似。这种手动捕捉面部特征的方法有其局限性,但 Bledsoe 延续了他在图形匹配和自动推理方面的工作,他被认为是 AI 的开创者之一。

1991 年,麻省理工学院媒体实验室视觉与建模团队的 Matthew Turk 和 Alex Petland 在应用基于线性代数的算法时取得了突破,他们率先使用计算机从照片中自动提取面部特征。到 2001 年,三菱电机研究实验室的 Paul Viola 和康柏公司的 Michael Jones 发表了一篇论文,详细介绍了他们的快速目标检测算法,称为 Viola-Jones。作为实时人脸检测器,Viola-Jones 需要全视图正面竖直人脸,但可以实时检测人脸并具有较高的准确性。多年来,它一直是人脸检测的标准,直到被深度学习技术所取代。

深度学习技术的出现改变了人脸识别的技术规则。与 Viola-Jones 等程序化算法相比,经过训练的神经网络 (NN) 在准确度上有了重大飞跃。2014 年,Facebook 发布了 Deepface,这是一个九层神经网络,拥有超过 1.2 亿个连接权重(或系数),Facebook 用户使用 400 万张上传的图片对其进行了训练(图 2)。Deepface 的准确率为 97.25%。2015 年,谷歌的研究人员开发了 FaceNet,其准确率为 99.63%。FaceNet 实际上不止是一个神经网络图。它基于至少两个卷积神经网络 (CNN)。

DeepFace 架构概览

图 2:DeepFace 架构概览

人脸识别从云端转移到边缘

DeepFace 和 FaceNet 都有庞大的系数集,它们最适合在线、非实时应用,比如在云端对图片进行分类。庞大的系数集需要大量内存、大量计算和大量数据移动,所有这些都使得基于云的实时低功耗实现变得很难甚至不可能。随着人脸识别的市场兴趣转向智能手机、民用相机或笔记本电脑等边缘设备上的低功耗实现,性能限制要求更高效的神经网络和节能的神经网络引擎。

从基于云的人脸识别转向边缘设备的另一个重要原因是个人隐私。人脸识别(尤其是在监视用例中)可以被动地捕捉人脸。记录毫无戒心的人的面孔,并将独特的识别信息发送到中央/云数据库,这引起了许多消费者的隐私担忧。完全在网络边缘进行人脸识别的一项优势在于,计算是离线完成的,而不是使用基于云的服务。

电池供电、始终开启的人脸识别

虽然有许多低功耗的边缘设备人脸识别应用,但最难实现的也许是始终开启的人脸识别系统,它为笔记本电脑、平板电脑或手机等电池驱动的设备提供访问控制。用户希望无需动手就能进行即时人脸识别。这意味着电子设备需要不断地寻找人脸。最佳解决方案之一是将人脸识别任务划分到两个处理器。

具有 DSP 功能的小型微控制器(例如 草榴社区 DesignWare? ARC? EM9D 处理器 IP 系列)在 AIoT 应用的始终开启性能方面表现出色。虽然支持 AI 的小型微控制器没有能力来处理完整的人脸识别神经网络任务,但它们可以检测到是否存在人脸,然后唤醒专用、节能的神经网络加速器,例如 ARC EV 处理器 IP,以完成识别步骤。

由于输入图像突出且接近,用于访问控制的人脸检测是一项相当简单的 AI 任务,可以用最小的输入图像尺寸和计算要求最低的神经网络图来完成。为了最大程度地降低功耗和适合小型微控制器,保持较低的图复杂度和系数数量极其重要。

基于 ARC EM9D 处理器的人脸检测

图 3 中的人脸检测图是与埃因霍温科技大学合作开发的。捕捉的输入图像被缩减为 36x36 像素的灰度图像,并且只需要 4 层和 1k 的模型参数。像这样的人脸检测应用可以在 ARC EM9D 处理器上以最低功耗运行。ARC EM9D 采用了适合乘积累加器 (MAC) 密集型 CNN 算法的零延时 XY 架构,可以在仅消耗 ?W 级功率的情况下制作人脸检测图。为了加速设计收敛,ARC EM9D 处理器由一个高度优化的 embARC MLI 库提供支持,该库支持广泛的中低端机器学习应用,如始终开启的人脸检测。

针对 36x36 灰度图像的小型二值神经网络 (NN) 分类器对人脸图像输出正决策,对其他图像输出负决策

图 3:针对 36x36 灰度图像的小型二值神经网络 (NN) 分类器对人脸图像输出正决策,对其他图像输出负决策

基于 ARC EV7x 视觉处理器的人脸识别

一旦检测到人脸存在,EM9D 处理器就可以唤醒另一个处理器,该处理器能够执行计算量更大的人脸识别任务。当然,CPU 或 GPU 也可以完成这项工作,但通常不具备在满足帧速率目标的同时最小化功耗所需的功率效率。相反,专用的神经网络加速器(例如 DesignWare ARC EV7x 视觉处理器 IP)针对性能和功率效率进行了优化。它可以开启恰好足够执行人脸识别的时间,然后再次关闭以节省电力。

ARC EV7x 处理器包含带有 880-3520 个 MAC 的专用神经网络引擎。ARC EV7x 处理器系列经过优化,可最大程度地减少带宽需求,从而支持功率效率,因为大型系数集、输入图像和中间特征图都存储在外部 DRAM 中。任何最小化移入和移出 DRAM 的数据量的努力都将有助于降低功耗。

除了功率效率外,神经网络加速器还必须提供灵活性,以支持最新的神经网络图。如今,有比 DeepFace 和 FaceNet 计算效率更高的适合低功耗边缘设备的神经网络。多任务级联卷积神经网络 (MTCNN) 是一种流行且精确的基于图像的人脸识别神经网络。MobileNet 是经常被用作人脸检测构造模块的分类图(它使用深度可分离卷积来降低标准卷积层的计算复杂度,从而实现效率)。ARC EV7x 处理器提供了支持任何神经网络图的灵活性。

采用带 880 MAC 深度神经网络引擎的 ARC EV71 视觉处理器 (EV71 DNN880) 可以仅使用 5mW 功率(在 12 纳米工艺节点中使用合适的人脸识别算法)执行人脸识别。EV7x 还集成了细粒度电源和门控时钟,可以最大限度地减少漏电功耗。EV7x 处理器受 MetaWare EV 开发工具包的支持,该工具包包括一个神经网络编译器,它接收经过训练的神经网络图,并自动优化和编译图以在硬件中运行(图 4)。

图 4:DesignWare ARC EV7x 视觉处理器模块图

结语

在边缘设备应用中实现人脸识别需要高效、低功耗并且灵活支持最新 AI 算法和图的处理器。DesignWare ARC EM9D 处理器 IP 和 DesignWare ARC EV71 DNN880 视觉处理器 IP 相结合,为始终开启的人脸检测和节能的人脸识别提供了极为节能的解决方案。

参考资料

  • Woody Bledsoe:
  • http://www.mit.edu/~9.54/fall14/Classes/class10/Turk%20Pentland%20Eigenfaces.pdf  
  • http://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.10.6807