本申请涉及计算机技术领域,特别是涉及一种人脸检测方法及装置。
背景技术:
随着云技术发展,可以将云技术运用在人脸识别领域,使用云技术可以对多于百万数量级台数的摄像机拍摄的图像进行人脸识别,也可以管理一个数十亿人的人脸参考数据库。
现有人脸检测方法由于人脸检测效率较低,不适用于云规模的、包括数百万摄像机的人脸检测的平台。因此,针对云规模的人脸检测平台,需要设计一种检测效率高的人脸检测方法。
技术实现要素:
本申请实施例的目的在于提供一种人脸检测方法及装置,以提高人脸检测的效率。具体技术方案如下:
一方面,本申请实施例提供了一种人脸检测方法,应用与人脸检测平台的人脸检测设备,所述人脸检测平台还包括多台摄像机,所述方法包括:
获取所述人脸检测设备的运算能力;
获取当前时刻所述摄像机的视频传输速率;
根据所述运算能力与所述视频传输速率,以所述人脸检测设备的运算能力大于需要检测的视频帧的原则,确定需要删除的视频帧的数量;
从所述摄像机拍摄的图像中,确定人脸检测率低于预设检测率的图像,从所确定的图像中删除与所述视频帧的数量相同数量的图像,得到待检测图像;其中,所述人脸检测率用于表示摄像机拍摄的图像中被检测出存在人脸的概率;
对所述待检测图像进行人脸识别。
可选的,所述对所述待检测图像进行人脸识别,包括:
对所述待检测图像的指定区域进行人脸识别。
可选的,所述确定人脸检测率低于预设检测率的图像,包括:
获取各摄像机的人脸检测率;
将人脸检测率低于预设检测率的摄像机拍摄的图像确定为人脸检测率低于预设检测率的图像。
可选的,所述方法具体应用于人脸检测设备的图形处理器gpu;所述计算资源为gpu资源。
可选的,所述人脸检测设备中存储有各参考人脸向量以及各参考人脸向量对应的人脸信息;
所述对所述摄像机拍摄的图像进行人脸识别,包括:
识别所述摄像机拍摄的图像中人脸所在的区域,得到人脸区域图像;
将所述人脸区域图像划分为多个分割区域,并将各个分割区域转换为向量;
使用欧几里得距离公式将所转换的向量与所述各所述参考人脸向量进行比较,得到各个比较差别,将比较差别小于预设差别的参考人脸向量对应的人脸信息,确定为所述摄像机拍摄的图像中人脸的信息。
另一方面,本申请实施例还提供流量一种人脸检测装置,应用与人脸检测平台的人脸检测设备,所述人脸检测平台还包括多台摄像机,所述装置包括:
能力获取单元,用于获取所述人脸检测设备的运算能力;
速率获取单元,用于获取当前时刻所述摄像机的视频传输速率;
删除确定单元,用于根据所述运算能力与所述视频传输速率,以所述人脸检测设备的运算能力大于需要检测的视频帧的原则,确定需要删除的视频帧的数量;
删除单元,用于从所述摄像机拍摄的图像中,确定人脸检测率低于预设检测率的图像,从所确定的图像中删除与所述视频帧的数量相同数量的图像,得到待检测图像;其中,所述人脸检测率用于表示摄像机拍摄的图像中被检测出存在人脸的概率;
检测单元,用于对所述待检测图像进行人脸识别。
可选的,所述检测单元,具体用于:
对所述待检测图像的指定区域进行人脸识别。
可选的,所述确定人脸检测率低于预设检测率的图像,包括:
获取各摄像机的人脸检测率;
将人脸检测率低于预设检测率的摄像机拍摄的图像确定为人脸检测率低于预设检测率的图像。
可选的,所述装置具体应用于人脸检测设备的图形处理器gpu;所述计算资源为gpu资源。
可选的,所述人脸检测设备中存储有各参考人脸向量以及各参考人脸向量对应的人脸信息;
所述检测单元,包括:
区域获取子单元,用于识别所述摄像机拍摄的图像中人脸所在的区域,得到人脸区域图像;
向量转换子单元,用于将所述人脸区域图像划分为多个分割区域,并将各个分割区域转换为向量;
人脸确定子单元,用于使用欧几里得距离公式将所转换的向量与所述各所述参考人脸向量进行比较,得到各个比较差别,将比较差别小于预设差别的参考人脸向量对应的人脸信息,确定为所述摄像机拍摄的图像中人脸的信息。
使用本申请实施例提供的技术方案,根据所述运算能力与视频传输速率,以人脸检测设备的运算能力大于需要检测的视频帧的原则,确定需要删除的视频帧的数量;从所述摄像机拍摄的图像中,确定人脸检测率低于预设检测率的图像,从所确定的图像中删除与所述视频帧的数量相同数量的图像,得到待检测图像;其中,所述人脸检测率用于表示摄像机拍摄的图像中被检测出存在人脸的概率;对所述待检测图像进行人脸识别。本申请将摄像机拍摄的图像中人脸检测率低的图像删除后,可以减少无用识别和检测的次数,提高了人脸检测效率。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例的数据存储与传输示意图;
图2为本发明实施例的系统架构和空间管理示意图;
图3为本发明实施例的人脸检测组件图;
图4为轮询选择画面的示意图;
图5为人脸边界框元数据的示意图;
图6为访问生成器的一种工作时的示意图;
图7为进行人脸向量比较的一种示意图;
图8为与热点人脸比较的一种示意图;
图9为人脸去重的一种示意图;
图10为人脸去重的另一种示意图;
图11为热门列表所包含信息的示意图;
图12为实现摄像机负载均衡的一种方法的示意图;
图13为向量匹配的示意图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
为了提高人脸检测效率,本申请实施例提供了一种人脸检测方法及装置。
下面,首先对本申请实施例提供的人脸检测方法进行介绍。
本申请实施例提供的人脸检测方法应用与人脸检测平台的人脸检测设备,所述人脸检测平台还包括多台摄像机。所述方法包括以下步骤:
获取所述人脸检测设备的运算能力;
获取当前时刻所述摄像机的视频传输速率;
根据所述运算能力与所述视频传输速率,以所述人脸检测设备的运算能力大于需要检测的视频帧的原则,确定需要删除的视频帧的数量;
从所述摄像机拍摄的图像中,确定人脸检测率低于预设检测率的图像,从所确定的图像中删除与所述视频帧的数量相同数量的图像,得到待检测图像;其中,所述人脸检测率用于表示摄像机拍摄的图像中被检测出存在人脸的概率;
对所述待检测图像进行人脸识别。
在一种实施方式中,所述对所述待检测图像进行人脸识别,包括:
对所述待检测图像的指定区域进行人脸识别。
可选的,所述确定人脸检测率低于预设检测率的图像,包括:
获取各摄像机的人脸检测率;
将人脸检测率低于预设检测率的摄像机拍摄的图像确定为人脸检测率低于预设检测率的图像。
在一种实施方式中,所述方法具体应用于人脸检测设备的图形处理器gpu;所述计算资源为gpu资源。
可选的,所述人脸检测设备中存储有各参考人脸向量以及各参考人脸向量对应的人脸信息;
所述对所述摄像机拍摄的图像进行人脸识别,包括:
识别所述摄像机拍摄的图像中人脸所在的区域,得到人脸区域图像;
将所述人脸区域图像划分为多个分割区域,并将各个分割区域转换为向量;
使用欧几里得距离公式将所转换的向量与所述各所述参考人脸向量进行比较,得到各个比较差别,将比较差别小于预设差别的参考人脸向量对应的人脸信息,确定为所述摄像机拍摄的图像中人脸的信息。
使用本申请实施例提供的技术方案,根据所述运算能力与视频传输速率,以人脸检测设备的运算能力大于需要检测的视频帧的原则,确定需要删除的视频帧的数量;从所述摄像机拍摄的图像中,确定人脸检测率低于预设检测率的图像,从所确定的图像中删除与所述视频帧的数量相同数量的图像,得到待检测图像;其中,所述人脸检测率用于表示摄像机拍摄的图像中被检测出存在人脸的概率;对所述待检测图像进行人脸识别。本申请将摄像机拍摄的图像中人脸检测率低的图像删除后,可以减少无用识别和检测的次数,提高了人脸检测效率。
图1为本发明实施例的数据存储与传输示意图。如图1所示,视频数据存储在数据服务器中,可用架构参阅4.1。视频数据内容通过本地部署的gpu人脸检测应用4.2,得到权重表4.3保存在数据服务,边界框元数据4.5保存在元数据服务,元数据服务上的访问生成器4.6使用边界框元数据,通过gpu运算得到人脸和扇区访问,存在访问历史记录服务。热点任务单4.8加载在访问生成器,通过比对生成提示记录。访问历史记录服务通过人脸去重4.9和访问去重4.10压缩优化历史记录。历史记录服务使用人脸和摄像头作为数据记录的索引4.14。通过人脸数据库4.13识别历史记录服务中的人脸。
图2为本发明实施例的系统架构和空间管理示意图。如图2所示,一个摄像机流1.1将与4个数据中心对接,其中一个是主数据中心1.2和三个备用数据中心1.3、1.4、1.5。数据中心的服务器会有一个元数据服务1.6,元数据服务与备用元数据服务1.10是相互拷贝的。元数据服务通过路由器对应数据池1.8,数据池是数据磁盘1.7的集合,为上层提供存储空间。人脸检测会在数据池1.8上进行分析,不必通过网络传输数据。将结果返回给元数据1.7储存。
图3为本发明实施例的人脸检测组件图。如图3所示,人脸检测是在数据池服务器2.1上的的gpu2.4上执行的。一个数据服务器2.2里储存视频数据2.3,并配置本地的gpu2.4.视频数据内容包括视频片段2.5,设备id2.6,文件区段id2.7,gpu应用类型2.8,视频源权重表2.9。视频数据内容作为gpu输入,gpu基于2.8决定使用哪种应用(算法),基于权重表2.9(详述4.3)得到数据处理的优先级。gpu运算后得到边界框元数据2.11返还给元数据服务。
表1
fig3-facedetectioneffectivenessweights
表1列出了人脸检测有效性权重,每隔一段时间,对每台相机的人脸检测率进行校准,并将其作为统计数据存储。表1中,列3.1统计每个摄像头小人脸(50*50像素)的检测率,3.2统计大人脸(100*100像素)的检测率。通过权重表可以分配有限的gpu资源在同一时间找到更多的人脸,最大化gpu工作效率。
图4为轮询选择画面的示意图,如图4所示,由于扫描视频的每一帧是不可取的,需要引进一个轮询算法,用来保持gpu实时处理视频的能力。当gpu资源有限,每秒钟处理的帧数少于应处理的视频帧数时,便存在延时。为了避免延时,首先校准gpu的运算能力4.1,得到以帧每秒为单位的处理效率4.2。通过校准视频数据接入时的状态4.3,得到现在状态的视频帧数每秒。轮询算法通过以上数据可得到在此状态下为了保持gpu正常无延时运转而需要删除的帧数。轮询算法通过权重表得到哪些视频源可作为删除帧数的对象。使用轮询算法后,可从视频源中删除人脸检测率低的场景画面,避免不必要的gpu计算,使gpu始终处于未饱和且高效的计算状态。
图5为人脸边界框元数据的示意图。图5中,数据服务器将元数据作为响应消息,返回给发起请求的扇区元数据服务。一个视频片段5.1会有很多画面5.2,其中人脸只出现在画面的一小部分区域。gpu通过对视频的处理,返回人脸的边界框给元数据服务,包括人脸位置和所在的帧数。
图6为访问生成器的一种工作时的示意图,图6中,访问生成器(一个gpu应用程序)运行在一个元服务节点上。其接受来自数据服务的边界框元数据,并创建扇区访问和人脸访问。这些访问被发送到访问历史服务6.8。
图7为进行人脸向量比较的一种示意图。图7中,通过比较人脸向量来决定身份的匹配人脸图像将被分割为128个区域(7.1),像素将转换为一个代表性向量(7.2)。使用欧几里得距离公式(7.5)对向量(7.3,7.4)进行比较。如果差异很小(7.6),则认为两幅图像相同。
图8为与热点人脸比较的一种示意图。图8中,最新的人脸向量会率先比较热点名单。一个热点人员名单(8.1)定期加载到访问生成器。当创建一个新向量(8.3)时,将它与热门列表向量(8.2)进行比较(8.4),在匹配(8.5)时,将生成一个提示(8.6),并将该向量视为高优先级(8.7)。此技术用于支撑不用的人脸检测业务场景,例如公安局在逃人员侦查。
图9为人脸去重的一种示意图。如图9所示,同时出现在前期列表和现期列表的人脸被定义为重复人脸,为了减少不必要的数据记录,重复的人脸将被去重。减少数据存储量,为大规模部署提供存储优化。
图10为人脸去重的另一种示意图。如图10所示,为了减少不必要的数据记录,重复的人脸将被去重如果相同的人脸(4.1,4.2)在相同的视频源数据内被发现,则只记录第一个实例。如果同一人脸在同一时间段内出现多次(10.3),则只记录第一次和最后一次。一张重复的脸可以在连续10分钟内(10.4)被去重。如果一张脸出现了多次,但不是连续的(10.7),它可能被记录为多次访问。
图11为热门列表所包含信息的示意图,从图11中可见,一个热门列表访问包含了比正常访问更多的信息量。
图12为实现摄像机负载均衡的一种方法的示意图,从图12可见,在高负荷工作量期间,边界框的处理将被平均分配给摄像头。
图13为向量匹配的示意图,从图13可见,参考人脸向量可以大规模横向扩展。参考人脸向量(多达20亿),切分为1024个组,分布在256个人脸访问记录节点上(13.1)。在访问历史记录中检测到的新面孔(13.2)计算碎片索引(13.3)并将向量发送到相应的节点进行身份匹配(13.4)。
可通过人脸和摄像头索引访问记录。
当发出访问记录时,每个视频段都被视为一个单独的记录。一个视频段可以包含多个人脸,但是出现在一个画面中的重复人脸将被删除。包含特定人脸的每个区段的fvisit(14.1)记录存储在人脸向量的访问历史碎片中。cvisit(14.2)记录了在特定相机发现的人脸,并储存在相机的元扇区上。
在本发明实施例中,人脸检测平台包括空间管理组件,该组件用于对于人脸检测进行空间管理和实现持续可检测性,在空间管理组件中,每个数据中心包括一台服务器的一个硬盘负责摄像头流的元数据服务数据会通过转子机制均匀分布在数据磁盘池中每个数据中心上的元数据服务以3种方式复制(1.10),以防止媒体故障。这意味着,如果4个数据中心池中的任何一个有空闲空间,并且4个元服务中的任何一个正在运行,就可以存储新的摄像机数据。这就会支撑较强的可用性,并且存储空间饱和的情况会很少出现。
在本发明实施例中,人脸检测平台包括人脸检测组件,人脸检测组件进行人脸检测是在数据池服务器(2.1)上的gpu(2.4)上执行的。一个原始数据可能包含14秒h.265(2.5)的区段,通过服务器接收(2.2)并储存在本地(2.3)。该消息还包括一个摄像机id(2.6)和原始数据id(2.7),后者是一个时间戳。cdn(2.8)中的宿主柜gpu类决定调用哪个gpu应用程序(2.10)。gpu应用程序(2.10)接收帧数据和身份数据,基于权重表(2.9)对帧应用优先级,并返回边界框元数据(2.11)。
在一种实施方式中,可以每隔一段时间,对每台相机的人脸检测率进行校准,并将其作为统计数据存储。每个视频源数据的平均小人脸数(3.1)和平均大人脸数(3.2)被记录下来。默认情况下,小的人脸是50x50像素,大的人脸是100x100像素。这是一个衡量相机效率的指标。考虑到gpu处理的稀缺性,本发明实施例的目标是在给定一定处理能力的情况下,找到最大的人脸数,换句话说,最大化gpu的效率。由于户外相机容易受到外界因素的影响,这个指标也会检测到定位误差。
在一种实施方式中,由于扫描视频的每一帧是不可取的,可以通过轮询算法选取需要扫描的视频帧。在gpu校准(4.1)过程中,计算了一个标称帧每秒速率(4.2)。这个数值将取决于gpu的模型和数量。在处理正在进行的nvr(4.3)数据时,记录当前帧到达率(4.4)。一般来讲,例如32个相机x25帧每秒是常见的。如果gpu不足,那么一些帧将会被忽略掉,不被扫描。在本例中,通过标称gpu容量和有效性权重(5.5),计算得出可能的投票率。
在一种实施方式中,数据服务器将元数据作为响应消息,返回给发起请求的扇区元数据服务一个视频数据(5.1)可能包含多达250帧(5.2),有可能在某些帧(5.3)上会发现很多不同的人脸(5.4、5.5)。一组帧通常包括一个完整的帧(i帧),加上一组部分的(p帧)组件(5.6),因此如果不按顺序播放帧,就无法提取pframe组件中的人脸。一个人脸(5.7)通常只占框架的一小部分。作为帧重传的替代方法,人脸检测器将返回一组或者多组边界框(5.8)数据,其中包括相对帧数和人脸位置(5.9)。
在一种实施方式中,访问生成器(一个gpu应用程序)运行在一个元服务节点上。它接受来自数据服务的边界框元数据,并创建扇区访问和人脸访问。元节点(6.1)包括扇区的元数据存储(6.2)和gpu(6.3)。访问应用程序(6.4)会运行在两者之上。边界框元数据(6.5)被转发到gpu应用程序(6.6)。这个应用程序依次生成扇区访问(6.7)和人脸访问(6.9),这些访问被发送到访问历史服务(6.8)。
在一种实施方式中,通过比较人脸向量来决定身份的匹配人脸图像将被分割为128个区域(7.1),像素将转换为一个代表性向量(7.2)。可以使用欧几里得距离公式(7.5)对向量(7.3,7.4)进行比较。如果差异很小(7.6),则认为两幅图像相同。
在一种实施方式中,最新的人脸向量会率先比较热点人员名单,一个热点人员名单(8.1)定期加载到访问生成器。当创建一个新向量(8.3)时,将它与热门列表向量(8.2)进行比较(8.4),在匹配(8.5)时,将生成一个警报(8.6),并将该向量视为高优先级(8.7)。作为新创建向量的百分比,最想要的列表匹配将非常罕见。一般情况下,面部访问记录可能会比视频制作慢1分钟,对于一张普通的脸,可能会比视频制作慢5分钟。这样做是为了避免过多的人员在不同地点的图像使访问历史饱和。
为了减少不必要的数据记录,重复的人脸可以被去重每个周期(例如,一分钟)的唯一向量集(9.1)将会被保存。当前的人脸(9.3)与之前的人脸(9.2)进行比较,如果匹配(9.4)就被认为是重复的(9.5)。一个热门列表访问包含了比正常访问更多的信息量单个视频段(11.1,11.2)将除去重复数据。每个周期发出一个访问记录,其中包括所有有人脸的视频段(11.3)。
为了使得摄像机负载均衡,在一种实施方式中,在高负荷工作量期间,边界框的处理可以被平均分配给摄像头每秒边界框的标称数值(12.2)(12.1)将被计算。如果当前到达的数量(12.3)超过了容量,负载就会减少,以便在所有相机(12.4)之间均衡处理。边界框大小等因素也会明显影响选择过程,较大的边界框比较小的边界框更有优先级。
参考人脸向量可以大规模横向扩展,参考人脸向量(多达20亿),切分为1024个组,分布在256个人脸访问记录节点上(13.1)。在访问历史记录中检测到的新面孔(13.2)计算碎片索引(13.3)并将向量发送到相应的节点进行身份匹配(13.4)。可通过人脸和摄像头索引访问记录。
当发出访问记录时,每个视频段都被视为一个单独的记录。一个视频段可以包含多个人脸,但是出现在一个画面中的重复人脸将被删除。包含特定人脸的每个区段的fvisit(14.1)记录存储在人脸向量的访问历史碎片中。cvisit(14.2)记录了在特定相机发现的人脸,并储存在相机的元扇区上。
本申请实施例提供了一种人脸检测装置,应用与人脸检测平台的人脸检测设备,所述人脸检测平台还包括多台摄像机,所述装置包括:
速率获取单元,用于获取当前时刻所述摄像机的视频传输速率;
删除确定单元,用于根据所述运算能力与所述视频传输速率,以所述人脸检测设备的运算能力大于需要检测的视频帧的原则,确定需要删除的视频帧的数量;
删除单元,用于从所述摄像机拍摄的图像中,确定人脸检测率低于预设检测率的图像,从所确定的图像中删除与所述视频帧的数量相同数量的图像,得到待检测图像;其中,所述人脸检测率用于表示摄像机拍摄的图像中被检测出存在人脸的概率;
检测单元,用于对所述待检测图像进行人脸识别。
可选的,所述检测单元,具体用于:
对所述待检测图像的指定区域进行人脸识别。
可选的,所述确定人脸检测率低于预设检测率的图像,包括:
获取各摄像机的人脸检测率;
将人脸检测率低于预设检测率的摄像机拍摄的图像确定为人脸检测率低于预设检测率的图像。
可选的,所述装置具体应用于人脸检测设备的图形处理器gpu;所述计算资源为gpu资源。
可选的,所述人脸检测设备中存储有各参考人脸向量以及各参考人脸向量对应的人脸信息;
所述检测单元,包括:
区域获取子单元,用于识别所述摄像机拍摄的图像中人脸所在的区域,得到人脸区域图像;
向量转换子单元,用于将所述人脸区域图像划分为多个分割区域,并将各个分割区域转换为向量;
人脸确定子单元,用于使用欧几里得距离公式将所转换的向量与所述各所述参考人脸向量进行比较,得到各个比较差别,将比较差别小于预设差别的参考人脸向量对应的人脸信息,确定为所述摄像机拍摄的图像中人脸的信息。
对于装置实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
以上所述仅为本申请的较佳实施例而已,并非用于限定本申请的保护范围。凡在本申请的精神和原则之内所作的任何修改、等同替换、改进等,均包含在本申请的保护范围内。