标题 | 亿级人像比对系统架构设计及优化 |
范文 | 摘 要:为满足公安机关大规模人像数据库的比对应用需求,提高人像比对系统应用规模和可用性,采用结构化开发方法,从应用层、数据库层、主机层、存储层等方面对人像比对系统进行模块化架构设计和优化。系统能够支撑15亿以上人像比对库容量,实现了全国范围的人像自动比对和纠错,提高了身份辨认速度。系统平均建模速度、平均比对速度和查重速度分别提升38%、41%和55%。优化后的人像比对系统在保证识别率高的同时能够快速处理海量数据,满足公安机关应用需求,有效解决了户口登记管理中的“错、重、假”问题。 关键词:人像比对系统;架构设计;系统优化;高可用系统 DOI:10. 11907/rjdk. 182884 开放科学(资源服务)标识码(OSID): 中图分类号:TP319文献标识码:A 文章编号:1672-7800(2019)007-0128-05 Design and Optimization of Billion Level Face Recognition System Architecture YU Ming-hua (ISvision Technologies Co.,Ltd., Shanghai 201203, China) Abstract: In order to meet the needs of the public security organs for large-scale portrait database application, and to improve the application scale and scene and high availability of the face recognition system, we use the structured development methodology, modular architecture designs and optimize the face recognition system from application layer, database layer, host layer, and storage layer, etc. The system can support more than 1.5 billion portrait matching library capacity, which realizes nationwide automatic comparison and correction of portraits, speeds up the identification process of relevant personnel in relevant departments. The mold speed, average comparison speed, and check speed were increased by 38%, 41%, and 55%, respectively. After optimization, the face recognition system can quickly process massive data while ensuring high recognition rate, meet the application requirements of public security agency, and effectively solve the problem of wrong, repeated and fake information in the registration management of household registration. Key Words: face recognition system; architecture design; system optimization; system with high availability 作者简介:余铭华(1985-),男,上海银晨智能识别科技有限公司工程师,研究方向为应用软件、信息系统项目管理。 0 引言 人像比对系统基于人脸识别技术,以公安机关信息化建设过程中积累的各类人像数据为基础,实现人员身份信息的确认、核实与认证,在户籍管理、出入境管理、重点人口管理等方面应用广泛。随着人像比对系统应用场景范围和规模的扩大,人像比對系统累积的照片库容量成直线上升趋势,从最开始的10万级增加到100万级、1 000万级,甚至亿级照片库容量成为常态。在这种情况下,人像比对系统面临比对结果返回时间长、系统查询响应速度慢、接口服务性能下降、数据更新慢等问题。 系统架构设计和性能优化范畴涉及广泛,涵盖计算机硬件、传输网络、操作系统、数据库、应用软件等诸多方面。针对提高软件系统高可用性问题研究较多,并取得了相应成果。林晓东等[1]对高可用系统结构进行了研究与实现;Torkamani等[2]介绍使用体系结构模式和策略实现高可用性的方法;文献[3]全面探讨了Web系统性能的具体优化方法与策略;文献[4]介绍了多种关于Nginx配置文件的技巧。 软件架构一方面可在高层次上对编程进行规定,另一方面也可把编程上的经验应用到架构优化上[5]。本文基于前期人像比对系统设计和实际运行经验,在对高可用系统结构进行分析后,针对实际项目中人像比对系统面临的问题,采用结构化软件开发方法,从应用层、数据库层、主机层、存储层等多方面对人像比对系统进行架构设计,实现具备高可用性的人像比对系统,从Web、数据库、应用程序等方面探讨了系统优化方法。实践表明,系统能够支撑15亿以上的人像比对库容量,具备高可用性。 1 系统概述 人像比对系统是从给定的人像数据库中检索比对特定人员的身份信息,并将比对结果按相似度由高到低进行排列显示进行身份鉴定与核查。人像比对系统利用公安机关各类业务系统采集的海量人像数据,由人像比对客户端、管理中心服务器,比对服务器、数据库服务器等组成,在海量图像中实现人像检索比对功能,完成人像信息批量/增量建模,1∶1、1∶X确认比对、1∶N识别比对、M∶N查重比对,比对结果查询与分析,以及对数据抽取、人像建模、模板加载等进行处理及统计分析。系统除完成各项人像比对基本功能外,还提供灵活便利的外部查询和开发接口,满足公安机关全警业务应用需求。 2 总体架构 基于.NET技术的Web应用[6],采用.NET Framework技术架构開发人像比对系统,根据应用软件分层架构模式进行设计,系统总体架构如图1所示。 人像比对系统分为表示层、业务层、服务层、数据层,各层实现功能如下: (1)表示层:为满足公安机关业务需求进行功能设计,为用户提供交互操作的界面,实现人像比对Web、人像比对客户端、人像照片处理、照片导入、查重结果审核、案件实战操作、外部API接口等应用功能[7]。 (2)业务层:基于公安机关业务需求进行功能设计,通过设计人脸比对算法及分析模型工具,实现人脸照片自动分析和人脸识别比对,包括建立人脸识别应用的人像数据中心,提供人像比对的基础数据模板,保存比对信息与报警信息,实现系统负载均衡及分布式应用。 (3)服务层:实现应用软件基础服务,功能包括人像照片处理子系统、人像建模子系统、比对服务子系统、身份查重子系统、查重结果审核子系统、照片导入子系统、任务管理调度服务、系统管理子系统、权限控制子系统、数据同步服务、案件实战操作模块、外部API接口子系统等应用功能。 (4)数据层:负责数据库的访问和服务,实现分布式文件系统集群及Cache,同时充分利用公安机关现有的基础设施和设备,包括服务器、存储、网络、安全网关设施等设备。 3 系统设计 3.1 缓存设计 缓存是指把最常用的东西放在最容易取得的地方,分为静态缓存和动态缓存,是所有性能优化最简单有效的解决方案。在系统设计过程中选用高性能的缓存组件Redis存储系统,并从浏览器、反向代理缓存、数据库缓存、本地缓存4个方面进行设计。 3.1.1 浏览器缓存设计 3.1.2 反向代理缓存设计 选用开源代码Nginx实现反向代理缓存。反向代理位于Web服务器之前,接受来自用户的Web连接请求,根据请求页面是否存在缓存内容对用户请求进行处理、转发,有缓存内容直接将缓存内容返回给请求用户,没有缓存内容则先向Web服务器请求相应数据,将请求数据进行本地缓存后再返回给请求用户,使得后续更快访问相应数据。 3.1.3 数据库缓存设计 对信息表、照片表、任务表等进行拆分,将表中相对固定的字段和频繁更新字段分别存储,使用Redis缓存组件对高频率查询低频率更新的数据载入缓存,对高频率更新的数据采用实时查询方式,同时将静态数据表(如字典数据等)缓存到Oracle内存中。 3.1.4 本地缓存设计 在提取人像特征值过程中,将提取的人脸特征先进行本地缓存,然后再批量存储到数据库中。 将人像建模子系统数据库中的人像特征模板数据加载到本地内存,并在本地磁盘生成模板文件保存。在比对服务下次启动时可直接从本地快速加载到物理内存,无需访问数据库,避免再次从数据库中读取,提高系统运行加载速度。 3.2 负载均衡nginx设计 为避免单台Web服务器因负载高而导致宕机,提高系统稳定性,采用Nginx负载均衡进行设计。同时为保证负载均衡的高可用性,引入热备方案机制,实现Nginx+Keepalived双机热备方案,实现Nginx高可用性,保证一个节点出现崩溃后另一个节点可以自动接管其工作。同时设置Nginx的gzip参数,开启gzip压缩功能,提高Web服务的请求和处理返回响应速度。 3.3 数据库设计 数据库设计以效率第一为原则,遵循三大范式原则创建数据库,根据业务处理逻辑修改数据库以达到效率最高目的。将系统中需要查询详细数据的信息表结构进行冗余设计,减少关联查询,提高查询性能。对经常查询使用的表进行索引设计,利用Oracle表分区特性功能对大数据表进行分区设置,提高数据查询和操作性能。 在比对任务处理过程中涉及到任务处理状态,数据库设计过程中将该类信息设计成弹性集值表,系统处理过程只引用表的ID值,在需要名称描述时再进行关联。 3.4 存储设计 分别从数据库存储和图片存储进行设计。 3.4.1 数据库存储设计 采用SAN将服务器平台和存储设备分开,通过光纤交换机将所有存储设备链接起来形成光纤通信网络,便于扩展存储环境,实现7*24小时不间断集中管理。 作为永久的数据存储管理数据库,设计系统采用Hadoop和Oralce两种类型数据库。 3.4.2 分布式图片存储设计 人像比对系统需要对人脸图像进行处理和展示,设置一个单独的图片服务器存储图片,利用FastDFS实现图片文件分布式存储,从Web服务器上分离图片数据,根据组织结构将照片数据划分成多块进行存储管理,并存放在不同的物理位置。 3.5 核心服务设计 3.5.1 高性能数据建模设计 系统设计采用分库、分段、多线程、批量并行的照片数据建模方式,实现快速高效建模,利用64位平台技术实现自动、手工、比对时录入、单笔数据录入、批量录入等多种不同的建模方式。 3.5.2 比对模板优化设计 在保证比对识别精度的前提下,优化人像特征提取模型,将单张人像提取的特征值模板大小从5KB压缩到2KB,并将人像特征值模板与人员信息(如性别、年龄、库别分类等)进行组合,形成人脸属性比对模板,快速完成人像比对。实施后系统建模速度从50条/s提升到69条/s,在原有基础上提升了38%。 3.5.3 分布式比对服务设计 设计比对服务可依据实际库容量需求灵活配置,并且通过增加比对服务协调控制器,實现比对任务的分发与比对结果整合,比对服务与比对服务协调控制器之间通过消息通信实现交互。各个比对服务之间对分发的任务进行并行独立处理,并将处理后返回的结果汇总至比对服务协调控制器,比对服务协调控制器将比对结果整合后再进行数据库存储。比对服务采用多层体系分布式比对架构和64位平台技术,使用大内存充分利用硬件资源,具有良好的扩展性、可用性和稳定性等优点。 3.5.4 比对任务模式设计 系统设计不同的比对任务模式,将用户提交的比对任务分成同步比对识别和报警、异步比对识别和报警等,同时根据用户权限对用户提交的比对任务进行优先级定义,用户权限高则其提交的比对任务优先级高。用户在提交人像比对任务时可增加比对筛选条件,提高比对速度和比对识别率。提交任务时可勾选库别、区域、性别、年龄范围等多种筛选条件,同时还可设置比对相似度阈值快速返回比对结果。 3.6 接口API设计 接口采用Restful风格设计,利用单一性原则实现登陆、一对一比对、一对多比对等接口,在接口设计过程中对每个请求响应定义一个请求ID字段,使用UUID作为该请求ID值,并在服务器记录该值,用以跟踪、诊断、调试。 4 系统优化 在对人像比对系统进行架构设计和优化过程中,分别从系统性能、可用性、伸缩性、扩展性、安全性等方面对系统进行优化,以提高系统整体性能,采用的优化策略如下: (1)通过设计缓存和并发实现方式对Web前端进行性能设计和优化。 (2)应用程序采用本地缓存和分布式缓存结合的方式进行设计和优化,并将多台应用服务器组成集群服务对外提供。设计比对服务有效使用大内存,经过实际数据测试,比对速度从1 200万次/s达到1 700万次/s,提升了41%,查重速度从2 000万/s达到了3 100万次/s,提升了55%。 (3)数据库设计时在服务层增加队列和缓存,将请求在上游层进行拦截,数据库层只实现基础数据访问请求,同时结合索引、缓存、SQL性能优化等手段,在创建非聚簇索引过程中,使用INCLUDE子句包含表中的特定列,加快SQL语句的执行速度。 (4)采用冗余手段,将应用部署在多台服务器上,通过负载均衡方式将多台服务器组成集群,提供对外服务,相互备份,减少单点交互,消除单点故障,实现水平扩展,增强系统可用性。 (5)将业务逻辑进行同构设计和合理抽象,实现水平/垂直切割,实现异步处理,提升系统的伸缩性和扩展能力。采用隐藏Nginx版本信息、修改Nginx worker进程的用户个数、Nginx站点目录文件及目录权限等方式对系统进行安全性优化。 4.1 人像比对Web优化方法 用户向系统提交比对任务,比对成功后返回的结果都会包含比对相似度、姓名、年龄、证件号码等基本信息和目标照片数据,以提供给用户审查处理。由于返回的每张目标照片容量均是数百倍于基本信息,基于降低数据传输量加快服务响应时间思路,将比对结果中的基本信息和照片数据分开返回,由用户选择读取照片数据,以此降低系统响应时间。 由于每个页面都牵扯到大量的数据库访问,前台Web一次性缓存无法达到性能要求。为提高页面响应速度,运用分页技术[8]解决客户端等待时间过长问题。采用后台分页查询方式获取结果数据,在数据库中对查询数据进行分页,并在存储过程中运用Row_number()[9]函数提升分页效率。在分页查询过程中设定3个参数,分别是数据总体条数N_Count、每页条数N_CountPerPage、第N页条数N_Page。根据页面不同的展示,将分页查询按照一次查询分批展示和指定页实时查询展示两种方式实现。 4.2 数据库优化方法 数据库处理性能提升除了提高硬件配置外,还可从软件方面对Oracle的查询性能进行优化,使数据库运行处于最优状态。在系统优化过程中采取建立索引、表分区设计、SQL语句优化等技术手段进行系统性能提升。 在创建系统数据表结构时,通过设计调整PCTFREE、PCTUSED、INITRANS、MAXTRANS等参数,优化表的插入、删除、更新等操作。对系统中的表结构按使用用途不同分别采取独立的优化方法。 下面列举几个关键表结构优化方式:信息表按信息记录所属区域类别进行列表分区;模板表将库别和年龄范围设计成LIST-RANGE组合分区予以优化设计;比对任务表则使用提交任务的时间按年和月实现RANGE-RANGE组合分区进行优化。 索引是对数据库表中一列或多列的值进行排序的一种结构。使用索引可快速访问数据库表中的特定信息,显著提高海量数据的查询效率。在创建索引过程中,依据表的操作类型(如是查询还是增删改)选择恰当的索引类型(如非唯一索引、唯一索引、位图索引、分区索引等),并在经常需要存取的多个列上建立复合索引,同时检查被索引的列或组合索引的首列是否出现在PL/SQL语句的WHERE子句中。在系统运行一段时间后适当对性能下降的索引进行重建以提高索引效率。 SQL语句尤其是复杂SQL语句的性能优化对数据库的性能至关重要 [10]。在提升SQL语句执行效率方面,采用整体到局部的思路改进低效的SQL语句。先从整体着手,收集系统的整体性能信息并确定范围;再从数据库层面入手,利用性能工具,查看SQL的执行计划。根据SQL的执行计划,分析低效的SQL执行计划,去掉不必要的全表扫描,充分利用已经创建的索引,选择最有效的执行计划来执行SQL语句。如在编写SQL语句SELECT子句中明确所需要的列,尽量避免使用SELECT *,在子查询中少用或慎用IN或NOT IN语句。 4.3 应用程序优化方法 通常情况下由于单台服务器内存无法装载所有的比对模板,所以将若干台服务器组成一个比对服务集群,共同完成全部模板的装载和比对,并选用一台服务器作为比对服务协调控制器,完成比对任务的预处理和比对结果的汇总、模板更新任务的查询与分发、状态监测等。假设比对照片库容量有10亿,则总比对模板量约为2TB,可以设计由10台比对服务器组成一个比对实例,那么10台比对服务器除去操作系统所需的开销外,总的剩余内存空间在超过2T的情况下即可完成10亿模板的全部加载。 比对服务应用程序将人像照片建模后的特征值及其索引按照库别、性别、年龄、区域、民族等特征排序聚簇后全部加载到服务器内存中,以便根据相应的比对检索条件进行同步或异步任务的比对。一般情况下,提交的比对任务不需要完成全部模板比对,而是含有比对条件,比如比对性别为男、年龄在30-45岁范围内的模板数据。该条件可以过滤的数据量估算为性别约1/2,年龄约1/5(系统将年龄大致分为5个年龄段),则实际需要比对的模板数量约为总模板的1/10,比对用时是全部比对用时的1/10。 为充分利用并行计算机资源,比对服务将串行比对运算处理变为并行比对运算处理。在比对任务处理过程中,使用OpenMP(Open Multi-Processing)实现CPU多核心的并发比对。OpenMP是一个编译指导指令和库函数集合,主要使用在共享式存储计算机并行程序设计方面 [11]。在程序代码中加入专用的pragma,指定程序运行时使用并发线程及并发调度方式。根据硬件资源不同,程序先采用omp_get_num_procs()[12]函数获取运行程序计算机的处理器个数。为达到较好性能,通常情况下将线程数量设置为CPU核数,每个核执行一个线程,避免线程的切换开销。同时为了CPU各核的负载均衡和有效降低线程管理开销,组合使用Intel开源并发模板库TBB(Threading Building Blocks)完成比对处理,实现任务密度和线程池。 5 结语 本文基于公安机关侦查破案业务需求,以人像算法引擎为核心,采用分层体系结构的架构设计方式对人像比对系统进行架构设计和优化,实现了亿级人像比对系统,在协助公安侦查办案人员划定侦查方向、缩小侦查范围、鎖定嫌疑对象乃至认定罪犯等方面取得了明显效果,提升了公安机关侦查人员核对、辨认嫌疑人身份的效率。 在对亿级人像比对系统架构设计过程中,研究了Web、数据库和应用程序等的优化方法,通过对系统架构设计和优化过程中各种优化工具、优化策略、优化方法的研究,为建设高可用性的人像比对系统打下基础,阐述了软件系统的优化方法。 参考文献: [1] 林晓东,刘心松. 高可用性系统的研究与实现[J]. 电子科技大学学报,1997(5):82-87. [2] TORKAMANI M A,BAGHERI H,SHALTOOKI A A,et al. Architectural solution for reaching high availability[J]. Global Journal on Technology, 2013(1):105-109. [3] 罗福强,熊永福. 基于分层的Web系统的性能优化研究与探讨[J]. 计算机技术与发展, 2012(11):85-88. [4] DIMITRIAIVALIOTIS, 艾维利,陶利军. 精通Nginx[M]. 北京:人民邮电出版社,2015. [5] JOACHIM GOLL. 软件架构与模式[M]. 北京:清华大学出版社, 2017. [6] 胡迎松,彭利文,池楚兵. 基于.NET的Web应用三层结构设计技术[J]. 计算机工程,2003,29(8):173-175. [7] 曾晖泽. 公安人像比对系统的设计与实现[D]. 厦门:厦门大学, 2014. [8] 林萍,朱婵. 基于Ajax技术和JAVAEE的分页查询优化[J]. 计算机系统应用,2017(8):916-1001. [9] THOMAS KYTE. Oracle Database 9i/10g/11g编程艺术:深入数据库体系结构 [M]. 第2版. 北京:人民邮电出版社,2011. [10] 周志德. Oralce数据库的SQL查询优化研究[J]. 计算机与数字工程,2010,38(11):173-178. [11] 査盛音,王玉玫,聂颖. OpenMP在图形数据文件加载中的应用[J]. 软件导刊,2013,12(10):159-162. [12] OpenMP application program interface version 4.0.0[EB/OL]. http://www.openmp.org. [13] 李艳鹏, 杨彪. 分布式服务架构:原理、设计与实战[M]. 北京:电子工业出版社,2017. [14] ILYA GRIGORIK. Web性能权威指南[M]. 北京:人民邮电出版社,2014. [15] 张杰,刘琦.多级联动的人像比对应用平台研究与设计[J]. 电脑知识与技术, 2016, 12(31):177-178. [16] 刘永梅. 基于人脸识别身份认证系统数据库的设计与研究[D]. 呼和浩特:内蒙古大学, 2014. [17] 刘合星,刘琦. 人像识别系统的设计与研究[J]. 河南科技, 2016(21):62-65. [18] 关乐,刘磊,朱鹏,等. 动态人像比对研究及应用[J]. 甘肃科技, 2017(12):87-89. [19] 杨洋,杨义光,范东亮. 人像比对系统建设中几个关键问题研究[J]. 信息技术与信息化,2017(5):86-87. [20] 黄静,李炳. 基于Nginx的Web服务器性能优化研究[J].? 浙江理工大学学报,2016,35(7):600-606. [21] 蒲晓阳. 基于Nginx和Redis高并发Web服务负载均衡的研究[J]. 内江科技,2016,37(1):40-41. [22] 赵峡策. 基于Nginx和Memcache的负载均衡集群架构设计[J].? 电子技术与软件工程,2014(5):39-40. [23] 蔡文海,陈洺均. 基于OpenMP并行编程模型与性能优化的稀疏矩阵操作研究[J]. 软件导刊, 2016, 15(3):27-29. [24] 張辉,赵郁亮,徐江,等. 基于Oracle数据库海量数据的查询优化研究[J]. 计算机技术与发展, 2012, 22(2):165-167. [25] 陈南. ASP.NET中大数据量分页技术的研究与实现[J]. 计算机应用与软件, 2011, 28(4):205-207. [26] OPENMP C. OpenMP C and C++ application program interface draft[EB/OL]. http://www.openmp.org. [27] BHATTACHARJEE A,CONTRERAS G,MARTONOSI M. Parallelization libraries:characterizing and reducing overheads[J]. ACM Transactions on Architecture & Code Optimization,2011,8(1):1-29. [28] SUPINSKI B R D,SCOGLAND T R W,DURAN A,et al. The ongoing evolution of openMP[J]. Proceedings of the IEEE,2018(6):1-16. (责任编辑:杜能钢) |
随便看 |
|
科学优质学术资源、百科知识分享平台,免费提供知识科普、生活经验分享、中外学术论文、各类范文、学术文献、教学资料、学术期刊、会议、报纸、杂志、工具书等各类资源检索、在线阅读和软件app下载服务。