一种人脸跟踪方法和装置与流程

文档序号:12803628阅读:224来源:国知局
一种人脸跟踪方法和装置与流程

本发明涉及通信技术领域,具体涉及一种人脸跟踪方法和装置。



背景技术:

近年来,人脸跟踪技术得到了长足的发展,在很多领域,比如监控、视频会议和远程教学等,都需要对特定人脸进行跟踪和分析。

在现有技术中,有多种人脸跟踪技术,深度学习前向预测技术就是其中一种。在深度学习前向预测技术中,针对不同的应用领域,需要建立不同的网络模型,而且根据需解决问题的复杂性的不同,其网络模型的层次也会有所不同,比如,复杂性较高的问题一般需要建立更深层次的网络模型,等等。在个人计算机(pc,personalcomputer)端,网络模型的每一层都需要独占一段存储区域,该存储区域具体可以通过配置文件来进行设置,例如,在分配存储资源时,可以通过读取配置文件,对当前层进行存储空间大小计算,并为当前层分配存储空间,等等,其中,各层的存储区域需要独立进行分配,且各层的存储区域之间无共享内存。

在对现有技术的研究和实践过程中,本发明的发明人发现,由于在现有方案中,网络模型的每一层都需要独占一段存储区域,因此,所需总内存较多,在存储受限的平台上,将造成计算性能下降,甚至导致算法无法运行;而且,由于分配操作需要发生多次,所以,也较容易形成存储碎片,导致应用程序性能下降。



技术实现要素:

本发明实施例提供一种人脸跟踪方法和装置,不仅可以节省内存的占用,提高计算效率,而且,可以减少存储碎片,提高应用程序性能。

本发明实施例提供一种人脸跟踪方法,包括:

获取需要进行人脸跟踪的视频流、以及深度学习的网络模型;

为所述网络模型分配内存资源,使得所述网络模型的所有层共享同一存储空间;

基于分配的内存资源和所述网络模型对所述视频流中的人脸进行跟踪。

相应的,本发明实施例还提供一种人脸跟踪装置,包括:

获取单元,用于获取需要进行人脸跟踪的视频流、以及深度学习的网络模型;

分配单元,用于为所述网络模型分配内存资源,使得所述网络模型的所有层共享同一存储空间;

跟踪单元,用于基于分配的内存资源和所述网络模型对所述视频流中的人脸进行跟踪。

本发明实施例在需要对视频流进行深度学习,以进行人脸跟踪时,可以获取相应的深度学习的网络模型,并为该网络模型分配内存资源,使得该网络模型的所有层共享同一存储空间,然后,基于分配的内存资源和网络模型对该视频流进行处理,以实现人脸的实时跟踪;由于在该方案中,网络模型的所有层都可以共享同一存储空间,因此,无需为网络模型的每一层都分配一独立的存储空间,不仅可以大大节省内存的占用,提高计算效率,而且,由于只需分配一次,所以,也可以大大降低分配操作的次数,减少存储碎片,有利于提高应用程序性能。

附图说明

为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1a是本发明实施例提供的人脸跟踪方法的场景示意图;

图1b是本发明实施例提供的人脸跟踪方法的流程图;

图1c是本发明实施例提供的人脸跟踪方法中内存分配的示意图;

图1d是本发明实施例提供的人脸跟踪方法中内存空间的使用示意图;

图2a是本发明实施例提供的人脸跟踪方法的另一流程图;

图2b是本发明实施例提供的人脸跟踪方法中网络模型各个层次的示意图;

图3是本发明实施例提供的人脸跟踪装置的结构示意图;

图4是本发明实施例提供的终端的结构示意图。

具体实施方式

下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

本发明实施例提供一种人脸跟踪方法和装置。

其中,该人脸跟踪装置具体集成在移动终端等设备中,例如,参见图1a,该移动终端在需要对视频流进行人脸跟踪时,可以获取相应的深度学习的网络模型,并为该网络模型一次性分配内存资源,使得该网络模型的所有层共享同一存储空间,比如,可以计算该网络模型中每一层网络所需的存储空间,选择其中的最大值作为预分配的存储空间的大小,并据此为该网络模型分配内存资源,等等,在内存资源分配完毕之后,便可以基于该分配的内存资源和该网络模型对该视频流中的人脸进行跟踪,从而达到省内存占用,减少存储碎片,以及提高计算效率的目的。

以下分别进行详细说明。需说明的是,以下实施例的序号不作为对实施例优选顺序的限定。

实施例一、

本实施例将从人脸跟踪装置的角度进行描述,该人脸跟踪装置具体可以集成在移动终端等设备中,该移动终端可以包括手机、平板电脑、或智能穿戴设备等。

