人脸关键点定位方法、装置及存储介质
文献发布时间:2023-06-19 09:27:35
技术领域
本发明涉及计算机技术领域,具体涉及一种人脸关键点定位方法、装置及存储介质。
背景技术
目前人脸关键点算法很多,但大多数算法要么是为了提高性能,便于终端部署,要么是为了提高准确率而使用比较大的模型进行关键点预测,导致模型推理速度较慢。也就是说,传统的人脸关键点识别要么识别速度慢,要么识别准确度低。因此,有必要提出一种既快又准确的人脸关键点识别方法。
发明内容
基于此,有必要针对上述问题,提出一种既快又准确的人脸关键点定位方法、装置及存储介质。
一种人脸关键点定位方法,包括:
获取待识别的人脸图像;
对所述人脸图像进行人脸关键点识别,得到每个所述人脸关键点在所述人脸图像中的初始位置;
分别将每个所述人脸关键点作为目标人脸关键点,根据所述目标人脸关键点的初始位置从所述人脸图像中提取出包含有所述目标人脸关键点的预设大小的小图片;
对每个小图片中的目标人脸关键点进行识别,确定所述目标人脸关键点在所述小图片中的精确位置;
根据所述目标人脸关键点在所述小图片中的精确位置和所述小图片在所述人脸图像中的位置确定所述目标人脸关键点在所述人脸图像中的精确位置。
一种人脸关键点定位装置,包括:
获取模块,用于获取待识别的人脸图像;
识别模块,用于对所述人脸图像进行人脸关键点识别,得到每个所述人脸关键点在所述人脸图像中的初始位置;
提取模块,用于分别将每个所述人脸关键点作为目标人脸关键点,根据所述目标人脸关键点的初始位置从所述人脸图像中提取出包含有所述目标人脸关键点的预设大小的小图片;
第一确定模块,用于对每个小图片中的目标人脸关键点进行识别,确定所述目标人脸关键点在所述小图片中的精确位置;
第二确定模块,用于根据所述目标人脸关键点在所述小图片中的精确位置和所述小图片在所述人脸图像中的位置确定所述目标人脸关键点在所述人脸图像中的精确位置。
一种计算机可读存储介质,存储有计算机程序,所述计算机程序被处理器执行时,使得所述处理器执行以下步骤:
获取待识别的人脸图像;
对所述人脸图像进行人脸关键点识别,得到每个所述人脸关键点在所述人脸图像中的初始位置;
分别将每个所述人脸关键点作为目标人脸关键点,根据所述目标人脸关键点的初始位置从所述人脸图像中提取出包含有所述目标人脸关键点的预设大小的小图片;
对每个小图片中的目标人脸关键点进行识别,确定所述目标人脸关键点在所述小图片中的精确位置;
根据所述目标人脸关键点在所述小图片中的精确位置和所述小图片在所述人脸图像中的位置确定所述目标人脸关键点在所述人脸图像中的精确位置。
上述人脸关键点定位方法、装置及存储介质,首先对人脸图像的人脸关键点进行初识别的得到人脸关键点的初始位置,然后分别根据识别到的人脸关键点从人脸图像中提取出预设大小的小图片,然后针对每个小图片进行目标人脸关键点的再次识别,从而确定了目标人脸关键点在小图片中的精确位置,进而确定了目标人脸关键在在人脸图像中的精确位置。上述人脸关键点定位方法,在第一次识别得到人脸关键点之后,通过提取小图片,对小图片中的目标人脸关键点进行再次精准识别,通过二次识别提高了识别的准确度,而且在这个过程中,由于第一次识别只需要完成粗略识别,故,不需要使用复杂的模型进行识别,第二次是在第一次识别的基础上进行再次识别,计算量小,也不需要使用复杂的模型进行识别,从而提高了识别的速度。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
其中:
图1是一个实施例中人脸关键点定位方法的流程图;
图2是另一个实施例中人脸关键点定位方法的流程图;
图3是一个实施例中从人脸图像中提取小图片的示意图;
图4是一个实施例中人脸关键点定位装置的结构框图;
图5是另一个实施例中人脸关键点定位装置的结构框图;
图6是又一个实施例中人脸关键点定位装置的结构框图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
如图1所示,提出了一种人脸关键点定位方法,该人脸关键点定位方法可以应用于终端,本实施例以应用于终端举例说明。该人脸关键点定位方法具体包括以下步骤:
步骤102,获取待识别的人脸图像。
其中,待识别的人脸图像是指需要进行人脸关键点识别的人脸图像。待识别的人脸图像可以是直接拍摄得到的人脸图像,也可以是预先存储的人脸图像。在一个实施例中,首先获取的是包含有人脸的原始图像,然后对原始图像中的人脸进行检测,根据检测结果将人脸图像从原始图像提取出来,提取出的人脸图像作为待识别的人脸图像。
步骤104,对人脸图像进行人脸关键点识别,得到每个人脸关键点在人脸图像中的初始位置。
其中,人脸关键点是指反映人脸面部特征的特征点,包括:眉毛、眼睛、鼻子、嘴巴和脸部轮廓的特征点。根据人脸关键点可以定位出人脸面部的关键区域位置。所以人脸关键点的识别在人脸图像识别中是很重要的一环。在一个实施例中,采用人脸关键点识别模型来对人脸图像进行关键点识别,人脸关键点识别模型可以采用深度卷积神经网络模型训练得到。
在一个实施例中,可以基于Mobilenet(一种适用于终端部署的轻量化卷积神经网络架构)进行模型训练,该模型具有模型参数小,运算速度快的特点。通过采用轻量化的人脸关键点识别模型对人脸图像进行人脸关键点的初识别,可以快速得到识别的人脸关键点,但是此时得到的人脸关键点在人脸图像中的初始位置不够准确。所以为了提高识别的准确度,后续还需要进行进一步的人脸关键点识别。
步骤106,分别将每个人脸关键点作为目标人脸关键点,根据目标人脸关键点的初始位置从人脸图像中提取出包含有目标人脸关键点的预设大小的小图片。
其中,为了得到更加准确的人脸关键点,首先,根据目标人脸关键点的初始位置从人脸图像中提取包含有目标人脸关键点的小图片,比如,提取出32*32大小的小图片。在一个实施例中,是以目标人脸关键点为中心进行小图片的提取,比如,提取以以目标人脸关键点为中心的正方形的小图片。
步骤108,对每个小图片中的目标人脸关键点进行识别,确定目标人脸关键点在小图片中的精确位置。
其中,针对每个小图片中的目标人脸关键点进行识别,可以得到目标人脸关键点在小图片中的精确位置。在初次识别时,由于识别的精确度不高,所以识别到的人脸关键点的位置不够精确,在提取到小图片时,可以更加有针对性地进行精准识别。举例说明,在人脸图像进行人脸关键点识别时,假设识别的精度精确到1cm,比如,能够识别到人脸关键点在图像中的(5cm,4cm)的坐标上。事实上,如果扩大精确识别度,比如精确到1mm,这样就可以将人脸关键点进一步准确定位,比如,最终定位在(4.9cm,3.8cm)。
需要说明的是:提取的小图片中包含的人脸关键点可能有多个,但是包含的目标人脸关键点只有一个,所以针对小图片的识别,是为了识别得到目标人脸关键点在小图片中的精确位置。
步骤110,根据目标人脸关键点在小图片中的精确位置和小图片在人脸图像中的位置确定目标人脸关键点在人脸图像中的精确位置。
其中,在已知小图片在人脸图像中位置,又已知目标人脸关键点在小图像中的精确位置,这样就可以确定出目标人脸关键点在人脸图像中的精确位置。
上述人脸关键点定位方法,首先对人脸图像的人脸关键点进行初识别得到人脸关键点的初始位置,然后分别根据识别到的人脸关键点从人脸图像中提取出预设大小的小图片,然后针对每个小图片进行目标人脸关键点的再次识别,从而确定了目标人脸关键点在小图片中的精确位置,进而确定了目标人脸关键在在人脸图像中的精确位置。上述人脸关键点定位方法,在第一次识别得到人脸关键点之后,通过提取小图片,对小图片中的目标人脸关键点进行再次精准识别,通过二次识别提高了识别的准确度,而且在这个过程中,由于不需要使用复杂的模型进行识别,提高了识别的速度。
如图2所示,在一个实施例中,在对每个小图片中的目标人脸关键点进行识别,确定目标人脸关键点在小图片中的精确位置之前,还包括:
步骤107,将提取出的各个小图片进行组合拼接,得到一个包含有所有小图片的大图片。
其中,为了提高识别的速度,将提取出的各个小图片组合拼接得到包含所有小图片的大图片,具体地,若人脸关键点有127个,而每个小图片的尺寸为32*32,那么组合成的大图片的尺寸为:127*32*32。这样在采用模型预测时,只需要输入大图片即可实现快速预测,相对于输入一张张小图片的方式,直接输入组合拼接后的大图片有利于提高识别的速度。
对每个小图片中的目标人脸关键点进行识别,确定目标人脸关键点在小图片中的精确位置,即步骤108包括:
步骤108A,将大图片作为人脸关键点精确识别模型的输入,人脸关键点精确识别模型用于对大图片中的每个小图片中的目标人脸关键点进行精确识别。
其中,人脸关键点精确识别模型中包含有多通道,可以同时对大图片中的多个小图片中的目标人脸关键点进行精确识别,比如,可以设置一个小图片对应一个通道,不仅提高了识别的准确度,而且还提高了识别的速度。
步骤108B,获取人脸关键点精确识别模型输出的目标人脸关键点在小图片中的精确位置。
其中,人脸关键点精确识别模型用于对小图片中的目标人脸关键点进行精确识别,输出人脸关键点在小图片中的精确位置。已知小图片在人脸图像中的位置,以及目标人脸关键点在小图片中的精确位置,就可以确定目标人脸关键点在人脸图像中的精确位置,从而提高了人脸关键点识别的准确度。
在一个实施例中,所述人脸关键点精确识别模型采用如下方式训练得到:
获取训练人脸图像样本集,所述训练人脸图像样本集中包含有拼接得到的训练大图片,每个大图片中包含有若干个小图片,每个小图片对应有目标人脸关键点的标注;
将所述训练大图片作为所述人脸关键点精确识别模型的输入,将所述训练大图片中所有小图片对应的目标人脸关键点的标注作为期望的输出进行训练,得到所述人脸关键点精确识别模型。
其中,人脸关键点精确识别模型是通过训练得到的,该模型的训练采用的是有监督的训练方式,训练人脸图像样本集中包含有拼接得到的训练大图片,训练大图片是由多个小图片组合成的,每个小图片包含有目标人脸关键点,以及对应有目标人脸关键点的标注,目标人脸关键点的标注是指标记目标人脸关键点准确位置的标注,比如,已知目标人脸关键点在小图片中的坐标,比如坐标为(15,16)位置处,那么就将这个坐标作为目标人脸关键点的标注。训练大图片的获取方法是:首先对训练人脸图像进行识别,得到人脸关键点,然后以每个人脸关键点为中心从训练人脸图像中提取出预设大小(比如,32*32)的小图片,然后将提出的各个小图片组合为大图片。具体地,若人脸关键点有127个,而每个小图片的尺寸为32*32,那么组合成的大图片的尺寸为:127*32*32。
人脸关键点精确识别模型可以采用一个浅层的CNN(即卷积神经网络模型)来实现。通过对该浅层的CNN模型进行训练,可以得到用于精确识别小图片中目标人脸关键点的人脸关键点精确识别模型。其中,浅层的CNN是指层数较少的模型,是个轻量型的卷积神经网络模型。比如,可以采用一个简单的只有三层的CNN模型。对于模型来说,层数越多,其计算量越大,相应的速度也就越慢。本申请中由于是在第一次识别的基础上进行的二次识别,所以采用一个浅层的CNN模型就可以实现,有利于提高识别速度。该模型是采用有监督的训练方式进行训练的,如上所述,将训练大图片作为输入,将每个小图片包含的目标人脸关键点的标注作为期望的输出对该模型进行训练。目标人脸关键点的标注即为标注的目标人脸关键点在小图片中的精确坐标位置。
在一个实施例中,所述根据所述目标人脸关键点的初始位置从所述人脸图像中提取出包含有所述目标人脸关键点的预设大小的小图片,包括:分别以每个所述目标人脸关键点的初始位置为中心,从所述人脸图像中提取出预设大小的小图片。
其中,将目标人脸关键点的初始位置作为中心,提取出预设大小的小图片。比如,将目标人脸关键点的初始位置为中心,提取出32*32大小的小图片,如图3所示,为一个实施例中,从人脸图像中提取小图片的示意图,从图中可以看出提取的小图片中可能包含有多个人脸关键点,但是最后识别的时候是要识别目标人脸关键点,一个小图片中只有一个目标人脸关键点。将目标人脸关键点的初始位置为中心进行提取,有利于后续更加精确地识别到目标人脸关键点在小图片中的精确位置。
在一个实施例中,所述获取待识别的人脸图像包括:对包含有人脸的原始图像进行人脸检测,提取出检测得到的人脸图像;将检测得到的所述人脸图像作为所述待识别的人脸图像。
其中,原始图像是指包含有人脸的图像。原始图像中往往还包括除了人脸图像以外的其他部分图像,所以为了更好地对人脸关键点进行识别,首先通过人脸检测技术从原始图像中提取出人脸图像,然后针对人脸图像进行人脸关键点的识别。
在一个实施例中,在所述分别将每个所述人脸关键点作为目标人脸关键点,根据所述目标人脸关键点的初始位置从所述人脸图像中提取出包含有所述目标人脸关键点的预设大小的小图片之前还包括:将所述人脸图像缩放到预设的标准大小,得到标准人脸图像;
所述分别将每个所述人脸关键点作为目标人脸关键点,根据所述目标人脸关键点的初始位置从所述人脸图像中提取出包含有所述目标人脸关键点的预设大小的小图片,包括:根据所述目标人脸关键点的初始位置从所述标准人脸图像中提取出包含有所述目标人脸关键点的预设大小的小图片。
其中,在初步识别到人脸关键点之后,为了便于后续处理,需要将人脸图像缩放到标准人脸图像,比如,缩放到256*256大小尺寸的图像。然后在该标准人脸图像中进行小图片的提取,比如,在每个预测得到的人脸关键点周围以32*32大小的尺寸截取小图片。
在一个实施例中,所述对所述人脸图像进行人脸关键点识别,得到每个所述人脸关键点在所述人脸图像中的初始位置,包括:将所述人脸图像作为第一人脸关键点识别模型的输入,所述第一人脸关键点识别模型为轻量化卷积神经网络模型;获取所述第一人脸关键点识别模型输出的人脸关键点在所述人脸图像上的初始位置。
其中,为了提高人脸关键点识别的速度,在对人脸关键点进行初步识别时,采用轻量化的卷积神经网络模型进行预测识别,从而有利于提高人脸关键点识别的速度。为了与前面提到的“人脸关键点精确识别模型”进行区分,对人脸关键点进行初步识别的模型我们称为“第一人脸关键点识别模型”。该第一人脸关键点识别模型也是采用有监督的训练方式得到的,通过获取训练样本集,训练样本集中包含训练人脸图像和与训练人脸图像对应的人脸关键点标注。将训练人脸图像作为待训练的第一人脸关键点识别模型的输入,将相应的人脸关键点标注作为期望的输出来进行模型训练,就可以得到能够预测人脸关键点位置的第一人脸关键点识别模型。
如图4所示,在一个实施例中,提出了一种人脸关键点定位装置,包括:
获取模块402,用于获取待识别的人脸图像;
识别模块404,用于对所述人脸图像进行人脸关键点识别,得到每个所述人脸关键点在所述人脸图像中的初始位置;
提取模块406,用于分别将每个所述人脸关键点作为目标人脸关键点,根据所述目标人脸关键点的初始位置从所述人脸图像中提取出包含有所述目标人脸关键点的预设大小的小图片;
第一确定模块408,用于对每个小图片中的目标人脸关键点进行识别,确定所述目标人脸关键点在所述小图片中的精确位置;
第二确定模块410,用于根据所述目标人脸关键点在所述小图片中的精确位置和所述小图片在所述人脸图像中的位置确定所述目标人脸关键点在所述人脸图像中的精确位置。
如图5所示,在一个实施例中,上述人脸关键点定位装置还包括:
组合模块407,用于将提取出的各个小图片进行组合拼接,得到一个包含有所有小图片的大图片;
所述第一确定模块还用于将所述大图片作为人脸关键点精确识别模型的输入,所述人脸关键点精确识别模型用于对所述大图片中的每个小图片中的目标人脸关键点进行精确识别;获取所述人脸关键点精确识别模型输出的目标人脸关键点在所述小图片中的精确位置。
在一个实施例中,上述人脸关键点定位装置还包括:模型训练模块,用于获取训练人脸图像样本集,所述训练人脸图像样本集中包含有拼接得到的训练大图片,每个大图片中包含有若干个小图片,每个小图片对应有目标人脸关键点的标注;将所述训练大图片作为所述人脸关键点精确识别模型的输入,将所述训练大图片中所有小图片对应的目标人脸关键点的标注作为期望的输出进行训练,得到所述人脸关键点精确识别模型。
在一个实施例中,提取模块还用于分别以每个所述目标人脸关键点的初始位置为中心,从所述人脸图像中提取出预设大小的小图片。
在一个实施例中,获取模块402还用于对包含有人脸的原始图像进行人脸检测,提取出检测得到的人脸图像;将检测得到的所述人脸图像作为所述待识别的人脸图像。
如图6所示,在一个实施例中,上述人脸关键点定位装置还包括:
缩放模块405,用于将所述人脸图像缩放到预设的标准大小,得到标准人脸图像;
所述提取模块406还用于根据所述目标人脸关键点的初始位置从所述标准人脸图像中提取出包含有所述目标人脸关键点的预设大小的小图片。
在一个实施例中,所述识别模块还用于将所述人脸图像作为第一人脸关键点识别模型的输入,所述第一人脸关键点识别模型为轻量化卷积神经网络模型;获取所述第一人脸关键点识别模型输出的人脸关键点在所述人脸图像上的初始位置。
在一个实施例中,提出了一种计算机可读存储介质,存储有计算机程序,所述计算机程序被处理器执行时,使得所述处理器执行以下步骤:获取待识别的人脸图像;对所述人脸图像进行人脸关键点识别,得到每个所述人脸关键点在所述人脸图像中的初始位置;分别将每个所述人脸关键点作为目标人脸关键点,根据所述目标人脸关键点的初始位置从所述人脸图像中提取出包含有所述目标人脸关键点的预设大小的小图片;对每个小图片中的目标人脸关键点进行识别,确定所述目标人脸关键点在所述小图片中的精确位置;根据所述目标人脸关键点在所述小图片中的精确位置和所述小图片在所述人脸图像中的位置确定所述目标人脸关键点在所述人脸图像中的精确位置。
在一个实施例中,在所述对每个小图片中的目标人脸关键点进行识别,确定所述目标人脸关键点在所述小图片中的精确位置之前,所述计算机程序被所述处理器执行时,还用于执行以下步骤:将提取出的各个小图片进行组合拼接,得到一个包含有所有小图片的大图片;
所述对每个小图片中的目标人脸关键点进行识别,确定所述目标人脸关键点在所述小图片中的精确位置,包括:将所述大图片作为人脸关键点精确识别模型的输入,所述人脸关键点精确识别模型用于对所述大图片中的每个小图片中的目标人脸关键点进行精确识别;获取所述人脸关键点精确识别模型输出的目标人脸关键点在所述小图片中的精确位置。
在一个实施例中,所述人脸关键点精确识别模型采用如下方式训练得到:
获取训练人脸图像样本集,所述训练人脸图像样本集中包含有拼接得到的训练大图片,每个大图片中包含有若干个小图片,每个小图片对应有目标人脸关键点的标注;
将所述训练大图片作为所述人脸关键点精确识别模型的输入,将所述训练大图片中所有小图片对应的目标人脸关键点的标注作为期望的输出进行训练,得到所述人脸关键点精确识别模型。
在一个实施例中,所述根据所述目标人脸关键点的初始位置从所述人脸图像中提取出包含有所述目标人脸关键点的预设大小的小图片,包括:分别以每个所述目标人脸关键点的初始位置为中心,从所述人脸图像中提取出预设大小的小图片。
在一个实施例中,所述获取待识别的人脸图像包括:对包含有人脸的原始图像进行人脸检测,提取出检测得到的人脸图像;将检测得到的所述人脸图像作为所述待识别的人脸图像。
在一个实施例中,在所述分别将每个所述人脸关键点作为目标人脸关键点,根据所述目标人脸关键点的初始位置从所述人脸图像中提取出包含有所述目标人脸关键点的预设大小的小图片之前,所述计算机程序被所述处理器执行时,还用于执行以下步骤:将所述人脸图像缩放到预设的标准大小,得到标准人脸图像;
所述分别将每个所述人脸关键点作为目标人脸关键点,根据所述目标人脸关键点的初始位置从所述人脸图像中提取出包含有所述目标人脸关键点的预设大小的小图片,包括:根据所述目标人脸关键点的初始位置从所述标准人脸图像中提取出包含有所述目标人脸关键点的预设大小的小图片。
在一个实施例中,所述对所述人脸图像进行人脸关键点识别,得到每个所述人脸关键点在所述人脸图像中的初始位置,包括:将所述人脸图像作为第一人脸关键点识别模型的输入,所述第一人脸关键点识别模型为轻量化卷积神经网络模型;获取所述第一人脸关键点识别模型输出的人脸关键点在所述人脸图像上的初始位置。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的程序可存储于一非易失性计算机可读取存储介质中,该程序在执行时,可包括如上述各方法的实施例的流程。其中,本申请所提供的各实施例中所使用的对存储器、存储、数据库或其它介质的任何引用,均可包括非易失性和/或易失性存储器。非易失性存储器可包括只读存储器(ROM)、可编程ROM(PROM)、电可编程ROM(EPROM)、电可擦除可编程ROM(EEPROM)或闪存。易失性存储器可包括随机存取存储器(RAM)或者外部高速缓冲存储器。作为说明而非局限,RAM以多种形式可得,诸如静态RAM(SRAM)、动态RAM(DRAM)、同步DRAM(SDRAM)、双数据率SDRAM(DDRSDRAM)、增强型SDRAM(ESDRAM)、同步链路(Synchlink)DRAM(SLDRAM)、存储器总线(Rambus)直接RAM(RDRAM)、直接存储器总线动态RAM(DRDRAM)、以及存储器总线动态RAM(RDRAM)等。
以上实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。
以上所述实施例仅表达了本申请的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对本申请专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本申请构思的前提下,还可以做出若干变形和改进,这些都属于本申请的保护范围。因此,本申请专利的保护范围应以所附权利要求为准。
- 人脸关键点定位模型的训练方法、装置及关键点定位方法
- 人脸的关键点定位方法和装置、存储介质及电子装置