基于嵌入式系统小规模卷积神经网络模块的人脸检测和头部姿态角评估的制作方法

文档序号:14136179阅读:2054来源:国知局
基于嵌入式系统小规模卷积神经网络模块的人脸检测和头部姿态角评估的制作方法

优先权要求及相关专利申请

本专利申请为正在审查中的美国专利申请15/657,109(申请名称:基于嵌入式系统小规模卷积神经网络模块的人脸识别(facedetectionusingsmall-scaleconvolutionalneuralnetwork(cnn)modulesforembeddedsystems);申请日:2017年7月21日)的部分继续申请,并且依照35u.s.c.120,要求该正在审查中的美国专利申请15/657,109的优先权。该正在审查中的美国专利申请15/657,109依照35u.s.c.119(e),要求美国临时专利申请62/428,497(申请名称:基于有限分辨率小规模cnn模块的卷积神经网络(cnn)(convolutionalneuralnetworks(cnn)basedonresolution-limitedsmall-scalecnnmodules);申请日:2016年11月30日)的优先权。上述所有专利申请的内容均以引用形式被并入本申请,并作为本申请的一部分。

本申请还与正在审查中的美国专利申请15/441,194(申请名称:基于有限分辨率小规模cnn模块的卷积神经网络(cnn)系统(convolutionalneuralnetwork(cnn)systembasedonresolution-limitedsmall-scalecnnmodules);发明人:王星、吴谦伟、梁杰;申请日:2017年2月23日)相关。

本申请一般涉及机器学习和人工智能领域,更具体而言,涉及使用小规模硬件卷积神经网络(cnn)模块对数字图像执行人脸检测和头部姿态角评估的系统、装置和技术。



背景技术:

深度学习(dl)是机器学习和人工神经网络的一个基于一组算法的分支,该算法通过使用具有很多个处理层的人工神经网络来试图建模数据中的高层次抽象。典型的dl架构可包括许多层的神经元和数百万个参数。可以在配备有gpu的高速计算机上用海量数据训练这些参数,并由在深层网络也能适用的新的训练算法来指导,诸如修正线性单元(relu)、漏失(或丢弃)、数据集增强,以及随机梯度下降(sgd)。

在现有的dl架构之中,卷积神经网络(cnn)是最流行的架构之一。虽然cnn背后的思想在20多年前就被发现了,但是,cnn的真正的能力只是在深度学习理论的近期发展之后才被认识到。到目前为止,cnn已经在许多人工智能和机器学习领域,诸如人脸识别、图像分类、图像字幕生成、可视问答以及自动驾驶汽车中取得了巨大成功。

对于很多人脸识别应用,人脸检测通常是第一步,即检测和定位图像中每张人脸的位置。很多人脸检测技术可以容易地检测近距离的正向脸部。然而,在无约束情形下,实现稳健并快速的人脸检测依然是非常困难的。这是因为,这些情形通常与人脸的大量变化相关,这些变化包括姿态变化、遮挡、夸张的表情以及极端的光照变化。可以处理这些无约束情形下的有效人脸检测技术包括:(1)在“用于人脸检测的卷积神经网络级联”(aconvolutionalneuralnetworkcascadeforfacedetection)(h.li,z.lin,x.shen,j.brandt,andg.hua,计算机视觉和模式识别,ieee会议学报(proc.ieeeconf.oncomputervisionandpatternrecognition),2015年6月1日)中描述的级联卷积神经网络(cnn)结构(下文称之为“级联cnn”或者“级联cnn结构”);以及(2)在“利用多任务级联卷积网络的接合人脸检测和对齐”(jointfacedetectionandalignmentusingmultitaskcascadedconvolutionalnetworks)(k.zhang,z.zhang,z.li,andyqiao;ieee信号处理学报(ieeesignalprocessingletters),vol.23,no.10,pp.1499-1503,2016年10月)中描述的多任务级联cnn结构(下文称之为“mtcnn”或者“mtcnn架构”)。

在级联cnn中,由粗至精的级联cnn架构用于人脸检测。更具体地,该级联cnn架构不使用单个深度神经网络,而是使用在输入图像的不同分辨率上操作的多个浅层神经网络,从而该cnn可以快速地在低分辨率级舍弃背景区域,然后在最终高分辨率级谨慎地评估少量候选区域。为了提高定位效率,在每个检测/分类级之后采用校正级,以调整已检测窗口(或者“边界框”)的位置。因此,该级联cnn通常需要6级或者6个简单的cnn:三个级或cnn用于二进制人脸检测/分类,而另外三个用于边界框校正。由于在每级采用的级联设计以及简单的cnn,因此该人脸检测结构高度适用于在嵌入式环境中运行。需要注意,级联cnn内的每个边界框校正级都需要额外的计算开销。此外,在该级联cnn中,人脸检测和人脸对齐的固有相关性被忽略了。

在mtcnn中,多任务级联cnn通过多任务学习过程,利用统一标准的级联cnn整合人脸检测和人脸对齐操作。原则上,该mtcnn还采用多个由粗至精的cnn级,从而对输入图像的不同分辨率进行操作。然而,在mtcnn中,在每一级,利用单个cnn结合训练人脸关键点定位、二进制人脸分类和边界框对准。因此,mtcnn只需要三个级。更特别地,mtcnn的第一级迅速地通过浅层cnn生成候选人脸窗口。接下来,该mtcnn的第二级利用更复杂的cnn,通过舍弃大量非人脸窗口筛选出候选窗口。最终,mtcnn的第三级使用处理能力更强的cnn,以确定每个输入窗口是否包括人脸。如果确定包括,则对五个人脸关键点的位置进行估计。相对于先前的人脸检测系统,mtcnn的性能得到了明显的改善。相对于上文所述的级联cnn结构,mtcnn架构通常更适于在资源有限的嵌入式系统上执行。

在很多人脸检测应用中,例如当视频中的人不停移动时,由于每个人的头部/人脸在不同的图像中都具有不同的方向,即不同的姿态,因此还需要评估每张人脸的姿态。可以采用多种技术评估该人的头部/人脸的姿态。在一示例性技术中,首先评估一些人脸关键点的位置,该人脸关键点例如为眼、鼻、嘴,然后基于这些关键点的位置对该姿态进行评估。另一技术利用三个欧拉角表示该头部姿态,该欧拉角为俯仰角、偏航角以及翻转角,并利用这三个欧拉角直接评估该姿态。该基于角度的姿态评估方法通常比该基于关键点的方法具有更低的复杂度,这是由于基于角度的方法仅需要三个值,而基于关键点的方法在其评估过程中通常需要不止三个关键点坐标。

在已获取视频图像中执行人脸检测以及在已检测人脸中执行姿态评估在很多嵌入式系统应用中均具有有益性。例如,在配置有多个摄像头的监控摄像头系统中,为了降低传输带宽并节约服务器的存储成本,每个摄像头仅将已获取视频中的人脸图像传送至该服务器,而无需传送整个视频。因此,人脸检测可用于从视频图像中生成人脸图像。此外,为了避免传送和存储同一个人的过多人脸图像,需要根据每张人脸的姿态变化,仅传送每个已检测人脸的对应于“最佳姿态”的人脸图像,即最接近于正面照的人脸图像(相对于正面照具有最小的旋转角度)。需要说明的是,在一个联合处理过程中执行人脸检测和头部姿态评估通常是有益的,这可以降低整体系统的复杂度。



技术实现要素:

本申请描述的多个实施例提供了基于使用小规模硬件cnn模块的人脸检测和姿态角评估联合系统的多个示例,该小规模硬件cnn模块例如为海思半导体(hisilicon)的hi3519芯片内的内嵌cnn模块。在一些实施例中,本申请公开的人脸检测和姿态角评估联合系统用于联合执行多重任务,该多重任务为:检测一序列视频帧中大多或所有人脸、为该已检测人脸生成姿态角评估、在该序列视频帧中跟踪同一个人的已检测人脸,并生成被跟踪人的“最佳姿态”评估。本申请提出的人脸检测和姿态角评估联合系统可在资源有限的嵌入式系统中实现,如仅集成有一个或多个小规模cnn模块的智能摄像头系统。

在一些实施例中,本申请提出的人脸检测和姿态角评估联合系统采用由粗至精的多级mtcnn架构,并且每一级均可由小规模cnn模块实现。此外,在输入人脸图像尺寸不符合该小规模cnn模块的输入尺寸限制条件的级(例如该由粗至精的三级mtcnn中的最后一级)中,本申请提出的人脸检测和姿态角评估联合系统将基于子图像的技术应用于尺寸大于该小规模cnn模块可支持的最大输入图像尺寸的输入人脸图像。

在一些实施例中,在该多级mtcnn的给定级(例如该三级mtcnn中的最后一级)中,本申请公开的人脸检测和姿态角评估联合系统首先利用基于子图像技术将高分辨率输入人脸图像分割成一组合适尺寸的子图像,相邻的子图像之间均具有严谨设计的重叠部分。然后由资源有限的小规模cnn模块,例如hi3519的内嵌cnn模块分别处理每个子图像。然后合并与该组子图像对应的输出,以获得对应于高分辨率输入人脸图像的输出,合并生成的输出可以进一步由该多级mtcnn的给定级中的后续层进一步处理。在一些实施例中,该利用基于子图像技术的给定级可被配置为等同于不需划分而利用大规模cnn处理整个高分辨率输入人脸图像的mtcnn中的对应级,从而采用该基于子图像技术的给定级的输出可与不采用该基于子图像技术的对应级的输出完全相同。

一方面,公开了一种基于采用至少一个具有最大输入尺寸限制条件的小规模卷积神经网络(cnn)模块对视频图像联合执行人脸检测和头部姿态评估的过程。该过程包括步骤:从一序列视频帧中接收视频图像;在该视频图像内检测候选人脸图像块,其中所述候选人脸图像块具有大于该小规模cnn模块的最大输入尺寸的第一图像尺寸;将所述候选人脸图像块划分为一组子图像,该组子图像具有小于该小规模cnn模块的最大输入尺寸的第二图像尺寸;利用该小规模cnn模块处理该组子图像,从而生成对应于该组子图像的一组输出;将该组输出合并为对应于该已检测到的候选人脸图像块的组合输出;并处理该组合输出,从而生成人脸分类器,并且当该人脸分类器将该已检测到的候选人脸图像块划分为人脸图像时,为该已检测候选人脸图像生成一组头部姿态评估。

在一些实施例中,在将该候选人脸图像块划分为一组子图像之前,该过程还包括:将该候选人脸图像块的尺寸重新设定为大于该小规模cnn模块的最大输入尺寸的第三图像尺寸,其中该第三图像尺寸满足图像划分的预定义条件。因此,将该候选人脸图像块划分包括:将该重新设定尺寸的候选人脸图像块划分为一组具有第二图像尺寸的子图像。

在一些实施例中,该过程通过判断该第一图像尺寸是否大于该第三图像尺寸,将该候选人脸图像块的尺寸重新设定为该第三图像尺寸。如果大于,则该过程将该候选人脸图像块降采样至该第三图像尺寸;否则,则该过程将该候选人脸图像块上采样至该第三图像尺寸。

在一些实施例中,该组头部姿态评估包括与已检测人脸相关的三个头部姿态角。此外,每个评估头部姿态角均介于-90°和90°之间,并且全正面人脸的三个头部姿态角均为0°。

在一些实施例中,该过程还包括步骤:在一序列视频帧中检测一特定人的一组人脸图像;为该特定人的该组已检测人脸图像中的每个人脸图像分别生成一组头部姿态评估;基于该组头部姿态评估选择最佳姿态,其中该最佳姿态表示相对于头部的全正面方向具有最小整体旋转角的头部姿态;以及将该特定人的被选定的最佳姿态相关的已检测人脸图像传送至服务器。

在一些实施过程中,基于该组头部姿态评估选择最佳姿态包括:首先分别计算每组头部姿态评估中三个头部姿态角的绝对值的和,然后在该组已检测人脸图像中选择对应于最小计算和的最佳姿态。

在一些实施过程中,该过程还包括:在该序列视频帧中跟踪该特定人的已检测人脸。

在一些实施过程中,该组输出的其中一个输出为对应于该组子图像的其中一个子图像的一组特征图,该组合输出包括对应于该组子图像的多组特征图的合并特征图。

在一些实施过程中,对应于该组子图像的合并特征图等同与不需划分而利用大规模cnn模块整体处理该候选人脸图像块而生成的全特征图。

在一些实施过程中,该过程通过采用两个或多个全连接层,生成该人脸分类器和该组头部姿态评估。

另一方面,公开了一种采用至少一个具有最大输入尺寸限制条件的小规模cnn模块的人脸检测和头部姿态评估联合系统。该系统包括用于从一序列视频帧中接收视频图像的输入模块。该系统还包括连接到该输入模块的小规模cnn模块,该小规模cnn模块用于在该视频图像内检测候选人脸图像块,其中所述候选人脸图像块具有大于该小规模cnn模块的最大输入尺寸的第一图像尺寸;将所述候选人脸图像块划分为一组子图像,该组子图像具有小于该小规模cnn模块的最大输入尺寸的第二图像尺寸;利用该小规模cnn模块处理该组子图像,从而生成对应于该组子图像的一组输出。该系统还包括一连接到该小规模cnn模块的合并模块,该合并模块用于将该组输出合并为对应于该已检测到的候选人脸图像块的组合输出。该系统还包括连接到该合并模块的预测模块,该预测模块用于处理该组合输出,从而生成人脸分类器,并且当该人脸分类器将该已检测到的候选人脸图像块划分为人脸图像时,为该已检测候选人脸图像生成一组头部姿态评估。

在一些实施例中,该组头部姿态评估包括与已检测人脸相关的三个头部姿态角。每个评估头部姿态角均介于-90°和90°之间,并且全正面人脸的三个头部姿态角均为0°。

在一些实施例中,本申请公开的系统还用于:在一序列视频帧中检测一特定人的一组人脸图像;为该特定人的该组已检测人脸图像中的每个人脸图像分别生成一组头部姿态评估;基于该组头部姿态评估选择最佳姿态,其中该最佳姿态表示相对于头部的全正面方向具有最小整体旋转角的头部姿态;以及将该特定人的被选定的最佳姿态相关的已检测人脸图像传送至服务器。

在一些实施过程中,该系统通过如下方式选择该最佳姿态:分别计算每组头部姿态评估中三个头部姿态角的绝对值的和;在该组已检测人脸图像中选择对应于最小计算和的最佳姿态。