一种人脸跟踪方法,包括:获取需要进行人脸跟踪的视频流、以及深度学习的网络模型,为该网络模型分配内存资源,使得该网络模型的所有层共享同一存储空间,基于分配的内存资源和该网络模型对该视频流中的人脸进行跟踪。

如图1b所示,该人脸跟踪方法的具体流程可以如下:

101、获取需要进行人脸跟踪的视频流、以及深度学习的网络模型。

例如,具体可以从本地或其他存储设备中获取视频流、以及深度学习的网络模型,等等。

其中,该网络模型可以根据实际应用的需求进行设置,在此不再赘述。

102、为该网络模型分配内存资源,使得该网络模型的所有层共享同一存储空间,例如,具体可以如下:

(1)计算该网络模型中每一层网络所需的存储空间。

例如,可以获取网络模型的配置文件,根据该配置文件计算该网络模型中每一层网络所需的存储空间。比如,具体可以如下:

首先,读取该网络模型的配置文件,其次,根据该配置文件计算每一个网络层次的参数个数,得到每一层网络的输入(即bottom)blob、输出(即top)blob、以及该层需要临时开辟的blob(即临时blob)大小,最后,根据该bottomblob、topblob和临时blob便可以计算出该层所需要的存储空间,即如图1c中所示的a+b+c区域大小,其中,a区既可作为这一层的输入区,也可作为上一层或下一层的输出区,b区为这一层的临时区,c区既可作为这一层的输出区,也可作为上一层或下一层的输入区。

需说明的是,为了描述方便,在本发明实施例中,将bottomblob称为输入区,topblob称为输出区,将临时blob称为临时区。其中,blob是深度网络模型的存储单元名称,是一个四维矩阵,包含矩阵各维度大小。

(2)将各层所需的存储空间中的最大值作为预分配的存储空间的大小。

例如,以六层的网络模型为例,若第五层所需要的存储空间最大,则以第五层所需要的存储空间为准,作为预分配的存储空间的大小,以此类推,等等。

(3)根据该预分配的存储空间的大小为该网络模型分配内存资源。

即只需为该网络模型一次性分配该预分配的存储空间大小的内存资源即可,在前向计算时不需分配其他空间。

其中,前向计算的内存分配过程可如图1d所示:假设a区当前存放第n层的输入区(即bottomblob)数据,b区存放当前层所需临时数据,c区存放计算得到的输出区(topblob)数据,则当第n层计算得到输出结果后,便可以将该输出区(即topblob)指针赋给第n+1层的输入区(即bottomblob),并将a区的输入区指针赋给第n+1层的输出区(即topblob),用于存储第n+1层的输出结果,而b区同样用于保存第n+1的临时数据,如此反复,即可完成整个前向网络的计算,该过程无其他数据拷贝和传输,即使指针赋值操作也可在预处理阶段完成。

103、基于分配的内存资源和该网络模型对该视频流中的人脸进行跟踪;例如,具体可以如下:

(1)根据该视频流确定当前需要处理的图像,得到当前帧。

(2)获取当前帧的上一帧图像的人脸关键点坐标和置信度。

其中,人脸关键点指的是能够反映人脸特征的信息,比如眼睛、眉毛、鼻子、嘴巴、以及脸部外轮廓等。人脸关键点坐标指的是这些人脸关键点的坐标,每个人脸关键点坐标可以用一个数组,比如用数组(x1,y1,x2,y2,…,xn,yn)来表征,其中,(xi,yi)代表其中第i个点的坐标。

(3)基于分配的内存资源、该网络模型、上一帧图像的人脸关键点坐标和置信度预测当前帧的人脸关键点坐标和置信度,并返回执行根据该视频流确定当前需要处理的图像的步骤,直至该视频流中的图像均处理完毕。

其中,基于分配的内存资源、该网络模型、上一帧图像的人脸关键点坐标和置信度预测当前帧的人脸关键点坐标和置信度的方式可以有多种,例如,具体可以如下:

确定上一帧图像的置信度大于预设阈值时,利用分配的内存资源,通过该网络模型对该上一帧图像的人脸关键点坐标进行计算,得到计算结果,根据该计算结果预测当前帧的人脸关键点坐标,以及计算该当前帧的置信度。

其中,该预设阈值可以根据实际应用的需求进行设置,在此不再赘述。

例如,以该网络模型包括公共网络部分、关键点预测分支和置信度预测分支为例,则步骤“通过该网络模型对该上一帧图像的人脸关键点坐标进行计算,得到计算结果,根据该计算结果预测当前帧的人脸关键点坐标,以及计算该当前帧的置信度”具体可以如下:

通过该公共网络部分对该上一帧图像的人脸关键点坐标进行计算,得到计算结果;通过该关键点预测分支对该计算结果进行处理,得到当前帧的人脸关键点坐标,以及,通过该置信度预测分支对该计算结果进行处理,得到当前帧的置信度,等等。

