具体实施方式
为了更好的理解上述技术方案,下面通过附图以及具体实施例对本说明书实施例的技术方案做详细的说明,应当理解本说明书实施例以及实施例中的具体特征是对本说明书实施例技术方案的详细的说明,而不是对本说明书技术方案的限定,在不冲突的情况下,本说明书实施例以及实施例中的技术特征可以相互组合。
第一方面,如图1所示,本说明书实施例提供一种人脸识别***,包括;
本地设备100,用于对采集到的人脸图像进行图像预处理,得到预处理人脸图像;通过本地人脸识别模型对所述预处理人脸图像进行本地人脸识别,得到本地人脸识别值;判断所述本地人脸识别值是否满足预设数值条件,其中,所述预设数值条件用于确定是否将人脸识别数据上传至服务器端200;若判断出所述本地人脸识别值满足所述预设数值条件,则将所述人脸识别数据发送给服务器端200,所述人脸识别数据包括所述预处理人脸图像和压缩后的所述预处理人脸图像中的至少一项;
服务器端200,用于接收本地设备100发送的所述人脸识别数据;基于服务器端人脸识别模型对所述人脸识别数据进行人脸识别,得到服务器端人脸识别结果,并将所述服务器端人脸识别结果发送给本地设备100;
本地设备100,用于接收所述服务器端发送的所述服务器端人脸识别结果,基于所述服务器端人脸识别结果,确定所述人脸图像中的用户是否为目标用户;
本地设备100,用于在检测到所述本地人脸识别值未满足所述预设数值条件时,基于所述本地人脸识别值和本地设定阈值,判断所述人脸图像中的用户是否为目标用户。
本说明书实施例中,服务器端200可以为设置在互联网和物联网等网络中的服务器,也可以为云端服务器;在服务器端200为云端服务器时,所述服务器端人脸识别结果具体可以为云端人脸识别结果。
具体来讲,本地设备100可以通过与本地设备100相连的摄像设备或设置在本地设备100中的摄像设备采集到人脸图像,所述人脸图像为所述摄像设备连续采集的一组人脸图像,然后对所述人脸图像进行图像预处理,得到所述预处理人脸图像,从能够移除所述人脸图像中的每个人脸图像的平均亮度值,降低光照对算法的影响,提高在使用算法对所述预处理人脸图像进行计算的计算精确度。
本说明书实施例中,本地设备100在对采集到的人脸图像进行图像预处理之前,若采集到的所述人脸图像的图像格式与用于进行本地人脸识别模型训练的本地训练样本的图像格式不同,则将所述人脸图像的图像格式转换成所述本地训练样本对应的图像格式,然后再对格式转换后的所述人脸图像进行图像预处理。
例如,本地训练样本的图像格式为RGB格式,而所述人脸图像的图像格式为YUV格式,则需要先将所述人脸图像的图像格式转换成RGB格式,再对转换为RGB格式的所述人脸图像进行图像预处理。
本说明书实施例中,本地设备100例如可以是收银设备和自动售货设备等;进一步,所述摄像设备例如可以是摄像头、云台、摄像机和鱼眼镜头等设备。
本说明书实施例中,在所述人脸图像进行图像预处理时,由于所述人脸图像为原始图像,使得所述人脸图像中包含有人脸区域、背景和噪声,如此,可以首先对所述人脸图像依次进行人脸检测、人脸校准和去除图像背景处理,得到人脸处理图像,以降低所述人脸图像中背景和噪声数据对识别算法的影响,使得在对预处理人脸图像进行人脸识别时提高识别的精确度。
进一步地,在得到所述人脸处理图像之后,还可以根据所述人脸处理图像中的所有像素值,确定出所述人脸处理图像对应的像素均值;根据所述像素均值,确定出所述人脸处理图像中每个像素对应的方差;利用所述像素均值和每个像素对应的方差对每个像素进行归一化处理,得到每个像素的归一化数据;根据每个像素的归一化数据,得到所述预处理人脸图像。
当然,在得到所述预处理人脸图像时,可以采用上述一种或多种方式对所述人脸图像进行处理,从而得到所述预处理人脸图像。
具体地,在所述人脸图像进行图像预处理时,在所述人脸处理图像上进行均值和方差的计算,在所述人脸处理图像中的所有像素上求出均值m,然后在求出均值m的基础上求出所述人脸处理图像中每个像素对应的方差s,然后在所述人脸处理图像中的每个像素上进行均值方差的归一化操作,得到每个像素的归一化数据,通过归一化操作能够移除所述人脸图像中的平均亮度值,降低光照对算法的影响,提高在使用算法对所述预处理人脸图像进行计算的计算精确度。
本说明书实施例中,本地设备100在通过所述本地人脸识别模型对所述预处理人脸图像进行本地人脸识别之前,需要通过模型训练得到所述本地人脸识别模型,所述本地人脸识别模型的训练过程具体包括以下步骤:
步骤101、获取本地训练样本集合;
步骤102、使用损失函数对所述本地训练样本集合进行训练,得到训练后的所述本地人脸识别模型。其中,所述本地训练样本集合包括已标注的本地训练样本。
步骤102中可以将所述本地训练样本集合中的全部或部分本地训练样本通过损失函数进行模型训练。
本说明书实施例中,所述本地人脸识别模型例如可以是卷积神经网络(Convolutional Neural Networks,简称CNN);进一步地,所述本地人脸识别模型可以为N层的残差网络结构,通常选用小网络和小输入分辨率的人脸图像作为本地训练样本,例如可以选用图像预处理后尺寸为64×64的人脸图像作为本地训练样本,这样能够使得本地训练样本与实际输入的所述预处理人脸图像中的人脸图像相同,促使所述本地人脸识别模型对所述预处理人脸图像进行本地人脸识别得到的所述本地人脸识别值更准确,提高本地人脸识别准确度,其中,N为不小于2的整数。
具体来讲,所述本地人脸识别模型可以为N层的残差网络结构,并使用多分类损失函数对本地训练样本进行训练,得到所述本地人脸识别模型。
具体来讲,所述本地人脸识别模型的训练过程通常在服务器中进行,例如可以在服务器端200中进行训练。当然,所述本地人脸识别模型的训练过程也可以直接在本地设备100中进行,本申请不作具体限制。
具体地,在将服务器中训练的所述本地人脸识别模型部署到本地设备100中时,可以首先获取在服务器端200训练的所述本地人脸识别模型;然后对所述本地人脸识别模型进行本地模型部署处理,并将处理后的所述本地人脸识别模型部署在本地设备100中;通过部署在本地设备100中的所述本地人脸识别模型对所述预处理人脸图像进行本地人脸识别,得到所述本地人脸识别值。
本说明书实施例中,所述本地模型部署处理包括模型格式转化、模型压缩和模型加密等操作,通过对所述本地人脸识别模型进行本地模型部署处理,以使得服务器中训练的所述本地人脸识别模型能够部署到本地设备100中正常运行。
具体来讲,在得到所述本地人脸识别模型之后,还可以使用所述本地人脸识别模型获取到本地困难样本集合和本地简单样本集合,如图2所示,包括以下步骤:
步骤S201、使用所述本地人脸识别模型对所述本地训练样本集合中的本地训练样本进行人脸识别,得到本地训练样本的人脸识别结果;
其中,可以在服务器端200或本地设备100中使用所述本地人脸识别模型对本地训练样本进行人脸识别;进一步地,可以使用所述本地人脸识别模型对所述本地训练样本集合中的部分或全部本地训练样本进行人脸识别,下面具体以使用所述本地人脸识别模型对所述本地训练样本集合中的全部本地训练样本进行人脸识别为例。
具体来讲,可以使用所述本地人脸识别模型对每个本地训练样本进行人脸识别,得到每个本地训练样本的人脸识别值;根据每个本地训练样本的人脸识别值,确定出每个本地训练样本中的用户是否为目标用户的人脸识别结果。
具体地,在根据每个本地训练样本的人脸识别值,确定出每个本地训练样本中的用户是否为目标用户的人脸识别结果时,可以将每个本地训练样本的人脸识别值与预设阈值进行比对,若某个本地训练样本的人脸识别值不小于所述预设阈值,则确定出该本地训练样本中的用户为目标用户的人脸识别结果,即该本地训练样本的人脸识别结果识别正确;若某个本地训练样本的人脸识别值小于所述预设阈值,则确定出该本地训练样本中的用户不为目标用户的人脸识别结果,即该本地训练样本的人脸识别结果识别错误。
例如,本地样本集合包括a1、a2、a3、a4.........an对应的用户为a11、a21、a31、a41.........an1,使用训练出的本地人脸识别模型对每个本地样本进行识别,首先通过特征比对计算出每个本地样本中的用户为目标用户的概率;然后判断每个本地样本中的用户为目标用户的概率是否不小于所述预设阈值,若某个本地样本中的用户为目标用户的概率不小于所述预设阈值,则确定该本地样本的人脸识别结果表征该本地样本中的用户为目标用户;若某个本地样本中的用户为目标用户的概率小于所述预设阈值,则确定该本地样本的人脸识别结果表征该本地样本中的用户不为目标用户。
其中,以a1和a2为例,若计算出a1中用户为a11的概率为85%,由于85%<所述预设阈值90%,则识别出a1的人脸识别结果表征a1中的用户不为a11,即确定a1的人脸识别结果识别错误;若a2中的用户为a21的概率为95%>90%,则识别出a2的人脸识别结果表征a2中的用户为a21,即确定a1的人脸识别结果识别正确。
S202、根据本地训练样本的人脸识别结果,获取到本地困难样本集合和本地简单样本集合,其中,所述本地困难样本集合包括人脸识别结果错误的本地训练样本;所述本地简单样本集合包括人脸识别结果正确的本地训练样本。
具体来讲,所述本地困难样本集合包括人脸识别结果错误的部分或全部本地训练样本,相应地,所述本地简单样本集合包括人脸识别结果正确的部分或全部本地训练样本。
例如,本地样本集合包括a1、a2、a3、a4.........an对应的用户为a11、a21、a31、a41.........an1,使用训练出的本地人脸识别模型对每个本地样本进行识别,首先通过特征比对计算出每个本地样本中的用户为目标用户的概率;然后判断每个本地样本中的用户为目标用户的概率是否不小于所述预设阈值,若某个本地样本中的用户为目标用户的概率不小于所述预设阈值,则确定该本地样本的人脸识别结果表征该本地样本中的用户为目标用户;若某个本地样本中的用户为目标用户的概率小于所述预设阈值,则确定该本地样本的人脸识别结果表征该本地样本中的用户不为目标用户。
其中,以a1和a2为例,若计算出a1中用户为a11的概率为85%,由于85%<所述预设阈值90%,则识别出a1的人脸识别结果表征a1中的用户不为a11,即确定a1的人脸识别结果识别错误,且a1作为困难样本并放入所述本地困难样本集合中;若a2中的用户为a21的概率为95%>90%,则识别出a2的人脸识别结果表征a2中的用户为a21,即确定a1的人脸识别结果识别正确,且a2作为简单样本并放入所述本地简单样本集合中;针对所述本地样本集合中的每个本地样本执行上述操作,从而得到所述本地样本集合和所述本地困难样本集合。
此时,所述服务器端人脸识别模型可以根据所述本地困难样本集合和所述本地简单样本集合进行训练而得到的。
本说明书另一实施例中,在使用所述本地人脸识别模型获取到本地困难样本集合和本地简单样本集合时,如图3所示,还可以包括以下步骤:
步骤S301、使用所述本地人脸识别模型对本地训练样本进行人脸识别,得到本地训练样本的人脸识别值及其置信度;
在步骤S301中,可以使用所述本地人脸识别模型对部分或全部本地训练样本进行人脸识别,具体可以参见步骤S201的叙述。
步骤S302、根据本地训练样本的人脸识别值,确定出本地训练样本中的用户是否为目标用户的人脸识别结果;
步骤S303、根据本地训练样本的人脸识别结果及其置信度,获取到所述本地困难样本集合和所述本地简单样本集合,其中,所述本地困难样本集合包括人脸识别结果错误的本地训练样本,或,人脸识别结果错误且对应的置信度大于第一预设置信度的部分或全部本地训练样本;所述本地简单样本集合包括人脸识别结果正确的本地训练样本,或,人脸识别结果正确且对应的置信度大于第二预设置信度的部分或全部本地训练样本。
本说明书实施例中,在获取所述本地困难样本集合和所述本地简单样本集合之后,所述服务器端人脸识别模型可以根据所述本地困难样本集合和所述本地简单样本集合进行训练而得到的。
本说明书实施例中,所述第一预设置信度和所述第二预设置信度可以由服务器端200或本地设备100或人工自行设定,还可以根据实际需求设定,所述第一预设置信度通常设置为大于50%且小于1的值,例如可以为55%、62%和75%等,当然,所述第一预设置信度还可以为小于50%且大于0的值;相应地,所述第二预设置信度通常设置为大于50%且大于1的值,例如可以为55%、75%和90%等,当然,所述第二预设置信度还可以为小于60%且大于0的值。
具体来讲,在所述本地困难样本集合包括人脸识别结果错误且对应的置信度大于所述第一预设置信度的部分本地训练样本时,可以从人脸识别结果错误且对应的置信度大于所述第一预设置信度的全部本地训练样本按第一预设比例取出部分数量的训练样本,并将按所述第一预设比例取出部分数量的本地训练样本作为所述本地困难样本集合中的样本;相应地,在所述本地简单样本集合包括人脸识别结果正确且对应的置信度大于第二预设置信度的部分或全部本地训练样本时,可以从人脸识别结果正确且对应的置信度大于所述第而预设置信度的全部本地训练样本中按第二预设比例取出部分数量的本地训练样本,并将按所述第二预设比例取出部分数量的本地训练样本作为所述本地简单样本集合中的样本。
例如,以本地训练样本集合为{a1、a2、a3、a4、a5、a6、a7、a8、a9、a10}为例,若通过本地人脸识别模型识别出本地训练样本的人脸识别结果正确且置信度大于所述第二预设置信度的本地训练样本包括a1、a4、a5、a7和a9,若识别出本地训练样本的人脸识别结果错误且置信度大于所述第一预设置信度的本地训练样本包括a2、a3、a8和a10,则确定出所述本地困难样本集合为{a2、a3、a8、a10},以及所述本地简单样本集合为{a1、a4、a5、a7、a9}。
本说明书实施例中,本地设备100通过已训练的所述本地人脸识别模型对所述预处理人脸图像进行本地人脸识别,得到所述本地人脸识别值;在得到所述本地人脸识别值之后,首先判断所述本地人脸识别值是否满足所述预设数值条件;若判断出所述本地人脸识别值满足所述预设数值条件,则将所述人脸识别数据发送给服务器端200。
具体来讲,若所述预设数值条件中的最小值用Threshold1表示,所述预设数值条件中的最大值用Threshold2表示,在获取到所述本地人脸识别值之后,判断所述本地人脸识别值是否不大于Threshold1且不大于Threshold2,若所述本地人脸识别值用S表示,在检测到Threshold1≤S≤Threshold2时,则判定所述本地人脸识别值满足所述预设数值条件;若判断出S<Threshold1或S>Threshold2时,则判定所述本地人脸识别值未满足所述预设数值条件。
本说明书实施例中,本地设备100用于在检测到所述本地人脸识别值未满足所述预设数值条件时,判断所述本地人脸识别值是否不小于所述本地设定阈值;若判断出所述本地人脸识别值不小于所述本地设定阈值,则判定所述人脸图像中的用户为目标用户;若判断出所述本地人脸识别值小于所述本地设定阈值,则判定所述人脸图像中的用户为非目标用户。
具体来讲,若所述本地设定阈值用T表示,则检测S是否大于T,若S<T,则判定所述人脸图像中的用户为目标用户;若S≥T,则判定所述人脸图像中的用户为非目标用户。
本说明书实施例中,所述非目标用户具体表征为除目标用户之外的其它用户。例如,a1中用户为a11,则识别a1时,a11为目标用户,除a11之外的用户的非目标用户。
本说明书实施例中,本地设备100在将所述人脸识别数据发送给服务器端200之后,使得服务器端200接收到所述人脸识别数据,此时,服务器端200根据已训练的所述服务器端人脸识别模型对所述人脸识别数据进行人脸识别,得到所述服务器端人脸识别结果,并将所述服务器端人脸识别结果返回给本地设备。
本说明书实施例中,为了提高所述服务器端人脸识别模型的检测精度,通常选用复杂大网络和分辨率较大的人脸图像作为服务器端训练样本,例如可以选用图像预处理后尺寸为128×128的人脸图像作为服务器端训练样本。
具体来讲,如图4所示,所述服务器端人脸识别模型的训练过程具体包括以下步骤:
S401、获取本地困难样本集合和本地简单样本集合,其中,所述本地困难样本集合和所述本地简单样本集合是所述本地人脸识别模型对所述本地训练样本集合进行人脸识别而得到的;
具体来讲,所述本地困难样本集合和所述本地简单样本集合可以通过步骤S201-S202或步骤S301-S303获取到,为了说明书的简洁,在此就不再赘述了。
S402、对所述本地困难样本集合和所述本地简单样本集合进行采样,得到用于训练所述服务器端人脸识别模型的服务器端训练样本集合,其中,所述服务器端训练样本集合中包含有对所述本地困难样本集合多次采样后的样本;
S403、使用损失函数对所述服务器端训练样本集合中的服务器端训练样本进行训练,得到所述服务器端人脸识别模型。
本说明书实施例中,所述服务器端人脸识别模型例如可以是卷积神经网络(Convolutional Neural Networks,简称CNN);进一步地,所述服务器端人脸识别模型可以为M层的残差网络结构,通常选用复杂大网络和较大分辨率的人脸图像作为本地训练样本,例如可以选用图像预处理后尺寸为128×128的人脸图像作为服务器端训练样本,这样能够使得服务器端训练样本与实际输入的所述预处理人脸图像中的人脸图像尺寸相同,促使所述服务器端人脸识别模型对所述预处理人脸图像进行人脸识别得到的所述服务器端人脸识别值更准确,提高本地人脸识别准确度,其中,M为大于N的整数。例如,N可以为10,此时,M可以为51、52、60和80等。
具体来讲,所述服务器端人脸识别模型可以为M层的残差网络结构,并使用多分类损失函数和基于度量学习的误差函数TripletLoss对服务器端训练样本进行训练,得到所述服务器端人脸识别模型。
具体来讲,为了提高所述服务器端人脸识别模型的识别精确度,会对所述本地困难样本集合进行多次采样和对所述本地样本集合进行一次采样,从而得到所述服务器端训练样本集合中包含的困难样本的比例增大,在困难样本的比例增大的基础上训练得到的所述服务器端人脸识别模型能够有效提高人脸识别准确度。
例如,本地难样本集合为A={a1、a2、a3…an},本地简单样本集合为B={b1、b2、b3...bm},则可以将A集合重复采样2到3次,以及将B集合采样一次,将所有采样的样本作为所述服务器端训练样本集合,此时,若A集合中样本数只占所述本地样本集合中样本总数的5%,此时,所述服务器端训练集合中困难样本数量占所述服务器端训练样本集合中样本总数的比例在10%~15%之间,如此,使得所述服务器端训练样本集合中包含的困难样本的比例增大,在困难样本的比例增大的基础上训练得到的所述服务器端人脸识别模型能够有效提高人脸识别准确度。
本说明书实施例中,服务器端200根据所述服务器端人脸识别模型对所述人脸识别数据进行人脸识别,得到所述服务器端人脸识别结果,具体包括:
步骤50、服务器端200,用于根据所述服务器端人脸识别模型对所述人脸识别数据进行人脸识别,得到服务器端人脸识别值;
步骤51、服务器端200,用于判断所述服务器端人脸识别值是否大于服务器端设定阈值,得到判断结果,其中,所述判断结果为所述服务器端人脸识别结果。
具体来讲,若所述检测结果表征所述服务器端人脸识别值大于所述服务器端设定阈值,则得到的所述判断结果用于判定所述人脸图像中的用户为目标用户;若所述检测结果表征所述服务器端人脸识别值小于所述服务器端设定阈值,则得到的所述判断结果用于判定所述人脸图像中的用户为非目标用户。
本说明书实施例中,服务器端200得到所述服务器端人脸识别结果之后,将所述服务器端检测结果发生给本地设备100,使得本地设备100接收到所述服务器端人脸识别结果之后,基于所述服务器端人脸识别结果,确定所述人脸图像中的用户是否为目标用户。
具体来讲,若所述服务器端人脸识别结果表征所述人脸图像中的用户为目标用户,则确定所述人脸图像中的用户为目标用户;若所述服务器端人脸识别结果表征所述人脸图像中的用户为非目标用户,则确定所述人脸图像中的用户为非目标用户。
本说明书另一实施例中,本地设备100在检测到所述本地人脸识别值满足所述预设数值条件之后,可以将所述预处理人脸图像压缩后发送给服务器端200,此时,所述人脸识别数据包括压缩后的所述预处理人脸图像;此时,为了提高所述服务器端人脸识别模型的人脸识别的准确度,在执行步骤S403时,可以将所述服务器端训练样本集合中的服务器端训练样本压缩后再输入到所述服务器端分类模型中进行训练,得到所述服务器端人脸识别模型。
当然,本地设备100在检测到所述本地人脸识别值满足所述预设数值条件之后,还可以直接将所述预处理人脸图像发送给服务器端200,此时,所述人脸识别数据包括所述预处理人脸图像。
具体来讲,为了提高数据传输速度,通常会将所述人脸图像中的每个人脸图像进行压缩传输,而为了确保所述服务器端人脸识别模型进行模型训练的服务器端训练样本和所述服务器端人脸识别模型在实际应用过程中进行人脸识别的所述人脸图像相同,可以将所述服务器端训练样本集合中的服务器端训练样本压缩后再输入到所述服务器端分类模型中进行训练,得到所述服务器端人脸识别模型,如此,在确保服务器端训练样本与实际输入的人脸图像的格式完全相同的基础上进行人脸识别,能够有效提高服务器端人脸识别的准确度。
本说明书实施例中,所述人脸识别数据还可以包括所述本地人脸识别值和/或所述预设数值条件,本说明书不作具体限制。进一步地,本说明书实施例中,A和/或B的具体包括三种组合,即可以是A,还可以是B,还可以A和B。
本说明书另一实施例中,本地设备100在检测到所述本地人脸识别值满足所述预设数值条件之后,若所述人脸识别数据包括所述本地人脸识别值、所述预设数值条件和压缩后的所述预处理人脸图像,则使得服务器端200能够接收到本地设备100发送的所述本地人脸识别值、所述预设数值条件和压缩后的所述预处理人脸图像;如此,服务器端200接收到所述人脸识别数据之后,验证所述本地人脸识别值是否在所述预设数值条件内;若验证出所述本地人脸识别值是在所述预设数值条件内,则基于所述服务器端人脸识别模型对压缩后的所述预处理人脸图像进行人脸识别,得到所述服务器端人脸识别结果;将所述服务器端人脸识别结果发送给本地设备100;本地设备100用于接收所述服务器端发送的所述服务器端人脸识别结果,基于所述服务器端人脸识别结果,确定所述人脸图像中的用户是否为目标用户。
具体来讲,为了降低所述本地人脸识别值未满足所述预设数值条件而进行服务器端人脸识别的概率,服务器端200需要对所述本地人脸识别值是否满足所述预设数值条件进行校验,在校验通过的情况下才会在服务器端进行人脸识别,由于服务器端人脸识别是在服务器端进行且数据会在本地设备100和服务器端200之间交互,使得在服务器端进行人脸识别所需时间远大于在本地进行人脸识别所需时间,如此,通过二次校验能够降低所述本地人脸识别值未满足所述预设数值条件而进行服务器端人脸识别的概率,进而能够缩短人脸识别时间,促使人脸识别效率提高。
本说明书实施例中,服务器端200接收到本地设备100发送的包含所述本地人脸识别值、所述预设数值条件和压缩后的所述预处理人脸图像的数据包之后,首先判断本地设备100发送的数据包的数据格式是否符合要求,是否有数据缺失了;如果都没有则进行下一步验证步骤,否则返回空结果。
例如,本地设备100在检测到所述本地人脸识别值满足所述预设数值条件之后,上传的数据包P包含jpeg压缩后的人脸图像I、本地人脸识别值S、本地上传策略相关的阈值Threshold1和Threshold2;服务器端200得到数据包P后判断数据包P的数据格式是否符合要求,是否有数据缺失,如果都没有则进行下一步,否则返回空结果;在判断出数据包P的数据格式符合要求且未有数据缺失时,解析得到jpeg压缩后的人脸图像I,本地人脸识别值S、Threshold1和Threshold2;然后进行校验,即检测S是否不大于Threshold1且不大于Threshold2,若判断出Threshold1≤S≤Threshold2,则在服务器端进行人脸识别,并将所述服务器端人脸识别结果返回给本地设备100;若判断出S<Threshold1或S>Threshold2时,则判定所述本地人脸识别值未满足所述预设数值条件,则返回验证不通过的结果;此时,本地设备100接收到验证不同的结果之后,可以直接所述本地人脸识别值判断人脸图像中的用户是否为目标用户。
参见图5,为本说明书实施例提供的一种人脸识别***的流程图。本地设备100首先执行步骤1、对人脸图像进行预处理;再执行步骤2、在本地对预处理后的人脸图像进行人脸识别,得到本地人脸识别值;接下来执行步骤3、判断本地人脸识别值是否位于预设取值范围内;若判断出本地人脸识别值在预设取值范围内,则执行步骤4、将本地人脸识别值、预设取值范围和压缩后的人脸图像发送给服务器端200;服务器端200接收到本地人脸识别值、预设取值范围和压缩后的人脸图像之后,首先执行步骤5、验证本地人脸识别值是否位于预设取值范围内;若验证出未位于预设取值范围内,则执行步骤6、返回验证不通过的结果;若验证出位于预设取值范围内,则执行步骤7、对压缩后的人脸图像进行人脸识别,得到服务器端人脸识别结果;在执行步骤7之后,执行步骤8、返回服务器端人脸识别结果;本地设备100接收到服务器端人脸识别结果之后,执行步骤9、根据服务器端人脸识别结果判断人脸图像中的用户是否为目标用户。
其中,若本地设备100通过步骤3判断出本地人脸识别值未位于预设取值范围内,则执行步骤10、根据本地人脸识别值判断人脸图像中的用户是否为目标用户。
本说明书实施例中,采用的技术方案是首先在本地对人脸图像进行人脸识别,得到所述本地人脸识别值,再判断所述本地人脸识别值是否满足所述预设数值条件,若满足所述预设数值条件,则在服务器端(设置在互联网或云端或物联网等网络中)对人脸图像进行人脸识别,并将服务器端人脸识别得到的所述服务器端人脸识别结果发送给本地设备100,以使得本地设备100基于所述服务器端人脸识别结果判断人脸图像中的用户是否为目标用户;而若未满足所述预设数值条件,则通过判断所述本地人脸识别值是否大于本地设定阈值得到的检测结果,判断所述人脸图像中的用户是否为目标用户;如此,将本地人脸识别与服务器端人脸识别相结合,能够在确保人脸识别准确性的情况下缩短人脸识别时间,即在确保人脸识别准确性的情况下能够有效提高人脸识别效率。
进一步,在所述本地人脸识别值满足所述预设数值条件时,本地人脸识别模型对于人脸图像的人脸识别结果存在较高不确定性,此时,将人脸图像发送到服务器端并在服务器端进行人脸识别,而由于在服务器端能够部署算法更加复杂的人脸识别模型对人脸图像进行人脸识别,使得在服务器端进行人脸识别得到服务器端人脸识别结果的准确度更高,从而能够有效提高人脸识别的准确性;而在所述本地人脸识别值不满足所述预设数值条件时,本地人脸识别模型对于人脸图像的人脸识别结果准确度较高,此时,根据所述本地人脸识别值能够准确判断出所述人脸图像中的用户是否为目标用户,由于本地部署的是算法简单的本地人脸识别模型对人脸图像进行人脸识别,使得在本地进行人脸识别的所需时间更短,从而能够在确保本地人脸识别准确度的情况下进行本地人脸识别。
第二方面,基于与第一方面的同一发明构思,本说明书实施例提供一种人脸识别方法,如图6所示,包括:
步骤S601、对采集到的人脸图像进行图像预处理,得到预处理人脸图像;
步骤S602、通过本地人脸识别模型对所述预处理人脸图像进行本地人脸识别,得到本地人脸识别值;
步骤S603、判断所述本地人脸识别值是否满足预设数值条件,其中,所述预设数值条件用于确定是否将人脸识别数据上传至服务器端;
步骤S604、若判断出所述本地人脸识别值满足所述预设数值条件,则将所述人脸识别数据发送给服务器端,接收所述服务器端发送的服务器端人脸识别结果;基于所述服务器端人脸识别结果,确定所述人脸图像中的用户是否为目标用户;其中,所述服务器端人脸识别结果是所述服务器端基于服务器端人脸识别模型对所述人脸识别数据进行人脸识别而得到的,所述人脸识别数据包括所述预处理人脸图像和压缩后的所述预处理人脸图像中的至少一项;
步骤S605、若判断出所述本地人脸识别值未满足所述预设数值条件,则基于所述本地人脸识别值和本地设定阈值,判断所述人脸图像中的用户是否为目标用户。
在一种可选实施方式中,所述服务器端人脸识别模型通过下述步骤训练得到,具体包括:
获取本地困难样本集合和本地简单样本集合,其中,所述本地困难样本集合和所述本地简单样本集合为所述本地人脸识别模型对本地训练样本集合进行人脸识别得到的;
对所述本地困难样本集合和所述本地简单样本集合进行采样,得到用于训练所述服务器端人脸识别模型的服务器端训练样本集合,其中,所述服务器端训练样本集合中包含有对所述本地困难样本集合多次采样后的样本;
使用损失函数对所述服务器端训练样本集合中的服务器端训练样本进行训练,得到所述服务器端人脸识别模型。
在一种可选实施方式中,所述本地困难样本集合和本地简单样本集合的获取步骤,具体包括:
使用所述本地人脸识别模型对所述本地训练样本集合中的本地训练样本进行人脸识别,得到本地训练样本的人脸识别结果;
根据本地训练样本的人脸识别结果,获取到本地困难样本集合和本地简单样本集合,其中,所述本地困难样本集合包括人脸识别结果错误的本地训练样本;所述本地简单样本集合包括人脸识别结果正确的本地训练样本。
在一种可选实施方式中,所述本地困难样本集合和本地简单样本集合的获取步骤,具体包括:
使用所述本地人脸识别模型对本地训练样本进行人脸识别,得到本地训练样本的人脸识别值及其置信度;
根据本地训练样本的人脸识别值,确定出本地训练样本是否为目标用户的人脸识别结果;
根据本地训练样本的人脸识别结果及其置信度,获取到所述本地困难样本集合和所述本地简单样本集合,其中,所述本地困难样本集合包括人脸识别结果错误的本地训练样本,或,人脸识别结果错误且对应的置信度大于第一预设置信度的部分或全部本地训练样本;所述本地简单样本集合包括人脸识别结果正确的本地训练样本,或,人脸识别结果正确且对应的置信度大于第二预设置信度的部分或全部本地训练样本。
在一种可选实施方式中,所述使用损失函数对所述服务器端训练样本集合中的服务器端训练样本进行训练,得到所述服务器端人脸识别模型,具体包括:
使用损失函数对所述服务器端训练样本集合中的服务器端训练样本进行训练,得到所述服务器端人脸识别模型。
在一种可选实施方式中,所述人脸识别数据还包括所述本地人脸识别值和/或所述预设数值条件。
在一种可选实施方式中,所述将所述人脸识别数据发送给服务器端,接收所述服务器端发送的服务器端人脸识别结果,包括:
将所述人脸识别数据发送给所述服务器端,其中,所述人脸识别数据包括所述本地人脸识别值、所述预设数值条件和压缩后的所述预处理人脸图像;
接收到所述服务器端发送的服务器端人脸识别结果,其中,所述服务器端人脸识别结果是所述服务器端在验证所述本地人脸识别值满足所述预设数值条件之后基于所述服务器端人脸识别模型对压缩后的所述预处理人脸图像进行人脸识别而得到的。
在一种可选实施方式中,所述对采集到的人脸图像进行图像预处理,得到预处理人脸图像,包括下述操作中的一项或多项:
对所述人脸图像依次进行人脸检测、人脸校准和去除图像背景处理,得到人脸处理图像;
根据所述人脸处理图像中的所有像素值,确定出所述人脸处理图像对应的像素均值;
根据所述像素均值,确定出所述人脸处理图像中每个像素对应的方差;
利用所述像素均值和每个像素对应的方差对每个像素进行归一化处理,得到每个像素的归一化数据;
根据每个像素的归一化数据,得到所述预处理人脸图像。
在一种可选实施方式中,所述基于所述本地人脸识别值和本地设定阈值,判断所述人脸图像中的用户是否为目标用户,具体包括:
判断所述本地人脸识别值是否不小于所述本地设定阈值;
若所述本地人脸识别值不小于所述本地设定阈值,则判定所述人脸图像中的用户为目标用户;若所述本地人脸识别值小于所述本地设定阈值,则判定所述人脸图像中的用户为非目标用户。
在一种可选实施方式中,所述通过本地人脸识别模型对所述预处理人脸图像进行本地人脸识别,得到本地人脸识别值,具体包括:
获取在所述服务器端训练的所述本地人脸识别模型;
对所述本地人脸识别模型进行本地模型部署处理,并将处理后的所述本地人脸识别模型部署在本地;
通过部署在本地的所述本地人脸识别模型对所述预处理人脸图像进行本地人脸识别,得到所述本地人脸识别值。
第三方面,基于与第一方面的同一发明构思,本说明书实施例提供一种人脸识别方法,如图7所示,包括:
步骤S701、接收本地设备发送的人脸识别数据,其中,所述人脸识别数据包括预处理人脸图像和压缩后的所述预处理人脸图像中的至少一项,所述预处理人脸图像是所述本地设备对采集到的人脸图像进行图像预处理得到的;
步骤S702、基于服务器端人脸识别模型对所述人脸识别数据进行人脸识别,得到服务器端人脸识别结果,其中,所述服务器端人脸识别模型是根据本地人脸识别模型检测到的本地困难样本和本地简单样本进行训练而得到的;
步骤S703、将所述服务器端人脸识别结果发送给所述本地设备。
在一种可选实施方式中,所述服务器端人脸识别模型通过下述步骤训练得到,具体包括:
获取本地困难样本集合和本地简单样本集合,其中,所述本地困难样本集合和所述本地简单样本集合为所述本地人脸识别模型对本地训练样本集合进行人脸识别得到的;
对所述本地困难样本集合和所述本地简单样本集合进行采样,得到用于训练所述服务器端人脸识别模型的服务器端训练样本集合,其中,所述服务器端训练样本集合中包含有对所述本地困难样本集合多次采样后的样本;
使用损失函数对所述服务器端训练样本集合中的服务器端训练样本进行训练,得到所述服务器端人脸识别模型。
在一种可选实施方式中,所述本地困难样本集合和本地简单样本集合的获取步骤,具体包括:
使用所述本地人脸识别模型对所述本地训练样本集合中的本地训练样本进行人脸识别,得到本地训练样本的人脸识别结果;
根据本地训练样本的人脸识别结果,获取到本地困难样本集合和本地简单样本集合,其中,所述本地困难样本集合包括人脸识别结果错误的本地训练样本;所述本地简单样本集合包括人脸识别结果正确的本地训练样本。
在一种可选实施方式中,所述本地困难样本集合和本地简单样本集合的获取步骤,具体包括:
使用所述本地人脸识别模型对本地训练样本进行人脸识别,得到本地训练样本的人脸识别值及其置信度;
根据本地训练样本的人脸识别值,确定出本地训练样本是否为目标用户的人脸识别结果;
根据本地训练样本的人脸识别结果及其置信度,获取到所述本地困难样本集合和所述本地简单样本集合,其中,所述本地困难样本集合包括人脸识别结果错误的本地训练样本,和/或,人脸识别结果错误且对应的置信度大于第一预设置信度的部分或全部本地训练样本;所述本地简单样本集合包括人脸识别结果正确的本地训练样本,或,人脸识别结果正确且对应的置信度大于第二预设置信度的部分或全部本地训练样本。
在一种可选实施方式中,所述使用损失函数对所述服务器端训练样本集合中的服务器端训练样本进行训练,得到所述服务器端人脸识别模型,具体包括:
将所述服务器端训练样本集合中的服务器端训练样本压缩后使用损失函数进行训练,得到所述服务器端人脸识别模型。
在一种可选实施方式中,所述人脸识别数据还包括所述本地人脸识别值和/或所述预设数值条件,其中,所述本地人脸识别值是所述本地设备通过所述本地人脸识别模型对所述预处理人脸图像进行本地人脸识别而得到的,所述预设数值条件用于确定是否将人脸识别数据上传至服务器端。
所述人脸识别数据还包括所述本地人脸识别值和/或所述预设数值条件,其中,所述本地人脸识别值是所述本地设备通过所述本地人脸识别模型对所述预处理人脸图像进行本地人脸识别而得到的,所述预设数值条件用于确定是否将人脸识别数据上传至服务器端。
在一种可选实施方式中,在接收本地设备发送的人脸识别数据之后,所述方法还包括:
若所述人脸识别数据包括所述本地人脸识别值、所述预设数值条件和压缩后的所述预处理人脸图像,则验证所述本地人脸识别值是否在所述预设数值条件内;
若验证出所述本地人脸识别值是在所述预设数值条件内,则基于所述服务器端人脸识别模型对压缩后的所述预处理人脸图像进行人脸识别,得到所述服务器端人脸识别结果;
将所述服务器端人脸识别结果发送给所述本地设备。
在一种可选实施方式中,所述基于所述服务器端人脸识别模型对所述人脸识别数据进行人脸识别,得到所述服务器端人脸识别结果,具体包括:
基于所述服务器端人脸识别模型对所述人脸识别数据进行人脸识别,得到服务器端人脸识别值;
判断所述服务器端人脸识别值是否大于服务器端设定阈值,得到判断结果,其中,所述判断结果为所述服务器端人脸识别结果。
第四方面,基于与第二方面的同一发明构思,本说明书实施例提供一种人脸识别装置,如图8所示,包括:
图像预处理单元801,用于对采集到的人脸图像进行图像预处理,得到预处理人脸图像;
本地人脸识别单元802,用于通过本地人脸识别模型对所述预处理人脸图像进行本地人脸识别,得到本地人脸识别值;
数据上传检测单元803,用于判断所述本地人脸识别值是否满足预设数值条件,其中,所述预设数值条件用于确定是否将人脸识别数据上传至服务器端;
人脸图像发送单元804,若判断出所述本地人脸识别值满足所述预设数值条件,用于将所述人脸识别数据发送给服务器端;
服务器端人脸识别结果接收及判断单元805,用于接收所述服务器端发送的服务器端人脸识别结果;基于所述服务器端人脸识别结果,确定所述人脸图像中的用户是否为目标用户;其中,所述服务器端人脸识别结果是所述服务器端基于服务器端人脸识别模型对所述人脸识别数据进行人脸识别而得到的,所述人脸识别数据包括所述预处理人脸图像和压缩后的所述预处理人脸图像中的至少一项;
本地人脸识别单元806,若判断出所述本地人脸识别值未满足所述预设数值条件,用于基于所述本地人脸识别值和本地设定阈值,判断所述人脸图像中的用户是否为目标用户。
在一种可选实施方式中,所述人脸识别数据还包括所述本地人脸识别值和/或所述预设数值条件。
在一种可选实施方式中,人脸图像发送单元804,还用于将所述人脸识别数据发送给所述服务器端,其中,所述人脸识别数据包括所述本地人脸识别值、所述预设数值条件和压缩后的所述预处理人脸图像;
服务器端人脸识别结果接收及判断单元805,还用于接收到所述服务器端发送的服务器端人脸识别结果,其中,所述服务器端人脸识别结果是所述服务器端在验证所述本地人脸识别值满足所述预设数值条件之后基于所述服务器端人脸识别模型对压缩后的所述预处理人脸图像进行人脸识别而得到的。
在一种可选实施方式中,图像预处理单元801,具体用于对所述人脸图像依次进行人脸检测、人脸校准和去除图像背景处理,得到人脸处理图像;根据所述人脸处理图像中的所有像素值,确定出所述人脸处理图像对应的像素均值;根据所述像素均值,确定出所述人脸处理图像中每个像素对应的方差;利用所述像素均值和每个像素对应的方差对每个像素进行归一化处理,得到每个像素的归一化数据;根据每个像素的归一化数据,得到所述预处理人脸图像。
在一种可选实施方式中,本地人脸识别单元806,具体用于判断所述本地人脸识别值是否不小于所述本地设定阈值;若所述本地人脸识别值不小于所述本地设定阈值,则判定所述人脸图像中的用户为目标用户;若所述本地人脸识别值小于所述本地设定阈值,则判定所述人脸图像中的用户为非目标用户。
在一种可选实施方式中,本地人脸识别单元802,具体用于获取在所述服务器端训练的所述本地人脸识别模型;对所述本地人脸识别模型进行本地模型部署处理,并将处理后的所述本地人脸识别模型部署在本地;通过部署在本地的所述本地人脸识别模型对所述预处理人脸图像进行本地人脸识别,得到所述本地人脸识别值。
第五方面,基于与第三方面的同一发明构思,本说明书实施例提供一种人脸识别装置,如图9所示,包括:
数据接收单元901,用于接收本地设备发送的人脸识别数据,其中,所述人脸识别数据包括预处理人脸图像和压缩后的所述预处理人脸图像中的至少一项,所述预处理人脸图像是所述本地设备对采集到的人脸图像进行图像预处理得到的;
服务器端人脸识别单元902,用于基于服务器端人脸识别模型对所述人脸识别数据进行人脸识别,得到服务器端人脸识别结果,其中,所述服务器端人脸识别模型是根据本地人脸识别模型检测到的本地困难样本和本地简单样本进行训练而得到的;
服务器端人脸识别结果发送单元903,用于将所述服务器端人脸识别结果发送给所述本地设备。
在一种可选实施方式中,所述检测装置还包括:
本地样本获取单元,用于获取本地困难样本集合和本地简单样本集合,其中,所述本地困难样本集合和所述本地简单样本集合为所述本地人脸识别模型对本地训练样本集合进行人脸识别得到的;
服务器端样本采样单元,用于对所述本地困难样本集合和所述本地简单样本集合进行采样,得到用于训练所述服务器端人脸识别模型的服务器端训练样本集合,其中,所述服务器端训练样本集合中包含有对所述本地困难样本集合多次采样后的样本;
服务器端人脸识别模型训练单元,用于使用损失函数对所述服务器端训练样本集合中的服务器端训练样本进行训练,得到所述服务器端人脸识别模型。
在一种可选实施方式中,所述检测装置还包括:
第一本地人脸识别单元,用于使用所述本地人脸识别模型对所述本地训练样本集合中的本地训练样本进行人脸识别,得到本地训练样本的人脸识别结果;
第一样本集合获取单元,用于根据本地训练样本的人脸识别结果,获取到本地困难样本集合和本地简单样本集合,其中,所述本地困难样本集合包括人脸识别结果错误的本地训练样本;所述本地简单样本集合包括人脸识别结果正确的本地训练样本。
在一种可选实施方式中,所述检测装置还包括:
第二本地人脸识别单元,用于使用所述本地人脸识别模型对本地训练样本进行人脸识别,得到本地训练样本的人脸识别值及其置信度;
本地人脸识别结果确定单元,用于根据本地训练样本的人脸识别值,确定出本地训练样本是否为目标用户的人脸识别结果;
第二样本集合获取单元,用于根据本地训练样本的人脸识别结果及其置信度,获取到所述本地困难样本集合和所述本地简单样本集合,其中,所述本地困难样本集合包括人脸识别结果错误的本地训练样本,和/或,人脸识别结果错误且对应的置信度大于第一预设置信度的部分或全部本地训练样本;所述本地简单样本集合包括人脸识别结果正确的本地训练样本,或,人脸识别结果正确且对应的置信度大于第二预设置信度的部分或全部本地训练样本。
在一种可选实施方式中,所述服务器端人脸识别模型训练单元,具体用于将所述服务器端训练样本集合中的服务器端训练样本压缩后使用损失函数进行训练,得到所述服务器端人脸识别模型。
在一种可选实施方式中,所述人脸识别数据还包括所述本地人脸识别值和/或所述预设数值条件,其中,所述本地人脸识别值是所述本地设备通过所述本地人脸识别模型对所述预处理人脸图像进行本地人脸识别而得到的,所述预设数值条件用于确定是否将人脸识别数据上传至服务器端。
在一种可选实施方式中,所述检测装置还包括:
验证单元,用于在接收本地设备发送的人脸识别数据之后,若所述人脸识别数据包括所述本地人脸识别值、所述预设数值条件和压缩后的所述预处理人脸图像,则验证所述本地人脸识别值是否在所述预设数值条件内;
服务器端人脸识别单元902,若验证出所述本地人脸识别值是在所述预设数值条件内,用于基于所述服务器端人脸识别模型对所述人脸识别数据进行人脸识别,得到所述服务器端人脸识别结果;
服务器端人脸识别结果发送单元903,用于将所述服务器端人脸识别结果发送给所述本地设备。
在一种可选实施方式中,服务器端人脸识别单元902,具体用于基于所述服务器端人脸识别模型对所述人脸识别数据进行人脸识别,得到服务器端人脸识别值;判断所述服务器端人脸识别值是否大于服务器端设定阈值,得到判断结果,其中,所述判断结果为所述服务器端人脸识别结果。
第六方面,基于与前述实施例中人脸识别方法同样的发明构思,本说明书实施例还提供一种服务器,如图10所示,包括存储器1004、处理器1002及存储在存储器1004上并可在处理器1002上运行的计算机程序,所述处理器1002执行所述程序时实现前文所述人脸识别方法的任一方法的步骤。
其中,在图10中,总线架构(用总线1000来代表),总线1000可以包括任意数量的互联的总线和桥,总线1000将包括由处理器1002代表的一个或多个处理器和存储器1004代表的存储器的各种电路链接在一起。总线1000还可以将诸如***设备、稳压器和功率管理电路等之类的各种其他电路链接在一起,这些都是本领域所公知的,因此,本文不再对其进行进一步描述。总线接口1005在总线1000和接收器1001和发送器1003之间提供接口。接收器1001和发送器1003可以是同一个元件,即收发机,提供用于在传输介质上与各种其他装置通信的单元。处理器1002负责管理总线1000和通常的处理,而存储器1004可以被用于存储处理器1002在执行操作时所使用的数据。
第七方面,基于与前述实施例中人脸识别方法的发明构思,本说明书实施例还提供一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现前文所述人脸识别方法的任一方法的步骤。
本说明书是参照根据本说明书实施例的方法、设备(***)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的设备。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令设备的制造品,该指令设备实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
尽管已描述了本说明书的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例作出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本说明书范围的所有变更和修改。
显然,本领域的技术人员可以对本说明书进行各种改动和变型而不脱离本说明书的精神和范围。这样,倘若本说明书的这些修改和变型属于本说明书权利要求及其等同技术的范围之内,则本说明书也意图包含这些改动和变型在内。