在一些实施过程中,该系统还包括连接到该小规模cnn模块的跟踪模块,该跟踪模块用于在该序列视频帧中跟踪该特定人的已检测人脸。

在一些实施过程中,该小规模cnn模块为嵌入到芯片组或片上系统(soc)内的硬件cnn模块,该片上系统例如为海思半导体的hi3519soc。

另一方面,本申请公开了一种可对视频图像联合执行人脸检测和头部姿态评估的嵌入式系统。该嵌入式系统包括:处理器;与该处理器相连的存储器;与该处理器和该存储器相连,并用于获取一序列视频帧的图像获取装置;与该图像获取装置相连,并包括具有最大输入图像尺寸限制条件的小规模cnn模块的人脸检测和头部姿态评估联合子系统。在一些实施例中,该人脸检测和头部姿态角评估联合子系统用于:从一序列视频帧中接收视频图像;在该视频图像内检测候选人脸图像块,其中所述候选人脸图像块具有大于该小规模cnn模块的最大输入尺寸的第一图像尺寸;将所述候选人脸图像块划分为一组子图像,该组子图像具有小于该小规模cnn模块的最大输入尺寸的第二图像尺寸;利用该小规模cnn模块处理该组子图像,从而生成对应于该组子图像的一组输出;将该组输出合并为对应于该已检测到的候选人脸图像块的组合输出;并处理该组合输出,从而生成人脸分类器,并且当该人脸分类器将该已检测到的候选人脸图像块划分为人脸图像时,为该已检测候选人脸图像生成一组头部姿态评估。

附图说明

通过阅读下文详细描述和各个附图,可以理解本申请的结构和操作,在附图中,相同的附图标记表示相同的部件,其中:

图1a示出了用于处理低分辨率输入图像的小规模的硬件cnn模块的框图;

图1b示出了图1a中的硬件cnn模块的更为详细的实施过程;

图2a示出了用于处理较高分辨率输入图像的常规的基于完整图像的cnn系统的框图;

图2b示出了基于子图像的cnn系统的框图;

图3示出了根据本申请一些实施例,基于小规模硬件cnn模块的示例性人脸检测系统的框图;

图4示出了根据本申请所述的一些实施例,如图3所示的基于小规模硬件cnn模块的第一级cnn的示例性实施过程的框图;

图5示出了根据本申请描述的一些实施例,如图3所示的基于小规模硬件cnn第二级cnn的示例性实施过程的框图;

图6示出了根据本申请描述的一些实施例,如图3所示的第三级cnn的示例性实施过程的框图;

图7示出了根据本申请描述的一些实施例中,46×46的图像块的示例性输入图像划分方案;

图8示出了根据本申请一些实施例,如图3所示的基于小规模硬件cnn模块的第三级cnn的示例性实施过程的框图;

图9示出了根据本申请一些实施例,如图3所示的最终决策模块的示例性实施过程的框图;

图10示出了一流程图,该流程图描述了根据本发明一些实施例,利用本申请公开的具有cnn功能的嵌入式系统上执行的人脸检测系统的示例性人脸检测过程;

图11示出了一流程图,该流程图描述了根据本申请所述的一些实施例,利用该基于子图像的cnn系统处理第二组重新设定尺寸的图像块(即图10中的步骤1014)的示例性过程;

图12示出了根据本申请描述的一些实施例,基于小规模硬件cnn模块的示例性人脸检测和姿态角评估联合系统的框图;

图13示出了根据本申请所述的一些实施例,基于小规模硬件cnn模块的人脸检测和姿态角评估联合系统中的第一级cnn的示例性实施过程的框图;

图14示出了根据本申请描述的一些实施例,基于小规模硬件cnn模块的人脸检测和姿态角评估联合系统的第二级cnn的示例性实施过程的框图;

图15显示了根据文中描述的一些实施例的该人脸检测和姿态角评估联合系统的第三级cnn1212的理论实施过程的框图;

图16示出了根据本申请描述的一些实施例中,46×46的图像块的示例性输入图像划分方案;

图17显示了根据本申请描述的一些实施例,基于小规模硬件cnn模块的人脸检测和姿态角评估联合系统的第三级cnn的示例性实施过程的框图;

图18示出了根据本申请一些实施例,该人脸检测和姿态角评估联合系统中的最终决策模块的示例性实施过程的框图;

图19示出了根据本申请描述的一些实施例,利用本申请提出的多任务cnn系统执行人脸检测和姿态角评估的示例性过程的流程图;

图20描述了根据本申请一些实施例的示例性嵌入式系统,其中本申请公开的人脸检测和姿态角评估联合系统在该示例性嵌入式系统中实现。

具体实施方式

下文的详细描述旨在作为主题技术的各种配置的描述,并不旨在表示可以实施主题技术的唯一配置。附图包含在本文中,并构成详细描述的一部分。详细描述包括用于旨在全面理解主题技术的具体细节。然而,主题技术不仅限于本文所阐述的具体细节,没有这些具体细节也有可能实施。在某些情况下,结构和组件以框图的形式示出,以避免使主题技术的概念变得模糊。

在整个说明书中,除非上下文另行明确规定外,以下术语具有此处提供的含义。术语“图像分辨率”和“图像尺寸”可互换,用来表示一个给定二维(2d)图像内的像素数。术语“头部姿态”、“人脸姿态”、“姿态”可互换使用,均表示图像内的人的头部的特定方向。

本申请描述了基于使用小规模低成本cnn模块的人脸检测系统、技术和架构的各个示例,该模块被配置到多任务级联cnn模块中。在一些实施例中,该小规模低成本cnn模块被嵌入到芯片组或片上系统(soc)。因此,本申请提出的人脸检测系统、技术和架构可以在包括小规模低成本的cnn模块的芯片组或片上系统(soc)上实现。在一具体示例中,本申请提出的人脸检测系统、技术和架构可以在海思hi3519片上系统(下文中或称之为“hi3519”或“hi3519片上系统”)上实现。该hi3519片上系统针对智能相机开发,由华为技术有限公司的子公司海思半导体有限公司开发。显著地,hi3519片上系统包括内嵌硬件cnn模块以及可执行一些简单软件cnn功能的cpu。

本专利申请还提供了基于使用小规模硬件cnn模块的人脸检测和姿态角评估联合系统的多个示例,该小规模硬件cnn模块如hi3519中的内嵌cnn模块。在一些实施例中,本申请提出的人脸检测和姿态角评估联合系统用于联合执行多重任务。该多重任务为:检测视频帧中大多或所有人脸、为该已检测人脸生成姿态角评估、跟踪同一个人的已检测人脸,并生成被跟踪的人的“最佳姿态”评估。本申请提出的人脸检测和姿态角评估联合系统可在资源有限的嵌入式系统中实现,如仅集成有一个或多个小规模cnn模块的智能摄像头系统。

在一些实施例中,本申请公开的人脸检测和姿态角评估联合系统采用由粗至精的多级mtcnn架构,并且每一级可由小规模cnn模块实现。此外,在输入人脸图像尺寸不符合该小规模cnn模块的输入尺寸的限制条件的级(例如该由粗至精的三级mtcnn中的最后一级)中,本申请提出的人脸检测和姿态角评估联合系统将基于子图像的技术应用于尺寸大于该小规模cnn模块可支持的最大输入图像尺寸的输入人脸图像。

在一些实施例中,在该多级mtcnn的给定级(例如该三级mtcnn中的最后一级)中,本申请公开的人脸检测和姿态角评估联合系统首先利用基于子图像技术将高分辨率输入人脸图像分割成一组合适尺寸的子图像,相邻的子图像之间均具有严谨设计的重叠部分。然后由资源有限的小规模cnn模块,例如hi3519的内嵌cnn模块分别处理每个子图像。然后合并与该组子图像对应的输出,以获得对应于高分辨率输入人脸图像的输出,合并生成的输出可以进一步由该多级mtcnn的给定级中的后续层进一步处理。在一些实施例中,该利用基于子图像技术的给定级可被配置为等同于不需划分而利用大规模cnn处理整个高分辨率输入人脸图像的mtcnn中的对应级,从而采用该基于子图像技术的给定级的输出可与不采用该基于子图像技术的对应级的输出完全相同。

在很多嵌入式系统应用中,现有大部分基于cnn的dl架构和系统不具有成本效益。同时,开始出现了基于低成本芯片组的一些具有cnn功能的嵌入式系统。一个典型的例子为hi3519片上系统。hi3519片上系统的成本要明显低于nvidiatmtk1/tx1芯片组。hi3519片上系统包括具有很多理想性能的内嵌硬件cnn模块。例如,该hi3519片上系统的内嵌cnn模块的参数是可以重新配置的,即用户可修改网络架构和参数,其中可以针对不同的应用对该参数进行预先训练。此外,该内嵌cnn模块处理速度很快。

基于降低成本的设计目的,诸如hi3519片上系统的小规模低成本cnn模块通常能力有限并且具有很多限制。例如,在hi3519片上系统中,嵌入式cnn模块的输入图像的最大像素数为1280。然而,在上述mtcnn架构中的由粗至精的架构中,输入图像尺寸逐级迅速增加。例如,在mtcnn的一些实施方式中,第二级的输入图像尺寸为24×24×3=1728,而第三级的输入图像尺寸为48×48×3=6912。这两个输入图像尺寸均超出了hi3519片上系统内的嵌入式cnn模块的输入尺寸限制。为了在hi3519片上系统上实现mtcnn,需要对mtcnn进行修改,以采用更小的输入图像尺寸并相应地降采样该输入视频。然而这样做的话,视频中人脸的图像质量会明显下降,进而导致人脸检测性能受到严重影响。

与本申请相关的美国专利申请15/441,194的内容以引用形式并入到本申请,该相关专利申请为上文所述的在小规模低成本cnn模块上实现mtcnn提供了解决方案,该小规模低成本cnn模块可以是hi3519片上系统。为了解决输入图像尺寸大于cnn模块的最大输入尺寸的问题,该相关专利申请提供了基于子图像的cnn系统的多个实施例,该专利申请首先将较大的输入图像划分为一组较小的子图像,同时在相邻子图像之间具有合理设计的重叠部分。然后每一个子图像由小规模硬件cnn模块处理,该小规模硬件cnn模块可以是hi3519片上系统内的内嵌cnn模块。然后可以合并该一组子图像对应的输出,该合并结果可以进一步由下一级处理。该相关专利申请描述的基于子图像的cnn系统可被配置为等同于不需划分而处理整个输入图像的大规模cnn系统,从而该基于子图像的cnn系统的输出可与大规模cnn的输出完全相同。基于此,该相关专利申请公开的一些实施例将该基于子图像的cnn系统和技术应用到级联cnn或mtcnn的一级或多级,从而该级联cnn或者该mtcnn的指定级中的更大的输入图像可以被划分成具有更小尺寸的一组子图像。因此,该级联cnn或者该mtcnn的每一级都可以采用相同的小规模硬件cnn模块,该小规模硬件cnn模块受最大输入图像尺寸限制。

在一些实施例中,为了提高实时执行人脸检测的性能,本申请提出的人脸检测技术和系统在每个视频帧/图像中检测正在移动的区域。例如,该人脸检测技术和系统可以利用hi3519中的内嵌背景消除模块,检测视频帧中的移动区域。接下来,该人脸检测技术和系统采用由粗至精的多级cnn,检测该视频帧中的大部分或所有人脸。更具体地,对于该多级cnn中具有输入图像尺寸限制的每一级,都可以应用基于子图像的cnn结构。例如,本申请提出的人脸检测技术的一些实施例仅需要将该基于子图像的cnn结构应用于多级cnn结构的最后一级。

在一些实施例中,为了提高实时执行人脸检测的效率,该人脸检测技术和系统还可识别每个已检测人脸的人脸关键点(如眼、鼻和嘴)。这些信息可以使该系统跟踪到每张脸,为每个人选择最佳姿态的图像(也被称为最佳人脸),例如离正面视角最近的图像,然后将该最佳人脸发送至服务器中以供其进一步处理,如进行人脸识别。对于一些应用环境,发送该视频帧中的人脸信息,而不需要将整个视频帧发送到服务器中,从而降低了对服务器的网络带宽和计算资源的要求。在系统应用中,该要求方面的降低对于配备有大量相机以同时获取多通道的视频信号的系统是尤其重要的。

在下述讨论中,我们以hi3519片上系统内的内嵌硬件cnn模块为例,描述本申请提出的人脸检测cnn系统和技术的一些示例性实施方式。然而,应该理解的是该人脸检测cnn系统和技术并不限于特定的芯片组或片上系统,如hi3519片上系统。人脸检测cnn系统和技术在该级联cnn或mtcnn的一些或所有级中利用小规模硬件cnn模块替代更大更复杂的cnn模块。人脸检测cnn系统和技术可应用于任何小规模硬件cnn模块中或者包括嵌入式小规模硬件cnn模块的其他芯片组或片上系统。此外,该人脸检测系统和技术可以作为单个现场可编程门阵列,并且与嵌入式平台集成。

基于子图像的cnn结构的说明

美国相关专利申请15/441,194描述的基于子图像的cnn系统是基于小规模低成本硬件cnn模块构建的。这种基于子图像的cnn系统可以在诸如嵌入式系统和移动装置的资源有限的系统中实现,以使这些系统能够执行通常需要大规模的、高复杂度、昂贵的cnn系统才能实现的任务。这种基于子图像的cnn系统也可以在现有的dl系统中实现,以替代大规模的、高复杂度的cnn模块,进而显著降低系统成本。例如,这种基于子图像的cnn系统允许在需要高复杂度cnn的应用中使用低成本的具有cnn功能的嵌入式系统,该应用例如为处理高分辨率输入图像。对于资源有限的嵌入式系统,采用不同于本申请提供的方式是无法处理高分辨率输入图像的。在一些实施例中,该基于子图像的cnn系统重复使用一个或多个被设计为处理低分辨率输入图像的小规模硬件cnn模块,如hi3519片上系统内的内嵌硬件cnn模块,从而该基于子图像的cnn系统可应用于高分辨率输入图像,以及通常需要昂贵的、大规模的硬件cnn模块才具备的处理能力的更具挑战性的任务。

