掌桥专利:专业的专利平台
掌桥专利
首页

一种异构计算场景下的人脸识别方法及系统

文献发布时间:2024-04-18 19:58:26


一种异构计算场景下的人脸识别方法及系统

技术领域

本申请涉及人脸识别技术领域,尤其涉及一种异构计算场景下的人脸识别方法及系统。

背景技术

人脸识别技术,是一种从场景图像中识别出人脸目标、无接触地完成用户身份登记与验证的技术,其广泛应用于金融、司法、军队、公安、边检、政府、航天、电力、工厂、教育、医疗及众多企事业单位等众多领域。

为提高人脸识别精度,目前普遍采用基于深度神经网络的人脸识别技术。深度神经网络在提高人脸识别精度、降低系统时延有较好效果,但由于其涉及大量浮点值计算、矩阵乘法、向量值等操作,需要处理的数据规模极其庞大,且随着其学习层次的深入,计算呈现指数级增长趋势。

目前,人脸识别技术发展出越来越大的模型规模和复杂的模型结构,需要巨大的计算和内存资源;但某些应用场景具有严格的功耗限制,例如智能汽车,移动终端等等。因此,人脸识别技术在精度要求和功耗限制之间存在着权衡的困难。

发明内容

本发明提供了一种异构计算场景下的人脸识别方法及系统,以解决或者部分解决无法权衡人脸识别技术的精度要求和功耗限制需求的技术问题。

为解决上述技术问题,本发明的第一方面,公开了一种异构计算场景下的人脸识别系统,所述人脸识别系统包括:中央处理器、辅助处理器以及M个计算节点,M≥1且为正整数;其中,所述中央处理器与M个计算节点间通过所述辅助处理器实现隔离解耦;

所述中央处理器,用于执行系统初始化操作,确定出人脸识别的程序执行顺序,以及采集场景图像帧序列;

其中,所述中央处理器在系统初始化操作时具体包括:

读取模块,用于读取M个计算节点对应的模型分发信息;

分段量化模块,用于根据所述模型分发信息对人脸识别网络模型拆分、分段量化以得到N个可部署子文件;其中,1≤N≤M,N为正整数;

模型分发模块,用于将所述N个可部署子文件分配至对应计算节点中;

融合模块,用于将M个计算节点的流动顺序和人脸识别顺序进行融合,得到所述程序执行顺序;

所述辅助处理器,用于从所述中央处理器接收所述场景图像帧序列;按照所述程序执行顺序控制所述M个计算节点并行处理所述场景图像帧序列,得到所述场景图像帧序列对应的人脸特征数据;

所述中央处理器,还用于将所述人脸特征数据与人脸数据库中的已注册人脸数据进行比对,得到人脸识别结果。

可选的,所述模型分发信息参考计算节点的算力信息生成。

可选的,所述分段量化模块,具体用于执行下述操作:

构建所述人脸识别网络模型;

根据所述模型分发信息将所述人脸识别网络模型拆分为N个子模型;所述N个子模型对应有处理顺序;

对每个子模型创建量化器和校准器;

基于所述N个子模型对应的量化器和校准器,对所述N个子模型进行分段量化,得到N个量化子模型;

按照对应计算节点所需格式对所述N个量化子模型进行后处理,得到N个可部署子文件。

可选的,所述分段量化模块,具体还用于:

利用当前子模型的校准器加载当前校准数据;其中,所述当前校准数据由上一级子模型量化后输出;

将所述当前校准数据输入所述当前子模型,根据前向传播结果调整当前量化器的量化参数,得到当前量化子模型的同时,将当前量化器的量化输出作为下一级子模型的校准数据输入下一级子模型处理,直至所有子模型遍历完毕。

可选的,所述系统还包括:拼接模块,用于在基于所述N个子模型对应的量化器和校准器,对所述N个子模型进行分段量化,得到N个量化子模型之前,执行下述操作:

将所述N个子模型对应的量化器和校准器拼接在对应子模型中,形成N个串联模型;

按照所述处理顺序对所述N个串联模型相互进行拼接,得到拼接模型。

可选的,所述中央处理器,具体包括:采集模块,用于采集所述场景图像帧序列;编码模块,用于将所述场景图像帧序列以进制数方式进行编码,得到编码数据;

所述辅助处理器,具体包括:接收模块,用于从所述中央处理器接收所述编码数据;解码模块,用于对所述编码模块进行解码,得到所述场景图像帧序列。

可选的,所述系统还包括:通信模块,用于所述中央处理器与所述辅助处理器间的数据交互,交互的数据包括指令数据和编码数据。

可选的,所述辅助处理器,具体还包括:控制模块,用于结合程序执行顺序和各计算节点所需处理时间依序输入所述场景图像帧序列中的各图像帧,以使所述M个计算节点并行处理所述各图像帧,得到所述各图像帧对应的人脸特征数据。