需说明的是,若置信度(即上一帧图像的人脸关键点坐标的置信度)低于(即不高于,包括等于)预设阈值,则表明上一帧的人脸关键点坐标的参考价值较低,因此,此时可以采用检测的方式来获取当前帧中人脸关键点坐标;同理,若获取不到当前帧的上一帧图像的人脸关键点坐标和置信度,比如当前帧为该视频流的首帧,也可以采用检测的方式来获取当前帧中人脸关键点坐标,即可选的,在步骤“为该网络模型分配内存资源”之后,该人脸跟踪方法还可以包括:

在获取不到当前帧的上一帧图像的人脸关键点坐标和置信度,或者,确定上一帧图像的置信度小于等于预设阈值时,基于分配的内存资源,通过人脸检测算法对当前帧中的人脸进行检测,以确定当前帧的人脸关键点坐标和置信度。

其中,检测的方式可以有多种,比如,可以采用如下方式:

a、基于分配的内存资源,通过人脸检测算法确定该当前帧的人脸区域,例如,可以如下:

基于分配的内存资源,通过计算图像积分图获取该当前帧中的人脸特征,根据该人脸特征构建强人脸和非人脸的强分类器,然后,根据该强分类器对当前帧进行处理,得到当前帧的人脸区域。

其中,为了提高人脸检测的准确率,可以采用adaboost算法来构建区分人脸和非人脸的强分类器,并通过级联方式将强分类器级联在一个系统里,即将该强分类器级联在同一系统中。

其中,adaboost是一种迭代算法,其核心思想是针对同一个训练集训练不同的分类器(弱分类器),然后把这些弱分类器集合起来,构成一个更强的最终分类器(强分类器)。

b、通过该网络模型对该人脸区域中的人脸五官的位置进行预测,得到当前帧的人脸关键点坐标和置信度。

由上可知,本实施例在需要对视频流进行人脸跟踪时,可以获取相应的深度学习的网络模型,并为该网络模型分配内存资源,使得该网络模型的所有层共享同一存储空间,然后,基于分配的内存资源和网络模型对该视频流进行处理,以实现人脸的实时跟踪;由于在该方案中,网络模型的所有层都可以共享同一存储空间,因此,无需为网络模型的每一层都分配一独立的存储空间,不仅可以大大节省内存的占用,提高计算效率,而且,由于只需分配一次,所以,也可以大大降低分配操作的次数,减少存储碎片,有利于提高应用程序性能。

实施例二、

根据实施例一所描述的方法,以下将举例作进一步详细说明。

在本实施例中,将以该人脸跟踪装置具体可以集成在移动终端为例进行说明。

如图2a所述,一种人脸跟踪方法,具体流程可以如下:

201、移动终端获取视频流。

例如,移动终端具体可以接收其他设备发送的视频流,或者,从本地存储空间获取视频流,等等。

202、移动终端获取深度学习的网络模型。

其中,该网络模型可以根据实际应用的需求进行设置,比如,该网络模型可以包括三部分,首先,第一部分为公共网络部分,其次,是公共网络部分后续生成的两个分支,关键点预测分支和置信度预测分支。其中,每一部分的层次可以根据需求而定,例如,参见图2b,各部分的层次具体可以如下:

公共网络部分可以包括6个卷积(convolution)层,比如卷积层1、卷积层2、卷积层3、卷积层4、卷积层5、以及卷积层6,每个卷积层后紧接一个修正线性单元(relu,rectifiedlinearunit)激活函数,简称非线性激活函数,部分非线性激活函数后还可以紧接用于聚合的层——池化(pooling)层,具体可参见图2b。

关键点预测分支可以包括1个卷积层和3个内积(innerproduct)层,比如,参见图2b,具体可以包括卷积层7、内积层1、内积层2和内积层3,每个卷积层和内积层后均紧接一个非线性激活函数。

置信度预测分支可以包括1个卷积层(即卷积层8)、5个内积层(即内积层4、内积层5、内积层6、内积层7和内积层8)、以及1个柔性最大值传输函数(softmax)层,其中,softmax层输出两个值,分别为是人脸概率和非人脸概率,两者相加为1.0。此外,每个卷积层、以及每两个内积层后均可接一个非线性激活函数。

203、移动终端计算该网络模型中每一层网络所需的存储空间。

例如,可以读取该网络模型的配置文件,根据该配置文件计算每一个网络层次的参数个数,得到每一层网络的输入区、输出区、以及临时区的大小,然后,根据该输入区、输出区、以及临时区的大小便可以计算出该层所需要的存储空间,即如图1c中所示的a+b+c区域大小,具体可详见实施例一,在此不再赘述。

