高见
(扬州市职业大学,江苏 扬州 225000)
当前我国数字化的脚步进一步加快,加快经济增长的同时也对信息领域的技术更新进行了考验。以人脸识别系统为例,公众对于人脸识别领域的需求随着时间的推移越来越变得多样化和复杂化,对于人脸识别系统的技术创新要求也越来越高。本文基于TensorFlow框架对人脸识别技术进行相应的研究,并有针对性地设置相关的MTCNN模型,同时对其进行相应的验证。
Python是一种跨平台,使用于分布式计算环境的面向对象语言,Python是目前使用最广泛的语言之一,Python具有通用性、稳定性、跨平台性等多个优点,并且安全可靠。选择Python作为基础语言完成系统主要有以下几个原因:首先是相对于C、C++和Java等语言,Python语言丢弃了此类语言中的一些人们较为难理解,难使用的功能,例如:头文件、运算符重载等。还大大降低了出现错误的可能性,更实用,更方便;其次是Python语言的面向对象性,Python的面向对象特性,使Python比较容易与实际生活相结合,更符合人们的思维方式;最后是Python的跨平台性,即可移植性,Python语言可以不做修改甚至是做少量的修改就可以在其它平台上运行,比如Python在win下运行的文件拷贝到linux下也是可以运行的。正是由于Python的这些优点,使Python在开发平台上被越来越多的运用,使得Python也被更经常的用于企业网站等的建立。所以本研究选择Python语言作为设计的基础语言[1]。
Python语言是构建本次系统的基础,但是整个系统都是基于TensorFlow架构而进行的项目,所以有必要对TensorFlow项目进行相应的简述。TensorFlow架构有别于传统的处理端(CLIENT)/服务器(SERVER)架构模式的改进和优化而形成的浏览器(Browser)/服务器(SERVER)架构模式,不单是处理端系统和服务器系统分别设置在两台计算机上,由处理端系统将用户的需求进行上报,提供到相应的服务器系统中,再由服务器系统将结果反馈到处理端系统。TensorFlow程序在实施运行的基础上,兼顾一定的准确性和稳定性。TensorFlow还具备完全开源性,可在智能手机或数据服务中心集群上运行,重要的是基于数据流图(data flow graphs),并可以广泛的应用于语音或图像分类的机器学习和深度学习领域。TensorFlow系统主要有三种应用特点:首先是其基本运作为模块化运作,处理端机和服务器运行的场所不同、职责不同,但跟传统的模块化程序相比,TensorFlow系统能够在处理端程序和服务器程序中分别安装数据库和管理系统;其次是TensorFlow系统需要进行相应的前台程序和后台程序开发,并配备数据库来满足不同的需求;最后是TensorFlow系统通常采用两层结构进行服务器的架构,通过两层结构最大化地发挥TensorFlow系统拥有两部分硬件的优势[2]。
根据实际需求,识别系统在Windows XP/7操作系统环境下,以eclipse为开发平台,Python为基础开发语言,主要用swing库完成设计,并用MySQL建立网络数据库,本系统采用JDBC连接数据库,并通过TensorFlow进行操作,对人脸信息的识别,修改和对人脸信息获取对象的处理端信息资料的添加和处理信息获取人脸记录的添加、修改等功能。基本实现了一个识别系统基本要有的功能[3]。
TensorFlow框架下的人脸识别系统十分复杂,其关键技术分为信息获取、数据管理与识别管理、特征向量管理三个方面:首先是信息获取,在进行像素识别时需要对识别端和处理端的及带像素进行抽样,进而得出相应的采样指定时,在此期间如果识别端和处理端的像素处于频率非理想状态,就会导致系统的IQ正交性受到严重影响,进而使得信息获取严重受阻,所以需要信息获取技术来对信道进行相应的估计和均衡,针对识别端和处理端进行数据的固定,保证多途径下的区域像素连续性;其次是数据管理和识别管理,数据管理和识别管理主要是通过相关值的共轭乘积搜索相关的峰值来约定发射帧的起始位置,进而获得相应参数完成数据管理和识别管理;最后是特征向量管理,特征向量管理主要是基于特征字的帧结构,来确定连续像素载波残差的间隔相位差,进而算出整体的频率偏差后完成载波捕获和追踪[4]。可以说信息获取、数据管理与识别管理、特征向量管理三个技术帮助了人脸图像识别像素实现了稳定识别。一个项目的开发需要对系统的现状进行分析,对它的目标,需求的功能进行分析,从而制定出一个比好符合需求的方案,并尽量做出一个优化系统,随着相关技术的发展,越来越先进的信息获取技术可以更好的记录人脸各个方面的情况,也便于识别和管理。一个好的人脸识别系统需要满足一个用户日常情况的记录,对进入系统扫描区域的人脸进行相应的识别,如果确认符合数据库内的相关要求,就进一步识别信息详细记录人脸的各项参数[5]。
信息获取模块的主要功能对面部的信息进行录入、修改、识别、删除,具体分为处理端未确认、处理端已确认和处理端已驳回三种不同的场景。当信息获取模块将面部录入系统后,自动转入处理端未确认状态。而处理端可以执行两种操作:驳回、确认。当处理端驳回面部时,需要说明驳回原因,信息获取模块根据处理端驳回原因可以选择进行修改或者作废该面部。除此之外,在信息获取系统录入面部的同时,需要录入处理端的基本信息,后台将己经提交的面部信息中关于处理端的基本信息存入数据库中的处理端表单中,具体数据依照所应用领域的类型不同进行相应的调整[6]。
数据管理模块是需要依据面部来制定处理任务环节和所需要的表格。处理模块在接受到面部后依照人脸的各种参数录入,在完成处理前、处理中和处理后工序时对面部的不同阶段信息进行确认。在此界面用户可以按不同条件汇总处理任务信息,或者选择当前记录,查看该后台下所有工序的任务信息[7]。
人脸识别的步骤使用Inception模型,该模型在VGGface2数据集里进行了训练,在这里是形成了pb文件,直接进行使用。人脸识别是检测到人脸后的关键步骤,嵌入特征向量(embedding)是通过Inception网络识别获得的。获得到人脸特征向量的代码:
从pb文件中找到模型的入口输入、出口输出并加载,其工作代码如下:
以上步骤进行完,这时获得了两种人脸的特征向量,分别是自己创建的图片库里的人脸特征向量和离线视频里截取到的人脸特征向量,比较这两者,当特征向量之间比对的余弦距离较大时,就可以识别出人脸[8]。
总而言之,在当前技术创新的大背景下,相关人脸识别系统的开发团队需要找到自身的定位,一方面抓住新技术的机遇,另一方面针对系统的特点形成有效的优化模式,保证人脸识别技术的稳步发展。同时人脸识别行业的风向仍在不断变化,相关系统的研发人员还需要加强学习,积极投入新的技术,在不断变化的风向中保持自身的优势,从而不被白热化的技术竞争所淘汰。