人脸识别系统python_基于python语言的人脸识别技术

人脸识别技术,如果往深了研究,很难,现在已经有团队致力于研究3D人脸识别技术。本文还是基于python成熟的函数库(模块)dlib对人脸识别进行简单的介绍。首先看一下效果图,首先给出对人脸的68个特征点进行提取的效果图:

再给出识别的效果:

因为代码中的算法是,与数据库中图片欧式距离最小的,则判断为该候选人。所以虽然左右两位朋友不在数据库中,但是也给出了识别结果。后期改进可以判断,当欧式距离大于某个门限时,则判定为未知人员。

下面对人脸识别技术进行详细介绍。

数据库准备

在进行人脸识别时,首先得有数据,其中包含人脸数据、训练好的模型数据,如下图所示:

训练好的数据包含人脸关键点检测器、人脸识别模型,如图所示:

系统与模块

Ubuntu64系统系统用的是Ubuntu64系统,便于后续dlib模块的安装,本文在做实验时,是在虚拟机中进行的,如图所示:

dlib模块安装dlib官方文档给出的标语是:高质量的机器学习、图像处理、深度学习、人脸识别 C++/Python库。

dlib模块可以在Linux和Max系统安装,但是也有很多资料显示如何在windows系统中安装dlib,感兴趣的读者可以自行研究。

dlib模块的安装需要两个模块依赖:cmake和boost,由于篇幅限制,本文不介绍如何安装dlib模块,因为相关的资料、博客很多,请查阅相关资料。

人脸识别关键代码

如上图所示给出3句人脸识别的关键代码,其中第一句是加载正脸检测器,第二句是加载人脸关键点检测器,第三句是加载人脸识别模型。

这一句代码中,是对变量descriptors进行初始化,其中count是数据库中人脸的个数,128是固定的值(因为文章借用别人已经训练好的模型,而模型的特征向量就是128维度的)。

上图中的代码,第一句detector(img, 1)是对人脸进行检测,for循环是对图片中的人脸进行循环,有几张人脸,就循环几次。然后将特征向量存储在descriptors中。

最后将变量descriptors存储在文件candidates.npy中,即训练得到的数据库。

全部代码

全部代码内容较多,我们将放入网盘,包括前期的数据库,训练模型等数据,一并上传网盘。

人脸识别数据库

Labeled Faces in the Wild Home (LFW)本文使用的就是LFW人脸数据库,LFW中的人脸数据多来源网络,已经被广泛的应用在评价Face Verification算法性能上。

除此之外,我们再介绍几种数据库:

PubFig: Public Figures Face Database(哥伦比亚大学公众人物脸部数据库)Large-scale CelebFaces Attributes (CelebA) DatasetColorferetMulti-Task Facial Landmark (MTFL) datasetBioID Face Database - FaceDBPerson identification in TV seriesCMUVASC & PIE Face dataset等等,还有很多。当然读者也可以自己采集。也可以通过爬虫的手段在互联网上进行爬虫获取。

总结

本文利用python的dlib模块,对人脸识别技术进行了介绍。希望对你的学习有所帮助,谢谢

你可能感兴趣的:(人脸识别系统python)