可选的,所述系统还包括:公共缓存,用于存储所述中央处理器传输的所述场景图像帧序列,以及所述辅助处理器传输的人脸特征数据。

本发明的第二方面,公开了一种异构计算场景下的人脸识别方法,其特征在于,所述人脸识别方法应用于人脸识别系统,人脸识别系统包括:中央处理器、辅助处理器以及M个计算节点,M≥1且为正整数;其中,所述中央处理器与M个计算节点间通过所述辅助处理器实现隔离解耦;

所述人脸识别方法包括:

利用所述中央处理器执行系统初始化操作,确定出人脸识别的程序执行顺序,以及采集场景图像帧序列;

其中,所述系统初始化操作包括:

读取M个计算节点对应的模型分发信息;根据所述模型分发信息对人脸识别网络模型分段量化成N个可部署子文件;将所述N个可部署子文件分配至对应计算节点中;其中,1≤N≤M,N为正整数;将M个计算节点的流动顺序和人脸识别顺序进行融合,得到所述程序执行顺序;其中,1≤N≤M,N为正整数;

利用所述辅助处理器从所述中央处理器接收所述场景图像帧序列;按照所述程序执行顺序控制所述M个计算节点并行处理所述场景图像帧序列,得到所述场景图像帧序列对应的人脸特征数据;

利用所述中央处理器将所述人脸特征数据与人脸数据库中的已注册人脸数据进行比对,得到人脸识别结果。

可选的,所述模型分发信息参考计算节点的算力信息生成。

可选的,所述根据所述模型分发信息对人脸识别网络模型分段量化成N个可部署子文件,具体包括:

构建所述人脸识别网络模型;

根据所述模型分发信息将所述人脸识别网络模型拆分为N个子模型;所述N个子模型对应有处理顺序;

对每个子模型创建量化器和校准器;

基于所述N个子模型对应的量化器和校准器,对所述N个子模型进行分段量化,得到N个量化子模型;

按照对应计算节点所需格式对所述N个量化子模型进行后处理,得到N个可部署子文件。

可选的,所述基于所述N个子模型对应的量化器和校准器,对所述N个子模型进行分段量化,得到N个量化子模型,具体包括:

利用当前子模型的校准器加载当前校准数据;其中,所述当前校准数据由上一级子模型量化后输出;

将所述当前校准数据输入所述当前子模型,根据前向传播结果调整当前量化器的量化参数,得到当前量化子模型的同时,将当前量化器的量化输出作为下一级子模型的校准数据输入下一级子模型处理,直至所有子模型遍历完毕。

可选的,所述在基于所述N个子模型对应的量化器和校准器,对所述N个子模型进行分段量化,得到N个量化子模型之前,所述方法还包括:

将所述N个子模型对应的量化器和校准器拼接在对应子模型中,形成N个串联模型;

按照所述处理顺序对所述N个串联模型相互进行拼接,得到拼接模型。

可选的,在所述中央处理器中,所述采集场景图像帧序列,具体包括:

采集所述场景图像帧序列;

将所述场景图像帧序列以进制数方式进行编码,得到编码数据;

在所述辅助处理器中,所述从所述中央处理器接收所述场景图像帧序列,具体包括:

从所述中央处理器接收所述编码数据;

对所述编码模块进行解码,得到所述场景图像帧序列。

可选的,所述方法还包括:利用通信模块支持所述中央处理器与所述辅助处理器间的数据交互,交互的数据包括指令数据和编码数据。

可选的,所述按照所述程序执行顺序控制所述M个计算节点并行处理所述场景图像帧序列,得到所述场景图像帧序列对应的人脸特征数据,具体包括:控制模块,用于结合程序执行顺序和各计算节点所需处理时间依序输入所述场景图像帧序列中的各图像帧,以使所述M个计算节点并行处理所述各图像帧,得到所述各图像帧对应的人脸特征数据。

可选的,所述方法还包括:利用公共缓存存储所述中央处理器传输的所述场景图像帧序列,以及所述辅助处理器传输的人脸特征数据。

通过本发明的一个或者多个技术方案,本发明具有以下有益效果或者优点:

本发明公开的技术方案,利用中央处理器、辅助处理器和M个计算节点构成异构计算场景;其中,助处理器102可实现中央处理器101与M个计算节点间的隔离解耦,中央处理器无法直接访问M个计算节点,使得指令执行、模型计算操作能够实现硬件层面的分离操作,从而提升硬件灵活性;在此基础上,利用模型分段量化的方式将人脸识别采用的一个浮点模型按需量化为多个量化子模型,相较于原模型可节约65.71%的存储空间,而精度仅下降0.71%,能够较好的平衡人脸识别技术的精度要求和功耗限制需求。此外,利用辅助处理器控制M个计算节点并行处理场景图像帧序列,能够加速程序运行速度,提升硬件资源利用率,使人脸识别速率达到14帧/s。