204、移动终端将各层所需的存储空间中的最大值作为预分配的存储空间的大小,并根据该预分配的存储空间的大小为该网络模型分配内存资源。

其中,前向计算的内存分配过程可如图1d所示:假设a区当前存放第n层的输入区数据,b区存放当前层所需临时数据,c区存放计算得到的输出区数据,则当第n层计算得到输出结果后,便可以将该输出区指针赋给第n+1层的输入区,并将a区的输入区指针赋给第n+1层的输出区,用于存储第n+1层的输出结果,而b区同样用于保存第n+1的临时数据,在第n+1层处理完之后,将n的值更新为“n+1”,重复上述过程,如此反复,即可完成整个前向网络的计算。例如,以n的初始值等于1为例,则具体可以如下:

当第1层计算得到输出结果后,便可以将该第1层的输出区(即第1层的c区)指针赋给第2层的输入区,并将a区的输入区指针赋给第2层的输出区,用于存储第2层的输出结果,而b区同样用于保存第2的临时数据。同理,在第2层计算得到输出结果后,便可以将该第2层的输出区(第2层的c区,也是第1层的a区)指针赋给第3层的输入区,并将第2层的a区(即第1层的c层)的输入区指针赋给第3层的输出区,用于存储第3层的输出结果,而b区同样用于保存第3的临时数据,以此类推,等等。

其中,该过程无其他数据拷贝和传输,即使指针赋值操作也可在预处理阶段完成。

可见,该计算利用了深度学习的一个特点,即第n+1层的计算只需要用到第n+1层的输入区(即第n层的输出区)和第n+1层的输出区,而不需要再用到第n层的输入区,从而可以循环利用第n层的输入区所占用的内存;也就是说,所有层的运算均在预先分配的“a+b+c”内存区域中进行,因此,无论该深度网络层次有多深,所需存储空间仅取决于某一层的存储空间,所以,可以节省内存资源的占用,使得在移动终端平台应用复杂的深层次网络成为可能。此外,从计算过程来看,由于仅仅是内存中的指针赋值操作,因此,可以十分快速高效。

205、移动终端根据该视频流确定当前需要处理的图像,得到当前帧。

206、移动终端获取当前帧的上一帧图像的人脸关键点坐标和置信度,然后执行步骤207。

其中,人脸关键点指的是能够反映人脸特征的信息,比如眼睛、眉毛、鼻子、嘴巴、以及脸部外轮廓等。人脸关键点坐标指的是这些人脸关键点的坐标。

需说明的是,若获取不到该当前帧的上一帧图像的人脸关键点坐标和置信度,比如当前帧为该视频流的第一帧,则可以通过检测来得到当前帧的人脸关键点坐标和置信度,即执行步骤208。

207、移动终端确定该上一帧图像的人脸关键点坐标的置信度是否高于预设阈值,若是,则表明人脸关键点跟踪成功,执行步骤209,否则,若不高于预设阈值,则表明人脸关键点跟踪失败,执行步骤208。

其中,该预设阈值可以根据实际应用的需求进行设置,在此不再赘述。

208、移动终端基于分配的内存资源,通过人脸检测算法对当前帧中的人脸进行检测,以确定当前帧的人脸关键点坐标和置信度,然后执行步骤210。

其中,检测的方式可以有多种,比如,可以采用如下方式:

(1)移动终端基于分配的内存资源,通过人脸检测算法确定该当前帧的人脸区域,例如,可以如下:

移动终端基于分配的内存资源,通过计算图像积分图获取该当前帧中的人脸特征,根据该人脸特征构建强人脸和非人脸的强分类器,然后,根据该强分类器对当前帧进行处理,得到当前帧的人脸区域。

其中,为了提高人脸检测的准确率,可以采用adaboost算法来构建区分人脸和非人脸的强分类器,并通过级联方式将强分类器级联在一个系统里。

(2)移动终端通过该网络模型对该人脸区域中的人脸五官的位置进行预测,得到当前帧的人脸关键点坐标和置信度。

其中,为了减少计算时间,以及节省计算资源,人脸关键点坐标和置信度的计算可以是同步的。

209、移动终端利用分配的内存资源,通过该网络模型对该上一帧图像的人脸关键点坐标进行计算,得到计算结果,根据该计算结果预测当前帧的人脸关键点坐标,以及计算该当前帧的置信度,然后执行步骤210。

例如,移动终端可以通过该网络模型的公共网络部分对该上一帧图像的人脸关键点坐标进行计算,得到计算结果,然后,通过该关键点预测分支对该计算结果进行处理,得到当前帧的人脸关键点坐标,以及,通过该置信度预测分支对该计算结果进行处理,得到当前帧的置信度,等等。

