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

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

一、关于ORL人脸数据库

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

33.jpg


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


34.jpg

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


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

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

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

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

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


35.jpg


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


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

1.  一个小测试

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

36.jpg

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

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

37.jpg



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

38.jpg


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

39.jpg


2.    数据量较大的情况

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


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

40.jpg


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


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

41.jpg42.jpg

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


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

相关文章
|
2天前
|
存储 传感器 编解码
从基础到人脸识别与目标检测
前言 从本文开始,我们将开始学习ROS机器视觉处理,刚开始先学习一部分外围的知识,为后续的人脸识别、目标跟踪和YOLOV5目标检测做准备工作。我采用的笔记本是联想拯救者游戏本,系统采用Ubuntu20.04,ROS采用noetic。 颜色编码格式,图像格式和视频压缩格式 (1)RGB和BGR:这是两种常见的颜色编码格式,分别代表了红、绿、蓝三原色。不同之处在于,RGB按照红、绿、蓝的顺序存储颜色信息,而BGR按照蓝、绿、红的顺序存储。 rgb8图像格式:常用于显示系统,如电视和计算机屏幕。 RGB值以8 bits表示每种颜色,总共可以表示256×256×256=16777216种颜色
26 12
|
5月前
|
机器学习/深度学习 数据采集 监控
人脸识别与检测
人脸识别与检测
97 4
|
6月前
|
机器学习/深度学习 算法 安全
提高人脸识别识别率技术
智能工厂趋势中,人脸识别技术在提升生产效率和安全管理方面展现应用价值。技术挑战包括环境光线控制、背景干扰、数据多样性和算法优化。解决方案涉及模型选择、实时性与准确性平衡,以及使用标签平滑技术减轻模型过拟合,提高泛化能力。通过训练优化的CNN模型,结合数据增强和标签平滑,实现更精准的人脸识别系统。
|
6月前
|
机器学习/深度学习 监控 安全
人脸识别
人脸识别
184 1
|
机器学习/深度学习 算法 开发工具
视觉智能平台的人脸识别功能主要是用于识别人脸
视觉智能平台的人脸识别功能主要是用于识别人脸
64 1
|
机器学习/深度学习 监控 安全
人脸识别之一
人脸识别之一
82 1
|
Java Linux 开发工具
虹软人脸识别系统
虹软人脸识别系统
289 0
|
存储 监控 安全
人脸识别
人脸识别是一种通过计算机技术识别和验证人脸的过程。它基于对人脸图像的特征提取和比对,用于识别个体身份或验证其身份的准确性。以下是人脸识别的原理、技术应用和示例演示的简要介绍:
154 1
|
小程序 计算机视觉
FaceApi 人脸识别技术点
FaceApi 人脸识别技术点
159 0
|
计算机视觉
人脸识别之facenet解读与技术点
人脸识别之facenet解读与技术点
134 0
下一篇
无影云桌面