【深度学习系列】用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)是一种以语言特性确认说话人身份的技术。 ...

3564
来自专栏机器之心

贾扬清撰文详解Caffe2:从强大的新能力到入门上手教程

选自 Nvidia Blog 作者:Aaron Markham、贾扬清 机器之心编译 昨天,Facebook 推出了 Caffe2,一个兼具表现力、速度和模块性...

3183
来自专栏腾讯大讲堂的专栏

Mariana DNN 多 GPU 数据并行框架

本文是腾讯深度学习系列文章的第二篇,聚焦于腾讯深度学习平台Mariana中深度神经网络DNN的多GPU数据并行框架。 深度神经网络(Deep Neural Ne...

2485
来自专栏程序员宝库

AI 玩微信小游戏跳一跳的正确姿势,Auto-Jump 算法详解

来源:肖泰洪 + 安捷 链接:zhuanlan.zhihu.com/p/32636329 ? 最近,微信小游戏跳一跳可以说是火遍了全国,从小孩子到大孩子仿佛每...

3875
来自专栏月色的自留地

从锅炉工到AI专家(2)

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

10月机器学习开源项目Top10

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

1043
来自专栏PPV课数据科学社区

R语言与数据分析之二:绘图

? 图形展示是最高效且形象的数据描述手段,因此巧妙的图像展示是高质量数据分析报告的必备内容,因此强大的图形展示功能也是统计分析软件的必备功能。R语言提供了强大...

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

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

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

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

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

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

37216
来自专栏QQ大数据团队的专栏

神盾推荐系统的超大规模参数学习探究

前言 本文介绍我们在推荐系统领域的大规模参数学习研究. 问题的起源是探究给每一个用户学习一个 ID 层级的表征, 而在千万量级的业务上, 学习如此特征将会牵涉...

7.4K9

扫码关注云+社区

领取腾讯云代金券