该基于子图像的cnn系统为分层系统,基于使用分而治之的方法来处理复杂任务。在该相关专利申请的一些实施例中,该基于子图像的cnn系统构建有两级或更多级。其中,该两级或更多级的每一级利用一个或多个可对低分辨率输入进行操作的小规模、低成本硬件cnn模块来实现或者利用可对低分辨率输入进行操作的软件来实现。因此,该两级或更多级中的每一级都具有非常低的复杂度。更具体而言,为使用该基于子图像的cnn系统,可以将初始高分辨率输入图像划分为明显小于初始输入图像的尺寸的具有相同尺寸或基本相同尺寸的一组子图像,其中,划分后的图像可包括相邻子图像之间适当设计的重叠部分。这些子图像被馈送至该基于子图像的cnn系统的第一级,该第一级包括至少一个被设计用于处理低分辨率输入图像的小规模低成本硬件cnn模块,并且第一级的输出的被处理的子图像组随后被合并。更具体而言,可以通过对子图像组反复地重复调用一个或多个小规模硬件cnn模块,对该子图像组进行处理。如此,可以由一个或多个小规模硬件cnn模块通过对子图像组重复调用该一个或多个小规模硬件cnn模块来处理高分辨率输入图像。

随后,基于该子图像组,第一级的输出会被合并。在一些实施例中,该基于子图像的cnn系统包括对输入图像和子图像的尺寸的规定,以确保合并后的结果与直接用大规模的高复杂度cnn模块处理整个高分辨率输入图像(而不需要划分输入图像)的输出基本上相同或完全相同。接下来,合并后的结果由该基于子图像的cnn系统的第二级处理,该第二级也可以利用一个或多个小规模硬件cnn模块实现或者利用软件实现。如此,所公开的cnn系统可以实现高复杂度任务,诸如处理高分辨率输入图像,而不需要大规模的、高复杂度、昂贵的硬件模块,从而改善了性能和成本之间的折衷。因此,该基于子图像的cnn系统可高度应用于资源有限的嵌入式系统,例如各种监控摄像头、机器视觉相机、无人机、机器人、自驾车以及移动电话。

小规模低成本硬件cnn模块

图1a示出了用于处理低分辨率输入图像的小规模硬件cnn模块100的框图。在一些实施例中,根据应用需求,cnn模块100可以用来提取分辨率有限的输入图像的特征,并进行各种dl推理。在图1a中可以看出,cnn模块100包括至少两个子模块,分别表示为cnn1和cnn2。在一些实施例中,cnn模块100被配置成将输入图像102尺寸限制为不超过1280像素,例如,32x40像素的图像分辨率。这种对输入图像尺寸的限制也严重限制了cnn模块100适于应用的类型。

图1b示出了硬件cnn模块100的更为详细的实施过程。在图1b中可以看出,图1a中的第一子模块cnn1进一步包括串联的多组交替的卷积(conv)层、修正线性单元(relu)层(未示出)和池化层。此外,对于多个conv层中的每一层,诸如conv(1)层,子模块cnn1使用一组卷积滤波器,来从输入图像102中提取一组特定特征。子模块cnn1中的多个conv层中的每一conv层后接对应的relu层(未示出)和池化层,池化层如pool(1)层;该池化层pool(1)用于缩小由对应的conv层生成的已滤波的图像尺寸,同时保留某些提取的特征。

同样如图1b所示出的,图1a中的第二子模块cnn2进一步包括串联的多组交替的完全连接(fc)层和relu层(未示出)。子模块cnn2中的多个fc层中的每一层,诸如fc(1)层,都被配置成执行矩阵乘法。多个fc层中的每一层(最后一个fc层除外)后接对应的relu层(未示出)。虽然在图1b中没有明确地示出,但是,cnn1和cnn2中的多个relu层中的每一层都被配置成向cnn系统提供非线性特征。最后,在最后一个fc层(例如,fc(n)层)的输出端,决策模块(也未示出)用于对基于最后一个fc层的输出进行预测,从而生成cnn模块100的输出104。在一些实施例中,第一子模块cnn1包括1~8组conv层,relu层,以及池化层,而第二子模块cnn2包括3~8组完全连接(fc)层和relu层。

在一些实施例中,多个conv层中的每一层中的卷积滤波器的数量至多是50个,并只允许是3×3滤波器。此外,卷积步长被固定为1,不使用补零。在一些实施例中,cnn1中的池化层可以使用最大池化技术来从滤波器图像中的2×2区域中的每一个区域中选择最大值。在一些实施例中,最大池化和平均池化都是可以使用的,但是,池化窗口尺寸固定为2×2,并且步长固定为2。换言之,在每一池化层之后,图像宽度和高度中都缩小一半。

以hi3519片上系统内的硬件cnn模块为例,第一fc层的最大输入尺寸是1024,中间fc层中的神经元的数量至多是256。cnn模块输出的尺寸至多是256。由于这些约束,hi3519片上系统内的硬件cnn模块通常只适于执行简单应用,诸如手写数字识别和汽车牌照识别。对于诸如人脸识别之类的更具有挑战性的应用,至少由于下列原因,直接应用诸如cnn模块100之类的小规模的cnn模块不能令人满意。首先,1280像素的最大输入分辨率(诸如40×32)是非常有局限性的,因为降采样到此分辨率的人脸图像会丢失太多重要的人脸信息。其次,小规模cnn模块100的学习能力也非常有限。

基于子图像的分层cnn架构和系统

图2a示出了用于处理高分辨率输入图像的常规基于完整图像的cnn系统200的框图。可以看出,常规cnn系统200可以在第一卷积层conv(1)上接收整个高分辨率输入图像202,并对高分辨率输入图像202开始执行特征提取操作。如此,常规cnn系统200可以直接处理整个高分辨率输入图像202,而不需划分输入图像。然而,常规cnn系统200也要求使用能够处理这样的高分辨率输入图像的大规模的昂贵的芯片,诸如前文所述的nvidiatm芯片。

图2b示出了基于子图像的cnn系统210的框图。在所公开的cnn系统210中,分辨率有限的小规模cnn模块,诸如结合图1a和1b描述的cnn模块100或hi3519片上系统内的硬件cnn模块可以作为基于子图像的cnn系统210的构件。如上文所提及的,这样的小规模cnn模块对输入图像最大尺寸具有限制,例如最大1280像素。为了能够使用该小规模的cnn模块处理高分辨率输入图像202(例如,图像像素超过1280),所公开的cnn系统210包括将高分辨率输入图像202划分为一组较小子图像204的输入模块212,其中,子图像204中的每一个都具有小于或等于作为cnn系统210的构成部分的小规模的cnn模块允许/支持的输入图像的最大尺寸。在一些实施例中,输入模块212可以通过在相邻的子图像204之间适当地设定重叠部分来划分高分辨率输入图像202,如图2b所示。需要注意的是,在图2b中示出的带有间隔和重叠部分的两行两列的四个子图像204的集合是为了便于理解其概念,而不是表示实际划分。

如图2b所示,cnn系统210包括基于使用和/或重复使用图1a和1b中所描述的小规模cnn模块100的两个硬件子模块cnn1和cnn2中的一个或两个的双层处理结构。除输入模块212之外,cnn系统210还包括第一处理级220、合并模块222和第二处理级224。更具体而言,cnn系统210的第一处理级220包括至少一个cnn1处理模块,诸如cnn1模块214。在一些实施例中,cnn1模块214是通过图1a和1b中所描述的硬件子模块cnn1来实现的。在其他实施例中,cnn1模块214是通过图1a和1b中所描述的包括cnn1和cnn2两个子模块的整个cnn模块100来实现的。需要注意的是,在第一处理级220内所示出的cnn1模块214的多个实例表示在不同的时间t1,t2,t3,…,和tn使用同一个cnn1模块214,正如对于每一个这样的实例所注释的。因此,图2b中所示出的“t1时的cnn1214”,“t2时的cnn1214”,“t3时的cnn1214”,…,以及“tn的cnn1214”对应于不同的处理时间时的同一cnn1模块214,而不应该被解释为具有相同编号214的多个cnn1模块。虽然未示出,但是,第一处理级220可包括类似于cnn模块214的额外的cnn1模块。例如,第一处理级220可包括两个或更多相同的cnn1模块。

cnn系统210的第二处理级224包括至少一个cnn2模块216。在一些实施例中,cnn2模块216是通过图1a和1b中所描述的硬件子模块cnn2来实现的。在其他实施例中,cnn2模块216是通过图1a和1b中所描述的包括cnn1和cnn2两个子模块的整个cnn模块100来实现的。在某些其他实施例中,第二处理级224内的cnn2模块216可以通过软件而不是通过硬件来实现。

具体而言,为处理由输入模块212所生成的子图像204组,可以多次使用同一cnn1模块214按顺序处理子图像204组,每一次处理一个子图像。即,cnn系统210的第一处理级220内的cnn1模块214的每一实例都表示在不同的处理时间同一cnn1模块214在子图像204组中的一个子图像204上的多次应用中的一次。然而,由于cnn1模块214对每一子图像204的处理速度非常快,处理子图像204组的总的处理时间也会十分快。cnn1模块214的多次应用的输出包含对应于在多层卷积、relu,以及池化操作之后的子图像204组的特征图206的阵列。

需要注意的是,虽然图2b所示出的实施例基于重复使用cnn系统210的第一处理级220中的同一硬件cnn1模块214,但是,其他实施例可以使用与cnn系统210的第一处理级220中的cnn1模块214类似或相同的额外的硬件cnn1模块,以便多个硬件cnn1模块并行地处理子图像204组。对于一个给定设计,可以基于硬件成本约束和速度要求之间的折衷,来确定给定设计所使用的cnn1模块的实际数量。例如,cnn系统210的一些变动方案可在第一处理级中包括3到5个cnn1模块。

如上文所提及的,cnn1模块214可以通过诸如结合图1a和1b所描述的专用硬件子模块cnn1来实现,或者通过结合图1a和1b所描述的包括cnn1和cnn2两个子模块的整个cnn模块100来实现。在第一种情况下,cnn系统210内的cnn1模块214可只包括conv层、relu层以及池化层。在第二种情况下,在cnn系统210中实现cnn1模块214进一步包括跳过fc层和对应的relu层,即跳过cnn模块100内的子模块cnn2。当跳过cnn2子模块时,cnn1模块214一般需要在其输出特征图中保留空间位置信息,这是因为来自cnn1模块214的输出将被合并,并用于进一步处理。对于一些内嵌的硬件cnn模块,诸如hi3519片上系统内的硬件cnn模块,内嵌的cnn模块的参数是可重新配置的。通过使用此属性,当使用该内嵌的cnn模块时,可以通过迫使cnn模块100内的fc层中的每一层成为一个单位矩阵,使得来自每一fc层的输出变成将二维特征图重新组织为一维向量,来达到跳过子模块cnn2的目的。在这种情况下,每一fc层之后的relu层仍可以像通常那样使用。在划分实施例中,对于有三层fc-relu组合的cnn2子模块,最后两个relu层并不改变任何数据,因为多个relu层的串联相当于只有一个relu层。

回到图2b,在用cnn1模块214按顺序处理子图像204组中的每一子图像204之后,包含特征图206阵列的来自cnn1模块214的输出成为合并模块222的输入,此合并模块222被配置成合并特征图206的阵列以形成整个输入图像202的完整特征图。然后,合并的特征图可以被用作cnn系统210的第二处理级224的输入。在一些实施例中,来自第二处理级224的输出228是来自cnn2模块216的最后一个fc层的输出。理想情况下,输出228与图2a中的常规cnn系统200的输出226相同。

在一些实施例中,特征图206的阵列包括一组三维(3d)矩阵(即,二维特征图以及特征图的数量)。例如,特征图206的阵列可以由九个3d矩阵构成,每个矩阵的尺寸是2×2×48,其中,九是具有下标0,1,2,…,8(即3行3列的子图像)的子图像204的数量,2×2是每一个子图像经cnn1模块214处理后的每个输出特征图的尺寸,48是每一子图像的特征图的数量。在一些实施例中,合并模块222被配置成通过基于相应的输出矩阵下标,串联所有的3d输出矩阵,以此合并特征图206的阵列,进而形成合并的3d特征图矩阵,与此同时保留子图像204组的空间关系。在上面的示例中,此步骤会生成6×6×48的3d矩阵。接下来,可以将已合并的3d矩阵平化为一维(1d)向量。在上面的示例中,这会产生一个具有1728元素的1d向量。最后,已平化的1d向量被馈送给第二处理级224。

图2b示出了由合并模块222所生成的已合并的特征图208被馈送给cnn系统210的第二处理级224,供进一步处理。更具体而言,cnn系统210的第二处理级224包括至少一个cnn2模块216,该cnn2模块216进一步包括如上文所描述的fc层和relu层集合。如上文所提及的,cnn系统210中的cnn2模块216可以通过结合图1a和1b所描述的专用硬件子模块cnn2来实现。在这些实施例中,cnn系统210内的cnn2模块216可只包括fc层和relu层。在另外一些实施例中,cnn2模块216可以通过图1a和1b中所描述的包括cnn1和cnn2两个子模块的整个硬件cnn模块100来实现。在这些实施例中,在cnn系统210中实现cnn2模块216进一步包括跳过conv层-relu层-池化层,即跳过cnn模块100内的子模块cnn1。在诸如hi3519之类的一些系统中,可能难以跳过conv层-relu层-池化层以直接使用fc层和relu层。在这些情况下,cnn2模块216,即,fc层和relu层可以通过软件来实现。由于cnn系统210的大部分复杂计算位于conv层,因此,以软件实现fc和relu层通常对系统的总的速度影响很小。进一步地,诸如hi3519之类的系统还能提供额外的工具用以优化软件实现cnn2模块216的速度。

如上文所提及的,第二处理级224内的cnn2模块216可以通过软件而不是通过硬件cnn模块来实现。需要注意的是,因为fc层和relu层的复杂度一般比卷积层低得多,cnn系统210的大部分复杂计算存在于由cnn1模块214实现的卷积层。基于这样的认识,由cnn系统210中的硬件cnn2模块216实现的低复杂度计算操作可以通过软件而不是上文所提及的硬件cnn2或cnn模块来实现。此外,相比于基于硬件cnn模块的实施例,这样的软件实现方法可以提供更多的灵活性。

本申请提出的人脸检测cnn架构

在前述两种人脸检测结构中,由于mtcnn采用三cnn级,而级联cnn采用六级,因此mtcnn的结构比级联cnn更简单。此外,mtcnn可以检测人脸关键点位置,这有利于人员跟踪并确定每个人脸的姿态。因此,下文描述的人脸检测cnn系统和技术的多个示例均基于使用三级cnn的mtcnn架构。然而,需要说明的是,该人脸检测系统和技术同样可应用于级联cnn结构中。

上文已经提到,hi3519片上系统的内嵌cnn模块在未解决其输入图像尺寸限制的情况下,不能直接用于实现初始设计的mtcnn的每一级。其实,该mtcnn的初始设计不符合hi3519片上系统的内嵌cnn模块的很多限制或者与之产生冲突。这些冲突包括但不限于:

最大输入图像尺寸:如上文提到的,在hi3519中,hi3519可支持的输入图像像素最大值为1280。相比之下,初始设计的mtcnn的第二级的输入图像尺寸为24×24×3=1728,而第三级的输入图像尺寸为48×48×3=6912。这两个输入尺寸均超出了hi3519的输入图像尺寸的上限。

最小输入图像尺寸:hi3519的输入图像的最小宽度或高度为16像素。相比之下,初始设计的mtcnn的第一级的输入图像尺寸为12×12,这对于hi3519而言太小。

滤波器的数量:在hi3519的嵌入cnn模块中,每个卷积(conv)层的滤波器最大数量为50。与之相比,初始设计的mtcnn中的若干conv层具有64或128个滤波器。

cnn架构:在hi3519的内嵌cnn模块中,每个conv层后面都有一个最大池化(mp)层。然而,该mtcnn通常具有两个或三个连续的卷积层,该连续的卷积层中间并不存在任何mp层。

池化窗口尺寸:在hi3519的内嵌cnn模块中,mp层被设计为支持2×2像素的池化窗口尺寸,而在mtcnn中,通常使用3×3的最大池化窗口。

conv层滤波器尺寸:在hi3519的内嵌cnn模块中,该conv层具有3×3滤波器,而在mtcnn中,该conv层通常采用5×5滤波器以及2×2滤波器。

非线性函数:该mtcnn采用参数修正线性单元(prelu)作为非线性函数,而该hi3519的内嵌cnn模块采用修改线性单元(relu)。

全连接(fc)层:初始设计的mtcnn的第一级为全卷积网络(fcn),以在测试期间减少该滑动窗口方法的运行时间,其中不涉及fc层。相比之下,hi3519在一个cnn中至少需要3个fc层。

本申请提出的人脸检测cnn系统和技术的多个示例被设计为解决上述问题,从而该mtcnn的每一级内的初始cnn都可以由小规模低成本cnn实现,例如hi3519的内嵌cnn模块。

图3示出了根据本申请一些实施例,基于小规模硬件cnn模块的示例性人脸检测系统300的框图。在一些实施例中,人脸检测系统300在具有cnn功能的嵌入式系统上实现,该嵌入式系统包括诸如hi3519片上系统的小规模、低成本的片上系统。如图3所示,人脸检测系统300接收视频数据302并将其作为输入,并生成人脸检测决策316并将其作为输出。在一些实施例中,输入视频图像302为由摄像头获取的视频帧或视频。需要说明的是,人脸检测系统300至少包括运动检测模块304、金字塔和块生成模块306、第一级cnn308、第二级cnn310、第三级cnn312以及最终决策模块314。人脸检测系统300还可包括图3未示出的其他模块。以下将更加详细地描述人脸检测系统300中的每个模块。

从图中可以看出,运动检测模块304首先接收输入视频图像302。在一些实施例中,认为给定视频内的人脸与移动相关。因此,为了降低计算复杂度,运动检测模块304可基于与先前接收到的视频帧的比较,定位和识别每个视频帧内与运动相关的区域。需要说明的是,这些移动区域包括人或者非人物体,如正在移动的汽车。此外,即使是一个正在移动的人,移动区域可以包括人脸和人体。当人脸识别系统300在hi3519上实现时,运动检测模块304可以通过该hi3519的内嵌运动检测硬件模块实现。该运动检测模块304的输出包括一组具有不同尺寸的被识别的移动区域。作为输入视频图像302的一部分,每一个被识别的移动区域被发送到人脸检测系统300内的后续的人脸检测模块,用于检测该移动区域内的大部分或所有的人脸。在本实施例中,通常不会考虑将输入视频图像302内的非移动区域进行人脸检测。然而,本申请提出的人脸检测系统的一些其他实施例可以不包括运动检测模块。

在一些实施例中,人脸跟踪模块(未示出)可以替代运动检测模块304或者与之结合使用。该人脸跟踪模块用于通过人脸检测系统300计算已检测人脸的运动轨迹。更具体地,人脸跟踪模块基于在先前视频帧中的人脸位置计算运动轨迹,并基于计算得到的运动轨迹预测该已检测人脸在新的视频帧中的新的位置,并在后续在该预测位置附近检索这些人脸。需要注意的是,通过在人脸检测系统300内部结合运动检测和人脸跟踪,可以显著提高人脸检测的速度。

在一些实施例中,由运动检测模块304生成,或者由人脸跟踪模块生成,或者由运动检测结合人脸跟踪的结合体生成的给定的移动区域318的尺寸具有最小值。该移动区域的最小值可基于一个或多个设计参数,以及人脸检测系统300中采用的小规模硬件cnn模块的限制确定,该人脸检测系统300例如为hi3519。在一些实施例中,该一个或多个参数包括针对金字塔或块生成模块306的初步降采样因子和第一级cnn308的最小输入图像尺寸。例如,如果金字塔和块生成模块306的初步降采样因子为2∶1,第一级cnn308的最小输入图像为16×16,则可被检测的人脸的最小尺寸应为32×32。在另一示例中,如果金字塔和块生成模块306的初步降采样因子为3∶1,第一级cnn308的最小输入图像为16×16,则可被检测的人脸的最小尺寸应为48×48。为了降低复杂度,发送至该人脸检测模块的移动区域的最小尺寸通常大于可被检测的人脸的最小尺寸。在一些实施例中,由运动检测模块304生成的移动区域的最大尺寸可以大到整个输入视频图像302的尺寸。例如,该正在移动区域可以对应于一个基本完全被人脸覆盖的输入图像。

从图3可以看出,由运动检测模块304(或者由人脸跟踪模块或者由运动检测与人脸跟踪的结合体)生成的已检测移动区域由人脸检测系统300内的其他模块以类似的方式处理,这些模块包括金字塔和块生成模块306、第一级cnn308、第二级cnn310、第三级cnn312以及最终决策模块314。因此,将重复性地对每一个已检测移动区域318执行下文描述的与金字塔和块生成模块306、第一级cnn308、第二级cnn310、第三级cnn312以及最终决策模块314相关的操作。这种对每个已检测移动区域执行的处理循环由环绕这些模块标识的虚线表示。因此,下面关于人脸检测系统300的讨论仅针对于,并且同样应用于所有的已检测移动区域318。

在人脸检测系统300中,作为输入视频图像302的一部分,每个已检测移动区域318由金字塔的块生成模块306接收。金字塔的块生成模块306采用不同的降采样因子对移动区域318降采样,将移动区域318转化为“金字塔”式的多分辨率表示的移动区域318,从而允许后续的人脸检测模块在移动区域318内检测到不同大小的人脸。更具体地,“金字塔”中的移动区域318的高分辨率表示可用于检测初始输入图像302中较小的人脸;而“金字塔”中的移动区域318的低分辨率表示可用于检测初始输入图像302中较大的人脸。

在一些实施例中,金字塔中移动区域318的最高分辨率表示由第一级cnn308的输入尺寸以及可被检测人脸的最小理想尺寸决定。注意,第一级cnn398的输入尺寸可以是人为定义的参数,而该输入尺寸的最小值受第一级cnn308的最小输入尺寸限制,其中该第一级cnn308的最小输入尺寸受特定装置的约束。例如,对于hi3519的内嵌cnn模块,最小输入尺寸为16×16。该约束表示第一级cnn308的输入尺寸需要至少为16×16。此外,最高分辨率表示还决定人脸检测系统300所能检测的最小人脸。更特别地,可以通过将第一级cnn308的输入尺寸乘以金字塔和块生成模块306采用的降采样因子,决定可检测的最小人脸。例如,如果第一级cnn308采用的输入尺寸为16×16,而金字塔和块生成模块306采用的初始降采样因子为3,则可被检测的最小人脸为48×48。如果金字塔和块生成模块306采用的初始降采样因子为2,而第一级cnn308采用的输入尺寸为16×16,则可被检测的最小人脸为32×32。

需要注意的是,确定金字塔和块生成模块使用的降采样因子时,需要考虑人脸检测准确度和速度的折衷。另一方面,可以将初始降采样因子确定为可被检测人脸的最小尺寸对第一级cnn308的输入尺寸的比例。例如,假定第一级cnn308的输入尺寸采用16×16,而可被检测人脸的最小尺寸约为48×48,则初始降采样因子应该采用3。在一些实施例中,用户指定的第一级cnn308的输入尺寸可以大于第一级cnn308的最小输入尺寸,即16×16。

在一些实施例中,在金字塔中的该移动区域的最低分辨率表示应当等于或接近但不得小于第一级cnn308的最小输入尺寸,即hi3519中对应16×16。例如,该移动区域318的最低分辨率表示可以是24×24的图像。该移动区域318的其他分辨率表示可以介于金字塔的最低和最高分辨率之间,并且通常在相邻的分辨率表示之间以2∶1或3∶1的因数间隔开。

对于每个接收到的移动区域318,金字塔和块生成模块306为该移动区域318生成金字塔式的多分辨率表示。换言之,针对该初始视频图像302中的同一部分,金字塔和块生成模块306会生成一组具有不同分辨率的图像。在一些实施例中,不会将金字塔中所有的图像进行处理,相反地,第一级cnn308基于上述用户指定的输入尺寸处理图像块。例如,如果采用16×16的输入尺寸,则金字塔中的每个图像会被进一步划分为一组16×16的图像块。

在一些实施例中,金字塔和块生成模块306利用滑动窗口方法,将该金字塔中的每个图像划分为一组图像块。更特别地,可通过用户指定尺寸的滑动窗口,以用户指定步长逐个搜索该金字塔内的每个图像,从而在每个滑动窗口位置处生成一个图像块,其中该指定尺寸例如为16×16;该指定步长例如为行列方向上均为2或4像素。因此,金字塔和块生成模块306生成并输出具有相同尺寸的、对应于该移动区域的多分辨率表示组的若干组图像块320。需要说明的是,移动区域318的高分辨率表示所产生的图像块比移动区域318的低分辨率表示所产生的图像块多。接下来,该若干组图像块320由第一组cnn308接收。基于硬件配置,第一级cnn308可以顺序地、逐个图像块地处理该接收到的图像块;或者,并行处理多个图像块,以加快处理速度。下面将更详细地描述第一级cnn308的一些实施例。

第一级cnn308用于处理每个接收到的图像块,该图像块对应于该移动区域318的每个金字塔表示内的每个滑动窗口位置。图4示出了根据本申请所述的一些实施例,基于小规模硬件cnn模块的第一级cnn308的示例性实施过程400的框图。

从图4中可以看出,第一级cnn400包括两级conv和mp层(即conv(1)/mp(1)以及conv(2)/mp(2)),后接两个fc层(即fc(1)和fc(2))。在一些实施例中,每一个conv层和fc层(除最后一个fc层外)均后接有relu层(图4中未示出)。在一些实施例中,第一级cnn400的输入包括三个r/g/b通道的输入图像块402(即图3所示的图像块320组中的其中一项),其中每个通道的尺寸为16×16。在其他实施例中,该第一级cnn400的输入包括输入图像块402的灰度图(即单通道)。对于给定的输入图像块402,与采用3个r/g/b通道相比,采用相关的灰度图可具有更短的处理时间。因此,如果该两种类型的输入的相关性能基本相同,则对每个图像采用灰度图比采用3个r/g/b通道具有显著优势。在图中所示的实施例中,conv(1)层包括步长为1的10个3×3的滤波器。因此,conv(1)层的输出的尺寸为14×14×10。该mp(1)层使用步长为2的2×2的池化窗口。因此,该mp(1)层的输出尺寸为7×7×10。conv(2)层包括步长为1的16个3×3的滤波器。因此,conv(2)层的输出的尺寸为5×5×16。该mp(2)层使用步长为2的2×2的池化窗口。因此,该mp(2)层的输出尺寸为3×3×16。第一层和最后一层fc层的输出分别为32×1和16×1的向量。在一些实施例中,该最后的16×1的输出向量中,前两个输出用于生成人脸检测置信度指数(也被称为“人脸分类器”);接下来4个输出为该图像块402中的脸部(如果在该图像块402中检测到人脸的话)的边界框坐标(也被称为“边界框回归运算符”);最后10个输出表示已检测人脸的5个人脸关键点的位置,即左眼、右眼、鼻子和两个嘴角(也被称为“关键点定位运算符”)。因此,第一级cnn400输出为一组候选人脸窗口/边界框(对应于图3所示的图像块320的一个子集)。

需要说明的是,层数和滤波器的数量、输入图像尺寸、滤波器和池化窗口尺寸、fc层输出尺寸以及第一级cn400中所示的其他参数的组合仅为第一级cnn308的一个示例性配置。在不背离本申请所描述的技术范围的情况下,可以构建具有其他配置的第一级cnn308,使其具有一个多个不同于图4所示的参数值。在一些实施例中,如图4所示的示例性第一级cnn400,第一级cnn308满足小规模硬件cnn模块的约束条件,该小模块硬件cnn模块例如可以是hi3519内的内嵌硬件cnn模块,从而该hi3519内的内嵌硬件cnn模块可以实现该第一级cnn308。

在一些实施例中,为了消除更多的“伪报警”,即被第一级cnn308检测为人脸但实际并非人脸的图像块的报警,可以将一滤波器应用于检测输出处的人脸检测置信度指数。该滤波器仅保留人脸检测置信度指数大于阈值(例如,通常将阈值设定在0.5~0.7之间)的图像块。在一些实施例中,在第一级cnn308中的最后一个fc层之后实现该滤波操作。

需要说明的是,由于采用金字塔技术生成了多分辨率表示,以及采用滑动窗口技术生成的图像块,可以在输入图像的每个人脸周围生成多个交叠但不相同的边界框。在一些实施例中,对于每一个被第一级cnn308划分为人脸的图像块,都会在初始输入视频图像302中识别对应的图像区域。接下来,如在mtcnn中所描述的,利用非极大值抑制(nms)技术合并那些高度重叠的边界框。需要说明,该nms操作可以在前述对候选人脸窗口执行的过滤操作之后操作。在一些实施例中,该nms操作在人脸检测系统300内的第一级cnn308内实现。在nms操作之后,剩余的边界框可以通过边界框回归运算被精准化,从而精确该边界框的位置,同样如在mtcnn中所描述的。再者,可在人脸检测系统300内的第一级cnn308内执行该nms操作。因此,在一个或多个其他处之后,第一级cnn300输出一组人脸的候选边界框,或“候选人脸窗口”。

