基于华为大数据平台的人脸识别

阅读数:391 2019 年 10 月 8 日 16:00

基于华为大数据平台的人脸识别

【案例概览】
案例名称:恒远华动态人脸采集与实时识别方案
案例来源: 北京恒远华信息技术有限公司
行业:其他
技术领域:大数据
华为产品: FusionInsight HD

案例简述

本系统采用华为的 FusionInsight 大数据平台架构,与传统的服务器架构相比,数据处理能力大幅提升,主要优势如下:

  • 支持海量数据处理,可支持百亿级人脸库
  • 可实现数据存储,处理,分析一体化结构
  • 实时性,基于 storm 集群的深度学习算法可实时处理识别,对比,搜索运算
  • 高效性,对于人像库之间的查重对比,时间可缩短到原来的 1/10
  • 安全性高,对网络安全,数据安全,主机安全均可提供全面解决方案

业务背景

人脸识别,是基于人的脸部特征信息进行身份识别的一种生物识别技术。用摄像机或摄像头采集含有人脸的图像或视频流,并自动在图像中检测和跟踪人脸,进而对检测到的人脸进行脸部的一系列相关技术,通常也叫做人像识别、面部识别。

我们的用户在使用传统的人脸识别系统过程中面临以下几个问题:

  • 用户目前只能从第三方获取视频数据,无法直接取到人脸照片
  • 既要从视频中实时提取人脸图片,又要进行实时比对
  • 用户要面对众多厂商的摄像设备,而原有的摄像机拍摄角度很难满足人脸抓拍的要求
  • 用户需要建立多种业务的人脸库,总量达百亿级
  • 用户需要经常进行大规模人脸库之间的查重操作,以往处理一次需要几个月的时间

针对上述问题,我们采用深度学习的人脸识别算法并基于华为的大数据平台成功的为用户解决了现有的问题,并大幅度提高了系统的性能。

解决方案介绍

1. 系统的基本功能

  • 实时接收。实时接收外部设备抓拍的人脸照片,保存到 HDFS 中。

  • 实时人脸检测。对抓拍的照片实时进行人脸检测和特征提取,将人脸特征存储到抓拍人脸库,并在数据库中关联人脸特征和抓拍的人脸照片,用于后续的检索功能。

  • 实时黑名单比对。将从实时抓拍照片中提取出的人脸特征与黑名单库的记录对比,如果抓拍的照片与黑名单库的记录匹配,则报警。

  • 离线人脸识别。使用用户提交的人脸照片,检测出照片中的人脸,并提取人脸的特征,将特征与人脸注册库或人脸黑名单库或人脸抓拍库中的特征记录对比,找出匹配的人。

  • 人脸库管理。可以手动或自动批处理建立人脸库(注册库、黑名单库和抓拍库),对人脸库可以进行增加和删除操作。

  • 用户接口。用户可以通过 web 页面进行人脸库的管理操作、离线人脸搜索、查询抓拍记录,人脸轨迹和接收黑名单报警等功能。

2. 系统的设计性能

  • 注册人脸库支持 1000 万个人像记录,并支持平滑扩容至 100 亿级人像记录
  • 注册人脸库的离线检索时间要小于 10 秒
  • 从接收到照片到完成重点黑名单库的对比要小于 2 秒
  • 根据业务需要,系统支持把抓拍库的内容录入注册库

3. 系统示意图

基于华为大数据平台的人脸识别

4. 系统的整体设计

本系统采用基于深度学习的人脸识别算法,通过多台华为 FusionInsight 服务器集群和一台 WEB 服务器实现一个完整的人脸识别系统,并可根据需要进行平滑扩展。

本方案针对大型以及超大型人脸识别系统,人脸识别系统可对提交的照片进行实时动态识别或动静态比对。在方案中,系统可以自动采集数据进行对比处理,也可以是工作人员通过查询终端提交人像图片,系统会对提交的照片进行特征提取,并与保存在内存注册库中的人像图片结构化特征数据进行快速匹配。最后,根据工作人员设定的相似度阈值显示相关人员的身份信息。

01 系统的逻辑架构

系统业务逻辑包含三块内容:

  • 人脸采集系统:人脸采集系统包括专业人脸抓拍机和普通高清网络摄像机 + 人脸检测服务器,是将前端采集到的视频图片等非结构化数据进行分析处理,定位检测获取人脸图片,并结合人员身份信息采集系统获取人员身份信息进行关联管理。

  • 人脸比对系统:人脸比对系统是对人脸采集系统传输的数据进行智能分析处理,进行人脸图片建模、通过人脸眼睛、鼻子、嘴、下巴等局部构成,对这些局部和它们之间结构关系的几何描述,进行人脸特征数据提取入库,并根据平台业务需求进行实时比对识别和事后人脸检索应用。

  • 人脸库:人脸库包括人脸抓拍库、人脸注册库、黑名单库,其中抓拍库包括场景下抠取的人脸小图、人脸特征数据,是人脸采集系统采集的人脸图片存储库,用于人脸比对系统进行人脸图片比对检索;注册库包括标准人脸图片、人员身份信息、人脸特征数据,是系统设定前批量导入的重点人员库,用于人脸比对系统进行人脸图片比对检索;黑名单库是注册库中将部分重点人员进行布控组成,用于实时比对人脸采集系统传输的人脸图片。