比如,具体可以通过该网络模型的公共网络部分计算该上一帧图像的人脸关键点坐标的包络框,然后,一方面,通过该关键点预测分支,根据该包络框计算该当前帧中人脸关键点的位置,得到当前帧的人脸关键点坐标,另一方面,通过该置信度预测分支分析人脸识别的准确性,譬如分析该包络框中的图像是否为人脸,等等,进而根据分析结果来计算当前帧的置信度。

其中,为了减少计算时间,以及节省计算资源,人脸关键点坐标和置信度的计算可以同步,即关键点预测分支和置信度预测分支的处理可以是并行的。

210、移动终端确定视频流中的图像是否均识别完毕,若是,则流程结束,否则,返回执行步骤205。

即,将当前帧的人脸关键点坐标和置信度作为下一帧图像人脸跟踪的一个参考,如此循环,直至视频流中的图像均识别完毕。

由上可知,本实施例在需要对视频流进行人脸跟踪时,可以获取相应的深度学习的网络模型,并为该网络模型分配内存资源,使得该网络模型的所有层共享同一存储空间,然后,基于分配的内存资源和网络模型对该视频流进行处理,以实现在移动终端中完成人脸的实时跟踪。一方面,由于在该方案中,网络模型的所有层都可以共享同一存储空间,因此,无需为网络模型的每一层都分配一独立的存储空间,不仅可以大大节省内存的占用,提高计算效率,而且,由于只需分配一次,所以,也可以大大降低分配操作的次数,减少存储碎片,有利于提高应用程序性能;另一方面,本方案在人脸跟踪异常,如置信度小于等于阈值或获取不到上一帧的人脸关键点坐标和置信度时,还可以自动进行跟踪重置(即重新通过检测的方式来获取人脸关键点坐标和置信度),因此,可以加强人脸跟踪的连续性。

此外,由于该方案对内存的需求较少,且计算效率较高,因此,对设备性能的要求较低,可以适用于移动终端等设备,所以,相对于将深度学习前向算法放置在服务器端的方案而言,可以更加高效灵活地对人脸进行跟踪,有利于提高用户体验。

实施例三、

为了更好地实施以上方法,本发明实施例还提供一种人脸跟踪装置,如图3所示,该人脸跟踪装置,包括获取单元301、分配单元302和跟踪单元303,如下:

(1)获取单元301;

获取单元301,用于获取需要进行人脸跟踪的视频流、以及深度学习的网络模型。

例如,具体可以从本地或其他存储设备中获取视频流、以及深度学习的网络模型,等等。

其中,该网络模型可以根据实际应用的需求进行设置,比如,该网络模型可以包括公共网络部分、关键点预测分支和置信度预测分支等,具体可参见前面的方法实施例,在此不再赘述。

(2)分配单元302;

分配单元302,用于为该网络模型分配内存资源,使得该网络模型的所有层共享同一存储空间。

例如,该分配单元302可以包括计算子单元和分配子单元,如下:

计算子单元,可以用于计算该网络模型中每一层网络所需的存储空间。

例如,该计算子单元,具体可以用于获取网络模型的配置文件,根据该配置文件计算该网络模型中每一层网络所需的存储空间,比如,可以如下:

计算子单元读取该网络模型的配置文件,根据该配置文件计算每一个网络层次的参数个数,得到每一层网络的输入区、输出区、以及临时区的大小,然后,根据该输入区、输出区、以及临时区的大小便可以计算出该层所需要的存储空间,即如图1c中所示的a+b+c区域大小,具体可详见实施例一,在此不再赘述。

分配子单元,可以用于将各层所需的存储空间中的最大值作为预分配的存储空间的大小,根据该预分配的存储空间的大小为该网络模型分配内存资源。

(3)跟踪单元303;

跟踪单元303,用于基于分配的内存资源和该网络模型对该视频流中的人脸进行跟踪。

例如,该跟踪单元303可以包括确定子单元、参数获取子单元和预测子单元,如下:

确定子单元,可以用于根据该视频流确定当前需要处理的图像,得到当前帧;

参数获取子单元,可以用于获取当前帧的上一帧图像的人脸关键点坐标和置信度。

其中,人脸关键点指的是能够反映人脸特征的信息,比如眼睛、眉毛、鼻子、嘴巴、以及脸部外轮廓等。人脸关键点坐标指的是这些人脸关键点的坐标。

预测子单元,可以用于基于分配的内存资源、该网络模型、上一帧图像的人脸关键点坐标和置信度预测当前帧的人脸关键点坐标和置信度,并触发确定子单元执行根据该视频流确定当前需要处理的图像的操作,直至该视频流中的图像均处理完毕。

