发明内容
考虑到上述问题而提出了本发明。本发明提供了一种人脸建模的方法,具有通用性,能够降低人力成本。
根据本发明的第一方面,提供了一种人脸建模的方法,包括:
通过人像数据派发模块获取数据源队列,并将所述数据源队列中的人像数据转发至人脸建模队列;
通过人脸建模模块对所述人脸建模队列中的人像数据进行人脸建模得到建模结果;以及
通过实时统计模块实时地报告建模之后的入库进度。
示例性地,在通过人像数据派发模块获取数据源队列之前,还包括:通过数据源处理模块从数据源获取原始人像数据,对所述原始人像数据进行处理,并将处理之后的人像数据推送至所述数据源队列。
示例性地,所述数据源是项目需求所指定的。
示例性地,在通过人脸建模模块对所述人脸建模队列中的人像数据进行人脸建模得到建模结果之后,所述方法还包括:将所述建模结果推送至业务数据队列;通过业务数据模块从所述业务数据队列获取所述建模结果,并将所述建模结果与所述人像数据的身份信息进行关联和存储;以及将关联之后的建模结果推送至统计队列。
示例性地,所述业务数据队列为缓冲队列。
示例性地,在通过人脸建模模块对所述人脸建模队列中的人像数据进行人脸建模得到建模结果之后,所述方法还包括:将所述建模结果推送至统计队列。
示例性地,所述统计队列为缓冲队列。
示例性地,所述数据源队列和所述人脸建模队列均为缓冲队列。
根据本发明的第二方面,提供了一种人脸建模的装置,包括:
人像数据派发模块,用于获取数据源队列,并将所述数据源队列中的人像数据转发至人脸建模队列;
人脸建模模块,用于对所述人脸建模队列中的人像数据进行人脸建模得到建模结果;以及
实时统计模块,用于实时地报告建模之后的入库进度。
示例性地,所述装置还包括:数据源处理模块,用于从数据源获取原始人像数据,并对所述原始人像数据进行处理,并将处理之后的人像数据推送至所述数据源队列。
示例性地,所述数据源是项目需求所指定的。
示例性地,所述人脸建模模块,还用于将所述建模结果推送至业务数据队列;所述装置还包括:业务数据模块,用于从所述业务数据队列获取所述人脸建模模块推送的所述建模结果,并将所述建模结果与所述人像数据的身份信息进行关联和存储,以及将关联之后的建模结果推送至统计队列。
示例性地,所述人像数据派发模块还用于实例化所述人脸建模模块和所述业务数据模块的实例池。
示例性地,所述业务数据队列为缓冲队列。
示例性地,所述人脸建模模块,还用于将所述建模结果推送至统计队列。
示例性地,所述统计队列为缓冲队列。
示例性地,所述数据源队列和所述人脸建模队列均为缓冲队列。
第二方面所述的该装置能够用于实现前述第一方面的人脸建模的方法。
根据本发明的第三方面,提供了一种计算机芯片,该计算机芯片包括处理器和存储介质,在所述存储介质上存储了程序指令,当该处理器执行程序指令代码时,能够实现前述第一方面所述的人脸建模的方法。
本发明实施例将人脸建模的入库流程阶段化抽象,阶段之间以消息通信替代函数调用,达到解耦的目的。在项目实施时,可以直接复用上述的各个阶段,或在上述的各个阶段之上稍加修改,即可满足项目需求。由此可见,本发明的方法具有通用性,能够适用于各个不同的项目,避免针对不同项目各自建模,从而能够降低人力成本,减少开支。
具体实施方式
为了使得本发明的目的、技术方案和优点更为明显,下面将参照附图详细描述根据本发明的示例实施例。显然,所描述的实施例仅仅是本发明的一部分实施例,而不是本发明的全部实施例,应理解,本发明不受这里描述的示例实施例的限制。基于本发明中描述的本发明实施例,本领域技术人员在没有付出创造性劳动的情况下所得到的所有其它实施例都应落入本发明的保护范围之内。
现有的人脸检索系统,往往需要根据不同项目的需求定制专门的建模入库程序。这种方式存在以下问题:(1)不具备通用性。用于此项目的入库建模程序难以移植到彼项目中,对人力成本是一种浪费;(2)缺少可维护性。不同项目使用不同的入库模块,缺少持续的项目支持,升级困难。(3)缺少健壮性(又称鲁棒性)保证。入库建模过程成为项目部署时最不可控的环节,同时受限于开发、调试和验证时间,以及现场需求的变化,这一过程也更容易成为性能瓶颈。
图1所示为本发明实施例的电子设备的一个示意性框图。图1所示的电子设备10包括一个或多个处理器102、一个或多个存储装置104、输入装置106、输出装置108、图像传感器110以及一个或多个非图像传感器114,这些组件通过总线系统112和/或其它形式互连。应当注意,图1所示的电子设备10的组件和结构只是示例性的,而非限制性的,根据需要,所述电子设备也可以具有其他组件和结构。
所述处理器102可以包括CPU 1021和GPU 1022或者具有数据处理能力和/或指令执行能力的其它形式的处理单元,并且可以控制所述电子设备10中的其它组件以执行期望的功能。
所述存储装置104可以包括一个或多个计算机程序产品,所述计算机程序产品可以包括各种形式的计算机可读存储介质,例如易失性存储器1041和/或非易失性存储器1042。所述易失性存储器1041例如可以包括随机存取存储器(Random Access Memory,RAM)和/或高速缓冲存储器(cache)等。所述非易失性存储器1042例如可以包括只读存储器(Read-Only Memory,ROM)、硬盘、闪存等。在所述计算机可读存储介质上可以存储一个或多个计算机程序指令,处理器102可以运行所述程序指令,以实现各种期望的功能。在所述计算机可读存储介质中还可以存储各种应用程序和各种数据,例如所述应用程序使用和/或产生的各种数据等。
所述输入装置106可以是用户用来输入指令的装置,并且可以包括键盘、鼠标、麦克风和触摸屏等中的一个或多个。
所述输出装置108可以向外部(例如用户)输出各种信息(例如图像或声音),并且可以包括显示器、扬声器等中的一个或多个。
所述图像传感器110可以拍摄用户期望的图像(例如照片、视频等),并且将所拍摄的图像存储在所述存储装置104中以供其它组件使用。
示例性地,该电子设备10可以被实现为诸如智能手机、平板电脑、门禁系统的图像采集端等。
如图2所示,是本发明实施例的人脸建模的方法的一个示意性流程图,图2所示的方法包括:
S101,通过人像数据派发模块获取数据源队列,并将所述数据源队列中的人像数据转发至人脸建模队列。
其中,人像数据也可以称为人脸数据或者人脸图像数据等,本发明对此不限定。
可选地,如图3所示,在S101之前,还可以包括:
S1011,通过数据源处理模块从数据源获取原始人像数据,对所述原始人像数据进行处理,并将处理之后的人像数据推送至所述数据源队列。
具体地,数据源处理模块也可以称为数据源获取&格式化模块,用于根据项目需要从指定的数据源获取原始人像数据,对原始人像数据进行处理,例如,进行统一格式化,并将处理之后的人像数据推送至数据源队列。也就是说,S1011中的数据源是项目需求所指定的。数据源队列包括处理之后的人像数据,如格式化后的人像数据。
作为一例,数据源处理模块可以从数据源获取原始人像数据以及人像数据的相关信息,并进行统一格式化后推送至数据源队列。其中,人像数据的相关信息可以包括人像数据的身份信息或属性信息,例如,性别、年龄、民族等等。
在S101中,人像数据派发模块可以具体地根据性能要求,实例化后续的人脸建模模块和业务数据处理模块的实例池,并将数据源队列中的人像数据转发至人脸建模队列。
S102,通过人脸建模模块对所述人脸建模队列中的人像数据进行人脸建模得到建模结果。
具体地,人脸建模模块可以接收人脸建模队列中的人像数据,采用人脸检测算法执行人脸建模。例如,可以执行三维的几何人脸建模或图像人脸建模。
另外,本发明实施例中的人脸检测算法可以根据人像数据的形式、计算精度要求等进行选择,本发明对此不限定。
S103,通过实时统计模块实时地报告建模之后的入库进度。
可选地,作为一例,还可以将S102中得到的建模结果推送至统计队列。其中,统计队列也可以称为统计数据队列,本发明对此不限定。相应地,在S103中,实时统计模块可以根据统计队列中的建模结果完成人脸建模入库,并实时地报告当前的入库进度。
可选地,作为另一例,上述的S102可以替换为以下的S1021-S1023执行,如图3所示,如果出于业务的需求,比如需要将人像信息和身份信息进行绑定,则在S103之前,可以包括:
S1021,通过人脸建模模块对所述人脸建模队列中的人像数据进行人脸建模得到建模结果,并将所述建模结果推送至业务数据队列。
S1022,通过业务数据模块从所述业务数据队列获取所述建模结果,并将所述建模结果与所述人像数据的身份信息进行关联和存储。
其中,业务数据模块也可以称为业务数据处理模块。
其中,将建模结果与身份信息进行关联可以是指:将建模结果所指示的人脸信息与身份信息进行绑定。具体地,如果存在业务上的使用需求,业务数据模块可以将人脸信息与身份信息进行绑定,从而可以用于在人脸识别产品中的展示等。
其中,作为一例,业务上的使用需求可以包括该人脸建模方法之后的后续需求,例如产品展示等等。
S1023,将关联之后的建模结果推送至统计队列,以使得所述实时统计模块可以实时地报告建模之后的入库进度。
相应地,S103包括:基于统计队列中与身份信息的数据关联之后的建模结果完成人脸建模入库,并实时地报告当前的入库进度。
可见,数据源处理模块与人像数据派发模块之间的消息传递是通过数据源队列完成的,人像数据派发模块与人脸建模模块之间的消息传递是通过人脸建模队列完成的,人脸建模模块与业务数据模块之间的消息传递是通过业务数据队列完成的。也就是说,各个模块之间进行消息通信,而不再是函数调用。消息可以使用二进制序列化方法,并且统一使用缓冲队列实现,即,所述数据源队列、所述人脸建模队列、所述统计队列和所述业务数据队列均为缓冲队列,这样能够避免短板效应,即能够避免某个模块由于网络不稳、存储性能波动等原因造成处理能力的突然下降时导致的整个流程的堵塞。可见,本发明实施例能够最大化利用计算机的处理性能,且平衡计算密集型任务和IO密集型任务带来的开销,实现模块之间的并行处理,提高处理的速度。
可见,本发明实施例中,整个人脸建模按照执行的顺序抽象成了“数据源处理”、“人像数据派发”、“人脸建模”、“业务数据处理”以及“实时统计”5个阶段,并且每个阶段都可以实现为一个独立的模块,从而实现了建模入库流程的阶段化抽象。并且,各个阶段之间以消息通信代替了现有的函数调用,实现为相互独立的子系统,达到解耦的目的。
这种模块化的设计可以降低程序复杂度,使在设计、调试和维护等过程中的操作实现简单化。具体地,在项目实施时,可以直接复用上述的各个阶段,或在上述的各个阶段之上稍加修改,即可满足项目需求。
举例来说,假如需求方要求使用HTTP下载接口和人像数据库连接两种方式构建人脸库。因为人脸识别算法版本、人脸识别的用户产品可以确定,因此“人像数据派发”、“人脸建模”、“业务数据处理”等模块都可以直接复用,工程师只需要开发基于HTTP下载接口和人像数据库连接的两个“数据源处理”模块即可,从而能够大量地减少人力成本。
图4是本发明实施例的人脸建模的装置的一个示意性框图。图4所示的装置30包括:人像数据派发模块302、人脸建模模块303和实时统计模块305。
人像数据派发模块302,用于获取数据源队列,并将所述数据源队列中的人像数据转发至人脸建模队列。
人脸建模模块303,用于对所述人脸建模队列中的人像数据进行人脸建模得到建模结果。
实时统计模块305,用于实时地报告建模之后的入库进度。
示例性地,如图5所示,该装置还可以包括数据源处理模块301。数据源处理模块301,用于从数据源获取原始人像数据,对所述原始人像数据进行处理,并将处理之后的人像数据推送至所述数据源队列。其中,数据源是项目需求所指定的。
可选地,人脸建模模块303可以具体用于对所述人脸建模队列中的人像数据进行人脸建模得到建模结果,并将所述建模结果推送至统计队列。
可选地,如图6所示,该装置还可以进一步包括业务数据模块304。人脸建模模块303可以具体用于对所述人脸建模队列中的人像数据进行人脸建模得到建模结果,并将所述建模结果推送至业务数据队列。进一步地,业务数据模块304用于从所述业务数据队列获取所述人脸建模模块303推送的所述建模结果,并将所述建模结果与所述人像数据的身份信息进行关联和存储,以及将关联之后的建模结果推送至统计队列。
示例性地,人像数据派发模块302,还可以用于实例化所述人脸建模模块303和所述业务数据模块304的实例池。
示例性地,所述数据源队列、所述人脸建模队列、所述统计队列和所述业务数据队列可以均为缓冲队列。举例来说,可以为先入先出(First In First Out,FIFO)的二进制数据缓冲队列。
图4-图6所示的装置30能够用于实现前述图2-图3所示的方法。此处仅对该人脸建模装置30的各部件的主要功能进行描述,而省略已经描述过的细节内容。
另外,本发明实施例还提供了一种电子设备,该电子设备包括装置30。
可选地,该装置30可以包括处理器和存储器,其中,存储器用于存储指令,处理器执行该指令时,可以实现前述图2或图3所示的人脸建模的方法。
本发明实施例提供了一种用于人脸建模的标准化流程。通过将一个普遍的入库流程阶段化抽象,阶段之间以消息通信替代函数调用,实现为相互独立的子系统,达到解耦的目的。因此在项目实施时,可以直接复用上述的各个阶段,或在上述的各个阶段之上稍加修改,即可满足项目需求。由此可见,本发明的方法具有通用性,能够适用于各个不同的项目,避免针对不同项目各自建模,从而能够降低人力成本,减少开支。
本发明基于模块化思路,将入库流程中会根据现场需求频繁变动的部分,和功能比较固定、不会经常变动的部分分别设计为独立的模块。每个模块自身遵循单一责任原则,因此更加容易并行化,以最大化利用计算机单机性能,同时工程质量也有所保证。
尽管这里已经参考附图描述了示例实施例,应理解上述示例实施例仅仅是示例性的,并且不意图将本发明的范围限制于此。本领域普通技术人员可以在其中进行各种改变和修改,而不偏离本发明的范围和精神。所有这些改变和修改意在被包括在所附权利要求所要求的本发明的范围之内。
本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。
在本申请所提供的几个实施例中,应该理解到,所揭露的设备和方法,可以通过其它的方式实现。例如,以上所描述的设备实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个设备,或一些特征可以忽略,或不执行。
在此处所提供的说明书中,说明了大量具体细节。然而,能够理解,本发明的实施例可以在没有这些具体细节的情况下实践。在一些实例中,并未详细示出公知的方法、结构和技术,以便不模糊对本说明书的理解。
类似地,应当理解,为了精简本发明并帮助理解各个发明方面中的一个或多个,在对本发明的示例性实施例的描述中,本发明的各个特征有时被一起分组到单个实施例、图、或者对其的描述中。然而,并不应将该本发明的方法解释成反映如下意图:即所要求保护的本发明要求比在每个权利要求中所明确记载的特征更多的特征。更确切地说,如相应的权利要求书所反映的那样,其发明点在于可以用少于某个公开的单个实施例的所有特征的特征来解决相应的技术问题。因此,遵循具体实施方式的权利要求书由此明确地并入该具体实施方式,其中每个权利要求本身都作为本发明的单独实施例。
本领域的技术人员可以理解,除了特征之间相互排斥之外,可以采用任何组合对本说明书(包括伴随的权利要求、摘要和附图)中公开的所有特征以及如此公开的任何方法或者设备的所有过程或单元进行组合。除非另外明确陈述,本说明书(包括伴随的权利要求、摘要和附图)中公开的每个特征可以由提供相同、等同或相似目的的替代特征来代替。
此外,本领域的技术人员能够理解,尽管在此所述的一些实施例包括其它实施例中所包括的某些特征而不是其它特征,但是不同实施例的特征的组合意味着处于本发明的范围之内并且形成不同的实施例。例如,在权利要求书中,所要求保护的实施例的任意之一都可以以任意的组合方式来使用。
本发明的各个部件实施例可以以硬件实现,或者以在一个或者多个处理器上运行的软件模块实现,或者以它们的组合实现。本领域的技术人员应当理解,可以在实践中使用微处理器或者数字信号处理器(DSP)来实现根据本发明实施例的物品分析设备中的一些模块的一些或者全部功能。本发明还可以实现为用于执行这里所描述的方法的一部分或者全部的装置程序(例如,计算机程序和计算机程序产品)。这样的实现本发明的程序可以存储在计算机可读介质上,或者可以具有一个或者多个信号的形式。这样的信号可以从因特网网站上下载得到,或者在载体信号上提供,或者以任何其他形式提供。
应该注意的是上述实施例对本发明进行说明而不是对本发明进行限制,并且本领域技术人员在不脱离所附权利要求的范围的情况下可设计出替换实施例。在权利要求中,不应将位于括号之间的任何参考符号构造成对权利要求的限制。单词“包含”不排除存在未列在权利要求中的元件或步骤。位于元件之前的单词“一”或“一个”不排除存在多个这样的元件。本发明可以借助于包括有若干不同元件的硬件以及借助于适当编程的计算机来实现。在列举了若干装置的单元权利要求中,这些装置中的若干个可以是通过同一个硬件项来具体体现。单词第一、第二、以及第三等的使用不表示任何顺序。可将这些单词解释为名称。
以上所述,仅为本发明的具体实施方式或对具体实施方式的说明,本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本发明的保护范围之内。本发明的保护范围应以权利要求的保护范围为准。