上述说明仅是本发明技术方案的概述,为了能够更清楚了解本发明的技术手段,而可依照说明书的内容予以实施,并且为了让本发明的上述和其它目的、特征和优点能够更明显易懂,以下特举本发明的具体实施方式。

附图说明

通过阅读下文优选实施方式的详细描述,各种其他的优点和益处对于本领域普通技术人员将变得清楚明了。附图仅用于示出优选实施方式的目的,而并不认为是对本发明的限制。而且在整个附图中,用相同的参考符号表示相同的部件。

在附图中:

图1示出了根据本发明一个实施例的异构计算场景下的人脸识别系统的结构示意图;

图2示出了根据本发明一个实施例的分段量化模块的实施过程图;

图3示出了根据本发明一个实施例的是拼接模型的示意图;

图4示出了根据本发明一个实施例的编码数据的结构示意图;

图5示出了根据本发明一个实施例的数据帧的实例图;

图6示出了根据本发明一个实施例的各计算节点进程并行处理场景图像帧序列的示意图;

图7示出了根据本发明一个实施例的人脸识别网络模型的拆分示意图;

图8示出了根据本发明一个实施例的人脸识别网络模型的结构部署示意图;

图9示出了根据本发明一个实施例的并行处理场景图像帧序列的实施示意图

图10示出了根据本发明一个实施例的人脸识别方法流程图。

具体实施方式

下面将参照附图更详细地描述本发明的示例性实施例。虽然附图中显示了本发明的示例性实施例,然而应当理解,可以以各种形式实现本发明而不应被这里阐述的实施例所限制。相反,提供这些实施例是为了能够更透彻地理解本发明,并且能够将本发明的范围完整的传达给本领域的技术人员。

为了权衡人脸识别技术的精度要求和功耗限制需求,本发明公开了一种异构计算场景下的人脸识别系统。“异构计算”,是指在系统中使用不同体系结构的处理器组成的联合计算方式。参看图1,是异构计算场景下的人脸识别系统的结构示意图,包括:中央处理器101、辅助处理器102以及M个计算节点,M≥1且为正整数。M个计算节点在图1中示例为计算节点1、计算节点2、计算节点3……计算节点M。此外,为了支持传输和存储,人脸识别系统还配置了通信模块103和存储介质104。

中央处理器101,负责将人脸识别网络模型分段量化和分配、输入数据预处理、人脸比对以及与摄像头等外设的连接。

通信模块103,至少支持串口和网络两种传输方式,负责中央处理器101与辅助处理器102间的数据交互,数据包括指令数据和图像数据。通信模块103在中央处理器101端采用软件编程的方法实现,通信模块103在辅助处理器102端使用硬件描述语言实现,在软件层面和硬件层面均适用。

存储介质104,包括内存和缓存。存储介质104作为公共缓存区,用以存储中央处理器101采集的场景图像帧序列、辅助处理器102处理得到的人脸特征数据。

M个计算节点,指用于部署人脸识别网络模型分段量化后得到的可部署子文件、并参与可部署子文件中的模型计算的计算设备。计算节点具体是CPU、GPU、FPGA电路、存算一体化芯片等硬件。每个计算节点至少需提供一个描述该节点硬件信息的驱动程序。

辅助处理器102,负责数据接收与解码、作业分发、收集、处理各计算节点的输出并写入公共缓存区。

本实施例的辅助处理器102可实现中央处理器101与M个计算节点间的隔离解耦,也即:中央处理器101无法直接访问M个计算节点,需通过辅助处理器102间接访问,且数据交互、数据存储也依赖通信模块103和存储介质104中转,不会在辅助处理器102和中央处理器101之间直接传输。因此,本实施例的中央处理器101、辅助处理器102、M个计算节点、通信模块103和存储介质104构成了人脸识别的异构计算场景,使得指令执行、模型计算、存储等操作均能够实现分离式操作。

在本发明的硬件结构中,一方面借鉴了异构计算的技术构思,将人脸识别技术分配在中央处理器101、辅助处理器102、M个计算节点联合处理,并利用辅助处理器102隔离中央处理器101与M个计算节点,从硬件层面上解耦系统架构,从而实现指令执行、模型计算、存储等操作在硬件层面上的分离,提升系统架构在硬件层面的灵活度。另一方面利用模型分段量化的方式将一个浮点模型(也即:人脸识别网络模型)量化为N个可部署子文件,相较于量化前的人脸识别网络模型可节约65.71%的存储空间,其精度仅比原模型下降0.71%;将N个可部署子文件分配在M个不同的计算节点中并配置有程序执行顺序,利用辅助处理器102控制M个计算节点并行处理场景图像帧序列,从而提取出人脸特征数据进行识别,能够很好地兼顾人脸识别技术的精度要求和功耗限制需求。

为了便于说明和解释本发明,下面在图1的基础上,具体介绍各部件的实施原理。

