温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,汇文网负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。
网站客服:3074922707
基于
Hadoop
Rabb
算法
测试
平台
设计
实现
徐宏宁
测控技术 年第 卷第 期试验与测试 收稿日期:基金项目:湖南省教育厅科学研究项目();长沙市自然科学基金项目()引用格式:徐宏宁,刘伟,惠君俊,等基于 与 的人脸识别算法测试平台的设计与实现测控技术,():,():基于 与 的人脸识别算法测试平台的设计与实现徐宏宁,刘 伟,惠君俊,周金磊,罗雄中,丁长松,(湖南中医药大学 信息科学与工程学院,湖南 长沙;湖南省中医药大数据分析实验室,湖南 长沙)摘要:针对人脸识别算法研究过程中测试效率低下的问题,基于分布式技术,设计并实现了通用的分布式大数据测试平台。为了提高人脸识别算法的大数据测试的执行效率,提高测试结果统计计算的执行效率,基于 设计分布式并行执行架构,利用 集群的 框架进行分布式并行计算。利用 语言的 框架开发测试平台,将测试代码与测试图片托管于 集群的 文件系统,实现了测试业务与测试平台的分离,提高了平台的通用性。该测试平台不仅实现了单个测试任务的分布式执行而且满足多个测试任务同时执行,可对测试任务以及测试相关的代码与数据进行有效的管理。与传统测试方法相比,该平台测试效率提高 余倍,测试图片的数量越大测试效率提升越明显。该测试平台具有业务通用性、容量可扩展性,对于其他人工智能算法的大量数据测试具有借鉴意义与参考价值。关键词:人脸识别算法;测试平台;分布式;中图分类号:文献标志码:文章编号:():,(,;,):,:;随着深度学习的发展,人工智能的应用场景不断增加,人工智能产品越来越多,极大地方便了人们的生活。同时,人们对人工智能产品的要求也越来越高。人脸识别技术方面,面对日益复杂的社会治安形势,国家出台了一系列政策,要求在社会治安防控体系建设中引入人脸识别技术并提升图像中有价值的人脸数据应用水平、建立人脸分析系统、提升对图像的解析能力。近年来,传统的人脸识别技术逐步被深度学习方法所取代。从国内外研究现状来看,基于深度学习方法的深度信念网络(,)和卷积神经网络(,)模型的人脸识别技术已被广泛运用,并取得了良好的效果。区别于指纹、虹膜等其他生物识别,人脸识别技术具有直观、非接触性、方便采集、可扩展性的优点,成为大数据背景下生物特征识别中一个非常热门的研究领域,被广泛应用于门禁考勤、访问控制、欺诈检测、公安刑侦、智能支付等领域。在人脸识别相关产品的研发过程中,如何有效保障产品的质量,提高人脸识别的精准度显得尤为重要;一个高精准度的产品在发布前必须经过大量的数据测试;在产品快速迭代开发的背景下,如何快速完成海量数据的测试,对测试方法与测试手段提出了新的挑战。新技术的发展,使得软件测试受到一定的挑战,软件测试的五大趋势为:敏捷化、高度自动化、云化、服务化、智能化,杀虫剂效应使得传统的测试工具很难满足测试需要。大数据背景下,基于大数据的并行测试技术是自动测试领域的前沿课题。利用、等大数据处理框架对大数据进行处理取得了一定的成效。是一个能够对大量数据进行分布式处理的软件框架,以一种可靠、高效、可伸缩的方式进行数据处理。最核心的设计就是分布式文件系统(,)和。为海量的数据提供存储,而 则为海量的数据提供并行运算。是专为大规模数据处理而设计的快速通用的计算引擎,拥有 所具有的优点,但与 不同的是,中间输出结果可以保存在内存中,是对 的补充,可以在 文件系统 中并行运行。大数据背景下的测试技术与方案在逐步发展,基于、等大数据处理框架的大数据测试方案在市面上有一定的应用,应用场景局限于文本类数据处理且被测函数支持在 或 框架中分布式执行的情况。人脸识别算法不支持在 或 框架中分布式运行,而且测试数据为图片,使得传统的大数据处理框架不能实现对人脸识别算法的大数据测试,只适用于对测试结果的分布式并行统计。本文基于 与 技术,提出了一种人脸识别算法的大数据测试方案。通过 实现了对人脸识别算法大数据测试的分布式多线程执行;通过 的 框架实现对测试结果统计的分布式并行计算;利用 语言的 框架开发测试平台,实现了测试数据、测试代码、测试任务等平台化管理,方便测试人员操作使用。本文有效地解决了人脸识别算法的大数据测试的效率问题。测试需求分析在人脸识别算法研究过程中,通常需要经过大量图片的测试才能精确评估算法的识别精确度。人脸识别算法测试的步骤如下:准备大量测试图片并对其作预处理。对人脸识别算法进行大数据测试,将测试结果数据写入文件。对测试结果进行统计计算,拒识率、误识率等是评价人脸识别算法精确度的重要指标,为了计算算法精确度的常用评价指标,需要对测试结果进行统计并与预期数据作运算。其中步骤与步骤有依赖关系,在一定程度上制约了整个测试过程的效率。当图片数据量达到 万幅级别时,利用单台机器进行测试,一次测试耗时 以上,不仅效率低下,而且存在算法版本管理混乱、操作使用不方便等问题。为了提高测试效率,一方面,人脸识别算法的大数据测试过程与测试结果统计过程实现分布式处理。另一方面,研究过程相关的代码与数据需要有效地管理,包括测试代码管理、测试图片管理、测试任务管理等,这是平台化需求。系统架构设计经过对人脸识别算法的研究发现,该算法支持多线程执行,但不支持在 集群的 框中分布式并行执行,没法利用 集群的 框架对算法进行分布式大数据测试,但可以基于 消息队列设计相应的分布式架构对算法进基于 与 的人脸识别算法测试平台的设计与实现行分布式大数据测试。测试结果统计任务是文本数据的处理任务,适合利用 集群的 框架进行分布式并行计算。利用 语言的 框架开发相应的管理平台,该平台将、数据库等整合成一体。平台的系统架构如图 所示。图 系统架构图该平台包括管理模块与处理模块,两个模块通过、与 等第三方组件实现解耦,提高系统的灵活性与可扩展性。管理模块具有测试图片管理、测试代码管理、测试任务管理以及测试结果管理等功能。处理模块负责测试任务的执行以及测试结果统计任务的触发与执行监管。是一个分布式集群,其 文件系统可以托管测试图片与测试代码,其 框架可以实现分布式并行计算。是一个消息队列,实现管理模块与处理模块之间的消息通信。数据库存储相关数据。在管理模块触发测试任务,一个测试任务可以根据测试图片的子目录自动分解成多个测试子任务,每个测试子任务的相关信息分发到 的消息队列。处理模块监控 的消息队列,从中获取测试子任务并执行,可以在多台机器部署处理模块,从而实现测试任务的分布式执行。当所有测试子任务都执行完成时处理模块负责触发该测试任务对应的测试结果统计任务,监控其执行并将统计结果导入 数据库,便于统计结果在管理模块可视化展示。管理模块设计管理模块采用 语言 框架开发,使用 作为 服务器,使用 数据库存储基本数据。管理模块的功能模块层次图如图 所示。测试图片管理可以实现图片的上传与删除功能。批量图片以压缩包的形式上传。为了实现分布式测试,需要提前对测试图片进行分组管理,本平台支持两种分组模式,一种是自动分组模式,一种是非自动分组模式。如果测试图片以非自动分组模式上传,在 文件系统以原有的子目录结构进行分组管理;如果测试图片以自动分组模式上传,则根据设置的每图 管理模块的功能层次图组图片数量对图片进行自动分组,再上传 文件系统,两种分组模式都会在 数据库记录分组信息。部分人脸识别算法对图片的分组有一定要求,需要选择非自动分组模式,以人工方式对测试图片提前分组再打包上传。测试任务分解成测试子任务的主要依据是测试图片的分组信息,每一个分组对应一个测试子任务,有多少个分组就分解成多少个测试子任务。测试代码管理可以实现测试代码的上传与删除功能。人脸识别算法的测试代码包含对人脸识别算法调用的相关代码以及人脸识别算法 包,测试结果的统计代码是 程序。测试代码上传到 的 文件系统,并将人脸识别算法的版本号、地址、执行命令模式字符串等相关的信息保存在 数据库。测试任务管理可以实现测试任务的创建、删除、修改、查看等操作。创建测试任务时必须指定测试任务的测试代码与测试图片的相关信息,测试代码包括算法的测试代码与测试结果统计代码。另外,可以配置测试任务执行的线程数、触发机制等信息,触发机制包括定时触发与人工触发两种。每个任务可以执行多次,每次执行称为测试任务实例,每个测试任务实例有多个测试子任务实例,相关信息存储在 数据库。测试任务的触发逻辑如下:在测试任务管理模块中找到相应的测试任务,单击测试任务的触发按钮,测试任务触发后,从数据库中获取该测试任务的所有可分解的测试子任务信息,循环遍历测试子任务信息列表,将每一个测试子任务信息以消息的形式分发到 的任务队列。任务触发过程的流程如图 所示。测试结果管理包括测试结果查看与删除功能,可以查看和删除测试任务的所有执行实例的结果信息,结果信息包括测试图片数、拒识率、误识率等统计信息。处理模块设计处理模块监听 的消息队列,消息队列的消息就是测试子任务信息。处理模块从消息队列中获取测试子任务并执行,执行完测试子任务继续监听测控技术 年第 卷第 期图 任务触发过程的流程图 的消息队列,从中获取测试子任务并执行,如此循环往复。测试子任务执行的流程如图 所示。图 测试子任务执行的流程图处理模块从消息队列获取测试子任务信息后从 数据库获得该测试子任务的所有信息,包括测试代码与测试图片的 地址以及执行线程数等;然后从 文件系统下载测试代码与测试图片,拼装执行命令并执行,测试子任务执行完成后更新数据库中该测试子任务实例的状态等信息;最后,判断该子任务是否为所属测试任务的最后一个执行完成的测试子任务,如果不是,则该子任务执行结束,如果是,则从 数据库中获得该任务的测试结果统计任务,并触发任务执行。测试结果统计任务执行完成后,会自动从 的 文件系统下载统计结果并导入 数据库,这些统计结果将在管理模块可视化展示。亮点分析该平台比较完美地解决了测试效率与测试管理问题,实现测试业务与测试平台的分离,实现测试任务与测试结果统计任务的分布式并行执行,通过平台化的方式管理测试相关的文件与数据,方便测试管理与算法基本性能指标的查看。该平台具有高可扩展性、可维护性、高可靠性,是一个通用的分布式大数据测试平台。测试业务与测试平台分离测试业务包括对人脸识别算法的测试以及对测试结果的统计,不同算法的输入、输出以及统计指标不同,与业务需求有关,属于业务范畴。这部分代码单独开发,实现以命令行触发的形式在本地执行或在 集群执行。测试代码以 包的形式托管于 集群的 文件系统,在该平台只需要记录测试任务相关代码与测试图片的 地址以及执行命令的模式字符串等信息,执行时再从 文件系统下载测试代码与测试图片,拼装执行命令并执行。如果测试业务变更,测试任务的执行过程没有变化,平台的代码不需要做任何修改,只需要开发测试代码,在平台重新上传测试代码并重新关联测试任务。将测试业务代码与测试平台代码分离,保证测试平台的通用性与灵活性。实现多环节分布式并行处理 算法测试环节。一个测试任务自动分解成多个测试子任务,每个测试子任务封装为消息分发到 消息队列,处理模块部署在多台机器,分别从 消息队列获取测试子任务消息并执行,实现一个测试任务在多台机器分布式执行。单个测试子任务的执行支持多线程,所以测试任务的执行实现了分布式多线程执行。另外,处理模块主动从 队列中获取测试子任务,保证了处理模块所在机器的负载由自己做主,同时非常方便扩展部署处理模块。测试结果统计环节。测试结果统计任务为 集群的 程序,分布式并行执行。业务数据托管在 测试代码与测试图片托管于 集群的 文件系统,对文件进行分布式管理,保证了数据的安全性,分布在不同机器的处理模块执行测试任务时,从 集群下载测试代码与测试图片,解除管理模块与处理模块的数据依赖,实现平台的松耦合。支持多测试任务同时执行该平台支持多个测试任务同时执行,每个测试任务有各自的测试图片与测试代码,测试任务分解时根据各自测试图片进行分解。每个测试子任务执行时都会从 文件系统下载各自的代码与图片独立执行,多个任务同时执行,互不干扰。效果分析本平台部署三台服务器,每台服务器的基本信息为 操作系统、核、内存、基于 与 的人脸识别算法测试平台的设计与实现硬盘,每台