python如何实现人脸识别?


这里介绍一种简单的人脸识别方式—face recognition 。该库是python的一个人脸识别库 。基于dlib深度人脸识别技术构建 。识别准确率较高 。下面我简单介绍一下这个库的安装和使用 。实验环境win10+python3.6+pycharm5.0 。主要内容如下:
1.安装face recognition 。这里需要先安装dlib,face_recognition_models 。之后才能安装face_recognition 。下面我简单介绍一下安装过程:
安装dlib 。这里建议安装编译好的dlib.whl文件 。直接安装的话 。可能会有错误出现:

python如何实现人脸识别?

文章插图
安装face_recognition_models和face_recognition 。这里可以直接pip install在线安装 。也可以源码安装:
python如何实现人脸识别?

文章插图
实在不会的话 。可以参考一下这个教程https://www.jianshu.com/p/8296f2aac1aa 。
2.安装完成后 。我们就可以进行测试了 。主要代码如下(这里用到了opencv进行图片的的显示 。没安装的话 。直接pip install opencv-python安装就行):
python如何实现人脸识别?

文章插图
程序运行截图如下:
原始图片:
python如何实现人脸识别?

文章插图
识别图片:
python如何实现人脸识别?

文章插图
这里也可以对照片进行一下“描绘” 。包括眉毛、嘴唇、眼睛、眼睫毛等 。哈哈哈 。代码如下:
python如何实现人脸识别?

文章插图
程序运行截图如下:
python如何实现人脸识别?

文章插图
至此 。我们就完成了利用python进行人脸识别 。总的来说 。整个过程不难 。基于face recognition 。我们可以快速的对照片中的人脸进行识别 。只要你有一定的python基础 。熟悉一下代码 。很快就能掌握的 。网上也有相关教程和资料(地址https://face-recognition.readthedocs.io/en/latest/readme.html#) 。感兴趣的话可以搜一下 。希望以上分享的内容能对你有所帮助吧 。
其他观点:
翻出我曾经写的一篇文章来介绍这个问题 。
为大家带来一篇 初步使用Keras深度学习破解验证码 的文章 。当然我们这里识别的是普通验证码 。是Laravel常用的验证码库
Captcha for Laravel 5
如下图 。又5个数字字母所组成的验证码 。我用PHP一共生成了5万个验证码 。后面也会提供给大家
python如何实现人脸识别?

文章插图
导入所需的库
这里我们还是使用Keras 。底层使用Tensorflow做为底层库 。
本次使用的模型是简单的卷积神经网络模型 。后面也会使用更加复杂的模型
卷积神经网络(Convolutional Neural Network,CNN)是一种前馈神经网络 。它的人工神经元可以响应一部分覆盖范围内的周围单元 。对于大型图像处理有出色表现 。它包括卷积层(alternating convolutional layer)和池层(pooling layer) 。
python如何实现人脸识别?

文章插图
一般地 。CNN的基本结构包括两层 。其一为特征提取层 。每个神经元的输入与前一层的局部接受域相连 。并提取该局部的特征 。一旦该局部特征被提取后 。它与其它特征间的位置关系也随之确定下来;其二是特征映射层 。网络的每个计算层由多个特征映射组成 。每个特征映射是一个平面 。平面上所有神经元的权值相等 。特征映射结构采用影响函数核小的sigmoid函数作为卷积网络的激活函数 。使得特征映射具有位移不变性 。此外 。由于一个映射面上的神经元共享权值 。因而减少了网络自由参数的个数 。卷积神经网络中的每一个卷积层都紧跟着一个用来求局部平均与二次提取的计算层 。这种特有的两次特征提取结构减小了特征分辨率 。
python如何实现人脸识别?

文章插图
配置参数
python如何实现人脸识别?

文章插图
python如何实现人脸识别?

文章插图
加载数据
训练模型的时候 。我们可以选择两种方式来生成我们的训练数据 。一种是直接全部载入内存 。然后开始训练 。一种是定义一个数据生成器 。然后利用 fit_generator 分批加载数据来训练 。
因为样本是5万张 。但是只有200多M 。可以一次性载入内存 。
最后会生成pickle文件 。python的pickle模块实现了基本的数据序列和反序列化 。通过pickle模块的序列化操作我们能够将程序中运行的对象信息保存到文件中去 。永久存储;通过pickle模块的反序列化操作 。我们能够从文件中创建上一次程序保存的对象 。

推荐阅读