02 人脸业务库

系统数据库应包含三种业务库:人脸抓拍库、人脸注册库和黑名单库。

  • 人脸抓拍库- 包含抓拍现场图片、人脸小图和结构化的人脸特征数据、抓拍地点、抓拍时间等信息,此类库的主要业务应用场景是图片检索比对,查询目标人员的人像出没地点、时间等信息;

  • 人脸注册库- 主要是导入一些大规模的人像图片、结构化的人脸特征数据和身份信息,如一个地级市当地的社保人像信息库等,导入后主要的应用场景是图片检索比对和身份信息查询,确定人员身份;

  • 黑名单库- 包含高危人员、特殊人员的人脸图片、结构化的人脸特征数据和人员身份信息,主要的应用场景是在各个人脸卡口进行实时人流的人脸比对预警。

一般来说人脸抓拍库和人脸注册库做为静态库,适用于事后查询检索目标、黑名单库作为动态库,用于实时比对报警。一个或多个黑名单也可以进行勾选布控,形成具有针对性的人脸布控库,与前端实时视频进行人脸比对报警。

03 业务流程

系统数据流包含人脸实时比对和人脸历史查询。其中实时比对发生在事前或事中,当系统发现有布控人员出现时,执勤人员可以迅速作出反应;历史查询则是针对事后重点人员排查,可通过可疑人员图片查询系统记录的人员信息。

  • 实时视频人脸比对:普通高清网络摄像机通过人脸检测服务器或专业人脸抓拍相机分析视频中的人脸,提取人脸图片转发给平台服务器,服务器通过智能算法,从抓拍的人脸中提取特征数据,与黑名单库中的人脸特征数据库进行遍历检索,最后由平台展现人脸比对结果。

  • 图片检索人脸比对:通过平台客户端提交需检索的人脸图片,平台服务器提取人脸图片特征数据,与人脸抓拍库或人脸注册库中的人脸特征数据进行遍历比对,最后由平台展现比对结果。

04 华为大数据平台

FusionInsight 是华为企业级大数据存储、查询、分析的统一平台,能够帮助用户快速构建海量数据信息处理系统,通过对巨量信息数据实时与非实时的分析挖掘,发现全新价值点。FusionInsight 解决方案由 5 个子产品 FusionInsight HD、FusionInsight MPPDB、FusionInsight Miner、FusionInsight Farmer 和 FusionInsight Manager 构成。

  • FusionInsight HD:企业级的大数据处理环境,是一个分布式数据处理系统,对外提供大容量的数据存储、分析查询和实时流式数据处理能力。

  • FusionInsight MPPDB:企业级的 MPP 关系型数据库,基于列存储和 MPP 架构,是为面向结构化数据分析而设计开发的,能够有效处理 PB 级别的数据量。

  • FusionInsight MPPDB 在核心技术上跟传统数据库有巨大差别,可以解决很多行业用户的数据处理性能问题,可以为超大规模数据管理提供高性价比的通用计算平台,并可用于支撑各类数据仓库系统、BI(Business Intelligence)系统和决策支持系统,统一为上层应用的决策分析等提供服务。

  • FusionInsight Miner:企业级的数据分析平台,基于华为 FusionInsight HD 的分布式存储和并行计算技术,提供从海量数据中挖掘出价值信息的平台。

  • FusionInsight Farmer:企业级的大数据应用容器,为企业业务提供统一开发、运行和管理的平台。

  • FusionInsight Manager:企业级大数据的操作运维提供,提供高可靠、安全、容错、易用的集群管理能力,支持大规模集群的安装部署、监控、告警、用户管理、权限管理、审计、服务管理、健康检查、问题定位、升级和补丁等功能。

分布式系统

HDFS 是 Hadoop 的分布式文件系统,实现大规模数据可靠的分布式读写。HDFS 针对的使用场景是数据读写具有“一次写,多次读”的特征,而数据“写”操作是顺序写,也就是在文件创建时的写入或者在现有文件之后的添加操作。HDFS 保证一个文件在一个时刻只被一个调用者执行写操作,而可以被多个调用者执行读操作。

基于华为大数据平台的人脸识别

分布式处理引擎

MapReduce 是 Hadoop 的核心,是 Google 提出的一个软件架构,用于大规模数据集(大于 1TB)的并行运算。概念“Map(映射)”和“Reduce(化简)”,及他们的主要思想,都是从函数式编程语言借来的,还有从矢量编程语言借来的特性。当前的软件实现是指定一个 Map(映射)函数,用来把一组键值对映射成一组新的键值对,指定并发的 Reduce(化简)函数,用来保证所有映射的键值对中的每一个共享相同的键组。

MapReduce 是用于并行处理大数据集的软件框架。MapReduce 的根源是函数性编程中的 map 和 reduce 函数。Map 函数接受一组数据并将其转换为一个键 / 值对列表,输入域中的每个元素对应一个键 / 值对。Reduce 函数接受 Map 函数生成的列表,然后根据它们的键缩小键 / 值对列表。MapReduce 起到了将大事务分散到不同设备处理的能力,这样原本必须用单台较强服务器才能运行的任务,在分布式环境下也能完成了。