其中,基于分配的内存资源、该网络模型、上一帧图像的人脸关键点坐标和置信度预测当前帧的人脸关键点坐标和置信度的方式可以有多种,例如,具体可以如下:

该预测子单元,具体可以用于确定上一帧图像的置信度大于预设阈值时,利用分配的内存资源,通过该网络模型对该上一帧图像的人脸关键点坐标进行计算,得到计算结果,根据该计算结果预测当前帧的人脸关键点坐标,以及计算该当前帧的置信度。

例如,以该网络模型包括公共网络部分、关键点预测分支和置信度预测分支为例,则该预测子单元,具体可以用于:

通过该公共网络部分对该上一帧图像的人脸关键点坐标进行计算,得到计算结果;通过该关键点预测分支对该计算结果进行处理,得到当前帧的人脸关键点坐标,以及,通过该置信度预测分支对该计算结果进行处理,得到当前帧的置信度,等等。

其中,该预设阈值可以根据实际应用的需求进行设置,在此不再赘述。

需说明的是,若当前帧的上一帧的置信度不高于预设阈值,则表明上一帧的人脸关键点坐标的参考价值较低,因此,此时可以采用检测的方式来获取当前帧中人脸关键点坐标;同理,若获取不到当前帧的上一帧图像的人脸关键点坐标和置信度,比如当前帧为该视频流的首帧,同样也可以采用检测的方式来获取当前帧中人脸关键点坐标,即可选的,该跟踪单元303还可以包括检测子单元,如下:

该检测子单元,可以用于在获取不到当前帧的上一帧图像的人脸关键点坐标和置信度,或者,确定上一帧图像的置信度小于等于预设阈值时,基于分配的内存资源,通过人脸检测算法对当前帧中的人脸进行检测,以确定当前帧的人脸关键点坐标和置信度。

其中,检测的方式可以有多种,例如,该检测子单元,具体可以用于基于分配的内存资源,通过人脸检测算法确定该当前帧的人脸区域,通过该网络模型对该人脸区域中的人脸五官的位置进行预测,得到当前帧的人脸关键点坐标和置信度。

具体实施时,以上各个单元可以分别作为独立的实体来实现,也可以进行任意组合,作为同一或若干个实体来实现,以上各个单元的具体实施可参见前面的方法实施例,在此不再赘述。

该人脸跟踪装置具体可以集成在移动终端等设备中,该移动终端可以包括手机、平板电脑或智能穿戴设备等。

由上可知,本实施例在需要对视频流进行人脸跟踪时,可以由获取单元301获取相应的深度学习的网络模型,并由分配单元302为该网络模型分配内存资源,使得该网络模型的所有层共享同一存储空间,然后,由跟踪单元303基于分配的内存资源和网络模型对该视频流进行处理,以实现人脸的实时跟踪;由于在该方案中,网络模型的所有层都可以共享同一存储空间,因此,无需为网络模型的每一层都分配一独立的存储空间,不仅可以大大节省内存的占用,提高计算效率,而且,由于只需分配一次,所以,也可以大大降低分配操作的次数,减少存储碎片,有利于提高应用程序性能。

实施例四、

相应的,本发明实施例还提供一种移动终端,如图4所示,该移动终端可以包括射频(rf,radiofrequency)电路401、包括有一个或一个以上计算机可读存储介质的存储器402、输入单元403、显示单元404、传感器405、音频电路406、无线保真(wifi,wirelessfidelity)模块407、包括有一个或者一个以上处理核心的处理器408、以及电源409等部件。本领域技术人员可以理解,图4中示出的移动终端结构并不构成对移动终端的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。其中:

rf电路401可用于收发信息或通话过程中,信号的接收和发送,特别地,将基站的下行信息接收后,交由一个或者一个以上处理器408处理;另外,将涉及上行的数据发送给基站。通常,rf电路401包括但不限于天线、至少一个放大器、调谐器、一个或多个振荡器、用户身份模块(sim,subscriberidentitymodule)卡、收发信机、耦合器、低噪声放大器(lna,lownoiseamplifier)、双工器等。此外,rf电路401还可以通过无线通信与网络和其他设备通信。所述无线通信可以使用任一通信标准或协议,包括但不限于全球移动通讯系统(gsm,globalsystemofmobilecommunication)、通用分组无线服务(gprs,generalpacketradioservice)、码分多址(cdma,codedivisionmultipleaccess)、宽带码分多址(wcdma,widebandcodedivisionmultipleaccess)、长期演进(lte,longtermevolution)、电子邮件、短消息服务(sms,shortmessagingservice)等。

