基于PCA算法的人脸识别的图片搜索引擎

2015-07-13 23:07李亚男
中国高新技术企业 2015年21期
关键词:搜索引擎人脸识别特征提取

摘要:文章讨论了为了满足用户对图片检索的需求量不断加大的需要,使得用户的体验方便快捷,从人脸识别的算法分析出发,基于ORL人脸库针对人脸的特征化信息进行提取,同时分析、区别和匹配不同人脸,在此基础上,搭建人脸识别搜索引擎,使得用户可以从本地上传照片并查找相似图片。

关键词:人脸识别;PCA算法;特征提取;搜索引擎;图片搜索 文献标识码:A

中图分类号:TP391 文章编号:1009-2374(2015)22-0021-02 DOI:10.13535/j.cnki.11-4406/n.2015.22.011

1 概述

搜索引擎完成的主要功能是关键词的匹配及网络上节点的遍历查找,而本文针对人脸识别的图片搜索引擎同样利用特征匹配实现以人脸找相似人脸的搜索引擎。本文对人脸识别算法的分析主要从主成分分析法(PCA)入手,对其中的缺陷进行改进并应用于人脸图片搜索引擎的实现中。在主成分分析法中利用降维的思想提取主要特征,经过线性变换及奇异值分解得到特征向量从而得到特征脸。在搜索引擎的实现中主要利用的是在网络上节点的遍历以找到匹配信息并显示的技术。

2 人脸识别算法的分析

人脸识别算法的重点在于对于图片的特征提取和分析,一张图片的分辨率决定了图片划分的精度,为了提取有效特征,比如眼、口、鼻,可以将整张图像利用横纵轴划分,利用多幅图片,提取特征形成特征向量,表征标准人脸的组成。本次使用ORL人脸数据库作为样本进行PCA算法的验证及分析。

2.1 基于PCA人脸识别算法的分析

PCA(主成分分析)和LDA(线性鉴别分析)是两种降维方法,经过基本的测试和分析,PCA算法对于图片识别的正确性很高,对于人脸表情和轻微颤抖也有很好的健壮性(本文的测试实验建立在ORL人脸库上)。

PCA方法由Turk和Pentlad提出,它是基于Karhunen-Loeve变换(即K-L变换),主要用于建模方法中常用的数据降维,由于一幅图像由像素组成,基于像素在行列方向上的划分形成矩阵或看成一个矢量,构成原始的图像空间,因此PCA算法同样也应用于人脸识别的领域——PCA算法在处理人脸等图像识别问题时,遵循如下过程:将图像矩阵转化为图像向量,对原始图像向量进行线性分析标准化后得到标准化矩阵根据方差确定影响最大的向量即为第一主成分类似前面过程得到第二主成分以此类推。完整的人脸识别的过程包括:读入人脸库;形成特征脸(即特征向量)子空间,对图像进行降维获取特征值,把两组图像投影到由K-L变换得到的子空间上,利用对图像的这种投影间的某种度量来确定图像间的相似度;选择一定的距离函数进行识别。提取主要的特征向量进行图像重建,根据图像重建结果得出相似程度与提取原始图像向量的关系。

2.2 对于不同条件对特征提取的影响

2.2.1 依据图像重建,得出利用特征向量的多少及原始图片的成像清晰度(包括角度、光线、倾斜程度)都对重建结果有很大影响。这是人脸识别的关键性问题,本文通过图片预处理来解决一部分问题,比原先未处理的图片重建效果好了很多,拟合性也高了很多。

2.2.2 对于PCA算法,要求训练集必须大于测试集。即要搜索的人脸图片必须在数据库中存在至少一张

图片才能得到好的重建效果,否则不能实现。PCA算法可以对训练样本内的图片重建效果很好。

如图2,表示使用特征向量进行人脸重建得出的一组人脸图像。

第一、二组表示训练样本中的重建结果,第三组表示训练样本外的重建结果,从中可以看出,训练样本内的效果在特征向量大于等于100时基本得到了很好的重建效果,基本还原原始图片,而训练样本外重建的效果只能得到关键部位例如五官的大致位置和形状,重建效果不是特别好。

2.3 基于影响因素对PCA算法的改进

