前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >人脸识别(二)——训练分类器

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

作者头像
小小詹同学
发布2018-04-13 16:40:18
2.2K0
发布2018-04-13 16:40:18
举报
文章被收录于专栏:小詹同学小詹同学

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

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

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2018-01-28,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 小小詹同学 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
人脸识别
腾讯云神图·人脸识别(Face Recognition)基于腾讯优图强大的面部分析技术,提供包括人脸检测与分析、比对、搜索、验证、五官定位、活体检测等多种功能,为开发者和企业提供高性能高可用的人脸识别服务。 可应用于在线娱乐、在线身份认证等多种应用场景,充分满足各行业客户的人脸属性识别及用户身份确认等需求。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档