存储器402可用于存储软件程序以及模块,处理器408通过运行存储在存储器402的软件程序以及模块,从而执行各种功能应用以及数据处理。存储器402可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需的应用程序(比如声音播放功能、图像播放功能等)等;存储数据区可存储根据移动终端的使用所创建的数据(比如音频数据、电话本等)等。此外,存储器402可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他易失性固态存储器件。相应地,存储器402还可以包括存储器控制器,以提供处理器408和输入单元403对存储器402的访问。

输入单元403可用于接收输入的数字或字符信息,以及产生与用户设置以及功能控制有关的键盘、鼠标、操作杆、光学或者轨迹球信号输入。具体地,在一个具体的实施例中,输入单元403可包括触敏表面以及其他输入设备。触敏表面,也称为触摸显示屏或者触控板,可收集用户在其上或附近的触摸操作(比如用户使用手指、触笔等任何适合的物体或附件在触敏表面上或在触敏表面附近的操作),并根据预先设定的程式驱动相应的连接装置。可选的,触敏表面可包括触摸检测装置和触摸控制器两个部分。其中,触摸检测装置检测用户的触摸方位,并检测触摸操作带来的信号,将信号传送给触摸控制器;触摸控制器从触摸检测装置上接收触摸信息,并将它转换成触点坐标,再送给处理器408,并能接收处理器408发来的命令并加以执行。此外,可以采用电阻式、电容式、红外线以及表面声波等多种类型实现触敏表面。除了触敏表面,输入单元403还可以包括其他输入设备。具体地,其他输入设备可以包括但不限于物理键盘、功能键(比如音量控制按键、开关按键等)、轨迹球、鼠标、操作杆等中的一种或多种。

显示单元404可用于显示由用户输入的信息或提供给用户的信息以及移动终端的各种图形用户接口,这些图形用户接口可以由图形、文本、图标、视频和其任意组合来构成。显示单元404可包括显示面板,可选的,可以采用液晶显示器(lcd,liquidcrystaldisplay)、有机发光二极管(oled,organiclight-emittingdiode)等形式来配置显示面板。进一步的,触敏表面可覆盖显示面板,当触敏表面检测到在其上或附近的触摸操作后,传送给处理器408以确定触摸事件的类型,随后处理器408根据触摸事件的类型在显示面板上提供相应的视觉输出。虽然在图4中,触敏表面与显示面板是作为两个独立的部件来实现输入和输入功能,但是在某些实施例中,可以将触敏表面与显示面板集成而实现输入和输出功能。

移动终端还可包括至少一种传感器405,比如光传感器、运动传感器以及其他传感器。具体地,光传感器可包括环境光传感器及接近传感器,其中,环境光传感器可根据环境光线的明暗来调节显示面板的亮度,接近传感器可在移动终端移动到耳边时,关闭显示面板和/或背光。作为运动传感器的一种,重力加速度传感器可检测各个方向上(一般为三轴)加速度的大小,静止时可检测出重力的大小及方向,可用于识别手机姿态的应用(比如横竖屏切换、相关游戏、磁力计姿态校准)、振动识别相关功能(比如计步器、敲击)等;至于移动终端还可配置的陀螺仪、气压计、湿度计、温度计、红外线传感器等其他传感器,在此不再赘述。

音频电路406、扬声器,传声器可提供用户与移动终端之间的音频接口。音频电路406可将接收到的音频数据转换后的电信号,传输到扬声器,由扬声器转换为声音信号输出;另一方面,传声器将收集的声音信号转换为电信号,由音频电路406接收后转换为音频数据,再将音频数据输出处理器408处理后,经rf电路401以发送给比如另一移动终端,或者将音频数据输出至存储器402以便进一步处理。音频电路406还可能包括耳塞插孔,以提供外设耳机与移动终端的通信。

wifi属于短距离无线传输技术,移动终端通过wifi模块407可以帮助用户收发电子邮件、浏览网页和访问流式媒体等,它为用户提供了无线的宽带互联网访问。虽然图4示出了wifi模块407,但是可以理解的是,其并不属于移动终端的必须构成,完全可以根据需要在不改变发明的本质的范围内而省略。

处理器408是移动终端的控制中心,利用各种接口和线路连接整个手机的各个部分,通过运行或执行存储在存储器402内的软件程序和/或模块,以及调用存储在存储器402内的数据,执行移动终端的各种功能和处理数据,从而对手机进行整体监控。可选的,处理器408可包括一个或多个处理核心;优选的,处理器408可集成应用处理器和调制解调处理器,其中,应用处理器主要处理操作系统、用户界面和应用程序等,调制解调处理器主要处理无线通信。可以理解的是,上述调制解调处理器也可以不集成到处理器408中。

移动终端还包括给各个部件供电的电源409(比如电池),优选的,电源可以通过电源管理系统与处理器408逻辑相连,从而通过电源管理系统实现管理充电、放电、以及功耗管理等功能。电源409还可以包括一个或一个以上的直流或交流电源、再充电系统、电源故障检测电路、电源转换器或者逆变器、电源状态指示器等任意组件。

