人脸识别 毕业论文设计
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
毕业设计(论文)
题目名称:基于主成分分析(PCA)的人脸识别门禁软件开发 ----人脸识别院系名称:计算机学院
班级:计科092班
学号:4
学生:冠君
指导教师:陆筱霞
2013 年 6 月
基于主成分分析(PCA)的人脸识别门禁软件开发
----人脸识别
Face recognition access control software development based on principal component analysis(PCA)
---- Face Recognition
院系名称:计算机学院
班级:计科092班
学号:4
学生:冠君
指导教师:陆筱霞
2013 年 6 月
中文摘要
随着安全入口控制需求的快速增长,生物统计识别技术得到了新的重视。
由于人脸的易采集、非接触等优点使得人脸特征作为人生物特征应用受到越来越多的关注,其中最主要就是人脸识别。
本文主要介绍一个人脸识别门禁系统的核心功能模块。
本文的设计是基于OpenCV库的,以VS2012软件作为开发工具,主要从需求分析,系统概要设计,关键技术、详细设计和实现几方面来介绍开发过程,最后进行运行测试。
在人脸检测基础上,提取人脸进行识别。
在人脸识别方法上,本软件主要采用主成分分析法(PCA)。
将大数据维度进行降维,投影到低维空间,利用欧氏距离计算置信度,达到阀值的训练数据作为判定识别标准。
关键词:人脸检测;人脸识别;主成分分析法(PCA);
Abstract
With the rapid growth of security access control, biometric identification technology has been a new emphasis. Easy acquisition of the face, the non-contact, etc. makes facial feature as biometric applications are more and more attention, of which the most important is face recognition. This paper describes a face recognition access control system is the core functional modules.
This design is based on the OpenCV library to VS2012 software as a development tool, mainly from the needs analysis, outline design, key technologies, detailed design and implementation aspects to introduce the development process, and finally run the test.
On the basis of face detection, the extraction of face identification. Face recognition methods, the software using principal component analysis (PCA). The dimensions of the big data dimensionality reduction, projected to low-dimensional space using the Euclidean distance to calculate the confidence to reach the threshold of training data as the decision to identify standards.
Key words: Face Detection;Face recognition; principal component analysis(PCA);
目录
中文摘要 (3)
Abstract (4)
目录 (I)
第一章绪论 (1)
1.1 前言 (1)
1.2课题应用背景与研究意义 (1)
1.3 人脸识别类软件的发展现状 (2)
1.4 系统可行性研究 (2)
1.4.1 为什么选用OpenCV (2)
1.4.2 开发环境的配置 (2)
1.5 本毕业设计工作和论文结构安排 (3)
1.5.1 本毕业设计工作 (3)
1.5.2 论文结构安排 (4)
第二章系统需求分析 (4)
2.1 功能需求 (4)
2.2非功能需求 (5)
2.2.1系统的易用性 (5)
2.2.2系统可靠性 (5)
2.2.3 系统可扩展性 (5)
第三章系统概要设计 (5)
3.1 设计思想 (5)
3.1.1 人脸数据获取方式 (5)
3.1.2 人脸训练识别方式 (6)
3.1.3 添加功能提示 (6)
3.2 系统功能结构设计 (6)
第四章系统详细设计 (6)
4.1 OpenCV主要函数介绍 (6)
4.2 关键功能部分函数设计实现 (9)
4.2.1摄像头操作: (9)
4.1.2人脸检测功能: (9)
4.1.3图像特征训练提取: (10)
4.1.4训练图像保存: (10)
4.1.5身份识别验证功能: (10)
第五章系统运行测试 (11)
5.1 人脸识别系统模块测试 (11)
5.2 运行效果图 (12)
5.3 测试效率测评 (16)
第六章小结 (18)
附录 (19)
附录A:主要源程序 (19)
附录B: 软件使用说明书 (30)
附录C: 光盘 (31)
第一章绪论
1.1 前言
人类进入21世纪,随着计算机和网络技术的日渐发达,信息安全的隐患日益突出,自911之后,各国越来越重视社会公共安全,信息识别和检测显得前所未有的重要。
现今社会中主要采用、磁卡和口令等识别方法,随着技术的发展,这些传统的身份识别方法已受到越来越多的挑战,存在的易丢失、易伪造、易遗忘等诸多问题,可靠性也大为降低,生物体征作为每个人独一无二的特征,进入人们眼界,成为新的信息识别和检测技术的载体,从而指纹、虹膜以及人脸等作为主要依据,得以发展。
相对于其它的人体生物特征,人脸存在易采集、非接触、静态等优点,比较容易被接受。
在科技发展的时代,得到很大程度的发展,应用也越来越广泛。
尤其在国家安全、军事安全和公共安全领域发挥重要作用,典型代表就是智能门禁、海关身份验证、智能视频监控等应用。
近年来,随着计算机性能提高和算法的不断成熟,人脸识别技术得到很大发展,在证件验证、出入口安全监控、信息安全、视频监控等许多应用都和人脸识别技术密切相关。
1.2课题应用背景与研究意义
本课题根据学校要求,选用实际公司项目研究,在对人脸识别技术研究分析的基础上,选定该题目。
人类进入21世纪,随着计算机和网络技术的日渐发达,信息安全的隐患日益突出,自911之后,各国越来越重视社会公共安全,信息识别和检测显得前所未有的重要。
现今社会中主要采用、磁卡和口令等识别方法,随着技术的发展,这些传统的身份识别方法已受到越来越多的挑战,存在的易丢失、易伪造、易遗忘等诸多问题,可靠性也大为降低,生物体征作为每个人独一无二的特征,进入人们眼界,成为新的信息识别和检测技术的载体,从而指纹、虹膜以及人脸等作为主要依据,得以发展。
相对于其它的人体生物特征,人脸存在易采集、非接触、静态等优点,比较容易被接受。
在科技发展的时代,得到很大程度的发展,应用也越来越广泛。
本课题主要关注就是人脸识别,主要容包括:图像获取及人脸检测提取,人
脸特征提取,人脸识别。
实现方面,可以使用C++实现相关算法,也可以利用现有的函数库。
本课题主要是基于OpenCV开发的人脸识别门禁软件。
1.3 人脸识别类软件的发展现状
人脸识别系统的研究开始于20世纪60年代。
其优势在于其自然性和不被被测试个体察觉的特点。
人脸识别就是通过观察比较人脸来区分和确定人的身份的。
不被察觉的特点会使识别方法不令人反感,而且不容易引起人注意故而不易被欺骗。
相对指纹识别而言,人脸识别的非接触特点,使得其更加友好,自然,被人们接受。
随着科技的发展和安全需求的增加,人脸识别技术应用已经受到重视。
在公安刑侦领域,人脸识别技术应用十分广泛,目前还逐渐向民用市场推广,离人们的生活越来越近。
发展前景不可限量,随着数字化、信息化社会的到来,人们对人脸识别技术的了解和认识越来越多,人脸识别技术也越将越来越来成熟和完善。
1.4 系统可行性研究
可行性研究是为了对问题进行研究,以最小代价在最短时间确定问题是否可解。
经过对项目详细研究,初拟系统实现报告,对可能将要遇到的问题及解决方案进行设计和安排,明确开发风险和效益。
1.4.1 为什么选用OpenCV
近年来,大数据量,时势性图像处理广泛应用于各个领域。
各种各样的图像处理软件包围图像分析和处理提供便利的同时也存在许多问题。
英特尔公司提供的OpenCV类库在VC++环境下进行图像处理和计算机视觉编程的方法、和免费试用的优势,缩短相关程序开发周期,具有强大的实用价值,是指在相关软件包中占据领先,成为一种流行的图像处理软件。
选用OpenCV主要因为里面封装的类库可以直接使用,非常方便。
它不依赖与其它的外部库,拥有400多个免费的图像处理函数,涉及领域涵盖了机器视觉的大多应用。
1.4.2 开发环境的配置
对于OpenCV的配置,可以使用CMake编译生成针对编辑器的工程,产生符合编译器的库。
也可以直接使用源码中本身带有的编译好的库。
在这里我们使用自带的库文件。
1)安装OpenCV :将获取的安装文件安装到D:\opencv2.4.4\opencv,并将对应使用的bin 目录D:\opencv2.4.4\opencv\build\x86\vc11\bin添加到环境变量PATH中;
2)配置VS2012
“项目”--〉“属性”--〉“VC++目录”中配置
包含目录:添加D:\opencv2.4.4\opencv\build\include
库目录:添加D:\opencv2.4.4\opencv\build\x86\vc11\lib
对于依赖项配置有两种方法,一种在项目属性页中“器”--〉“输入”中附加依赖项
中添加需要用到的.lib文件。
第二种方法是在程序中加载,也就是本系统中使用的方法。
#ifdef WIN32
#ifdef_DEBUG
#pragma comment(lib,"opencv_highgui244d.lib")
#pragma comment(lib,"opencv_core244d.lib")
#pragma comment(lib,"opencv_imgproc244d.lib")
#pragma comment(lib,"opencv_video244d.lib")
#pragma comment(lib,"opencv_calib3d244d.lib")
#pragma comment(lib,"opencv_objdetect244d.lib")
#pragma comment(lib,"opencv_legacy244d.lib")
#else
#pragma comment(lib,"opencv_highgui244.lib")
#pragma comment(lib,"opencv_core244.lib")
#pragma comment(lib,"opencv_imgproc244.lib")
#pragma comment(lib,"opencv_video244.lib")
#pragma comment(lib,"opencv_calib3d244.lib")
#pragma comment(lib,"opencv_objdetect244.lib")
#pragma comment(lib,"opencv_legacy244.lib")
#endif
#endif
系统主要实现三大功能,人脸检测,特征提取和人脸识别,辅助一些功能。
具有开发可行性,因此可以开发该系统。
1.5 本毕业设计工作和论文结构安排
1.5.1 本毕业设计工作
本次毕业设计课题主要工作是在VS2012环境下通过OpenCV库完成人脸检测和人脸识别功能设计。
第一阶段,搜索需求技术知识,配置系统开发环及功能
这一阶段主要是准备工作。
主要是搜集图像处理人脸识别的相关资料,了解OpenCV库的相关知识,详细了解了相关函数,制定开发框架。
系统在PC上搭建开发平台。
这里我们开发平台选择Win7操作系统平台,在VS2012环境下配置使用OpenCV库。
第二阶段,实现各个功能
在开发期间,主要实现一下功能:
1)从摄像头获取图像并对图像进行一定预处理;
2)从获取图像中检测提取人脸区域;
3)提取人脸图像并保存,同时写入文件;
4)读取文件,读取图像进行训练得到特征信息;
5)保存的得到的特征信息至xml文件;
6)读取xml文件,得到特征信息;
7)识别人脸,并计算置信度。
8)辅助功能实现,包扩添加用户,重置数据,输出特征图像、平均图像等。
9)从人脸数据库中子集读取人脸数据进行训练,提取特征,并选取另一子集人脸图像进行识别测试。
10)查看生成的平均人脸图像和特征人脸。
最后完成开发测试,测试运行良好。
1.5.2 论文结构安排
第一章:绪论:包括前言、应用背景与研究意义、人脸检测定位及跟踪发展现状、系统可行性研究以及本文主要容;
第二章:系统需求分析:包括功能需求、性能需求、运行需求;
第三章:系统概要设计:包括设计思想、系统功能结构图;
第四章:系统详细设计:功能模块设计、各模块的主要函数功能;
第二章系统需求分析
随着安全要求的不断提高,人脸识别技术逐渐应用于各种场合,如门禁系统,人脸签到,人脸密码等等,因此设计一个人脸识别软件对于门禁系统可以扩展人脸识别技术的应用。
对于人脸识别门禁系统,有如下目标:1、操作简单;2、识别精确度。
考虑到软件应用场合及主要功能,设计出操作简单快捷的软件,使得软件简单实用,符合大众需求。
2.1 功能需求
系统主要实现人身份识别,功能包括以下几个方面:
摄像头操作:包括摄像头打开与关闭,从摄像头读取图像并显示到界面上。
检测操作:从摄像头画面中检测提取人脸。
图像保存功能:提取的人脸图像保存为pgm图片。
文件读写功能:读写txt文件,保存提取人脸图像信息;读写xml文件,保存读取人脸特征等信息。
添加用户重训练功能:添加用户,重新训练得到特征脸和人脸特征,并保存。
人脸识别功能:识别显示当前人脸身份。
重置数据功能:清除原有训练数据,便于重新训练。
2.2非功能需求
2.2.1系统的易用性
由于此系统是面向非专业操作人员的实用性程序,因此要求此系统具有易用性。
2.2.2系统可靠性
要求系统发生错误时,通知用户错误信息,以保证系统可靠性。
2.2.3 系统可扩展性
软件可扩展性是评价软件性能一个重要指标。
为了是系统具有一定可扩展性,设计过程中尽量使各个模块相对独立,为扩展留余地。
第三章系统概要设计
在人脸识别门禁软件需求分析阶段中,已经将系统需求做了详细阐述,本阶段在此需求分析基础上,对其做概要设计,意在解决实现该系统需求的模块设计问题。
3.1 设计思想
3.1.1 人脸数据获取方式
考虑到要进行人脸识别,首先要获取人脸图像数据,要测试识别算法,需要大量数据,因此我们采用公开的人脸图像库进行静态图像测试,再进而使用摄像头获取人脸实现系统功能,故人脸数据获取方式有两种,一种是直接从人脸数据库中获取,另一种从摄像头数据中检测提取得到。
3.1.2 人脸训练识别方式
为保障可以添加用户,实现多用户使用识别,需要添加用户功能,这样就需要动态训练人脸数据,识别确认。
训练识别方法采用PCA算法处理,添加新用户时重新对新的建立的数据库进行训练得到训练数据。
3.1.3 添加功能提示
为了使模块功能清晰表现,便于用户操作,添加功能提示信息引导。
3.2 系统功能结构设计
本软件设计实现主要两部分:静态人脸数据库测试验证部分和实时摄像头中提取数据实际功能实现部分。
第四章系统详细设计
此章节对人脸识别门禁系统实现功能实现进行详细分析和设计。
4.1 OpenCV主要函数介绍
1) cvLoadImage 从文件中读取图像
IplImage*
cvLoadImage(const char* filename,int flags=CV_LOAD_IMAGE_COLOR );
函数cvLoadImage从指定文件读入图像,返回读入图像的指针。
其中filename是要被读入的文件的文件名;flags指定读入图像的颜色和深度。
2)cvSaveImage 保存图像到文件
int cvSaveImage( const char* filename, const CvArr* image );
函数cvSaveImage保存图像到指定文件。
其中filename保存文件名。
image 要保存的图像。
图像格式的的选择依赖于filename的扩展名,只有8位单通道或者3通道(通道顺序为'BGR' )可以使用这个函数保存。
3)cvQueryFrame从摄像头或者文件中抓取并返回一帧
IplImage* cvQueryFrame( CvCapture* capture );
函数cvQueryFrame从摄像头或者文件中抓取一帧,然后解压并返回这一帧。
这个函数仅仅是函数cvGrabFrame和函数cvRetrieveFrame在一起调用的组合。
返回的图像不可以被用户释放或者修改。
其中capture视频获取结构。
4)cvCaptureFromCAM 初始化摄像头
CvCapture* cvCaptureFromCAM( int index );
函数cvCaptureFromCAM给从摄像头的视频流分配和初始化CvCapture结构。
其中index要使用的摄像头索引。
如果只有一个摄像头或者用哪个摄像头也无所谓,那使用参数-1应该便可以。
5)cvHaarDetectObjects 用来检测图像中的人脸区域
CV API(CvSeq*) cvHaarDetectObjects( const CvArr* image,
CvHaarClassifierCascade* cascade,
CvMemStorage* storage,
double scale_factor CV_DEFAULT(1.1),
int min_neighbors CV_DEFAULT(3),
int flags CV_DEFAULT(0),
CvSize min_size CV_DEFAULT(cvSize(0,0)),
CvSize max_size CV_DEFAULT(cvSize(0,0)));
用于快速检测人脸区域,便于提取得到人脸数据。
其中image 为被检图像,cascade为 haar分类器级联的部标识形式,storage 为用来存储检测到的一序列候选目标矩形框的存区域,scale_factor 在前后两次相继的扫描中,搜索窗口的比例系数,例如1.1指将搜索窗口依次扩大10%,min_neighbors 为构成检测目标的相邻矩形的最小个数(缺省-1),flags 为操作方式,min_size 为检测窗口的最小尺寸。
缺省的情况下被设为分类器训练时采用的样本尺寸(人脸检测中缺省大小是~20×20)。
6)cvRectangle 绘制矩形
CV API(void) cvRectangle( CvArr* img, CvPoint pt1, CvPoint pt2,
CvScalar color, int thickness CV_DEFAULT(1),
int line_type CV_DEFAULT(8),
int shift CV_DEFAULT(0));
绘制出检测到人脸区域并显示,便于使用者观看是否检测出人脸,。
其中img 为图像,pt1 -- 矩形的一个顶点,pt2 -- 矩形对角线上的另一个顶点,color -- 线条颜色 (RGB) 或亮度(灰度图像)(grayscale image),thickness -- 组成矩形的线条的粗细程度,取负值时(如 CV_FILLED)函数绘制填充了色彩的矩形,
line_type -- 线条的类型。
见cvLine的描述,shift -- 坐标点的小数点位数。
7)cvResize 重置图像大小
CV API(void) cvResize( const CvArr* src, CvArr* dst,
int interpolation CV_DEFAULT( CV_INTER_LINEAR )); 重置图像大小,使图像归一到同样大小。
interpolation 插值方式:选择用线性插值(CV_INTER_LINEAR)和区域插值(CV_INTER_AREA)。
8)cvOpenFileStorage 打开存在或创建新的文件
CV API(CvFileStorage*) cvOpenFileStorage( const char* filename,
CvMemStorage* memstorage,
int flags,
const char* encoding CV_DEFAULT(NULL) );
把训练数据保存至xml文件,通过此函数打开文件便于进行读写。
flag有10种,这里用到其中读和写二种:CV_STORAGE_READ (打开文件读数据)和
CV_STORAGE_WRITE(打开文件写数据)。
文件打开后有写操作和读操作函数:cvWrite();cvWriteInt();cvReadByName();cvReadIntByName()。
9)cvCalcEigenObjects 计算引入矩阵的e i g e n v e c t o r(特征向量)、e i g e n v a l u e(特征根)、i m a g e a v e r a g e(影像平均值)。
CV API(void) cvCalcEigenObjects( int nObjects, void* input, void*
output,int ioFlags, int ioBufSize, void* userData,
CvTermCriteria* calcLimit, IplImage* avg,float* eigVals );
OpenCV 已经实现PCA关键算法之一,计算出传入图像阵列的特征值、特征向量和平均值。
其中nObjects为样本个数,input 为输入的影响矩阵,output 为特征矩阵,calcLimit为回调结束条件,avg 为平均值,eigVals 特征根。
10)cvEigenDecomposite 透过e i g e n v e c t o r和原始影像集来解析每图片降维后对应的系数c o e f f i c i e n t s。
CV API(void) cvEigenDecomposite( IplImage* obj, int nEigObjs, void* eigInput,
int ioFlags, void* userData, IplImage* avg,
float* coeffs );
OpenCV 已经实现PCA关键算法之一,对输入图像投影到子空间,计算投影各维度系数,以此表示图像。
其中obj为输入目标图像,nEigObjs为选取的特征维数,eigInput为向量组成的变换矩阵,数据结构属于IplImage队列,或者根据ioFlag参数值变化的回调函数,avg为平均值,coeffs 为输入图像对应的
投影。
11)cvConvertScale 使用线性变换转换数组,得到可以保存显示的图像
CV API(void) cvConvertScale( const CvArr* src,CvArr* dst,
double scale CV_DEFAULT(1),
double shift CV_DEFAULT(0) );
OpenCV要保存显示图像,图像数据必须是uchar格式,因此对于非uchar 数据需要转换。
其中src 为输入数组,dst 为输出数组,scale 为比例因子,shift 为该加数被加到输入数组元素按比例缩放后得到的元素上,采用公式dst(I)=src(I)*scale + (shift,shift,...) 进行转换。
4.2 关键功能部分函数设计实现
4.2.1摄像头操作:
要实现系统功能,首要先从摄像头中读取数据,为此,需要保证摄像头开启,为保证获取画面统一便于管理,通过cvSetCaptureProperty()函数设置摄像头分辨率为常用值(320*240),读取摄像头数据,返回 IplImage图像数据,该部分需要实现的是打开摄像头、设置摄像头分辨率属性、读取摄像头图像,还有使用完后释放摄像头资源操作。
软件启动后若选择不从文件中读取信息,自动启动摄像头获取图片。
按“ESC”键退出系统时自动回收资源,关闭摄像头,释放摄像头资源。
4.1.2人脸检测功能:
要实现人脸识别,首要先检测出人脸。
实现该功能,接收摄像头中获取的图像数据,进行灰度化等操作,利用Haar特征,使用强级联分类器,搜索检测人脸区域,提取出可能的最大脸,为防止误检,进一步在提取出的区域再次对人眼进行检测,过滤掉检测不到人眼的区域,从而有效地降低了人脸区域误检率,获取真正需要的人脸区域。
人脸区域获取后,进一步提取出人脸图像,为了训练需要,还须对提取的图像进行大小归一化,使得得到的图像大小统一,为了进一步提高后续识别效率,对图像进行直方图均衡化,最后得到所需图像用于训练和识别。
4.1.3图像特征训练提取:
利用主成分分析法(PCA)算法对收集到的用户图像进行降维训练,提取人脸特征值。
主成分分析法实现主要分为几步完成: 1、去均值 2、计算协方差矩阵及其特征值和特征向量 3、计算协方差矩阵的特征值大于阈值的个数 4、降序排列特征值 5、去掉较小的特征值 6、去掉较大的特征值(可有可无) 7、合并选择的特征值 8、选择相应的特征值和特征向量 9、计算白化矩阵 10、提取主分量。
读取人脸训练集,利用PCA算法得到特征人脸和平均人脸,在此基础上把每训练人脸投影到特征脸空间中得到投影数据作为每幅人脸的特征脸。
满足系统要求,可能需要能够识别多人身份,因此需要能够添加用户。
系统启动后,识别过程中,设置按下’n’键,进入添加用户模式,输入用户名开始自动采集用户脸部图像,开始训练提取特征数据。
4.1.4训练图像保存:
PCA算法过程中会计算出人脸的平均脸信息,和特征脸信息,但得到的这些信息是无法直接显示到屏幕上的,想要看到这些图像,就需要把其加以转换,得到可以直接显示的格式。
在这一阶段,计算出其最大值和最小值,对于超出数值围和非数值的值进行过滤修改,然后利用cvConvertScale函数将float类型的值转化为需要的uchar类型,然后调用cvshowImage进行保存。
训练数据保存与加载:
对于利用PCA得到的训练数据要在识别时使用,所以首先需要保存起来,在识别时读取并当前数据匹配。
这个阶段主要涉及到文件的操作,包括文件的打开、关闭,写数据和读数据。
4.1.5身份识别验证功能:
整个系统中最关键重要的就是身份识别功能,之前实现人脸检测提取出当前用户的脸部信息,PCA数据训练得到平均人脸和人脸子空间等数据提供了基础,在此基础上,将当前用户脸部图像投影到人脸子空间中,然后找出与投影脸欧式距离最近的训练人脸,计算距离与可信相似度,并与设置的阀值比较,当大于阀值时可以认为确认身份成功。
当阀值设置过大时会使识别很困难,效率降低;而若阀值设置过小,容易把人脸识别错误,使得系统实用性降低,因此,选择一
个合适的阀值非常重要,而阀值的选取有没有一个科学的准确依据,因此使得确定合适阀值比较困难。
第五章系统运行测试
一个软件系统的功能实现,首先要设计好功能流程布局,然后根据软件系统的要求编写代码,然后就是调试程序,最后完善总结。
其中最重要的也最关键的就是中间这两部分。
编写代码按部就班,照着流程走,一步步完善,最难的部分其实就是调试了,软件编写过程中,尤其是比较大的软件系统中,一次性编写无误,不需调试是不可能的。
在此次毕业设计中印象最深的就是调试了。
在调试过程中曾遇到了不少的问题,不过经过查资料,不断分析可能的情况,一点点找到出问题的地方,进而找到解决方法。
整个系统开发调试测试结果如下:
5.1 人脸识别系统模块测试
结论:摄像头操作功能运行正确。
结论:基于人脸数据库文件识别操作功能运行正确。
表3:基于摄像头人脸识别部分操作功能
结论:基于摄像头人脸识别部分操作功能运行正确。
表4:其它操作部分功能
结论:测试运行正确。
5.2 运行效果图
1、基于人脸数据库文件识别操作功能
按‘y’键进入人脸图像库识别模式,在此模式下有train和test两种操作:
A):train 操作,读取文件进行训练,得到训练数据,并显示平均脸和特征脸图像。
测试通过,结果如下图:
图5-1:读取图片集训练数据
图5-2:显示平均人脸图像
图5-3:显示特征脸图像,此为部分截图
B):test操作,读取测试人脸集,识别身份,计算置信度。
测试通过。
结果如下图5-4。
图5-4 读取测试人脸集,显示识别信息
2、基于人脸数据库文件识别操作功能
按‘n’键进入摄像头识别模式,显示操作功能键介绍,自动打开摄像头,如图5-5
图5-5 摄像头识别模式
在此模式下,‘n’键添加用户重新在线训练数据,测试通过,结果如图5-6
图5-6 添加用户重训练
图5-7 人脸身份识别
‘f’键,修改调整阀值,输入新的阀值,开始重新识别,测试通过,结果如图5-8和图5-9。
图5-8 重新设置新阀值
图5-9 新阀值下身份识别结果
5.3 测试效率测评
对于系统可靠性测试,测试其算法效率,采用从人脸图像数据库一个子集中读取数据并从另一个子集中身份识别,结果评定可以看出对同样的测试数据,每个人选5图片进行训练时,虽训练集的扩大,测试结果正确率越高,还可以看出对于已训练的人测试时识别率是比较高的,达70%以上。
通过增加每个人的人脸图片数,每人选10图片时,测试效率进一步提高。
为了提高效率,在摄像头识别过程中,添加用户时,每个人采集20图片进行训练,并设置阀值,进一步过滤可能识别错误的结果。
使得识别准确性得到较大提高,但同时影响识别速度,造成识别速度有所减慢,如果人脸正面至于摄像头前,在1到2秒可以识别,还在可接受围。