浅谈基于PCA算法的人脸识别的图片搜索引擎论文
浅谈基于PCA算法的人脸识别的图片搜索引擎论文 浅谈基于PCA算法的人脸识别的图片搜索引擎全文如下:1 概述 搜索引擎完成的主要功能是关键词的匹配及网络上节点的遍历查找, 而本文针对人脸识别的图片搜索引擎同样利用特征匹配实现以人脸找相似人脸 的搜索引擎。本文对人脸识别算法的分析主要从主成分分析法(PCA)入手,对其 中的缺陷进行改进并应用于人脸图片搜索引擎的实现中。在主成分分析法中利用 降维的思想提取主要特征,经过线性变换及奇异值分解得到特征向量从而得到特 征脸。在搜索引擎的实现中主要利用的是在网络上节点的遍历以找到匹配信息并 显示的技术。
2人脸识别算法的分析 人脸识别算法的重点在于对于图片的特征提取和分析,一张图片的分 辨率决定了图片划分的精度,为了提取有效特征,比如眼、口、鼻,可以将整张 图像利用横纵轴划分,利用多幅图片,提取特征形成特征向量,表征标准人脸的 组成。本次使用ORL人脸数据库作为样本进行PCA算法的验证及分析。
2.1基于PCA人脸识别算法的分析 PCA(主成分分析)和LDA(线性鉴别分析)是两种降维方法,经过基本 的测试和分析,PCA算法对于图片识别的正确性很高,对于人脸表情和轻微颤抖 也有很好的健壮性(本文的测试实验建立在ORL人脸库上)。
P C A 方法由T u r k 和P e n t l a d 提出, 它是基于Karhunen-Loeve 变换(即K-L变换),主要用于建模方法中常用的数据降维,由于一幅图像由像素 组成,基于像素在行列方向上的划分形成矩阵或看成一个矢量,构成原始的图像 空间,因此PCA算法同样也应用于人脸识别的领域——PCA算法在处理人脸等图 像识别问题时,遵循如下过程:将图像矩阵转化为图像向量,对原始图像向量进 行线性分析标准化后得到标准化矩阵根据方差确定影响最大的向量即为第一主 成分类似前面过程得到第二主成分以此类推。完整的人脸识别的过程包括:读入 人脸库;形成特征脸(即特征向量)子空间,对图像进行降维获取特征值,把两组图 像投影到由K-L变换得到的子空间上,利用对图像的这种投影间的某种度量来确定图像间的相似度;选择一定的距离函数进行识别。提取主要的特征向量进行图 像重建,根据图像重建结果得出相似程度与提取原始图像向量的关系。
2.2对于不同条件对特征提取的影响 2.2.1依据图像重建,得出利用特征向量的多少及原始图片的成像清晰 度(包括角度、光线、倾斜程度)都对重建结果有很大影响。这是人脸识别的关键 性问题,本文通过图片预处理来解决一部分问题,比原先未处理的图片重建效果 好了很多,拟合性也高了很多。
2.2.2对于PCA算法,要求训练集必须大于测试集。即要搜索的人脸图 片必须在数据库中存在至少一张图片才能得到好的重建效果,否则不能实现。
PCA算法可以对训练样本内的图片重建效果很好。表示使用特征向量进行人脸重 建得出的一组人脸图像。
第一、二组表示训练样本中的重建结果,第三组表示训练样本外的重 建结果,从中可以看出,训练样本内的效果在特征向量大于等于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,使得人脸识别得到 更好的应用。