在一些实施例中,对于每一个由第一级cnn308输出的候选人脸窗口322,都有一个位于并截取自初始输入视频图像302的对应的图像块,并且该被截取的图像块随后被重新设定尺寸为第二级cnn310的用户指定的输入尺寸。基于这种由粗至精的方法,该第二级cnn310的用户指定的输入尺寸应当大于第一级cnn308的输入尺寸。在一些实施例中,第二级cnn310的输入尺寸为24×24。因此,重新设定尺寸的图像块的尺寸也是24×24。然而,在其他实施例中,在不背离所描述的技术的范围的情况下,也可以采用类似于但稍微不同于24×24的输入尺寸。可以通过硬件、软件或者硬件和软件的组合来实现从候选人脸窗口322中生成重新设定尺寸的图像块的过程。该相应的处理模块可以位于第一级cnn308和第二级cnn310之间,该处理模块未在图中明确显示。接下来,第二级cnn310接收该重新设定尺寸的图像块。基于该硬件配置,第二级cnn310可以顺序地、逐个图像块地处理该接收到的图像块324;或者,并行处理多个图像块,以加快处理速度。下面将更详细地描述第二级cnn310的一些实施例。

图5示出了根据本申请描述的一些实施例,基于小规模硬件cnn第二级cnn310的示例性实施过程500的框图。

从图5中可以看出,第二级cnn500包括三级conv和mp层(即conv(1)/mp(1)、conv(2)/mp(2)以及conv(3)/mp(3)),后接两个fc层(即fc(1)和fc(2))。在一些实施例中,每一个conv层和fc层(除最后一个fc层外)均后接有relu层(图5中未示出)。在一些实施例中,第二级cnn500满足hi3519的内嵌硬件cnn模块的约束条件。例如,第二级cnn500的输入为尺寸为24×24的单通道的灰度图502(即图3中其中一个重新设定尺寸的图像块324),而非在mtcnn的第二级cnn中使用的尺寸为24×24×3的rgb图像。这是由于hi3519支持的最大输入尺寸为1280像素(24×24×3=1728)。然而,实验结果显示,使用灰度图而非彩色图像的性能没有受到明显影响。因此,可以采用诸如hi3519内的嵌入式cnn的小规模硬件cnn,有效地实现第二级cnn500。

在如图所示的实施例中,conv(1)层包括步长为1的28个3×3的滤波器。因此,conv(1)层的输出的尺寸为22×22×28(基于24×24的输入尺寸)。该mp(1)层使用步长为2的2×2的池化窗口。因此,该mp(1)层的输出尺寸为11×11×28。conv(2)层包括步长为1的32个3×3的滤波器。因此,conv(2)层的输出的尺寸为9×9×32。该mp(2)层使用步长为2的2×2的池化窗口。因此,该mp(2)层的输出尺寸为5×5×32。conv(3)层包括步长为1的48个3×3的滤波器。因此,conv(3)层的输出的尺寸为3×3×48。该mp(3)层使用步长为2的2×2的池化窗口。因此,该mp(3)层的输出尺寸为2×2×48。第一层和最后一层fc层的输出分别为128×1和16×1的。需要说明,虽然每个conv层使用的滤波器均多于第一级cnn400所使用的滤波器,并且fc层也大于第一级cnn400所使用的fc层,但是,第二级cnn500的设计依然满足该hi3519的内嵌cnn模块的约束。

从图中可以看出,第二级cnn500的最后一个fc层的输出依然为16×1的输出向量。其中,前两个输出用于生成人脸检测置信度指数或者人脸分类器;接下来4个输出为该图像块502中的脸部(如果在该图像块402中检测到人脸的话)的边界框坐标或边界框回归运算符;最后10个输出表示已检测人脸的5个人脸关键点的位置,即左眼、右眼、鼻子和两个嘴角,即关键点定位运算符。然而,由于第二级cnn500的输入图像分辨率高于第一级cnn400的输入图像分辨率,并且cnn500比cnn400处理能力更强,因此cnn500的人脸检测准确度也要高于cnn400的人脸检测准确度。因此,第二级cnn500输出一组与该输入图像块502的一个子集对应的候选人脸窗口/边界框(如图3所示的候选人脸窗口)。

类似于第一级cnn308,可以将一置信度指数阈值应用于第二级cnn310的检测输出处的人脸检测置信度指数,仅保留人脸检测置信度指数大于阈值的输入图像块。在一些实施例中,在第二级cnn310中的最后一个fc层之后实现该滤波操作。类似地,在过滤该候选边界框后,可利用上文提到的nms技术合并高度重叠的候选边界框。在一些实施例中,还可以在第二级cnn310中实现该nms操作。通常,在过滤和nms操作之后,该候选人脸窗口仅保留一个小子集。在nms操作之后,可以通过边界框回归运算符精确剩余的边界框的位置,该精确的过程可以通过第二级cnn310实现。

需要说明的是,层数和滤波器的数量、输入图像尺寸、滤波器和池化窗口尺寸、fc层输出尺寸以及第二级cnn500中所示的其他参数的组合仅为第二级cnn308的一个示例性配置。在不背离本申请所描述的技术范围的情况下,可以构建具有其他配置的第二级cnn310,使其具有一个多个不同于图5所示的参数值。例如,可以不采样第二级cnn310的输入尺寸,即24×24,也可以采用其他类似的尺寸,如32×32。在一些实施例中,如图5所示的示例性第二级cnn500,第二级cnn310满足小规模硬件cnn模块的约束条件,该小模块硬件cnn模块例如可以是hi3519内的内嵌硬件cnn模块,从而该hi3519内的内嵌硬件cnn模块可以实现该第二级cnn310。

在一些实施例中,对于每一个由第二级cnn310输出的候选人脸窗口326,都有一个位于并截取自初始输入视频图像302的对应的图像块,并且该被截取的图像块随后被重新设定尺寸为第三级cnn312的用户指定的输入尺寸。基于这种由粗至精的方法,该第三级cnn312的用户指定的输入尺寸应当大于第一级和第二级cnn308、310的输入尺寸。在一些实施例中,第三级cnn312的输入尺寸为46×46。因此,重新设定尺寸的图像块的尺寸也是46×46。然而,在其他实施例中,在不背离所描述的技术的范围的情况下,也可以采用类似于但稍微不同于46×46的输入尺寸。可以通过硬件、软件或者硬件和软件的组合来实现从候选边界框中生成重新设定尺寸的图像块的过程。该相应的处理模块可以位于第二级cnn310和第三级cnn312之间,该处理模块未在图中明确显示。接下来,第三级cnn312接收该重新设定尺寸的图像块,用于最终精准化。基于该硬件配置,第三级cnn312可以顺序地、逐个图像块地处理该接收到的图像块328;或者,并行处理多个图像块,以加快处理速度。

原则上,第三级cnn312处理该输入图像块328的方式类似于第一级cnn308和第二级cnn310。例如,图6示出了根据本申请描述的一些实施例,第三级cnn312的示例性实施过程600的框图。

从图6中可以看出,第三级cnn600同样包括三级conv和mp层(即conv(1)/mp(1)、conv(2)/mp(2)以及conv(3)/mp(3)),后接两个fc层(即fc(1)和fc(2))。在如图所示的实施例中,conv(1)层包括步长为1的32个3×3的滤波器。因此,conv(1)层的输出的尺寸为44×44×32(基于46×46的输入尺寸)。该mp(1)层使用步长为2的2×2的池化窗口。因此,该mp(1)层的输出尺寸为22×22×32。conv(2)层包括步长为1的50个3×3的滤波器。因此,conv(2)层的输出的尺寸为20×20×50。该mp(2)层使用步长为2的2×2的池化窗口。因此,该mp(2)层的输出尺寸为10×10×50。conv(3)层包括步长为1的50个3×3的滤波器。因此,conv(3)层的输出的尺寸为8×8×50。该mp(3)层使用步长为2的2×2的池化窗口。因此,该mp(3)层的输出尺寸为4×4×50。第一层和最后一层fc层的输出分别为256×1和16×1的向量。

需要说明,输入图像块602(即,图3中的其中一个重新设定尺寸的图像块328)的尺寸为46×46×1=2116(即仅采用单一通道的灰度图),并且在上文讨论的第三级cnn600中,第三级cnn312的最大输入尺寸有必要大于2116。然而,如果cnn模块的最大输入尺寸小于2116,则该cnn模块不能够用于实现第三级cnn600。因此,在图6所示的实施例中,虽然在设计阶段有益于优化网络参数,仅支持1280像素的最大输入尺寸的hi3519的内嵌硬件cnn模块无法实现该第三级cnn600。

为了解决上述问题,可以采用本申请的相关专利申请中所描述的基于子图像的cnn系统和技术。更具体地,利用该基于子图像的cnn系统和技术,可以将该输入图像块602划分为一组重叠的子图像。例如,图7示出了根据本申请描述的一些实施例中,46×46的图像块的示例性输入图像划分方案。从图7左侧可以看出,输入图像块602可以划分为一组重叠的4个子图像或块,每个子图像或块的尺寸为30×30,并且在相邻的子图像之间具有16像素的偏移或步长。同时需要注意,在图7中,利用较小的人工补偿稍微调整该4个子图像的重叠配置,从而可以更好地显现并且更好地区分该4个子图像。然而,这些人工补偿只是为了使这些重叠的子图像在图中可视化;在实施过程中,不可以将其理解为这些子图像之间的实际补偿。实际上,这4个子图像的行坐标分别以1和17开始,而这4个子图像的列坐标分别以1和17开始。该组不具有人工补偿的4个重叠的图像被显示为具有人工补偿的、插入到主图像的右上角的较小的插入物。

需要注意的是,具体数值(即46×46的输入图像尺寸、30×30的子图像尺寸以及16×16的步长尺寸)均是基于相关专利申请15/441,194所描述的理论设计的,该部分内容以引用形式被并入本文。如上文所述以及该相关专利申请所证明的,使用这些设计数据确保了该4个子图像的每个输出合并后的输出等同于第三级cnn600的输出,其中该第三级cnn600处理整个输入图像块,而不采用基于子图像的cnn技术。

图8示出了根据本申请一些实施例,基于小规模硬件cnn模块的第三级cnn312的示例性实施过程800的框图。从图8中可以看出,第三级cnn800也包括三级conv和mp层(即conv(1)/mp(1)、conv(1)/mp(1)和conv(3)/mp(3)),这些conv和mp层的参数与第三级cnn600的对应conv和mp层的参数相同。第三级cnn800还包括输入模块802,该输入模块802接收该46×46的输入图像块602。输入模块802用于将图像块602划分为4个尺寸为30×30的子图像804;该子图像804小于hi3519内的内嵌硬件cnn可支持的最大输入图像尺寸。关于该输入模块802的更详细的操作可见于相关专利申请15/441,194(例如,如图2b所示的输入模块212),该部分内容以引用形式被并入本文。

在一些实施例中,该第三级cnn800的该三级conv和mp层用于顺序地处理该4个子图像804。从图8中可以看出,对于给定的30×30的子图像804(很明显地,该子图像804为图像块602的一部分/子图像),conv(1、)层包括步长为1的32个3×3的滤波器。因此,conv(1)层的输出的尺寸为28×28×32。该mp(1)层使用步长为2的2×2的池化窗口。因此,该mp(1)层的输出尺寸为14×14×32。conv(2)层包括步长为1的50个3×3的滤波器。因此,conv(2)层的输出的尺寸为12×12×50。该mp(2)层使用步长为2的2×2的池化窗口。因此,该mp(2)层的输出尺寸为6×6×50。conv(3)层包括步长为1的50个3×3的滤波器。因此,conv(3)层的输出的尺寸为4×4×50。该mp(3)层使用步长为2的2×2的池化窗口。因此,该mp(3)层的输出尺寸为2×2×50,即50个2×2的特征图806。对于该组4个子图像804,mp(3)层生成4组2×2×50的特征图806的输出。

如图8所示,第三级cnn800还包括合并模块808,该合并模块808用于接收并合并该4组2×2×50的特征图806,以形成该完整输入图像块602的完整特征图,其中该输入图像块602即该第三级cnn800的输入。关于该合并模块808的更详细的操作可见于相关专利申请15/441,194(例如,如图2b所示的合并模块222),该部分内容以引用形式被并入本文。如该相关专利申请所描述的,与该组4个子图像804相关的输出特征图与相邻的子图像对应的相邻特征图之间不具有重叠部分,并且没有间隙。该输出特征图可在第一fc层之前直接合并,以生成与图6中第三级cnn600相同的输出。该合并结果,即第三级cnn800的输出为50组4×4的特征图810,其中一个特征图显示在图7的右侧。

在一些实施例中,该hi3519的内嵌硬件cnn用于实现第三级cnn800中所示的三级conv和mp层。然而,该hi3519的内嵌硬件cnn还包括至少三个fc层。在一实施例中,为了容纳hi3519所需的这些fc层,第三级cnn800还包括两个虚拟fc层(图中未明确示出),该虚拟fc层具有相同的矩阵参数。此外,在hi3519中,在每个fc层后分别具有一个relu层。然而,如相关专利申请所公开的,该relu层不会影响该虚拟fc层的输出,这是因为多个串联的relu层等同于一个relu层。

需要说明的是,第三级cnn800的输入图像尺寸不是必须为46×46。可以是小于hi3519的内嵌硬件cnn的最大输入尺寸的别的尺寸(这时不需要把输入分为子图像)。也可以采用其他更大的可行尺寸作为该第三级cnn800的输入图像尺寸,而该可行尺寸的要求可见于相关专利申请15/441,194,该部分内容以引用形式被并入本文。例如,该第三级cnn800的其他可行输入图像尺寸可以是62×62。利用该图像尺寸,输入图像块802可以划分为9个重叠的子图像,每一个子图像的尺寸为30×30,相邻子图像在水平和垂直方向的步长均为16。

回到图3,如果采用第三级cnn80实现该人脸检测系统300的第三级cnn312,则第三级cnn312输出50组4×4的特征图810,该特征图80即为最终决策模块314的输入。在一些实施例中,最终决策模块314包括多个fc层,该fc层用于对接收到的特征图进行操作,并生成该输入视频图像302的最终决策,该决策如图3所示的人脸检测决策316。