中央处理器101,用于执行系统初始化操作,确定出人脸识别的程序执行顺序;与摄像头等外接设备连接的基础上采集场景图像帧序列;场景图像帧序列的预处理和编码,并将编码数据利用通信模块103分别发送至辅助处理器102和公共缓存区;当辅助处理器102基于编码数据识别出人脸特征数据并上传至公共缓存区后,中央处理器101还用于从公共缓存区提取出人脸特征数据,读取人脸库数据,与人脸数据库中的已注册人脸数据进行比对,得到人脸识别结果。

其中,中央处理器101参照可配置文件实施系统初始化。在执行系统初始化操作时具体包括:读取模块1011,分段量化模块1012,模型分发模块1013,融合模块1014,示例图参看图1。

读取模块1011,用于获取节点信息。节点信息包括:参与分配的计算节点数量M;M个计算节点各自的节点类型,例如ONNX格式、C语言格式等等;M个计算节点对应的模型分发信息,模型分发信息参考计算节点的算力信息生成,决定了参与分配的计算节点数量M,人脸识别网络模型的拆分方式,以及M个计算节点和模型分段量化后得到的N个可部署子文件的分发映射关系。可部署子文件和计算节点的分发映射关系为一对一或多对一。若计算节点算力充足,多个可部署子文件可同时部署在同一个计算节点中。

分段量化模块1012,用于根据模型分发信息对人脸识别网络模型拆分、分段量化以得到N个可部署子文件。其中,1≤N≤M,N为正整数。

参看图2,分段量化模块1012,具体用于执行下述操作:

S201,构建人脸识别网络模型。

构建流程按照下述方式实施:参考深度学习网络架构构建人脸识别的基础模型。从可配置文件中加载相关权重。执行模型优化,例如算子融合和各层名称简化;其中,算子融合也称符算融合,通过将多个算子合并为一个更大的算子,以减少计算和内存访问的开销,如卷积计算和激活函数融合、卷积和批归一化融合等等。获取模型摘要,即可得到人脸识别网络模型。

构建出的人脸识别网络模型主要包含两部分:人脸检测模型和人脸特征提取模型。两部分模型可独立进行拆分、分段量化操作,也可以共同进行拆分、分段量化操作。

S202,根据模型分发信息将人脸识别网络模型拆分为N个子模型。

其中,人脸识别网络模型主要按照模块、层、通道进行拆分。模块用于表征人脸检测模型、人脸特征提取模型。层用于表征人脸识别网络模型内部的相关处理层,例如卷积层、池化层等等;对分组卷积、逐层卷积的拆分可减少参数量与计算量。通道代表相关层内的输入通道数,通道拆分指将相关层内的输入通拆分成多个通道;例如,将卷积层的输入通道数拆分成多个通道,每个通道只处理输入通道中的一部分,从而增加计算的并行度,减少时延。值得注意的是,模型内部的最小拆分单位是权重值。

模型的拆分方式取决于计算节点的算力,以便充分利用计算节点的算力资源。例如,若各计算节点算力不足,可将模型按照“层”拆分,每个计算节点分配模型的一层卷积层。若某计算节点算力充足,可将人脸检测模型整体分配至该计算节点,人脸特征提取模型按照其他计算节点的算力进行层、通道、权重值的适应性拆分。后续会示例性的举例说明拆分后的模型结构,在此不再赘述。

模型拆分成N个子模型后,N个子模型之间具有处理顺序,可据此构建出人脸识别网络模型的模型计算图。模型计算图是一种模型结构文件,配置有人脸识别网络模型的层次结构,根据模型结构计算图可获知M个计算节点之间的流动顺序。

在模型拆分后,即可实施后续的分段量化操作,参看S203~S204。

分段量化,指按照拆分所得N个子模型的处理顺序,依序对各子模型进行量化处理的一种操作方式,上一级子模型的量化输出结果作为下一级的子模型的校准输入。

S203,对每个子模型创建量化器和校准器。

在本实施例中,采用静态量化方式,结合校准器提供校准数据进行量化。具体的,为每个子模型创建量化器和校准器。量化器指用于执行模型量化操作的程序对象,将模型相关数据从浮点表示转换为较低精度表示,例如网络参数、激活函数等模型相关数据。校准器指用于执行校准数据载入操作的程序对象。N个子模型的量化器可以相同也可以不同,N个子模型的校准器与前一级子模型的量化输出有关。例如,首个子模型的校准器载入预处理后的图像数据,后一级子模型的校准器载入的是首个子模型量化输出的特征图数据。