基于华为大数据平台的人脸识别

统一资料管理和调度

为了实现一个 Hadoop 集群的集群共享、可伸缩性和可靠性,并消除早期 MapReduce 框架中的 JobTracker 性能瓶颈,开源社区引入了统一的资源管理框架 YARN。YARN 分层结构的本质是 ResourceManager。这个实体控制整个集群并管理应用程序向基础计算资源的分配。

ResourceManager 将各个资源部分(计算、内存、带宽等)精心安排给基础 NodeManager(YARN 的每节点代理)。ResourceManager 还与 Application Master 一起分配资源,与 NodeManager 一起启动和监视它们的基础应用程序。在此上下文中,Application Master 承担了以前的 TaskTracker 的一些角色,ResourceManager 承担了 JobTracker 的角色。Application Master 管理一个在 YARN 内运行的应用程序的每个实例。Application Master 负责协调来自 ResourceManager 的资源,并通过 NodeManager 监视容器的执行和资源使用(CPU、内存等的资源分配)。请注意,尽管目前的资源更加传统(CPU 核心、内存),但未来会带来基于手头任务的新资源类型(比如图形处理单元或专用处理设备)。

从 YARN 角度讲,Application Master 是用户代码,因此存在潜在的安全问题。YARN 假设 Application Master 存在错误或者甚至是恶意的,因此将它们当作无特权的代码对待。NodeManager 管理一个 YARN 集群中的每个节点。

NodeManager 提供针对集群中每个节点的服务,从监督对一个容器的终生管理到监视资源和跟踪节点健康。MRv1 通过插槽管理 Map 和 Reduce 任务的执行,而 NodeManager 管理抽象容器,这些容器代表着可供一个特定应用程序使用的针对每个节点的资源。

基于华为大数据平台的人脸识别

分布式数据库

数据存储使用 HBase 来承接,HBase 是一个开源的、面向列(Column-Oriented)、适合存储海量非结构化数据或半结构化数据的、具备高可靠性、高性能、可灵活扩展伸缩的、支持实时数据读写的分布式存储系统。

存储在 HBase 中的表的典型特征:

  • 大表(BigTable):一个表可以有上亿行,上百万列
  • 面向列:面向列 (族) 的存储、检索与权限控制
  • 稀疏:表中为空 (null) 的列不占用存储空间

流处理服务

Apache Storm 是一个分布式、可靠、容错的实时流式数据处理的系统。在 Storm 中,先要设计一个用于实时计算的图状结构,我们称之为拓扑(topology)。这个拓扑将会被提交给集群,由集群中的主控节点(master node)分发代码,将任务分配给工作节点(worker node)执行。一个拓扑中包括 spout 和 bolt 两种角色,其中 spout 发送消息,负责将数据流以 tuple 元组的形式发送出去;而 bolt 则负责转换这些数据流,在 bolt 中可以完成计算、过滤等操作,bolt 自身也可以随机将数据发送给其他 bolt。由 spout 发射出的 tuple 是不可变数组,对应着固定的键值对。

业务处理逻辑被封装进 Storm 中的 topology 中。一个 topology 是由一组 Spout 组件(数据源)和 Bolt 组件(逻辑处理)通过 Stream Groupings 进行连接的有向无环图 (DAG)。Topology 里面的每一个 Component(Spout/Bolt)节点都是并行运行的。 在 topology 里面, 可以指定每个节点的并行度, storm 则会在集群里面分配相应的 Task 来同时计算,以增强系统的处理能力。

基于华为大数据平台的人脸识别

调用了华为哪些能力

使用 HBase 的 JAVA API 实现了对 HBase 数据库的表的创建、删除和数据的增删改功能。使用的 API 如下:

org.apache.hadoop.hbase.client.HBaseAdmin 类:

基于华为大数据平台的人脸识别

org.apache.hadoop.hbase.HTableDescriptor:

基于华为大数据平台的人脸识别

org.apache.hadoop.hbase.client.HTable:

基于华为大数据平台的人脸识别

org.apache.hadoop.hbase.client.Put

基于华为大数据平台的人脸识别

org.apache.hadoop.hbase.client.Get

基于华为大数据平台的人脸识别

使用了 HDFS 的 JAVA API 实现了对 HDFS 上的照片文件的读取

基于华为大数据平台的人脸识别

Kafka java api, 实现了 kafka 的生产者和消费者,storm 的 spout 中实现 kafka 消费者,从 kafka 订阅人脸照片,实现人脸照片的实时采集

消费者 API:

基于华为大数据平台的人脸识别

生产者 API:

基于华为大数据平台的人脸识别

使用 stormAPI 实现对拓扑的提交,查询和删除操作

基于华为大数据平台的人脸识别

本文转载自公众号华为开发者社区(ID:Huawei_Developer)。

原文链接:

https://mp.weixin.qq.com/s/KsrReVdF-nNPKA5E0HsyVQ

评论

发布