现在随着技术的更新,身份识别系统在技术上有了更多新的拓展,识别手段从单一的具有局限性的特征识别发展到具有多种识别方式的立体模型识别,在其中开源生物识别系统是一个可以具有比较快速开发环境的系统,对于身份识别系统的正脸检测、规范化、特征描述、特征提取、特征对比匹配等一系列步骤对图片数据进行处理都有着很好的协助作用,在各种场景中都有着广泛的应用,在考勤、考试等领域内使用效果良好。
1介绍
1.1图像处理相关语言
身份识别系统项目一个比较重要的研究课题是图像处理方面的相关语言研究,如果能用有着新的图像识别语言来表达一定的算法,成为了很多人员都需要进行的研究,语言中的每一个词对应着一个执行特定图像转换的插件,允许对算法中的独立步骤高度解耦。这些词结合在一个明确定义的模板登记和对比算法中。语言已经足够灵活到可以不需要额外的开发可以表达大多数已有的开源面部识别算法。在工程中嵌入这种语言使得开发在保证效率和对本地软件可部署性的同时享受到无编译算法设计和参数探索的优势。在身份识别系统实践中这种语言也提供了一种简明且明确的方式让其他研究者去熟悉这个项目。
1.2命令行接口
使用OpenBR功能主要的方式是使用br命令应用程序,形同于openbr的API接口。输入一个br命令也被认为是在写入一个简短的程序,可以随意设置指定参数并且按照指定顺序执行。
下式中算法描述用引号括住,以免造成解释错误。
表达式1在BioID数据集上训练特征脸算法
表达式2使用表达式1训练获得的算法计算MEDS数据集的相似矩阵
具体的实例充分证明了br的性能,通过训练、执行和对经典的Eigenfaces算法进行评估演示了一个典型的OpenBR工程。表达式1中展示了如何训练人脸识别算法。这种算法其实是一种注册模板并且对两种模板进行比较的方法。训练需要指定被训练的数据和训练完成时训练模型的保存地址。注意,训练模型文件没有扩展。
2相关研究
CUS的基线算法包括两个算法:局部PCA(LRPCA)和具有颜色空间和队列化标准的LDA。框架由Python编写并且为Windows和Mac均提供了安装说明。但是它不仅对编程语言的要求比较高而且对API的定义也不够完善,这使得身份识别系统很难将工作整合到新的应用中去。OpenCV库中包含Eigenface—基于PCA理论的特征脸识别算法;Fisherface—基于LDA理论的特征脸识别算法。
LDA与Eigenface中用到的PCA有相似之处,都是将原有数据进行整体降维映射到低维空间的方法。其中的文献和实例都演示了怎样与面部识别API进行交互。但是却缺乏现代的面部识别算法并且对于有细密纹理的眼部定位不准确。它不能像OpenBR那样用简明的语言来表达算法。表1对现有的开源面部识别算法进行了对比。
表1现有的开源面部识别算法比较
3基本原理
OpenBR适用于Windows,Mac和Linux系统,Android和ios端口以及其他常见的平台。此处应用于Windows系统。此外,OpenBR的编译需要OpenCV计算机视觉库,Qt应用程序框架,CMake跨平台构建系统。OpenBR主要的两个软件构件分别是“openbr”共享库和命令行应用程序“br”。解决方案堆栈如图1所示。
图1OpenBR的解决方案堆栈
3.1用字符串定义算法
身份识别系统OpenBR的其中一个优势是简单易用性,它用一个一致且简单的方式来表达生物特征的识别算法,即用字符串来定义注册图片的技术和比较图像的方法。通过字符串定义算法有很多优势,比如同时解放了大量非常相似的头文件的创建与维护。运行时也无需再编译可以实现算法调参。重要的一点是由于强行解耦了算法开发中的每一步,这保证了较好的软件开发体验,可以直接从描述中理解所实现的算法,还具备了算法修改以及重用独立步骤的优点。
3.2模板注册
身份识别系统OpenBR存储图像的方式是将图像存储为一个优化标识,而不是存储整个原图片用于对比。模板是一个相对通用的生物概念,将原始图片生成这个优化模板的过程,称之为模板注册。这样操作的目的是为了生成一个小型、准确且可以快速匹配的模板。
3.3处理数据的对象
OpenBR的数据处理对象分为文件和模板,文件(系统)通常用于存储磁盘文件路径与元数据。模板是图片和文件的容器,可以包含一个或多个图片。一个模板代表着生物在不同阶段的注册,同时可以通过变换做出改进,通过距离(distance)实现与其他模板的对比。