为了方便人脸识别程序在各种平台上的移植和人脸识别的准确性,我们提出了一种基于C++语言的人脸识别方法。该方法使用电脑摄像头采集人脸图像,首先利用OpenCV对图像中的人脸进行检测,然后对人脸进行关键点定位,最后根据检测结果对人脸进行识别。实验结果表明,通过本文基于C++语言的人脸识别方法,与传统的OpenCV和CNN算法等方法相比,速度和准确率较好,可移植性更好。1 概述
人脸识别技术最早可以追溯到1888年,Gallon在《Nature》上面发表的文章,其中表述了利用人脸特征进行身份识别的思想。近年来,人脸识别越来越成为受到广大研究人员关注的模式识别领域中的研究热点。经过研究学者们的不断研究,提出了许多的人脸识别的方法。到目前为止,人脸识别方法可以分为大概六种:基于模板匹配、基于几何特征、基于代数特征、基于人工神经网络、基于稀疏表示和基于深度学习的人脸识别方法等(朱兴统,习洋洋,基于C++和OpenCV的人脸识别系统的设计与实现:自动化与仪器仪表,2014)。人脸识别技术具有非侵扰性,也就是无需干扰到人们的正常行为就能采集到人脸图像并达到较好的识别效果,同时人脸识别的设备可以随处安放、隐蔽性好,可以远距离非接触快速锁定目标识别对象,所以具有广泛的应用(张笛,人脸识别现状与发展趋势研究:广东通信技术,2018)。
2 本文模型
考虑到各种不同平台上的移植和提高人脸识别的准确性,本文提出一种基于C++语言的人脸识别方法。本文的模型如图1所示。
图1基于C++语言的人脸识别方法流程图
我们首先通过电脑摄像头采集人脸图像,然后在Visual Stu-dio2013中通过C++语言调用OpenCV中的人脸识别库函数对图像中的人脸检测,框出人脸部分,然后对眼睛、鼻子和嘴巴进行关键点定位。另外通过改进的CNN网络进行训练然后将模型封装好,使用C++语言调用模型对人脸进行识别,得到最终的识别结果。
3 实验结果分析
图2 强光左侧脸、正脸和右侧脸情况下人脸识别结果
• 98 •
长江大学电子信息学院 白晓哲 谢 凯
图3 弱光左侧脸、正脸和右侧脸情况下人脸识别结果
图4 不同方法在相同阈值下的准确率比较
本文采用基于C++语言的人脸识别方法,其中调用了OpenCV的人脸识别库(滕俊,王弟林,文汉云,基于OpenCV下的Visual C++数字图像处理方法:现代计算机(专业版),2012)和使用LFW数据集和自己的人脸图像训练好的改进CNN模型来对人脸进行识别。由图2和图3的实验结果我们可以看出,本文的方法在强光和弱光下的无论是侧脸还是正脸都有着良好的识别性能。
我们知道阈值会影响到人脸识别的准确性,所以本文比较了在不同阈值下的各方法的准确率(田桂,谢凯,LSTM-RBM-NMS模型下的视频人脸检测方法研究:电脑知识与技术,2018),由图4可以看出,随着阈值增加准确率是呈下降趋势的,同时在相同阈值下本文的方法比其他方法的准确率更高。
4 总结
本文提出的基于C++语言的人脸识别方法,采用OpenCV对人脸进行检测,然后对人脸关键点进行多点定位,为之后的人脸识别打下了预处理的良好基础。后续通过调用训练模型对人脸进行识别,加快了人脸识别的速度。整个人脸识别方法基于C++语言,便于各个不同平台上的移植并且具有良好的识别性能。
基金项目:长江大学电工电子国家级实验教学示范中心2018年度开放课题(No.SFZX201805)。
作者简介:白晓哲(1995—),女,汉族,河北沧州人,硕士,研究方向为图像处理。
通讯作者:谢凯(1974—),男,湖北潜江人,博士,教授,研究方向为信号与信息处理。
因篇幅问题不能全部显示,请点此查看更多更全内容