为各类应用设计神经网络架构:从面部特征点追踪到车道偏离警告系统

作者:ULSee 工程副总裁 YiTa Wu

摘要

通常认为深度学习是一种比其他机器学习策略(如决策树、遗传算法和支持向量机)更精确的工具。它堆叠感知层,形成一个深层结构,并在训练过程中通过反向传播和梯度设计算法反复调整参数。但是,对于最终用户而言,深度学习模型是所有黑箱中“最黑的”,因为很难解释系统(神经网络架构)的工作方式。在本文中,我们将介绍 ULSee 为多个应用设计网络架构的经历。  

首先为最复杂的应用设计网络架构

如果您想要设计一个灵活的网络架构,我们建议您根据最复杂的目标应用来设计架构。通常,处理复杂应用的架构也可以处理简单应用,但是为简单应用设计的架构在处理复杂应用时可能会出现问题。ULSee 主要针对两个应用:面部特征点追踪和车道偏离警告。面部特征点追踪结合了大量高分辨率的面部特征点和空间信息,产生高精度结果,比车道偏离警告系统所需的车道线识别更加复杂,因此我们设计了满足面部特征点追踪要求的架构。

神经网络架构主要包含两部分:特征提取和推理。为了满足高帧率要求,我们使用“MobileNET”[1] 开发了特征提取,最后一层推理为 136 个输出,表示 68 个面部特征点的 x 和 y 坐标,如图 1(a) 所示。遗憾的是,这 136 个输出架构不能达到足够高的准确度,可能是因为该架构没有使用空间信息。然后我们重新设计了设计的推理部分,考虑了图 1(b) 所示的热图 [2] 概念,使我们能够根据丰富的空间信息精确地预测 x 和 y 坐标。热图设计的实验结果证实了我们的假设,即利用空间信息和对 x 和 y 坐标的正确预测达到的准确度,远远高于 136 个输出的架构。热图设计的唯一问题是处理帧率变得非常低,不能满足另一个实时处理的关键要求。

图 1. 最后的推理层部分的两种不同的神经网络架构设计(136 个输出和热图)

图 2 显示了热图设计低帧率背后的原因。如图 2(b) 所示,112x112 分辨率图像中以明亮的像素显示的 68 个最终面部特征点是由 68 个热图生成。也就是说,每一个面部特征点都可以通过 112x112 热图生成,这使得计算复杂程度远远高于 136 输出架构。 

图 2. 计算高度复杂的热图设计

为了降低热图的计算复杂程度,我们结合偏移量概念 [3] 来降低每个热图的分辨率,如图 3(a) 所示。我们将每个热图的分辨率从 112x112 降低到 28x28,并为每个 28x28 的热图额外添加两个 28x28 偏移量,分别在 x 和 y 坐标中表示偏移量。这样,我们通过减少计算次数显著提高了帧率,但是牺牲了对面部特征点的 x 和 y 坐标的正确预测。为了减轻这种影响,我们采用了残差网络概念来提高正确率,如图 3(b) 所示。最终我们设计了具有高准确度和高帧率、可用于面部特征点检测的神经网络架构。 

图 3. 最后的推理层部分的两种神经网络架构高级设计(偏移和残差) 

将架构映射到较简单的应用 — 车道偏离警告

理想的情况是,系统设计人员可以开发一个适用于各类应用的解决方案框架。为了测试这一点,我们尝试将面部特征点追踪神经网络架构映射到一个车道偏离警告(车道偏离警告)应用。在图 4 中,我们通过输入图像中预测三个点(黄色和红色圆圈)来说明将车道偏离警告应用程序转换为与图 4 (a) 所示的人脸标志相同的问题域的想法。 

图 4. 在面部特征点应用向车道偏离警告的转化中,背后的概念无非就是映射点

我们的神经网络架构(如图 3(b) 所示)非常适合用于面部特征点应用,因此我们简单地修改了图 3(b) 的推理层,使最后的推理层包含 3 个 28x28 的热图和 6 个 28x28 的偏移量,如图 5(a) 所示。 但是,图 5(a) 的结果不理想,所以我们进一步修改了网络,将网络深化,如图 5(b) 所示。不幸的是,这种尝试的结果也不够准确。

图 5. 未能提供准确的车道偏离警告结果的两种神经网络架构设计

为了设计合适的车道偏离警告神经网络架构,我们考虑了神经网络的特性,如图 6 所示。图 6(a) 展示了深度卷积神经网络架构的的两个主要部分:主干(特征提取)层和推理(完全连接)层。图 6(b) 举例展示了网络架构的特征提取部分中的各层从低级到高级的特征。很明显,车道偏离警告应用中的车道不是直线就是曲线,因此我们需要增加底层特征的数量,而不是增加网络层的数量。 

图 6. 神经网络各层的低级和高级特征 

图 7 和图 8 分别展示了车道偏离警告应用的最终网络架构和实验结果。注意,图 8 中的红色、蓝色和绿色线分别表示车道线的左侧、右侧和基准真相。   

图 7. 车道偏离警告的最终神经网络架构设计

图 8. 车道偏离警告系统的实验结果

结语

虽然深度学习已成为机器学习的有力工具,但其性能仍然取决于神经网络架构。因此,我们需要了解问题的基本原理来设计合适的神经网络架构。在本文中,我们展示了一种为不同应用设计神经网络架构的方法。 以 MobileNET 为骨干网络,136 个输出作为 x、y 坐标,初步设计了面部特征点检测的网络架构。它被进一步修改为一个小分辨率的热图,并使用额外的偏移量来满足实时处理的要求。由于车道偏离警告需要更多的低级特征,而不是更深的层次,因此不能照搬完全相同的结构来发出车道偏离警告。这样,网络架构的设计就可以由复杂向简单过渡,从而设计出合适的神经网络架构。

视频:采用 ARC EV7x 嵌入式视觉处理器 IP 的 ULSee 实时人脸识别和活体检测系统

ULSee UL100 AI 模块集成了 DesignWare® ARC® EV62 处理器 IP 和本文讨论的神经网络架构,以非常低的功耗实现实时人脸识别。该芯片实现了快速人脸识别和活体检测的边缘计算。该模块可用于 ADAS 和人脸支付、智能门解锁等。

参考资料

[1] A. G. Howard, M. Zhu, B. Chen, D. Kalenichenko, W. Wang, T. Weyand, M. Andreetto, H. Adam,“移动网络:用于移动视觉应用的高效卷积神经网络”,CVPR,2017 年。

[2] A. Newell, K. Yang, J. Deng,“用于人体姿态估计的堆叠沙漏网络”,ECCV,2016 年 10 月。

[3] G. Papandreou, T. Zhu, N. Kanazawa, A. Toshev, J. Tompson, C. Bregler, K. Murphy,“在野外实现精确的多人姿态估计”CVPR 2017 年。