专栏首页小詹同学人脸识别(二)——训练分类器

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

上一篇简单整理了下人脸识别的相关基础知识,这一篇将着重介绍利用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函数进行识别,和库内数据比较即可。

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

本文分享自微信公众号 - 小小詹同学(xiaoxiaozhantongxue),作者:Mr_cplus

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2018-01-28

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

我来说两句

0 条评论
登录 后参与评论

相关文章

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

    这是关于人脸的第②篇原创!(源码在第三篇) 上一篇简单整理了下人脸识别的相关基础知识,这一篇将着重介绍利用pencv(2.4.9)已有的模型进行分类器训练。 ...

    小小詹同学
  • 人脸识别(一)——从零说起

    人脸识别的英文名称是 Face Recognition,前段时间查找资料学的时候发现,不少人将人脸识别和人脸检测(Face Detection)混为一谈,很大...

    小小詹同学
  • 人脸识别(一)——从零说起

    这是关于人脸的第①篇原创!(源码在第三篇) 人脸识别的英文名称是 Face Recognition,前段时间查找资料学的时候发现,不少人将人脸识别和人脸检测(...

    小小詹同学
  • 人脸识别登录认证:加强系统认证

    早在很久之前,公司同事已经实现了在网站的登陆模块加上人脸识别认证登陆功能,自己也就萌生了动手在自己的系统中加上这样的功能,通过不断的学习和搜所资料,发现...

    乐哉开讲
  • 基于深度卷积神经网络进行人脸识别的原理是什么?

    我这里简单讲下OpenFace中实现人脸识别的pipeline,这个pipeline可以看做是使用深度卷积网络处理人脸问题的一个基本框架,很有学习价值。 它的...

    用户1332428
  • 【星球知识卡片】人脸属性编辑都有哪些核心知识点,如何长期进行学习

    大家好,欢迎来到我们的星球知识小卡片专栏,本期给大家分享人脸属性编辑的核心技术点。

    用户1508658
  • [深度应用]·基于卷积神经网络人脸识别的原理及应用开发(转)

    这里简单讲下OpenFace中实现人脸识别的pipeline,这个pipeline可以看做是使用深度卷积网络处理人脸问题的一个基本框架,很有学习价值,它的结构如...

    小宋是呢
  • 一篇文章搞懂人脸识别的十个概念

    笔者整理了一些常见人脸技术的基本概念,主要用于帮助非基础研究读者对人脸相关技术有一个更深入的了解,方便后续的交流与合作。

    汪铖杰
  • 浅出深度学习系列-说说“人脸识别”

    们生存的这个星球上,居住着70多亿人。每个人的面孔组成部分相同,它们之间的大体位置关系也是固定的,并且每张脸的大小差异也不大。然而,它们居然就形成了那么复杂的模...

    数据猿
  • 推荐|研究人脸识别技术必须知道的十个基本概念

    1. 人脸检测 “人脸检测(Face Detection)”是检测出图像中人脸所在位置的一项技术。 人脸检测算法的输入是一张图片,输出是人脸框坐标序列(0个人...

    IT派

扫码关注云+社区

领取腾讯云代金券