通过增加训练,集中不同人脸图片的数量,增加关键部位例如五官的丰富性,使获得的平均脸更具有广泛性和代表性,对于不同图片的外在差异性通过图片预处理(例如:灰度处理)从而产生颜色、纹理差异性较小的图片,再使用PCA算法进行降维得到的特征向量来重建的人脸图片具有更好的拟合性,如此得到的特征向量相比没有做预处理图片有较好的重建效果。

3 Ubuntu下搜索引擎的搭建

3.1 准备工作

为了提高安全性,由于Ubuntu系统下可选择用户权限使得人脸库的可靠性更高,本文选择在Ubuntu下完成人脸搜索引擎的实现。在Ubuntu系统下通过命令行下载安装CMake、OpenCV,同时利用CMake对OpenCV进行编译;配置php的imagick-3.2.扩展和imagemagick扩展为图片处理做准备,再配置好face_detect即php使用OpenCV的扩展函数;由于使用PHP作为开发环境,下载安装LAMP(Linux、Apache、Mysql和PHP),将搭建搜索引擎的环境配置好。

3.2 前台设计

搜索引擎主要以网页的形式与用户交互,是与用户交互的接口的主要界面,主要有以下功能:实现人脸图片的检索和匹配功能(button、input元素),同时可以从本地上传图片(可预览)至网页客户端(input元素),使得本地图片与系统中相似图片得以匹配并显示给用户。设计框架搭建前台界面,利用html、css与JS语言实现界面设计,html和css完成界面风格设计,JS实现动态页面效果(例如预览图片的动态显示等),布局主要采用分栏形式,整体风格简约便于用户使用。

3.3 后台实现

基于代码的后台主要使用php语言实现具体功能,包括:实现人脸图片的检索和匹配功能,同时可以从本地上传图片至网页客户端且用户可以预览,通过用户点击搜索按钮使得本地图片与网络中相似图片得以匹配并将匹配图片显示给用户。通过spider技术实现网络上html文档的遍历,可采用广度优先算法——在访问一个网络节点后一次访问相邻的网络节点直到将网络中所有节点全部遍历。对于图片匹配与传统的搜索引擎的文字匹配是类似的,利用PCA算法将图片抽象成特征向量并与www中的html文档中为图片格式的元素进行匹配,通过建立索引的方式实现人脸图片的查找与匹配,从而显示给用户。

4 结语

本文主要探讨如何用php语言来实现搜索引擎中人脸图片识别匹配的功能。由于在Ubuntu系统中可以保障人脸信息的安全性,本文的搜索引擎实现在Ubuntu系统下完成。该搜索引擎中对于人脸识别部分使用了稳定可靠的PCA算法,搜索引擎本身采用网络爬虫进行索引匹配,虽然基础,但给用户检索人脸图片带来一定的方便,实现了图片搜索、匹配等一些常用的功能,但是系统还可以进一步完善。由于现在信息大爆炸,在各个领域中对于信息的私有性有着很大的需求,因此,本次研究与实践还有待进一步完善:(1)检索图片不仅仅局限于人脸图片,而扩展为包括风景、物品等图片的检索;(2)优化PCA算法,使用基于PCA算法的优化算法例如Eigenface(其方法基于本文研究的PCA算法),可能会得到更好的结果;(3)不仅仅局限在搜索引擎,可以扩展到手机APP,使得人脸识别得到更好的应用。

参考文献

[1] 宇雪垠,曹拓荒,陈本盛.基于特征脸的人脸识别及实现[J].河北工业科技,2009,9(5).

[2] 张晓璐.基于PCA的人脸识别技术的研究[J].辽宁科技学院学报,2014,(12).

作者简介:李亚男(1992-),女,山西太原人,南京邮电大学计算机软件学院学生,研究方向:软件工程。

(责任编辑:周 琼)

猜你喜欢
搜索引擎人脸识别特征提取
人脸识别 等
揭开人脸识别的神秘面纱
基于Daubechies(dbN)的飞行器音频特征提取
Bagging RCSP脑电特征提取算法
网络搜索引擎亟待规范
基于类独立核稀疏表示的鲁棒人脸识别
Nutch搜索引擎在网络舆情管控中的应用
基于MED和循环域解调的多故障特征提取
基于Nutch的医疗搜索引擎的研究与开发
广告主与搜索引擎的双向博弈分析