人脸识别(二)——训练分类器

这是关于人脸的第②篇原创!(源码在第三篇)

上一篇简单整理了下人脸识别的相关基础知识,这一篇将着重介绍利用pencv(2.4.9)已有的模型进行分类器训练。

一、关于ORL人脸数据库

ORL是一个40个人,每人采取10张人脸头像构成的一个人脸数据库,尺寸全部为92*112。分为40个文件夹,即每个文件夹中包含有10张人脸照片,为pgm格式。

其中s41为拍好并处理好的自己人脸图像。

值得一提的是,图片为pgm格式,许多软件无法读取,但是别忘了我们的opencv可是图片处理能力十分强大的噢!如果想看下这些人脸图是怎样的,可以使用opencv的imshow函数进行读取哦……

二、添加进自己的人脸数据

上面截图中可以看出,笔者采集了自己的照片,这一步需要有几个注意点:

1.放入的图片格式不一定要pgm格式

2.放入的图片尺寸大小一定要一致(92*112)

3.图片不需要自己一张张的拍摄,可以写一段程序进行拍摄,并进行预处理达到要求, 之后放到ORL库里一起整合。

参考拍照程序:(为方便截图取消了代码行隔开)

此程序拍得的照片已经将人脸处理成了92*112的大小。

三、利用已有模型进行训练

1. 一个小测试

笔者参照了不少博客大神,受益匪浅。在正式开始实践前,先做了个小测试,即用较少的人脸数据进行训练和识别测试。做小测试的时候,我是首先从ORL中选择了2个人的各自5张图片和自己的5张图片,共3个人15张人脸图片进行训练。(11-15.jpg对应的是我自己,即上图中1-5.jpg,此处人为复制出来进行命名进行小测试)

其中a1-a5对应一类(0),b1-b5对应一类(1 ),c1-c5对应一类(2),之后要做的就是将这些人脸图压进栈,即将照片(image.表示人脸图像)和标签(label表分类结果)下面以a类为例压进栈。

在之后就是模型的训练了,opencv自带的Facerecognizer类。其中有人脸识别接下来会用到的几个函数(train、load、save、predict)。

同时opencv自带了三个人脸识别算法:Eigenfaces,Fisherfaces 和局部二值模式直方图 (LBPH)。直接调用这三种算法很简单,一般都是三句话足够:

之后就可以直接测试了,以第一种模型为例:

2. 数据量较大的情况

小测试中共涉及了15张图片,即使让你人为命名写路径也不算很麻烦,可是人脸识别需要的数据往往很大,这就不可能说人为的去一张张图片的处理了。但是整体的流程和上面小测试是相同的,这里主要介绍一种csv文件的使用方法:

我们需要读取人脸和人脸对应的标签。直接在数据库中读取显然是低效的。所以我们用csv文件读取。csv文件中包含两方面的内容,一是每一张图片的位置所在,二是每一个人脸对应的标签,就是为每一个人编号。这个at.txt就是我们需要的csv文件。生成之后它里面是这个样子的:(指定到人脸存储路径即可)

这里网上有许多教程可以自动生成csv文件,笔者是直接下载别人的,然后查找替换成自己路径下即可,关键我们要学会的是怎么利用csv文件去访问图片和标签。

这里可以参考笔者的程序,先定义子函数,之后在主程序中调用即可:

之后便是一些处理,将摄像头采集到的图像检测出人脸,再将人脸处理成指定格式,调用predict函数进行识别,和库内数据比较即可。

具体全面的程序和项目代码将在下一篇给出!

【往期推荐】

老司机带你用python来爬取妹子图

千元资料免费送——人工智能相关(100G+)

资源福利第三弹——Python等教程(包括部分爬虫入门教程)

程序员面试必备之排序算法汇总(上)

程序员面试必备之排序算法汇总(下)

原文发布于微信公众号 - 小小詹同学(xiaoxiaozhantongxue)

原文发表时间:2018-04-13

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

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

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

TensorFlow的安装与初步了解

今天终于有时间一探滕三福了,TensorFlow(腾三福)是谷歌基于DistBelief进行研发的第二代人工智能学习系统,其命名来源于本身的运行原理。Tenso...

3506
来自专栏大数据文摘

目标检测必须要OpenCV?10行Python代码也能实现,亲测好用!

本文作者和他的团队构建了一个名为ImageAI 的Python库,集成了现今流行的深度学习框架和计算机视觉库。本文将手把手教你构建自己的第一个目标检测应用,而且...

1966
来自专栏AI研习社

让 TensorFlow 估算器的推断提速百倍,我是怎么做到的?

TensorFlow 估算器提供了一套中阶 API 用于编写、训练与使用机器学习模型,尤其是深度学习模型。在这篇博文中,我们描述了如何通过使用异步执行来避免每次...

1412
来自专栏顶级程序员

Caffe源码直播

0.预告 开源项目名称:Caffe—— deep learning framework 语言:C++ 时间:10月22日(周六)早11:00-12:00 参与方...

4839
来自专栏WOLFRAM

Mathematica 11.1.1 中文版已发布

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

TensorFlow必知基础知识​

TensorFlow概要 Google第一代分布式机器学习框架DistBelief1,在内部大规模使用后并没有选择开源。而后第二代分布式机器学习系统Tenso...

4346
来自专栏悦思悦读

数据挖掘: R, Python,Machine Learning,一起学起来!

大数据概念的火爆带动了相关工具方法的流行。大数据工具中,R和Python以其开源、免费、简单易用、大量算法库和社区支持等特质赢得了一众人心。机器学习则以其高大上...

3738
来自专栏人工智能

TensorFlow核心使用要点

正文之前,小梦先来说说什么是TensorFlow。TensorFlow是谷歌研发的第二代人工智能学习系统,可被用于语音识别或图像识别等多项机器深度学 习领域。T...

2337
来自专栏数据小魔方

think-cell chart系列9——折线图

今天跟大家分享think-cell chart系列的第9篇——折线图。 折线图是平时用的频率比较高的图表类型的了,下面教大家怎么在think-cell char...

5047
来自专栏吉浦迅科技

TensorRT

作为Inference(推理)端的SDK的工具,TensorRT是可编程的处理加速器,主要是用来部署神经网络到Inference端之前,对于网络进行优化加速,来...

72111

扫码关注云+社区

领取腾讯云代金券