发明内容
为了解决上述技术问题,本申请提供了一种视频人脸识别方法、系统及存储介质。
第一方面,本申请提供了一种视频人脸识别方法,所述方法包括:所述方法包括:
获取待跟踪视频的图像帧,其中,所述图像帧包括初始图像帧和普通图像帧;对当前图像帧进行人脸检测;若当前图像帧包含有人脸特征,则获得当前图像帧的人脸特征,并执行下一步骤,否则,获取待跟踪视频的下一个图像帧,并返回上一步;将当前图像帧的人脸特征与人脸数据库中的人脸特征进行对比识别;若人脸数据库中不存在与当前图像帧的人脸特征相同的人脸特征,则将当前图像帧的人脸特征输入人脸数据库保存;重复上述步骤直至完成待跟踪视频的所有图像帧的人脸跟踪。
进一步地,若人脸数据库中不存在与当前图像帧的人脸特征相同的人脸特征,则将当前图像帧的人脸特征输入人脸数据库保存的步骤,包括:判断当前图像帧的类型;
若为初始图像帧,则将当前图像帧的人脸特征输入人脸数据库保存;
若为普通图像帧,则遍历当前图像帧的人脸特征,并计算出所述当前图像帧的人脸特征与比较图像帧的人脸特征的第一余弦距离最大值,以及在所述第一余弦距离最大值时的当前图像帧的人脸特征的宽高比;其中,所述比较图像帧的人脸特征是指通过变量暂存的方式暂存的当前图像帧的前一帧图像的各个人脸特征;当第一余弦距离最大值满足预设条件时,将当前图像帧的人脸特征识别为待加入人脸数据库的人脸特征。
进一步地,当第一余弦距离最大值满足预设条件时,将当前图像帧的人脸特征识别为待加入人脸数据库的人脸特征的步骤,包括:
若第一余弦距离最大值小于0.4,则遍历人脸数据库每个ID最后加入的人脸特征,并计算出与当前图像帧人脸特征的第二余弦距离最大值;当第二余弦距离最大值且当前图像帧的人脸特征的宽高比满足预设条件时,将当前图像帧的人脸特征加入新ID或将当前图像帧的人脸特征放入与人脸数据库余弦距离最大的ID;
若第一余弦距离最大值大于0.5,则遍历人脸数据库中每个ID各自所有人脸的特征,并与当前图像帧人脸特征求得第三余弦距离最大值,以及统计所述第三余弦距离最大值大于0.8的个数;当第三余弦距离最大值大于0.8的个数且当前图像帧的人脸特征的宽高比满足预设条件时,将当前图像帧的人脸特征放入人脸数据库中对应的ID。
进一步地,当第二余弦距离最大值且当前图像帧的人脸特征的宽高比满足预设条件时,将当前图像帧的人脸特征加入新ID或将当前图像帧的人脸特征放入与人脸数据库余弦距离最大的ID的步骤,包括:
若第二余弦距离最大值大于0.8且当前图像帧人脸的宽高比大于0.5,则将当前图像帧的人脸特征放入与人脸数据库余弦距离最大的ID;
若第二余弦距离最大值小于0.4且当前图像帧人脸的宽高比大于0.5,则将当前图像帧的人脸特征加入新ID,并保存在人脸数据库中。
进一步地,若第二余弦距离最大值小于0.4且当前图像帧人脸的宽高比大于0.5,则为当前图像帧人脸特征加入新ID,并保存在人脸数据库中的步骤之后,还包括:将人脸数据库中的ID依次序反向排序;遍历ID,并计算出任何两个ID之间所有人脸的特性的余弦相识度,并统计所述余弦相识度大于0.8的人脸数量;若所述余弦相识度大于0.8的人脸个数大于1,则判定该两个ID为同一个人的不同场景人脸,并将这两个ID合并为一个ID;将合并之后的ID反向排序回到正常顺序。
进一步地,当第三余弦距离最大值大于0.8的个数且当前图像帧的人脸特征的宽高比满足预设条件时,将当前图像帧的人脸特征放入人脸数据库中对应的ID的步骤,包括:若第三余弦距离最大值大于0.8的个数大于对应ID的人脸个数的十分之一,且当前图像帧人脸的宽高比大于0.5,则将当前图像帧的人脸特征放入人脸数据库中对应的ID。
进一步地,若当前图像帧包含有人脸特征,则获得当前图像帧的人脸特征,并执行下一步骤,否则,获取待跟踪视频的下一个图像帧,并返回上一步的步骤之后,还包括:根据人脸特征中的两眼关键点的直线和水平线的角度获得正余弦值;根据所述正余弦值对包含此检测人脸的图像帧作仿射变换,将人脸摆正到竖直方向;根据所述仿射变换的仿射矩阵对检测人脸的检测框作矩阵变换,得到对齐人脸的新检测框;以所述新检测框宽高的最大值和所述新检测框的中心点,计算出最大对齐人脸的正方形范围,并输出此正方形正脸。
进一步地,若人脸数据库中不存在与当前图像帧的人脸特征相同的人脸特征,则将当前图像帧的人脸特征输入人脸数据库保存的步骤之后,还包括:遍历当前图像帧的所有人脸特征和人脸数据库中的所有ID,计算出它们之间的余弦相似度,并统计余弦相识度大于0.4的个数;当余弦相似度大于0.4的个数大于相比较的ID对应的人脸个数的1/10,则输出当前图像帧的所有人脸的ID类别和对应的人脸检测框的坐标。
第二方面,本申请提供了一种视频人脸识别系统,所述系统包括:
视频模块,用于获取待跟踪视频的图像帧作为当前图像帧;
人脸检测模块,用于对当前图像帧进行人脸检测,并提取当前图像帧中的人脸特征;
判断模块,用于判断当前图像帧是否包含有人脸特征,若包含有人脸特征,则获得当前图像帧的人脸特征,否则,获取待跟踪视频的下一个图像帧;
对比模块,用于将当前图像帧的人脸特征与人脸数据库中的人脸特征进行对比识别,
保存模块,用于根据将当前图像帧的人脸特征与人脸数据库中的人脸特征进行对比识别的结果,将当前图像帧的人脸特征输入人脸数据库保存。
第三方面,本申请提供了一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时,实现本公开的第一个方面提供的视频人脸识别方法。
本申请提供了一种视频人脸识别方法、系统及存储介质,该方法通过获取待跟踪视频的图像帧,所述图像帧包括初始图像帧和普通图像帧;之后对当前图像帧进行人脸检测,若当前图像帧包含有人脸特征,则获得当前图像帧的人脸特征,并执行下一步骤,否则,获取待跟踪视频的下一个图像帧,并返回上一步;然后将当前图像帧的人脸特征与人脸数据库中的人脸特征进行对比识别;若人脸数据库中不存在与当前图像帧的人脸特征相同的人脸特征,则将当前图像帧的人脸特征输入人脸数据库保存,如此重复上述所有步骤直至完成待跟踪视频的所有图像帧的人脸跟踪,相对于现有的人脸跟踪方法来说,解决了在背景复杂、多人任意移动场景以及人脸随镜头时长消失的视频场景会彻底失效的问题,有效地提高了人脸跟踪效果,降低了使用难度。
具体实施方式
为使本申请实施例的目的、技术方案和优点更加清楚,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本申请的一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本申请保护的范围。
本发明第一实施例提供一种视频人脸识别方法,参照图1,图1为本发明视频人脸识别方法第一实施例的流程示意图。该视频人脸识别方法具体包括如下步骤:
步骤S100,获取待跟踪视频的图像帧,其中,图像帧包括初始图像帧和普通图像帧。
在本实施例中,待跟踪视频可以是存储在手机、平板、电脑等移动终端上的一个或多个视频段,通过将手机、平板、电脑等移动终端上的一个或多个视频段中的图像进行处理,获取到多张图像帧。需要说明的是,在多张图像帧中既包括初始图像帧和普通图像帧,这里的初始图像帧是指人脸首次出现的图像帧。
步骤S200,对当前图像帧进行人脸检测。
在本实施例中,对当前图像帧进行人脸检测可以细化为目标定位和目标识别两个任务,即先找到图像中存在某个对象的区域,然后识别出该区域具体的对象是什么。在对当前图像帧进行人脸检测采用的算法一般是one-stage算法或two-stage算法;由于one-stage算法的速度远远快于two-stage算法,而YOLO算法作为one-stage算法最典型的代表,其基于深度神经网络对对象同时进行识别和定位,运行速度很快,可以用于实时系统,因而,在本实施例中对当前图像帧进行人脸检测使用的算法是在YOLO算法中的yolov5基础上,增加了人脸关键点预测的yolov5s算法,该种算法不仅速度快而且非常精准。
步骤S300,若当前图像帧包含有人脸特征,则获得当前图像帧的人脸特征,并执行下一步骤,否则,获取待跟踪视频的下一个图像帧,并返回上一步。
在本实施例中,若检测出当前图像帧包含有人脸特征,则获得当前图像帧的人脸特征,并将获取的人脸特征信息输入到下一步骤中,若没有检测出当前图像包含有人脸特征,表明当前图像帧中并没有人脸图像,则直接执行对下一个图像帧的人脸特征检测。
步骤S400,将当前图像帧的人脸特征与人脸数据库中的人脸特征进行对比识别。
步骤S500,若人脸数据库中不存在与当前图像帧的人脸特征相同的人脸特征,则将当前图像帧的人脸特征输入人脸数据库保存。
步骤S600,重复上述所有步骤直至完成待跟踪视频的所有图像帧的人脸跟踪。
基于第一实施例,提出本发明视频人脸识别方法的第二个实施例,参照图2,步骤S500包括:
步骤S510,判断当前图像帧的类型;
步骤S520,若为初始图像帧,则将当前图像帧的人脸特征输入人脸数据库保存;
步骤S530,若为普通图像帧,则遍历当前图像帧的人脸特征,并计算出当前图像帧的人脸特征与比较图像帧的人脸特征的第一余弦距离最大值,以及在第一余弦距离最大值时的当前图像帧的人脸特征的宽高比;其中,所述比较图像帧的人脸特征是指通过变量暂存的方式暂存的当前图像帧的前一帧图像的各个人脸特征;当第一余弦距离最大值满足预设条件时,将当前图像帧的人脸特征识别为待加入人脸数据库的人脸特征。
在本实施例中,为了获取更实时的人脸跟踪效果和降低使用难度,本发明采用的实时一边读取图像帧一边建立人脸数据库的动态方式进行,不需要在遇到任何视频之前先把视频中出现的人脸特征录入到人脸数据库中,也不需要先把视频的所有人脸读取一遍来建立人脸数据库,再跟踪视频中的各个人脸特征。即本发明采用对视频中的图像帧一帧一帧地进行读取,当读取的图像帧为初始帧时,采用arcface算法对初始图像帧的人脸特征进行提取,之后将初始图像帧的人脸特征输入到人脸数据库中的进行保存,若为普通图像帧,则遍历当前图像帧的人脸特征,并计算出当前图像帧的人脸特征与比较图像帧的人脸特征的第一余弦距离最大值,当第一余弦距离最大值满足预设条件时,将当前图像帧的人脸特征识别为待加入人脸数据库的人脸特征,实现了对人脸数据库的建立以及对人脸数据库动态更新,提高了人脸跟踪效果,降低了使用难度。
需要说明的是,上述的比较图像帧是指在对上一个图像帧进行处理的时候,通过变量暂存的方式将其暂存起来形成的,便于当前图像帧与上一个图像帧进行相识度比较,之后再与人脸数据库中的人脸特征进行比对,实现了实时计算的目的,提高了识别速度和精确度。例如:对第二图像帧进行处理时,判断出第二图像帧是普通图像帧,则遍历第二图像帧的人脸特征,然后计算出第二图像帧的人脸特征与暂存的第一图像帧的第一余弦距离最大值,对第一余弦距离最大值是否满足预设条件进行判断,根据判断结果对第二图像帧的人脸特征加入的人脸数据库中,并将第二图像帧暂存为比较图像帧,使其与第三图像帧进行相识度比对,如此类推地对视频中的所有图像帧进行人脸识别。
具体地,当第一余弦距离最大值满足预设条件时,将当前图像帧的人脸特征识别为待加入人脸数据库的人脸特征的步骤,包括:
若第一余弦距离最大值小于0.4,则遍历人脸数据库每个ID最后加入的人脸特征,并计算出与当前图像帧人脸特征的第二余弦距离最大值;当第二余弦距离最大值且当前图像帧的人脸特征的宽高比满足预设条件时,将当前图像帧的人脸特征加入新ID或将当前图像帧的人脸特性放入与人脸数据库余弦距离最大的ID;
若第一余弦距离最大值大于0.5,则遍历人脸数据库中每个ID各自所有人脸的特征,并与当前图像帧人脸特征信息求得第三余弦距离最大值,以及统计所述第三余弦距离最大值大于0.8的个数;当第三余弦距离最大值大于0.8的个数且当前图像帧的人脸特征的宽高比满足预设条件时,将当前图像帧的人脸特征放入人脸数据库中对应的ID。
其中,当第二余弦距离最大值且当前图像帧的人脸特征的宽高比满足预设条件时,将当前图像帧的人脸特征加入新ID或将当前图像帧的人脸特征放入与人脸数据库余弦距离最大的ID的步骤,包括:
若第二余弦距离最大值大于0.8且当前图像帧人脸的宽高比大于0.5,则将当前图像帧的人脸特征放入与人脸数据库余弦距离最大的ID;
若第二余弦距离最大值小于0.4且当前图像帧人脸的宽高比大于0.5,则将当前图像帧的人脸特征加入新ID,并保存在人脸数据库中。
进一步地,若第二余弦距离最大值小于0.4且当前图像帧人脸的宽高比大于0.5,则为当前图像帧人脸特征加入新ID,并保存在人脸数据库中的步骤之后,还包括:
将人脸数据库中的ID依次序反向排序;
遍历ID,并计算出任何两个ID之间所有人脸的特性的余弦相识度,并统计余弦相识度大于0.8的人脸数量;
若余弦相识度大于0.8的人脸个数大于1,则判定该两个ID为同一个人的不同场景人脸,并将这两个ID合并为一个ID;
将合并之后的ID反向排序回到正常顺序
需要说明的是,在为当前图像帧人脸特征加入新ID,并保存在数据库中,会使得人脸数据库中的产生的大量的ID,可能会存在不同的ID对应于不同场景中的同一张人脸,这样就会造成同一张脸具有不同ID的情形,使得后续对数据库中的人脸跟踪效果较差,因此需要将人脸数据库中的ID依次反向排序,之后计算出任何两个ID之间的余弦相识度,并统计余弦相识度大于0.8的人脸数量,然后再对余弦相识度大于0.8的人脸数量是否大于1进行判断,若大于1,则判断出该两个ID是在不同场景中的同一张人脸,之后将这两个ID合并为一个ID,最后再将合并之后的ID反向排序回到正常顺序,实现了对人脸数据库中的ID进行去重,提高了人脸跟踪的准确性和跟踪效果。
具体地,当第三余弦距离最大值大于0.8的个数且当前图像帧的人脸特征的宽高比满足预设条件时,将当前图像帧的人脸特征放入人脸数据库中对应的ID的步骤,包括:
若第三余弦距离最大值大于0.8的个数大于对应ID的人脸个数的十分之一,且当前图像帧人脸的宽高比大于0.5,则将当前图像帧的人脸特征放入人脸数据库中对应的ID。
基于第一实施例,提出本发明视频人脸识别方法的第三个实施例,参照图3,在步骤S200之后,还包括:
步骤S710,根据人脸特征中的两眼关键点的直线和水平线的角度获得正余弦值。
步骤S720,根据所述正余弦值对包含此检测人脸的图像帧作仿射变换,将人脸摆正到竖直方向。
步骤S730,根据所述仿射变换的仿射矩阵对检测人脸的检测框作矩阵变换,得到对齐人脸的新检测框。
步骤S740,以所述新检测框宽高的最大值和所述新检测框的中心点,计算出最大对齐人脸的正方形范围,并输出此正方形正脸。
在本实施例中,在检测到当前图像帧含有人脸特征后,人脸检测框与人脸的位置会存在偏差,使得检测框检测到的只是人脸的一点部分,人脸跟踪的效果差,因此,通过人脸特征中的两眼关键点的直线和水平线的角度计算出正余弦值,并根据正余弦值对图像帧作仿射变换,将人脸摆正到竖直方向上,同时根据仿射变换的仿射矩阵对检测框作矩阵变换,使得新检测框对齐人脸,最后以新检测框宽高的最大值与中心点计算出最大对齐人脸的正方形范围,从而实现了对人脸的摆正调整,有利于提高人脸跟踪的效果。
基于第一实施例,提出本发明视频人脸识别方法的第四个实施例,参照图4,在步骤S500之后,还包括:
步骤S810,遍历当前图像帧的所有人脸特征和人脸数据库中的所有ID,计算出它们之间的余弦相似度,并统计余弦相识度大于0.4的个数;
步骤S820,当余弦相似度大于0.4的个数大于相比较的ID对应的人脸个数的1/10,则输出当前图像帧的所有人脸的ID类别和对应的人脸检测框的坐标。
在本实施例中,在将人脸特征保存在人脸数据库内以及对人脸数据库进行动态更新之后,遍历当前图像帧的所有人脸特征和人脸数据库中的所有ID,并计算出它们之间的余弦相似度,之后统计余弦相识度大于0.4的个数,将余弦相似度大于0.4的个数与相比较的ID对应的人脸个数进行比较,若余弦相似度大于0.4的个数大于相比较的ID对应的人脸个数的1/10,则输出当前图像帧的所有人脸的ID类别和对应的人脸检测框的坐标,从而得出人脸跟踪结果。
图5为本发明提供的一种视频人脸识别系统的结构框图,该基于深度学习的多人脸跟踪系统包括:视频模块910、人脸检测模块920、判断模块930、对比模块940以及保存模块950。该系统可以用于实现参考图1所描述的多人脸识别方法。
视频模块910,用于获取待跟踪视频的图像帧作为当前图像帧。根据本公开的实施例,该视频模块910例如可以用于执行上文参考图1所描述的S100步骤,在此不再赘述。
人脸检测模块920,用于对当前图像帧进行人脸检测,并提取当前图像帧中的人脸特征。根据本公开的实施例,该人脸检测模块920例如可以用于执行上文参考图1所描述的S200步骤,在此不再赘述。
判断模块930,用于判断当前图像帧包含有人脸特征,若包含有人脸特征,则获得当前图像帧的人脸特征,否则,获取待跟踪视频的下一个图像帧。根据本公开的实施例,该判断模块930例如可以用于执行上文参考图1所描述的S300步骤,在此不再赘述。
对比模块940,用于将当前图像帧的人脸特征与人脸数据库中的人脸特征进行对比识别。根据本公开的实施例,该对比模块940例如可以用于执行上文参考图1所描述的S400步骤,在此不再赘述。
保存模块950,用于根据将当前图像帧的人脸特征与人脸数据库中的人脸特征进行对比识别的结果,将当前图像帧的人脸特征输入人脸数据库保存。根据本公开的实施例,该保存模块950例如可以用于执行上文参考图1所描述的S500步骤,在此不再赘述。
根据本公开的实施例的视频模块910、人脸检测模块920、判断模块930、对比模块940、保存模块950中的任意多个可以合并在一个模块中实现,或者其中的任意一个模块可以被拆分成多个模块。或者,这些模块中的一个或多个模块的至少部分功能可以与其他模块的至少部分功能相结合,并在一个模块中实现。根据本公开实施例的视频模块910、人脸检测模块920、判断模块930、对比模块940、保存模块950中的任意一个或多个可以至少被部分地实现为硬件电路,例如现场可编程门阵列(FPGA)、可编程逻辑阵列(PLA)、片上系统、基板上的系统、封装上的系统、专用集成电路(ASIC),或可以通过对电路进行集成或封装的任何其他的合理方式的硬件或固件来实现,或以软件、硬件以及固件三种实现方式中任意一种或以其中任意几种的适当组合来实现。或者,视频模块910、人脸检测模块920、判断模块930、对比模块940、保存模块950中的一个或多个可以至少被部分地实现为计算机程序模块,当该计算机程序模块被运行时,可以执行相应的功能。
本发明实施例还提供了一种计算机可读存储介质,该计算机可读存储介质可以是上述实施例中描述的设备/装置/系统中所包含的;也可以是单独存在,而未装配入该设备/装置/系统中。上述计算机可读存储介质承载有一个或者多个程序,当上述一个或者多个程序被执行时,实现根据本公开实施例的多人脸跟踪方法。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指示相关的硬件来完成,所述的程序可存储于一非易失性计算机可读取存储介质中,该程序在执行时,可包括如上述各方法的实施例的流程。其中,本申请所提供的各实施例中所使用的对存储器、存储、数据库或其它介质的任何引用,均可包括非易失性和/或易失性存储器。非易失性存储器可包括只读存储器(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)等。
需要说明的是,在本文中,诸如“第一”和“第二”等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
以上所述仅是本发明的具体实施方式,使本领域技术人员能够理解或实现本发明。对这些实施例的多种修改对本领域的技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本发明的精神或范围的情况下,在其它实施例中实现。因此,本发明将不会被限制于本文所示的这些实施例,而是要符合与本文所申请的原理和新颖特点相一致的最宽的范围。