【深度学习系列】用PaddlePaddle进行人脸识别

上个案例中我们讲了如何用PaddlePaddle进行车牌识别的方法,这次的案例中会讲到如何用PaddlePaddl进行人脸识别,在图像识别领域,人脸识别也属于比较常见且成熟的方向了,目前也有很多商业化的工具进行人脸识别。广义的人脸识别实际包括构建人脸识别系统的一系列相关技术,包括人脸图像采集、人脸定位或检测、人脸识别预处理、身份确认以及身份查找等;而狭义的人脸识别特指通过人脸进行身份确认或者身份查找的技术或系统。 人脸识别是一项热门的计算机技术研究领域,它属于生物特征识别技术,是对生物体(一般特指人)本身的生物特征来区分生物体个体。本篇主要内容如下:   1)获取数据:可通过手机/电脑等拍摄自己的头像,也可通过网站下载已收集好的人脸数据集;   2)检测人脸:利用dlib、opencv对人脸进行检测;   3)训练模型:根据检测后的图片,用PaddlePaddle构建卷积神经网络训练模型;   4)模型测试:拍摄一张新头像,用模型进行识别。


项目流程

简单解释一下每一步的过程:

  • 图像获取:可以通过摄像镜把人脸图像采集下来或图片上传等方式。
  • 人脸检测:给定任意一张图片,找到其中是否存在一个或多个人脸,并返回图片中 每个人脸的位置、范围及特征等。
  • 人脸定位:通过人脸来确定位置信息。
  • 预处理:基于人脸检测结果,对图像进行处理,为后续的特征提取服务。系统获取到的人脸图像可能受到各种条件的限制或影响,需要对进行大小缩放、旋转、拉伸、灰度变换规范化及过滤等图像预处理。由于图像中存在很多干扰因素,如外部因素:清晰度、天气、角度、距离等;目标本身因素:胖瘦,假发、围巾、银镜、表情等。所以神经网络一般需要比较多的训练数据,才能从原始的特征中提炼出有意义的特征。
  • 特征提取:就是将人脸图像信息数字化,把人脸图像转换为一串数字。特征提取是一项重要内容,传统机器学习这部分往往要占据大部分时间和精力,有时虽然花去了时间,效果却不一定理想,好在深度学习很多都是自动获取特征。
  • 人脸特征:找到人脸的一些关键特征或位置,如眼镜、嘴唇、鼻子、下巴等的位置,利用特征点间的欧氏距离、曲率和角度等提取特征分量,最终把相关的特征连接成一个长的特征向量。
  • 比对识别:通过模型回答两张人脸属于相同的人或指出一张新脸是人脸库中的谁的脸。
  • 输出结果:对人脸库中的新图像进行身份认证,并给出是或否的结果。

 获取数据

获取其他人脸图片集,需要收集一个其他人脸的图片集,只要不是自己的人脸都可以,可以在网上找到,这里我给出一个我用到的图片集:

网站地址:http://vis-www.cs.umass.edu/lfw/ 图片集下载:http://vis-www.cs.umass.edu/lfw/lfw.tgz

先将下载的图片集,解压到项目目录下的lfw目录下,也可以自己指定目录(修改代码中的input_dir变量),程序中使用的是dlib来识别人脸部分,也可以使用opencv来识别人脸,在实际使用过程中,dlib的识别效果比opencv的好,但opencv识别的速度会快很多,获取10000张人脸照片的情况下,dlib大约花费了1小时,而opencv的花费时间大概只有20分钟。opencv可能会识别一些奇怪的部分,所以综合考虑之后我使用了dlib来识别人脸。

  1)导入需要的包,这里使用dlib库进行人脸识别。

  2)定义输入、输出目录,文件解压到当前目录./data/my_faces目录下。 #我的头像(可以用手机或电脑等拍摄,尽量清晰、尽量多,越多越好)上传到以下input_dir目录下,output_dir为检测以后的头像

  3)判断输出目录是否存在,不存在,则创建。


 检测人脸


 训练模型


 模型测试


总结

参考文献:

1.http://www.feiguyunai.com/index.php/2017/11/25/pythonai-dl-facerecong01/

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏量子位

如何用3D-CNN确认说话人身份?这里有Code+Paper

安妮 编译自 Github 量子位出品 | 公众号 QbitAI 说话人确认(Speaker Verification)是一种以语言特性确认说话人身份的技术。 ...

3524
来自专栏数据小魔方

excel数据分析工具库系列三|趋势平滑

今天要跟大家分享的内容是数据分析工具库系列三——趋势平滑! 在时间序列数据中,往往存在很多周期性趋势以及随机干扰因素,给我们的分析工作工作带来很多不便。 当然有...

3116
来自专栏月色的自留地

从锅炉工到AI专家(2)

1814
来自专栏AI科技大本营的专栏

机器学习不神秘!手把手教你用R语言打造文本分类器

简单安装几个R软件包,你就直接在自己电脑上打造出一个文本分类器,用进行机器来评估人类写作。 本文是一篇极简的上手教程,它想用清晰明了的步骤告诉读者,机器学习不...

36516
来自专栏AI研习社

AI 玩微信跳一跳的正确姿势——跳一跳 Auto-Jump 算法详解

最近,微信小游戏跳一跳可以说是火遍了全国,从小孩子到大孩子仿佛每一个人都在刷跳一跳,作为无(zhi)所(hui)不(ban)能(zhuan)的 AI 程序员,我...

3908
来自专栏腾讯大数据的专栏

深度神经网络DNN的多GPU数据并行框架 及其在语音识别的应用

深度神经网络(Deep Neural Networks, 简称DNN)是近年来机器学习领域中的研究热点,产生了广泛的应用。DNN具有深层结构、数千万参数需要学...

2607
来自专栏CreateAMind

深度神经网络惊人的'注意力'能力-附论文解读

792
来自专栏AI科技大本营的专栏

手动特征工程已经OUT了!自动特征工程才是改进机器学习的方式

【导读】近年来,我们在自动模型选择和超参数调优方面取得了进展,但机器学习流程中最重要的方面-- 特征工程,在很大程度上被我们所忽略。在本文中,我们将使用 Fea...

1683
来自专栏机器学习算法与Python学习

10月机器学习开源项目Top10

过去一个月里,我们对近 250 个机器学习开源项目进行了排名,并挑选出热度前 10 的项目。这份清单的平均 github star 数量高达 1345,涵盖了包...

993
来自专栏智能计算时代

使用TensorFlow实现神经网络的介绍

介绍 如果您一直在追踪数据科学/机器学习,您将不会错过深度学习和神经网络周围的动态。组织正在寻找具有深度学习技能的人,无论他们在哪里。从竞争开始到开放采购项目和...

3364

扫码关注云+社区