图9示出了根据本申请一些实施例,最终决策模块314的示例性实施过程900的框图。从图9可以看出,重组模块接收并处理一组50组4×4的特征图810,该重组模块用于将该组二维特征图合并并重组成尺寸为800×1的一维向量。该一维向量进一步由两级fc层处理,即fc(1)和fc(1),随后fc层输出给定的已检测移动区域318的人脸检测决策316。在一些实施例中,利用如柔性最大值(softmax)分类器的线性分类器实现最后的fc层,即fc(2)。在如图所示的实施例中,人脸检测决策316可以包括人脸分类器904、边界框回归运算符906,以及人脸关键点位置运算符908。如上文所述,人脸检测决策316内的标记位置运算符908可以包括已检测人脸的5个人脸关键点,即左眼、右眼、鼻子和两个嘴角。虽然最终决策模块900内的两个fc层的尺寸分别为256和16,但是在其他实施例中,最终决策模块314可以具有不同于最终决策模块900的fc层尺寸。需要注意的是,可以通过软件实现或者通过hi3519上的cpu上处理该最终决策模块900,这是因为最终决策计算复杂度要远低于三级cnn308、310和312中的任何一项。

图10呈现了一流程图,该流程图描述了根据本发明一些实施例,利用本申请公开的在具有cnn功能的嵌入式系统上执行的人脸检测系统300的示例性人脸检测过程1000。在一些实施例中,该具有cnn功能的嵌入式系统包括小规模低成本片上系统,如hi3519片上系统。当本申请公开的人脸检测系统的输入端接收到视频图像/帧(步骤1002),表示该人脸检测过程1000的开始。在一些实施例中,该视频图像由高分辨率摄像头获取,该摄像头例如为监控摄像头、机器视觉摄像头、自动驾驶汽车上的摄像头或移动手机摄像头。

接下来,在人脸检测系统1000中,可对输入视频图像/帧执行运动检测操作,以定位并识别该视频帧内的一组移动区域(即该视频帧内与运动相关的图像块),此即步骤1004。在一些实施例中,可利用具有cnn功能的嵌入式系统内的内嵌背景消除模块实现该运动检测操作,以检测该视频图像/帧内的移动区域。该运动检测操作的输出包括该视频帧内的一组已被识别的移动区域。在一些实施例中,该运动检测操作可由人脸跟踪操作替代或者与该人脸跟踪操作结合。需要说明,通过在人脸检测过程1000中结合运动检测和人脸跟踪,可以显著提高人脸检测速度。在一些实施例中,人脸检测过程1000省略了该运动检测操作。

接下来,在人脸检测系统1000中,针对每一个已检测移动区域,可对该已检测移动区域执行金字塔生成操作,以生成已检测移动区域的多分辨率表示(步骤1006)。更具体地,已检测移动区域的较高分辨率表示可用于检测该初始输入视频图像中的较小的人脸;而已检测移动区域的较低分辨率表示可用于检测该初始输入视频图像中的较大的人脸。

接下来,在人脸检测系统1000中,在以多分辨率表示的每个图像执行滑动窗口操作,为该图像生成一组图像块(步骤1008)。在一些实施例中,该滑动窗口的尺寸由配置有第一复杂度的第一cnn处理级的第一输入尺寸决定。

接下来,在人脸检测系统1000中,第一cnn处理级用于处理所有的图像块,其中该图像块对应于已检测移动区域的每个多分辨率表示的每个滑动窗口位置,以生成第一组候选人脸窗口(步骤1010)。在一些实施例中,第一组候选人脸窗口中的每一个窗口都与置信度指数和一组边界框坐标关联。在一些实施例中,每一个候选人脸窗口也与5个人脸关键点关联,即左眼、右眼、鼻子和两个嘴角。在一些实施例中,第一cnn处理级满足小规模硬件cnn模块的限制,该cnn模块例如为hi3519内的内嵌硬件cnn模块,从而可由该hi3519内的内嵌硬件cnn模块实现该cnn处理级。

接下来,在人脸检测系统1000中,第二cnn处理级用于处理对应于第一组候选人脸窗口的第一组重新设定尺寸的图像块,以生成第二组候选人脸窗口(步骤1012)。在一些实施例,该第二cnn处理级具有第二复杂度,该第二复杂度高于第一复杂度。在一些实施例中,该第一组重新设定尺寸的图像块的尺寸等于第二cnn处理级的第二输入尺寸,其中该第二输入尺寸大于第一cnn处理级的第一输入尺寸。因此,相比于第一cnn处理级,第二cnn处理级处理具有更高人脸检测准确度的更高分辨率的输入图像块。在一些实施例中,第二组候选人脸窗口中的每一个窗口与置信度指数和一组边界框坐标关联。在一些实施例中,每一个候选人脸窗口也与5个人脸关键点关联,即左眼、右眼、鼻子和两个嘴角。在一些实施例中,第二cnn处理级满足小规模硬件cnn模块的限制,该cnn模块例如为hi3519内的内嵌硬件cnn模块,从而可由该hi3519内的内嵌硬件cnn模块实现该cnn处理级。

接下来,在人脸检测系统1000中,第三cnn处理级用于处理对应于第二组候选人脸窗口的第二组重新设定尺寸的图像块,以生成第三组候选人脸窗口(步骤1014)。在一些实施例,该第三cnn处理级具有第三复杂度,该第三复杂度高于第一和第二复杂度。在一些实施例中,该第二组重新设定尺寸的图像块的尺寸等于第三cnn处理级的第三输入尺寸,其中该第三输入尺寸大于第一和第二cnn处理级的第一和第二输入尺寸。因此,相比于第一和第二cnn处理级,第三cnn处理级处理具有更高人脸检测准确度的更高分辨率的输入图像块。在一些实施例中,第三组候选人脸窗口中的每一个窗口与置信度指数和一组边界框坐标关联。在一些实施例中,第三组候选人脸窗口中的每个窗口也与5个人脸关键点关联,即左眼、右眼、鼻子和两个嘴角。需要说明,对于该初始输入视频帧内的每个已检测移动区域,重复1006-1014步骤。

在一些实施例中,理想情况下,同样使用诸如hi3519内的内嵌硬件cnn模块的小规模硬件cnn模块实现该第三cnn处理级。然而,由于该第三cnn处理级的输入尺寸可能会大于该小规模硬件cnn模块的最大输入尺寸,因此,需要采用基于子图像的cnn方法。

图11呈现了一流程图,该流程图描述了根据本申请所述的一些实施例,利用基于子图像的cnn系统处理第二组重新设定尺寸的图像块(即过程1000中的步骤1014)的示例性过程1100。

一开始,给定的重新设定尺寸的图像块被划分为一组具有更小图像尺寸的子图像(步骤1102)。在一些实施例中,该一组子图像包括一个二维阵列的重叠子图像。例如,46×46的图像块可以被划分为一组4个重叠子图像,其中每个子图像的尺寸为30×30,并且相邻子图像之间具有16像素的偏移。此外,该子图像的尺寸小于诸如hi3519在内的内嵌硬件cnn模块的小规模硬件cnn模块的最大输入尺寸。

接下来,该小规模硬件cnn模块顺序处理该一组子图像,以生成阵列的特征图(步骤1104)。在一些实施例中,利用该小规模硬件cnn模块处理每个子图像的步骤包括在该子图像上应用多级conv层和mp层。

接下来,该小规模硬件cnn模块输出的该阵列的特征图被合并为一组合并特征图(步骤1106)。更具体地,该一组合并特征图等同于大规模cnn生成的整个高分辨率的重新设定尺寸的图像块的完整的特征图,其中该大规模cnn不需划分而直接处理整个高分辨率的重新设定尺寸的图像块。接下来,第二cnn模块处理该一组合并特征图,以预测该重新设定尺寸的图像块是否为人脸(步骤1108)。在一些实施例中,处理该一组合并特征图的步骤包括在该一组合并特征图上应用多级fc层。

需要说明,虽然上文公开的人脸检测系统的多个实施例将该基于子图像的cnn技术应用于一级联cnn系统的最后一个cnn级,然而在其他实施例中,该人脸检测系统也可以将该基于子图像的cnn技术应用于级联cnn系统的不止一级,例如,应用于该级联系统的最后两级。

人脸检测和姿态角评估联合cnn结构

上文已经结合图3-11描述了基于采用小规模硬件cnn模块(例如hi3519内的小规模硬件cnn模块)的人脸检测系统,以及可处理分辨率大于该小规模硬件cnn模块的最大输入尺寸的图像的基于子图像的方法。因此,上文公开的人脸检测系统可以在集成有该小规模硬件cnn模块的资源有限的嵌入式系统中实现。

如上文所描述的,一些嵌入式系统应用通常需要联合执行人脸检测和头部姿态评估。现有技术已经公开了大量的人脸检测和头部姿态评估系统。朱(zhu)等人(自然环境下的人脸检测、姿态评估以及关键点定位(facedetection,poseestimation,andlandmarklocalizationinthewild),cvpr,2012)描述了一种用于人脸检测、姿态评估以及关键点定位的标准化模型。兰詹(ranjan)等人(用于人脸检测、关键点定位、姿态评估和性别识别的深度多任务学习结构(adeepmulti-tasklearningframeworkforfacedetection,landmarklocalization,poseestimation,andgenderrecognition),arxiv:1603.01249)开发了一种用于人脸检测、关键点定位、姿态评估和性别识别的多任务学习结构。然而,朱采用150×150像素的输入图像,而兰詹采用227×227像素的输入图像,而兰詹提出的一些conv层中的滤波器的最大数量为384。遗憾的是,这些结构的高复杂度意味着它们不适于在资源有限的低端嵌入式系统上实现。尽量阿恩(ahn)等人(采用深度神经网络的单目摄像头实时头部定位(real-timeheadorientationfromamonocularcamerausingdeepneuralnetwork),accv,2014)描述了用于低分辨率人脸的快速姿态角评估方案,但是阿恩提出的结构并没有联合执行人脸检测和头部姿态评估。

文中描述的一些实施例提供了基于使用小规模硬件cnn模块的人脸检测和姿态角评估联合系统和技术,该小规模硬件cnn模块如hi3519中的内嵌cnn模块。在一些实施例中,本申请提出的人脸检测和姿态角评估联合系统用于联合执行多重任务。该多重任务为:检测一序列视频帧中大多或所有人脸、为该已检测人脸生成姿态角评估、在该序列视频帧中跟踪同一个人的已检测人脸,并生成被跟踪的人的“最佳姿态”评估。本申请提出的人脸检测和姿态角评估联合系统可在资源有限的嵌入式系统中实现,如仅集成有一个或多个小规模cnn模块的智能摄像头系统。

在一些实施例中,本申请公开的人脸检测和姿态角评估联合系统还采用上文描述的由粗至精的多级(例如三级)mtcnn架构,并且每一级可由小规模cnn模块实现。此外,在输入人脸图像尺寸不符合该小规模cnn模块的输入尺寸的限制条件的级(例如该由粗至精的三级mtcnn中的最后一级)中,本申请提出的人脸检测和姿态角评估联合系统和技术将上文描述的基于子图像的技术应用于尺寸大于该小规模cnn模块可支持的输入像素的最大值的输入人脸图像。

在一些实施例中,在该多级mtcnn的给定级(例如该三级mtcnn中的最后一级)中,本申请公开的人脸检测和姿态角评估联合系统首先利用基于子图像技术将高分辨率输入人脸图像分割成一组合适尺寸的子图像,相邻的子图像之间均具有严谨设计的重叠部分。然后由资源有限的小规模cnn模块,例如hi3519的内嵌cnn模块分别处理每个子图像。然后合并与该组子图像对应的输出,以获得对应于高分辨率输入人脸图像的输出,合并生成的输出可以进一步由该多级mtcnn的给定级中的后续层进一步处理。在一些实施例中,该利用基于子图像技术的给定级可被配置为等同于不需划分,利用大规模cnn处理整个高分辨率输入人脸图像的mtcnn中的对应级,从而采用该基于子图像技术的给定级的输出可与不采用该基于子图像技术的对应级的输出完全相同。

图12示出了根据本申请描述的一些实施例,基于小规模硬件cnn模块的示例性人脸检测和姿态角评估联合系统1200的框图。从图12中可以看出,人脸检测和姿态角评估联合系统1200与图3中的人脸检测系统300具有基本相同的结构。此外,该人脸检测和姿态角评估联合系统1200中的每个功能块/模块与该人脸检测系统300中的对应功能块/模块基本相同。更具体地,人脸检测和姿态角评估联合系统1200接收视频图像/帧1202,并将该视频图像/帧1202作为输入,并且生成人脸检测预测1216,并将该人脸检测预测1216作为输出。类似于系统300,系统1200还至少包括运动检测模块1204、金字塔和块生成模块1206、第一级cnn1208、第二级cnn1210、第三级cnn1212以及最终决策模块1214。

在一些实施例中,人脸检测预测1216可包括二元人脸分类器、边界框坐标、头部姿态评估。对于输入视频图像中的特定已检测人脸,该人脸检测预测1216可包括1个二元人脸分类器、4个边界框坐标和3个头部姿态角(即俯仰角、偏航角、翻转角)。在一些实施例中,人脸检测预测1216还包括如上文描述的人脸关键点位置。在这些实施例中,系统1200可应用于多任务cnn系统,该多任务cnn系统可联合执行人脸检测、头部姿态评估和人脸关键点定位。

需要说明的是,该人脸检测和姿态角评估联合系统1200还包括与最终决策模块1214的输出相连的最佳姿态生成模块1230。虽然未示出,但是人脸检测和姿态角评估联合系统1200还可包括人脸跟踪模块或与该人脸跟踪模块相连。在一些实施例中,该人脸跟踪模块用于在多个视频帧中跟踪某一特定人的已检测人脸,从而确定这些已检测人脸具有该同一特定人的id标签。在一些实施例中,最佳姿态生成模块1230与该人脸跟踪模块相连,接收人脸检测预测1216,并将该人脸检测预测1216作为输入。基于该人脸跟踪模块的跟踪信息,最佳姿态生成模块1230可通过多个姿态角评估,确定一人的“最佳姿态”,并输出该人的最佳姿态评估1232,其中该多个姿态角评估与该人在一序列视频帧中的多个已检测人脸相关。

在一些实施例中,可以将该最佳姿态定义为很多已检测人脸中相对于全正面方向(即零旋转姿态)具有最小整体旋转度(例如基于该三个姿态角的绝对值的和)的人脸方向。然而,可以采用不同于上述定义的具有其他定义的最佳姿态。在一些实施例中,在确定视频中一特定人的最佳姿态的之后,该最佳姿态生成模块1230仅将与该人的最佳姿态相关的已检测人脸图像传送至该服务器,从而降低传输带宽和存储要求。在一些实施例中,该最佳姿态生成模块1230不属于该人脸检测和姿态角评估联合系统1200的一部分。然而,该人脸检测和姿态角评估联合系统1200还可以包括图12未示出的其他模块。