在一种可选的实施过程中,参看图3,是拼接模型的示意图。为每个子模型创建量化器和校准器之后,将N个子模型对应的量化器和校准器拼接在对应子模型中,形成N个串联模型;按照处理顺序对N个串联模型相互进行拼接,得到拼接模型。例如,人脸识别网络模型拆分为子模型1、子模型2……子模型N。子模型1具有对应的量化器1和校准器1,子模型2具有对应的量化器2和校准器2……子模型N具有对应的量化器N和校准器N。在拼接时,按照上述方式拼接为图3所示的拼接模型。拼接的主要目的,是为了将量化器与校准模块插入对应子模型中,拼接模型中含有各子模型的处理顺序,一次分段量化操作即可生成N个量化子模型。

S204,基于N个子模型对应的量化器和校准器,对N个子模型进行分段量化,得到N个量化子模型。

在量化时,按照N个子模型的处理顺序依序量化,上一级子模型的量化输出作为下一级子模型的量化输入。

具体的,利用当前子模型的校准器加载当前校准数据。其中,当前校准数据由上一级子模型量化后输出;将当前校准数据输入当前子模型,根据前向传播结果调整当前量化器的量化参数,以使当前量化子模型进行图像处理得到的输出尽可能接近校准前浮点模型得到的输出。在得到当前量化子模型的同时,将当前子模型的量化输出作为下一级子模型的的校准数据输入下一级子模型处理,用以调整下一级子模型的量化参数从而输出下一级量化子模型……以此类推直至所有子模型遍历完毕。

分段量化支持PyTorch、Xilinx Brevitas、Vitis Ai等多框架同时量化,一次分段量化即可得到所需的多个量化子模型。

当所有子模型遍历完毕后,可循环执行步骤204直至满足分段量化的循环迭代次数。

进一步的,在量化完毕后,可利用测试数据集对量化后各模型进行测试,以提升图像数据的准确率。

以图3为例,校准数据1输入拼接模型中的子模型1,在量化器1量化时,校准器1基于校准数据1,使用前向传播结果调整量化器1中的量化参数:量化零点z和量化因子s,直至精度满足要求,量化后可得量化子模型1。量化的通用理论公式如下:

S205,按照对应计算节点所需格式对N个量化子模型进行后处理,得到N个可部署子文件。

后处理,指是根据不同计算节点所需格式进行格式转换。例如,计算节点1所需为ONNX文件,对子模型进行格式转换导出ONNX文件;计算节点2所需为C语言格式文件,对子模型进行格式转换导出C语言可识别的二进制文件。

模型分发模块1013,用于将N个可部署子文件分配至对应计算节点中。

具体的,在得到N个可部署子文件之后,按照分发映射关系将N个可部署子文件分配至对应的计算节点中。分配之后,根据N个可部署子文件的处理顺序,M个计算节点具有对应的流动顺序。值得注意的是,模型计算时的部分权重值若保持不变,可直接写死在计算节点中使用。

融合模块1014,用于将M个计算节点的流动顺序和人脸识别顺序进行融合,得到程序执行顺序。

人脸识别顺序,包括人脸检测、人脸对齐、特征提取和人脸比对。将M个计算节点之间的流动顺序按照人脸识别顺序进行排序,即可得到程序执行顺序。

以上是系统初始化的具体实施过程。

中央处理器101在采集场景图像帧序列时,具体包括:

采集模块1015,用于采集场景图像帧序列。

编码模块1016,用于将场景图像帧序列以进制数方式进行编码,得到编码数据。

具体的,场景图像帧序列包括多帧实时场景图像的数据帧,其长短取决于采集模块1015的采集能力,通常为30帧/s。当采集到场景图像帧序列之后,对每帧场景图像进行伽马变换、尺度变换、归一化、数据量化(量化为INT8),得到预设尺寸的图像数据。

在预处理后,对场景图像帧序列进行编码处理。以单帧场景图像为例,得到的编码数据包括报文头和数据位两部分。如图4所示,是编码数据的结构示意图。报文头包括:报文接收端的硬件地址、报文发送端的硬件地址和传输协议;数据位由单帧场景图像的编码值组成。其中硬件地址占用12字节,传输协议占用2字节,数据位字节大小与需传输的数据长度有关。

在编码时,首先按照进制数方式对单帧场景图像进行转换,例如转换为16进制表示;转换后的进制数数据与报文头拼接,得到报文,也称之为数据帧;将数据帧转换为预设格式,例如Bytes类型,得到编码数据。如图5所示,是数据帧的实例图。

对场景图像帧序列均执行编码操作,得到对应的编码数据。场景图像帧序列对应的编码数据通过通讯模块传输至辅助处理器102。

在本实施例中,利用通信模块103支持传输编码数据,通过编解码方式减少数据帧长度,从而实现数据的快速传输。

辅助处理器102,用于从中央处理器101接收场景图像帧序列;将作业分发至不同的计算节点;按照程序执行顺序控制M个计算节点并行处理场景图像帧序列,得到场景图像帧序列对应的人脸特征数据。

在接收场景图像帧序列的过程中,辅助处理器102,具体包括:

