上个案例中我们讲了如何用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/