在一些实施例中,该人脸检测和姿态角评估联合系统1200可在包括一个或多个小规模cnn模块的具有cnn功能的嵌入式系统中实现,该小规模cnn模块例如为hi3519中的内嵌cnn模块。下文我们对人脸检测和姿态角评估联合系统1200中的每个块进行更加详细的描述。

类似于系统300中的运动检测模块304,系统1200中的运动检测模块1204可基于与先前接收到的视频帧的对比,定位和识别每个视频帧内与运动相关的区域。该运动检测模块1204的输出包括一组具有不同尺寸的被识别的移动区域1218。作为输入视频图像/帧1202的一部分,每一个被识别的移动区域1218被发送到人脸检测和姿态角评估联合系统1200内的后续模块,用于检测该移动区域内的大部分或所有的人脸,并且评估该移动区域内每个已检测人脸的头部姿态角。需要说明的是,本申请提出的人脸检测和姿态角评估联合系统1200的一些其他实施例可以不包括运动检测模块1204。

在一些实施例中,人脸跟踪模块(未示出)可以替代运动检测模块1204或者与之结合使用。该人脸跟踪模块用于通过系统1200计算已检测人脸的运动轨迹。更具体地,人脸跟踪模块基于在先前视频帧中的人脸位置计算运动轨迹,并基于计算得到的运动轨迹预测该已检测人脸在新的视频帧中的新的位置,随后在该预测位置附近检索这些人脸。需要注意的是,通过在人脸检测和姿态角评估联合系统1200内部结合运动检测和人脸跟踪,可以显著提高人脸检测的速度。

从图12可以看出,系统1200内的其他模块以类似的方式处理由运动检测模块1204(或者人脸跟踪模块或者由运动检测与人脸跟踪的结合体)生成的每个已检测移动区域1218,这些模块包括金字塔和块生成模块1206、第一级cnn1208、第二级cnn1210、第三级cnn1212以及最终决策模块1214。因此,下文描述的金字塔和块生成模块1206、第一级cnn1208、第二级cnn1210、第三级cnn1212以及最终决策模块1214将重复性地对每一个已检测移动区域1218执行相关操作。这种对循环处理所有已检测移动区域1218的过程由环绕这些模块的虚线框表示。因此,下面关于人脸检测和姿态角评估联合系统1200的讨论针对于,并且同样应用于所有的已检测移动区域1218。

类似于系统300中的金字塔和块生成模块306,金字塔和块生成模块1206采用不同的降采样因子对一给定移动区域1218降采样,将该给定移动区域1218转化为“金字塔”式的多分辨率表示的移动区域1218,从而允许后续的人脸检测和姿态角评估模块在该给定移动区域1218内检测到不同大小的人脸。更具体地,该“金字塔”中的该给定移动区域1218的高分辨率表示可用于检测该初始输入图像/帧1202中较小的人脸;而“金字塔”中的移动区域1218的低分辨率表示可用于检测该初始输入图像/帧1202中较大的人脸。在一些实施例中,基于用户指定的窗口尺寸,利用滑动窗口方法将该“金字塔”中的每个图像进一步划分为一组图像块,其中该窗口尺寸例如为16×16。

更具体地,可通过用户指定尺寸的滑动窗口,以用户指定步长逐个通过该金字塔内的每个图像,以生成一组图像块,从而在每个滑动窗口位置处生成一个图像块,其中该用户指定尺寸例如为16×16;该用户指定步长例如在行列方向上均为2或4像素。因此,金字塔和块生成模块1206生成并输出具有相同尺寸的、对应于该移动区域1208的金字塔式的多分辨率表示的若干组图像块1220。需要说明的是,移动区域1218的高分辨率表示所产生的图像块比移动区域1218的低分辨率表示所产生的图像块明显更多。接下来,该若干组图像块1220由第一组cnn1208接收。基于硬件配置,第一级cnn1208可以顺序地、逐个图像块地处理该接收到的图像块1220;或者,并行处理多个图像块,以加快处理速度。

第一级cnn

第一级cnn1208用于处理每个接收到的图像块,该图像块对应于该移动区域1218的每个金字塔表示内的每个滑动窗口位置。图13示出了根据本申请所述的一些实施例,基于小规模硬件cnn模块的人脸检测和姿态角评估联合系统1200中的第一级cnn1208的示例性实施过程1300的框图。需要说明的,该示例性第一级cnn1300与图4所示的示例性第一级cnn400具有基本相同的结构,该第一级cnn1300包括两级conv和mp层,后接两个fc层。在一些实施例中,每一个conv层和fc层(除最后一个fc层外)均后接有relu层(图13中未示出)。示例性第一级cnn1300在每一层的设计参数与示例性第一级cnn400的对应参数基本相同。该示例性第一级1300采用的结构和参数满足一些小规模硬件cnn模块的限制条件,该小规模硬件cnn模块例如为hi3519内的内嵌硬件cnn模块,从而可由hi3519中的内嵌硬件cnn模块实现。然而,如上文所提到的,在其他实施过程中,该第一级cnn1208可以具有不同于示例性实施过程1300采用的对应参数值,采用不同的滤波器层数、滤波器和池化窗口尺寸以及fc层输出尺寸。

需要说明的是,第一级cnn1300的最后一个fc层,即fc(2)的输出为9×1向量。与第一级cnn1300不同的是,第一级cnn400的最后一个fc层,即fc(2)的输出为16×1向量。在该第一级cnn1300的9×1向量中,前两位输出用于生成人脸检测置信度指数,即人脸分类器;接下来四位输出为该图像块1302中的人脸的边界框坐标(如果该人脸分类器将该图像块1302划分为人脸);最后三位输出为该三个姿态角的评估值,即俯仰角、偏航角和翻转角。在一些实施例中,每个姿态角评估的范围为-90°至90°,其中全正面照下的三个姿态角均为0°。在一些实施例,该第一级cnn1300仅在该人脸检测和姿态角评估联合系统1200的训练阶段对具有相对较大姿态角(有时也被称为“硬姿态”)的训练人脸子集执行该姿态角评估。当将已训练的人脸检测和姿态评估联合系统1200应用于新的输入图像,用于人脸推理时,可以跳过该第一级cnn1300的姿态角评估,以提高整体处理速度。

如上文所述,为了消除第一级cnn1208对该已检测人脸的更多的“伪报警”,可以将一滤波器应用于检测输出处的人脸检测置信度指数。该滤波器仅保留人脸检测置信度指数大于阈值(例如,通常将阈值设定在0.5~0.7之间)的输入图像块。在一些实施例中,在第一级cnn1208中的最后一个fc层之后实现该滤波操作。此外,采用金字塔表示以及滑动窗口技术可以在输入图像的每个人脸周围生成多个交叠但不相同的边界框。在一些实施例中,对于每一个被第一级cnn1208划分为人脸的图像块,都会在初始输入图像1202中识别对应的图像区域。接下来,利用非极大值抑制(nms)技术合并那些高度重叠、实际与同一人脸相关的边界框。需要说明,该nms操作可以在前述对已检测人脸执行的过滤操作之后操作。此外,如在mtcnn中所描述的,在nms操作之后,剩余的边界框可以通过边界框回归运算被精准化,从而精确该边界框的位置。

第二级cnn

如上文所述,对于每一个由第一级cnn1208输出的边界框输出,都有一个位于并截取自初始输入视频图像/帧1202的对应的图像块,并且该被截取的图像块随后被重新设定尺寸为第二级cnn1210的用户指定的输入尺寸,该第二级cnn1210的用户指定的输入尺寸大于第一级cnn1208的输入尺寸。在一些实施例中,第二级cnn1210的输入尺寸为24×24。然而,也可以采用其他类似的尺寸(32×32),而非24×24。接下来,如图12所示,该第二级cnn1210处理每个重新设定尺寸的图像块1224。

图14示出了根据本申请描述的一些实施例,基于小规模硬件cnn模块的人脸检测和姿态角评估联合系统1200的第二级cnn1210的示例性实施过程1400的框图。需要说明的是,该示例性第二级cnn1400与图5所示的示例性第二级cnn500具有基本相同的结构。第二级cnn1400包括三级conv和mp层,后接两个fc层。在一些实施例中,每一个conv层和fc层(除最后一个fc层外)均后接有relu层(图14中未示出)。示例性第二级cnn1400中各层的设计参数与示例性第二级cnn500的对应参数基本相同。然而,在其他实施过程中,该第二级cnn1210可以具有不同于示例性第二级cnn1400采用的对应参数值,而采用不同的滤波器层数、滤波器和池化窗口尺寸以及fc层输出尺寸。

需要说明,相对于第一级cnn1300,第二级cnn1400采用更多的滤波器,并且第二级cnn1400中的fc层的尺寸也大于第一级cnn1300中的fc层的尺寸。然而,该第二级cnn1400采用的结构和参数依然满足一些小规模cnn模块的限制条件,其中该小规模cnn模块例如为hi3519中的内嵌式硬件cnn模块,因此可以由hi3519中的内嵌式硬件cnn模块实现该第二级cnn1400。还需要注意,因为hi3519可支持的最大输入尺寸为1280,因此该第二级cnn1400的输入为尺寸为24×24×1的单通道灰度图,而非尺寸为24×24×3的rgb图。然而实验表明,在第二级cnn1210采用灰度图而非彩色图带来的性能效果并不明显。

需要说明,第二级cnn1400的最后一个fc,即fc(2)的输出同样为9×1的向量,包括人脸分类器、该图像块1402中人脸的边界框坐标(如果该人脸分类器将该图像块1402划分为人脸)以及该三个姿态角。然而,由于第二级cnn1400的输入图像分辨率高于第一级cnn1300的输入图像分辨率,因此,该cnn1400比cnn1300更强大并且更复杂。该第二级cnn1400的人脸检测精确度也高于该第一级cnn1300的精确度。在一些实施例中,该第二级cnn1400仅在该人脸检测和姿态角评估联合系统1200的训练阶段对具有相对较大姿态角的训练人脸子集执行该姿态角评估。类似于上述示例性应用的第一级cnn1300,当将已训练的人脸检测和姿态评估联合系统1200应用于新的输入图像,用于人脸推理时,可以跳过该第二级cnn1400的姿态角评估,以提高整体处理速度。

类似于第一级cnn1300的输出采用的后处理步骤,可以采用置信度指数阈值和nms技术拒绝由第二级cnn1400生成的大部分候选人脸窗口,并且将这些高度重叠、实际与同一人脸相关的边界框合并。此外,在nms操作之后,可以通过边界框回归运算精准化剩余的候选人脸窗口,从而精确该候选人脸窗口的位置

第三级cnn

如上文所述,对于每一个由第二级cnn1210输出的候选人脸窗口,都有一个位于并截取自初始输入视频图像/帧1202的对应的图像块,并且该被截取的图像块随后被重新设定尺寸为具有用户指定的第三输入尺寸的图像块1228,其中该用户指定的第三输入尺寸大于第一级cnn1208和第二级cnn1210的输入尺寸,从而在该三个cnn级中的性能最好。在一些实施例中,该用户指定的第三输入尺寸为46×46。然而,也可以采用其他具有足够高的分辨率的可行尺寸,而非46×46。

理论上讲,第三级cnn1212以类似于第一级cnn1208和第二级cnn1210的方式处理该重新设定尺寸的输入图像块1228。例如,图15显示了根据文中描述的一些实施例的该人脸检测和姿态角评估联合系统1200的第三级cnn1212的理论实施过程1500的框图。需要说明,该理论第三级cnn1500具有与图6所示的第三级cnn600基本相同的结构,该理论第三级cnn1500包括三级conv和mp层,后接两个fc层。在一些实施例中,每一个conv层和fc层(除最后一个fc层外)均后接有relu层(图15中未示出)。该理论第三级cnn1500在每一层的设计参数与第三级cnn600的对应参数基本相同。然而,在其他实施过程中,该第三级cnn1212可以采用不同于示例性实施过程1500采用的对应参数值,而采用不同的滤波器层数、滤波器和池化窗口尺寸以及fc层输出尺寸。还需要说明的是,第三级cnn1500比第一组cnn1300和第二级cnn1400采用更多的滤波器,并且该第三级cnn1500的尺寸也大于该第一级cnn和第二级cnn的尺寸。

需要说明,第三级cnn1500的输入图像块1502(即图12中的其中一个重新设定尺寸的图像块1228)的尺寸为46×46×1=2116(即仅采用单一通道的灰度图),并且第三级cnn1500的最大输入尺寸有必要等于或大于2116。然而,对于如hi3519中内嵌硬件cnn模块的一些小规模cnn模块而言,输入图像块1502大于这些小规模cnn模块可支持的最大输入尺寸(例如对于hi3519而言为1280像素)。因此,如果该人脸检测和姿态角评估联合系统1200中的第三级cnn1212由如hi3519中内嵌硬件cnn模块的小规模cnn模块实现,则该理论第三级cnn1500仅可以在设计阶段使用,用于优化网络参数,而不可以在最终实施过程中实现第三级cnn1212。

为了解决上述问题,可以采用本申请的相关专利申请15/441,194和15/657,109中所描述的基于子图像的cnn系统和技术。更具体地,利用该基于子图像的cnn系统和技术,可以将该输入图像块1502划分为4个重叠的子图像。例如,图16示出了根据本申请描述的一些实施例中,46×46的图像块的示例性输入图像划分方案。从图16左侧可以看出,输入图像块1502可以划分为一组重叠的4个子图像或块,每个子图像或块的尺寸为30×30,并且在相邻的子图像之间具有16像素的偏移或步长。为了更好地使该四个子图像可视化,可以使用较小的人工补偿微调该四个子图像的重叠配置,从而可以更好地看到并且更容易区分该四个子图像。如上文所述,该输入图像尺寸为46×46,子图像尺寸为30×30,步长为16,但前述具体值均是基于相关专利申请15/441,194描述的划分标准而设计的,从而确保该4个子图像中的每个输出被合并后生成的输出等同于不使用该基于子图像的技术,由该第三级cnn1500将该输入图像块1502作为整体处理而生成的输出。然而,在一些实施例中,可以采用不同于该相关专利申请15/441,194中描述的划分标准,而采用其他的输入图像尺寸、子图像尺寸和步长中的一项或多项。