接收模块1021,用于从中央处理器101接收编码数据。

解码模块1022,用于对编码模块1016进行解码,得到场景图像帧序列。其中,解码包括数据过滤、数据位提取、数据翻译三个流程。

数据过滤,采用字符比对和数据帧长度相结合的方法。以单针数据编码为例,在接收到数据帧后,读取报文头中的前6字节判断是否为目的地址;若是,则判断数据位长度是否符合要求;若符合,则进行数据位提取,否则丢弃该数据帧。数据位提取通过删除报文头(即前14个字符)实现,得到数据位对应的数据。数据翻译利用翻译字典实现。翻译字典,指的是Bytes数据与十六进制数据组成的字典。

辅助处理器102分发的作业包含权重值,需提前分发至对应计算节点中。值得注意的是,部分权重值若保持不变,可提前写死在计算节点中使用。

辅助处理器102具体还包括,控制模块1023,用于按照程序执行顺序控制M个计算节点并行处理场景图像帧序列。

进一步的,控制模块1023,用于根据程序执行顺序控制每个计算节点的输入与输出,以及用于将负责外输的计算节点的输出结果上传至公共缓存区实现和中央处理器101的交互。其中,负责外输的计算节点的输出结果具有两类。一类是人脸检测模型中负责外输的计算节点,输出结果为:人脸关键点、人脸边界框坐标。一类是人脸特征提取模型中负责外输的计算节点,输出结果为:人脸特征数据。

将人脸检测模型中负责外输的计算节点的输出结果:人脸关键点、人脸边界框坐标上传至公共缓存区与中央处理器101交互,并将交互结果作为下一计算节点的输入。

在中央处理器101侧,从公共缓存区读取人脸关键点坐标、人脸边界框坐标、场景图像,根据边界框坐标从场景图像中截取人脸图像,并根据关键点坐标进行仿射变换,得到矫正后的人脸图像,作为人脸特征提取模型对应的首个计算节点的输入。

将人脸特征提取模型中负责外输的计算节点的输出结果:人脸特征数据上传至公共缓存区与中央处理器101交互。中央处理器101侧,从公共缓存区读取人脸特征数据后,计算与已注册的人脸数据的欧式距离,取最小值作为识别结果;若最小值不大于预设阈值,输出对应的用户标签;若最小值大于预设阈值,输出“Unknown”。

由于场景图像帧序列由多帧场景图像构成,为了保证模型推理的执行速度和处理精度,控制模块1023,用于结合程序执行顺序和各计算节点的所需处理时间依序输入场景图像帧序列中的各图像帧,以使M个计算节点并行处理各图像帧,得到各图像帧对应的人脸特征数据。

具体的,同一个场景图像帧按照程序执行顺序在M个计算节点之间流转处理,得到对应的人脸特征数据。各场景图像帧在同一个计算节点的输入具有间隔时间,间隔时间为该计算节点处理上一帧场景图像所需处理时间。如此设置,该计算节点在输出上一帧场景图像的处理结果之后即可处理下一帧场景图像,能够加速程序运行速度,提升硬件资源利用率,使人脸识别速率达到14帧/s。

为了便于说明和解释,下面参看图6,是各计算节点进程并行处理场景图像帧序列的示意图。

将图像数据1、图像数据2、图像数据3按照计算节点1进程对应的所需处理时间依次输入计算节点1进程中进行处理。图像数据1由计算节点1进程转入计算节点2的同时,图像数据2输入计算节点1进程处理。图像数据1由计算节点2进程转入计算节点3的同时,图像数据2由计算节点1进程转入计算节点2进程处理,图像数据3输入计算节点1进程处理。如此设置,使得场景图像帧序列在M个计算节点之间并行流转处理,且不会影响单帧场景图像的处理结果。

示例性举例

本示例示出了4个计算节点以及人脸识别网络模型。人脸识别网络模型如表1所示。

表1

在表1中,Conv3×3表示卷积核大小为3×3的卷积,ReLU表示非线性整流单元,DWConv 3×3表示卷积核大小为3×3的逐层卷积,Bottleneck表示瓶颈层,Residual Block表示残差结构,FC表示全连接层,GDC表示全局逐层卷积,Conv1×1表示卷积核大小为1×1的卷积,DW Conv 7×7表示卷积核大小为7×7的逐层卷积。

根据4个计算节点的算力确定模型分发信息。在确定模型分发信息时,将人脸识别网络模型划分为:输入层、主干网络、输出层1和输出层2。其中,输入层为conv1,布置在计算节点1中。主干网络为conv2_dw~GDC,由于计算节点2是Xilinx提供的的神经网络加速器,算力充足,为保证运行速度,将主干网络全部置于计算节点2中。FC划分为输出层1和输出层2,分别布置在计算节点3和计算节点4中。参看图7-图8,图7是人脸识别网络模型的拆分示意图,图8是人脸识别网络模型的结构部署示意图。