尽管未示出,移动终端还可以包括摄像头、蓝牙模块等,在此不再赘述。具体在本实施例中,移动终端中的处理器408会按照如下的指令,将一个或一个以上的应用程序的进程对应的可执行文件加载到存储器402中,并由处理器408来运行存储在存储器402中的应用程序,从而实现各种功能:

获取需要进行人脸跟踪的视频流、以及深度学习的网络模型,为该网络模型分配内存资源,使得该网络模型的所有层共享同一存储空间,基于分配的内存资源和该网络模型对该视频流中的人脸进行跟踪。

例如,具体可以计算该网络模型中每一层网络所需的存储空间,比如获取网络模型的配置文件,根据该配置文件计算该网络模型中每一层网络所需的存储空间,然后,将各层所需的存储空间中的最大值作为预分配的存储空间的大小,根据该预分配的存储空间的大小为该网络模型分配内存资源,等等。

其中,该网络模型的结构可以根据实际应用的需求进行设置,比如,该网络模型可以包括公共网络部分、关键点预测分支和置信度预测分支等。此外,该公共网络部分、关键点预测分支和置信度预测分支的层次也可以根据实际应用的需求而定,具体可参见前面的方法实施例,在此不再赘述。

其中,基于分配的内存资源和该网络模型对该视频流中的人脸进行跟踪的方式可以有多种,例如,可以获取当前帧的上一帧图像的人脸关键点坐标和置信度,然后,基于分配的内存资源、该网络模型、上一帧图像的人脸关键点坐标和置信度预测当前帧的人脸关键点坐标和置信度,等等,即该存储在存储器402中的应用程序,还可以实现如下功能:

根据该视频流确定当前需要处理的图像,得到当前帧;获取当前帧的上一帧图像的人脸关键点坐标和置信度;基于分配的内存资源、该网络模型、上一帧图像的人脸关键点坐标和置信度预测当前帧的人脸关键点坐标和置信度,并返回执行根据该视频流确定当前需要处理的图像的步骤,直至该视频流中的图像均处理完毕。

比如,可以在确定上一帧图像的置信度大于预设阈值时,利用分配的内存资源,通过该网络模型对该上一帧图像的人脸关键点坐标进行计算,得到计算结果,然后,根据该计算结果预测当前帧的人脸关键点坐标,以及计算该当前帧的置信度。

其中,该预设阈值可以根据实际应用的需求进行设置,在此不再赘述。

需说明的是,若上一帧的置信度不高于预设阈值,则表明上一帧的人脸关键点坐标的参考价值较低,因此,此时可以采用检测的方式来获取当前帧中人脸关键点坐标;同理,若获取不到当前帧的上一帧图像的人脸关键点坐标和置信度,比如当前帧为该视频流的首帧,也同样可以采用检测的方式来获取当前帧中人脸关键点坐标,即该存储在存储器402中的应用程序,还可以实现如下功能:

在获取不到当前帧的上一帧图像的人脸关键点坐标和置信度,或者,确定上一帧图像的置信度小于等于预设阈值时,基于分配的内存资源,通过人脸检测算法对当前帧中的人脸进行检测,以确定当前帧的人脸关键点坐标和置信度。

以上各个操作的具体实施可参见前面的实施例,在此不再赘述。

由上可知,本实施例的移动终端在需要对视频流进行深度学习,以进行人脸跟踪时,可以获取相应的深度学习的网络模型,并为该网络模型分配内存资源,使得该网络模型的所有层共享同一存储空间,然后,基于分配的内存资源和网络模型对该视频流进行处理,以实现人脸的实时跟踪;由于在该方案中,网络模型的所有层都可以共享同一存储空间,因此,无需为网络模型的每一层都分配一独立的存储空间,不仅可以大大节省内存的占用,提高计算效率,而且,由于只需分配一次,所以,也可以大大降低分配操作的次数,减少存储碎片,有利于提高应用程序性能。

此外,由于该方案对内存的需求较少,且计算效率较高,因此,对设备性能的要求较低,可以适用于移动终端等设备,所以,相对于将深度学习前向算法放置在服务器端的方案而言,可以更加高效灵活地对人脸进行跟踪,有利于提高用户体验。

本领域普通技术人员可以理解上述实施例的各种方法中的全部或部分步骤是可以通过程序来指令相关的硬件来完成,该程序可以存储于一计算机可读存储介质中,存储介质可以包括:只读存储器(rom,readonlymemory)、随机存取记忆体(ram,randomaccessmemory)、磁盘或光盘等。

以上对本发明实施例所提供的一种人脸跟踪方法和装置进行了详细介绍,本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。

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