图17显示了根据本申请描述的一些实施例,基于小规模硬件cnn模块的人脸检测和姿态角评估联合系统1200的第三级cnn1212的示例性实施过程1700的框图。从图17中可以看出,第三级cnn1700包括输入模块1702,该输入模块1702接收该46×46的输入图像块1502,并将该图像块1502划分为四个尺寸为30×30的子图像1704,该30×30的尺寸小于hi3519中内嵌硬件cnn模块可支持的最大输入图像尺寸。第三级cnn1700还包括由三级conv和mp层构成的小规模cnn模块1706,该conv和mp层的参数与理论第三级cnn1500中的对应conv和mp层中的参数相同。该小规模cnn模块1706然后对每个30×30子图像1704进行处理,例如以顺序的方式处理。该小规模cnn模块1706对每个子图像1704的详细处理在上文已经描述。

每个子图像1704的输出包括50个2×2的特征图1708。如上文所述,该4个子图像的输出没有重叠部分或者间隙,并且可在理论第三级cnn1500的mp(3)层之后、fc(1)层之前直接被合并以获得相同的输出。在一些实施例中,该合并结果为一组数量为50的2×2特征图,其中一个特征图显示在图16的右侧部分。

需要说明,第三级cnn1700的输入尺寸不一定为46×46。可以满足相关专利申请15/441,194和15/657,109中描述的划分标准的其他可行尺寸可以作为第三级cnn1700的输入图像尺寸。例如,该第三组cnn1700的其他可行输入图像尺寸可以为62×62。利用该图像尺寸,可以将输入图像块1502划分为9个重叠的子图像,其中每个子图像的尺寸为30×30,相邻子图像在横向和纵向方向的步长均为16。

最终决策

图18示出了根据本申请一些实施例,该人脸检测和姿态角评估联合系统1200中的最终决策模块1214的示例性实施过程1800的框图。从图18中可以看出,该示例性最终决策模块1800包括合并模块1802和输出模块1804。合并模块1802用于将第三级cnn1700的输出1702(即4个2×2×50的特征图)转换为4个200×1的向量1806。对应于该4个子图像的四个向量1806随后由串联模块1808合并,形成尺寸为800×1的一维(1d)向量1810。该1d向量1810随后由两个fc层,即fc(1)和fc(2)层处理,从而生成1个二元人脸分类器1812、4个边界框坐标以及3个头部姿态角1816。

需要说明,由于这些操作与卷积操作相比具有非常低的计算复杂度,因此可以由软件实现,并由hi3519soc上的cpu处理该合并模块1802和输出模块1804。在一些实施例中,可以利用设置在hi3519soc上的armneon指令进一步加快该合并模块1802和决策模块1804的操作。需要说明的是,虽然图中示出的fc(1)层的尺寸为256,然而在不背离本申请要求保护的技术范围的前提下,本申请提出的人脸检测和姿态角评估联合系统还可以采用其他的fc(1)尺寸。

在一些基于视频的应用中,需要采用人脸跟踪机制,在多个视频帧中跟踪某一特定人,并从该同一特定人在很多不同姿态中选择该人的最佳姿态。在一些实施例中,该人脸检测和姿态角评估联合系统1200中的最佳姿态生成模块1230基于该人在不同视频帧中的多个已检测人脸相关的多个姿态角评估,确定一特定人的最佳姿态。在一些实施例中,可以将该最佳姿态定义为很多已检测人脸中相对于全正面方向(即零旋转姿态)具有最小整体旋转度的人脸方向。采用该所描述的基于角度的姿态评估,可以将该最佳姿态角表示为该三个评估姿态角的绝对值的和,即|θy|+|θp|+|θr|,其中,θy,θp和θr分别表示已检测人脸的俯仰角、偏航角和翻转角。因此,可以将包含该特定人的所有视频帧中,|θy|+|θp|+|θr|的值最小的已检测人脸确定为该特定人的已检测人脸。需要说明,相对于基于人脸关键点的姿态评估技术而言,采用上述最佳姿态的定义,可以使本申请公开的基于角度的姿态评估技术更加简化。

可以理解,对于联合执行人脸检测和姿态角评估(在一些多任务设计实施例中,还可以结合人脸关键点定位)的多级多任务cnn系统中,在最终cnn级中处理高分辨率或超高分辨率输入图像,以提高最终预测和决策精确度是有益的。该基于子图像的技术可以在最终cnn级处理非常大的输入图像,而无需担心用于实现该最终cnn级1212的硬件cnn模块的限制。如上文所描述的,联合执行多个人脸检测任务(例如联合执行人脸检测和姿态评估)是有益的,因为相对于单任务系统,这可以提高人脸检测准确度。然而,多任务cnn系统通常需要高分辨率图像,用于训练,并用于更准确的预测,这进而需要更复杂和昂贵的cnn架构。本申请提出的多任务cnn系统,例如与基于子图像的技术相结合的系统1200可以实现利用小规模低成本cnn模块对高分辨率图像执行人脸检测和人脸识别多任务,并生成预测结果,其中该预测结果的准确度等同于采用更复杂并且更昂贵的cnn模块和系统生成的预测结果。

图19示出了根据本申请描述的一些实施例,利用本申请提出的多任务cnn系统1200执行人脸检测和姿态角评估的示例性过程1900的流程图。该过程1900首先在一序列已获取视频帧中接收视频图像(步骤1902)。在一些实施例中,由高分辨率摄像头获取该组视频帧,该摄像头例如为监控摄像头、机器视觉摄像头、自驾车上的摄像头或者移动手机摄像头。接下来,过程1900对该视频图像进行处理,以在该视频图像中生成一组候选人脸图像(步骤1904)。在一些实施例中,对该视频图像进行处理包括采用上文描述的金字塔式多分辨率表示的视频图像和滑动窗口方法。在一些实施例中,每一组候选人脸图像由边界框限定。在一些实施例中,每个候选人脸图像的尺寸均大于该多任务cnn系统1200内的小规模硬件cnn模块可支持的最大输入尺寸。接下来,对于每个候选人脸图像,该过程1900将该候选人脸图像划分为一组具有较小图像尺寸的子图像(步骤1906)。更具体地,该组子图像的尺寸小于该多任务cnn系统1200内的小规模硬件cnn模块可支持的最大输入尺寸。接下来,该组子图像随后由该小规模cnn模块处理,以生成特征图阵列(步骤1908)。在一些实施例中,利用该小规模硬件cnn模块处理每个子图像包括将多级conv层和mp层应用于该子图像。

接下来,由该小规模硬件cnn模块输出的特征图阵列为一组合并特征图(步骤1910)。更具体地,该组合并特征图等同于不进行划分而对整个输入人脸图像进行处理的大规模cnn模块生成的完整的特征图。接下来,决策模块处理该组合并特征图,从而为该候选输入人脸图像生成人脸分类器和三个姿态角评估(步骤1912)。

图20描述了根据本申请一些实施例的示例性嵌入式系统2000,其中本申请公开的人脸检测和姿态角评估联合系统在该示例性嵌入式系统2000中实现。嵌入式系统2000可整合或实现为监控摄像头、机器视觉摄像头、无人机、机器人,或自动驾驶汽车。在图20中可以看出,嵌入式系统2000可包括总线2002、处理器2004、存储器2006、存储装置2008、摄像头系统2010、cnn子系统2012、输出装置接口2014,以及网络接口2016。

总线2002集中表示可连接嵌入式系统2000的各种组件的所有系统、外围装置以及芯片组总线。例如,总线2002可将处理器2004与存储器2006、存储装置2008、摄像头系统2010、cnn子系统2012、输出装置接口2014,以及网络接口2016通信连接。

处理器2004从存储器2006取回指令予以执行并取回数据予以处理,以便控制嵌入式系统2000的各种组件。处理器2004可以包括任何类型的处理器,包括但不仅限于微处理器、大规模计算机、数字信号处理器、电子记事簿、装置控制器和电器内的计算引擎,以及现在已知或以后开发的任何其他处理器。进一步地,处理器2004可包括一个或多个核。处理器2004本身可包括存储代码以及数据供处理器2004执行的高速缓存。

存储器2006可包括可以存储代码以及数据供处理器2004执行的任何类型的存储器。这包括但不仅限于动态随机存取存储器(dram)、静态随机存取存储器(sram)、闪存、只读存储器(rom),以及现在已知或以后开发的任何其他类型的存储器。

存储装置2008可包括可以与嵌入式系统2000集成的任何类型的非易失性存储器装置。这包括但不限于磁性、光学,以及磁光存储装置,以及基于闪存和/或带蓄电池后备电源的存储器的存储装置。

总线2002还连接到摄像头系统2010。该摄像头系统2010被配置成以预定的分辨率采集静止图像和/或视频图像,并通过总线2002,将采集到的图像或视频数据传送到嵌入式系统2000内的各种组件,诸如连接到存储器2006供缓冲,并连接到cnn子系统2012供进行dl人脸检测和姿态角评估。摄像头系统2010可以包括一个或多个数字摄像头。在一些实施例中,摄像头系统2010是配备有广角镜头的数字摄像头。由摄像头系统2010采集到的图像可以具有不同的分辨率,包括高分辨率,诸如1280×720p,1920×1080p或其他高分辨率。

在一些实施例中,cnn子系统2012还包括人脸检测和姿态角评估联合子系统2018。cnn子系统2012用于接收获取的视频图像,如通过总线2002获取的高分辨率视频图像,并利用人脸检测和姿态角评估子系统2018,在接收到的视频图像中联合执行前述人脸检测和姿态角评估操作,以在每个视频图像内检测人脸,并为每个已检测人脸生成头部姿态角评估。特别地,cnn子系统2012可包括一个或多个小规模硬件cnn模块。例如,cnn子系统2012可包括一个或多个hi3519片上系统,其中每个hi3519片上系统均包括内嵌硬件cnn和可执行软件cnn功能的cpu。在一些实施例中,cnn子系统2012根据本申请公开的人脸检测系统300和人脸检测和姿态角评估联合系统1200的其中一个实施例实现功能。

输出装置接口2014也连接到总线2002,所述输出装置接口2014例如可以显示由cnn子系统2012所生成的结果。与输出装置接口2014一起使用的输出装置包括如打印机和显示装置,诸如阴极射线管显示器(crt)、发光二极管显示器(led)、液晶显示器(lcd),有机发光二极管显示器(oled)、等离子体显示器,或电子纸。

最后,如图20所示,总线2002还通过网络接口2016将嵌入式系统2000连接到网络(未示出)。如此,嵌入式系统2000可以是网络(诸如局域网(“lan”)、广域网(“wan”),或内联网,或网络的网络,诸如因特网)的一部分。在一些实施例中,cnn子系统2012用于通过网络接口2016向服务器发送一已检测人脸,其中该已检测人脸为一给定人的多个已检测人脸中被该人脸检测和姿态角评估子系统2018确定为具有最佳姿态的人脸。嵌入式系统2000的任何或所有组件都可以与本公开主题一起使用。

这里所公开的各实施例所描述的各种说明性逻辑块、模块,电路、以及算法步骤,可以作为电子硬件、计算机软件或两者的组合来实现。为清楚地显示硬件和软件的此互换性,上文已经一般就其功能而言描述了各种说明性组件、单元、模块、电路,以及步骤。此类功能集是被实现为硬件还是软件取决于具体应用和整体系统的设计约束。技术人员可针对每种特定应用以不同方式来实现所描述的功能集,但此类设计决策不应被解释为能够脱离本公开的范围。

用于实现与本文所公开的各方面一起所描述的各种说明性逻辑、逻辑块、模块、以及电路的硬件可以与通用处理器、数字信号处理器(dsp)、专用集成电路(asic)、场可编程门阵列(fpga)或其他可编程逻辑器件,单独的栅极或晶体管逻辑、单独的硬件组件,或被设计为执行本文所描述的功能的其任何组合,来实现或执行。通用处理器可以是微处理器,但是在备选方案中,处理器可以是任何常规的处理器、控制器、微控制器或状态机。处理器也可以作为接收器装置的组合来实现,例如,dsp和微处理器的组合、多个微处理器、和dsp核一起的一个或多个微处理器,或任何其他这样的配置。可另选地,一些步骤或方法可以由给定功能特定的电路来执行。

在一个或更多示例性方面,所描述的功能可以以硬件、软件、固件,或其任何组合来实现。如果以软件来实现,则功能可以作为一个或多个指令或代码存储在非暂态的计算机可读取的存储介质上或非暂态的处理器可读取的存储介质上。本文所公开的方法或算法的步骤可以以能够驻留在非暂态的计算机可读取的或处理器可读取的存储介质上的处理器可执行指令来具体化。非暂态的计算机可读取的或处理器可读取的存储介质可以是能够被计算机或处理器访问的任何存储介质。作为示例但不作为限制,这样的非暂态的计算机可读取的或处理器可读取的存储介质可包括ram、rom、eeprom、闪存、cd-rom或其他光盘存储器、磁盘存储器或其他磁存储装置,或可以用来存储指令或数据结构形式的所需要的程序代码并可以被计算机访问的任何其他介质。如本文所使用的磁盘和光盘包括压缩光盘(cd)、激光盘、光盘、数字多功能盘(dvd)、软盘,以及蓝光盘,其中,磁盘通常以磁性方式再现数据,而光盘利用激光以光学方式再现数据。上述各项的组合也包括在非暂态的计算机可读取的和处理器可读取的介质的范围内。另外,方法或算法的操作可以作为一个代码和/或指令或代码和/或指令的任何组合或组,驻留在非暂态的处理器可读取的存储介质和/或计算机可读取的存储介质上,存储介质可以被包括到计算机程序产品中。

尽管本专利文件包含许多细节,但是,这些不应该被解释为对任何所公开的技术的或要求保护的东西的范围的限制,而是作为对特定的技术的特定实施例的特定的特征的描述。在本专利文件中在单独的实施例的上下文中所描述的某些特征也可以在单一实施例中组合地实现。相反,在单一实施例的上下文中所描述的各种特征也可以单独地或以任何合适的子组合在多个实施例中实现。此外,虽然特征在上文可以被描述为以某些组合地起作用,甚至最初要求如此,来自要求保护的组合的一个或多个特征可以在某些情况下从组合中删除,要求保护的组合可以被定向到子组合或子组合的变体。

类似地,尽管操作在附图中是按特定顺序描绘的,但是,这不应该被理解为要求这样的操作以所示出的特定顺序或按先后顺序执行,或所有所示出的操作都被执行,以实现所需要的结果。此外,在本专利文件中所描述的各实施例中的各种系统组件的分离不应该被理解为在所有实施例中都要求这样的分离。

本专利文件只描述了几个实现和示例,可以基于在本专利文件中所描述的和示出的内容作出其他实现、增强和变化。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1