辅助处理器102,将从片外DDR读取单帧场景图像发送至计算节点1,接着将计算节点1的结果发送至计算节点2,然后将计算节点2的输出上传至公共缓存区和中央处理器101交互,将交互结果输入计算节点3和计算节点4,并行输出计算节点3和计算节点4的输出结果,得到人脸特征数据。

在图8构建的部署示意图的基础上,各计算节点的输入输出如下所示:

计算节点1的输入:维度为[1,3,112,112]的张量;

计算节点1的输出:维度为[1,64,56,56]的张量;

计算节点2的输出:维度为[1,512,1,1]的张量;

计算节点3的输出:维度为[1,64]的向量;

计算节点4的输出:维度为[1,448]的向量;

在上传人脸特征数据时,辅助处理器102将计算节点3和计算节点4的数据横向拼接为[1,512]的向量,上传至公共缓存区。

分段量化模型与原模型的处理精度对比参看表2。

表2

从表2可知,拆分后的模型精度仅下降了0.71%,但模型大小节约了65.71%。

对于具有多帧场景图像的帧序列,则按照图9所示的处理模式并行处理。

中央处理器101从公共缓存区提取人脸特征数据,与人脸数据库中的已注册人脸数据进行欧氏距离计算,根据计算结果得到人脸识别结果。

基于相同的发明构思,下面的实施例公开了一种异构计算场景下的人脸识别方法,该人脸识别方法应用于人脸识别系统,包括:中央处理器101、辅助处理器102以及M个计算节点,M≥1且为正整数;其中,中央处理器101与M个计算节点间通过辅助处理器102实现隔离解耦。人脸识别系统的具体结构及其实施原理参看前述实施例的描述,本实施例不再赘述。

参看图10,人脸识别方法包括:

S1001,利用中央处理器执行系统初始化操作,确定出人脸识别的程序执行顺序,以及采集场景图像帧序列。

其中,系统初始化操作包括:

读取M个计算节点对应的模型分发信息;根据模型分发信息对人脸识别网络模型分段量化成N个可部署子文件;将N个可部署子文件分配至对应计算节点中;其中,1≤N≤M,N为正整数;将M个计算节点的流动顺序和人脸识别顺序进行融合,得到程序执行顺序;其中,1≤N≤M,N为正整数。

S1002,利用辅助处理器从中央处理器接收场景图像帧序列;按照程序执行顺序控制M个计算节点并行处理场景图像帧序列,得到场景图像帧序列对应的人脸特征数据。

S1003,利用中央处理器将人脸特征数据与人脸数据库中的已注册人脸数据进行比对,得到人脸识别结果。

在一种可选的实施方式中,所述模型分发信息参考计算节点的算力信息生成。

在一种可选的实施方式中,所述根据所述模型分发信息对人脸识别网络模型分段量化成N个可部署子文件,具体包括:

构建所述人脸识别网络模型;

根据所述模型分发信息将所述人脸识别网络模型拆分为N个子模型;所述N个子模型对应有处理顺序;

对每个子模型创建量化器和校准器;

基于所述N个子模型对应的量化器和校准器,对所述N个子模型进行分段量化,得到N个量化子模型;

按照对应计算节点所需格式对所述N个量化子模型进行后处理,得到N个可部署子文件。

在一种可选的实施方式中,所述基于所述N个子模型对应的量化器和校准器,对所述N个子模型进行分段量化,得到N个量化子模型,具体包括:

利用当前子模型的校准器加载当前校准数据;其中,所述当前校准数据由上一级子模型量化后输出;

将所述当前校准数据输入所述当前子模型,根据前向传播结果调整当前量化器的量化参数,得到当前量化子模型的同时,将当前量化器的量化输出作为下一级子模型的校准数据输入下一级子模型处理,直至所有子模型遍历完毕。

在一种可选的实施方式中,所述在基于所述N个子模型对应的量化器和校准器,对所述N个子模型进行分段量化,得到N个量化子模型之前,所述方法还包括:

将所述N个子模型对应的量化器和校准器拼接在对应子模型中,形成N个串联模型;

按照所述处理顺序对所述N个串联模型相互进行拼接,得到拼接模型。

在一种可选的实施方式中,在所述中央处理器中,所述采集场景图像帧序列,具体包括:

采集所述场景图像帧序列;

将所述场景图像帧序列以进制数方式进行编码,得到编码数据;

在所述辅助处理器中,所述从所述中央处理器接收所述场景图像帧序列,具体包括:

从所述中央处理器接收所述编码数据;

对所述编码模块进行解码,得到所述场景图像帧序列。

在一种可选的实施方式中,所述方法还包括:利用通信模块支持所述中央处理器与所述辅助处理器间的数据交互,交互的数据包括指令数据和编码数据。

在一种可选的实施方式中,所述按照所述程序执行顺序控制所述M个计算节点并行处理所述场景图像帧序列,得到所述场景图像帧序列对应的人脸特征数据,具体包括:控制模块,用于结合程序执行顺序和各计算节点所需处理时间依序输入所述场景图像帧序列中的各图像帧,以使所述M个计算节点并行处理所述各图像帧,得到所述各图像帧对应的人脸特征数据。

在一种可选的实施方式中,所述方法还包括:利用公共缓存存储所述中央处理器传输的所述场景图像帧序列,以及所述辅助处理器传输的人脸特征数据。

需要说明的是,本发明实施例所提供的人脸识别方法,其具体实现及产生的技术效果和前述系统实施例相同,为简要描述,方法实施例部分未提及之处,可参考前述系统实施例中相应内容。

在此提供的算法和显示不与任何特定计算机、虚拟系统或者其它设备固有相关。各种通用系统也可以与基于在此的示教一起使用。根据上面的描述,构造这类系统所要求的结构是显而易见的。此外,本发明也不针对任何特定编程语言。应当明白,可以利用各种编程语言实现在此描述的本发明的内容,并且上面对特定语言所做的描述是为了披露本发明的最佳实施方式。

在此处所提供的说明书中,说明了大量具体细节。然而,能够理解,本发明的实施例可以在没有这些具体细节的情况下实践。在一些实例中,并未详细示出公知的方法、结构和技术,以便不模糊对本说明书的理解。

类似地,应当理解,为了精简本发明并帮助理解各个发明方面中的一个或多个,在上面对本发明的示例性实施例的描述中,本发明的各个特征有时被一起分组到单个实施例、图、或者对其的描述中。然而,并不应将该公开的方法解释成反映如下意图:即所要求保护的本发明要求比在每个权利要求中所明确记载的特征更多的特征。更确切地说,如下面的权利要求书所反映的那样,发明方面在于少于前面公开的单个实施例的所有特征。因此,遵循具体实施方式的权利要求书由此明确地并入该具体实施方式,其中每个权利要求本身都作为本发明的单独实施例。

本领域那些技术人员可以理解,可以对实施例中的设备中的模块进行自适应性地改变并且把它们设置在与该实施例不同的一个或多个设备中。可以把实施例中的模块或单元或组件组合成一个模块或单元或组件,以及此外可以把它们分成多个子模块或子单元或子组件。除了这样的特征和/或过程或者单元中的至少一些是相互排斥之外,可以采用任何组合对本说明书(包括伴随的权利要求、摘要和附图)中公开的所有特征以及如此公开的任何方法或者设备的所有过程或单元进行组合。除非另外明确陈述,本说明书(包括伴随的权利要求、摘要和附图)中公开的每个特征可以由提供相同、等同或相似目的的替代特征来代替。

此外,本领域的技术人员能够理解,尽管在此的一些实施例包括其它实施例中所包括的某些特征而不是其它特征,但是不同实施例的特征的组合意味着处于本发明的范围之内并且形成不同的实施例。例如,在下面的权利要求书中,所要求保护的实施例的任意之一都可以以任意的组合方式来使用。

本发明的各个部件实施例可以以硬件实现,或者以在一个或者多个处理器上运行的软件模块实现,或者以它们的组合实现。本领域的技术人员应当理解,可以在实践中使用微处理器或者数字信号处理器(DSP)来实现根据本发明实施例的网关、代理服务器、系统中的一些或者全部部件的一些或者全部功能。本发明还可以实现为用于执行这里所描述的方法的一部分或者全部的设备或者装置程序(例如,计算机程序和计算机程序产品)。这样的实现本发明的程序可以存储在计算机可读介质上,或者可以具有一个或者多个信号的形式。这样的信号可以从因特网网站上下载得到,或者在载体信号上提供,或者以任何其他形式提供。

应该注意的是上述实施例对本发明进行说明而不是对本发明进行限制,并且本领域技术人员在不脱离所附权利要求的范围的情况下可设计出替换实施例。在权利要求中,不应将位于括号之间的任何参考符号构造成对权利要求的限制。单词“包含”不排除存在未列在权利要求中的元件或步骤。位于元件之前的单词“一”或“一个”不排除存在多个这样的元件。本发明可以借助于包括有若干不同元件的硬件以及借助于适当编程的计算机来实现。在列举了若干装置的单元权利要求中,这些装置中的若干个可以是通过同一个硬件项来具体体现。单词第一、第二、以及第三等的使用不表示任何顺序。可将这些单词解释为名称。

相关技术
  • 一种基于场景的车内环境调控系统及场景调控方法
  • 一种人脸识别的辅助方法、人脸识别方法及终端设备
  • 一种基于人脸识别系统的员工考勤系统及其方法
  • 一种机房特定场景下进行人脸识别的方法及系统
  • 一种机房特定场景下进行人脸识别的方法及系统
技术分类

06120116493580