位置: 编程技术 - 正文

OpenCV实现人脸识别(opencv人脸识别模型训练)

编辑:rootadmin

推荐整理分享OpenCV实现人脸识别(opencv人脸识别模型训练),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:opencv进行人脸识别,opencv人脸识别流程,opencv 人脸识别,使用opencv进行人脸识别的三种方法,opencv进行人脸识别,opencv3人脸识别,opencv3人脸识别,opencv3人脸识别,内容如对您有帮助,希望把文章链接给更多的朋友!

主要有以下步骤:

1、人脸检测

2、人脸预处理

3、从收集的人脸训练机器学习算法

4、人脸识别

5、收尾工作

人脸检测算法:

基于Haar的脸部检测器的基本思想是,对于面部正面大部分区域而言,会有眼睛所在区域应该比前额和脸颊更暗,嘴巴应该比脸颊更暗等情形。它通常执行大约个这样的比较来决定所检测的对象是否为人脸,实际上经常会做上千次。

基于LBP的人脸检测器基本思想与基于Haar的人脸检测器类似,但它比较的是像素亮度直方图,例如,边缘、角落和平坦区域的直方图。

这两种人脸检测器可通过训练大的图像集找到人脸,这些图像集在opencv中存在XML文件中以便后续使用。

这些级联分类检测器通常至少需使用个独特的人脸图像和个非人脸图像作为训练,训练时间一般LBP要几个小时,

Haar要一个星期。

项目中的关键代码如下:

人脸预处理:

实际中通常训练(采集图像)和测试(来自摄像机图像)的图像会有很大不同,受(如光照、人脸方位、表情等),

结果会很差,因此用于训练的数据集很重要。

人脸预处理目的是减少这类问题,有助于提高整个人脸识别系统的可靠性。

人脸预处理的最简单形式就是使用equalizeHist()函数做直方图均衡,这与人脸检测那步一样。

实际中,为了让检测算法更可靠,会使用面部特征检测(如,检测眼睛、鼻子、嘴巴和眉毛),本项目只使用眼睛检测。

使用OpenCV自带的训练好的眼部探测器。如,正面人脸检测完毕后,得到一个人脸,在使用眼睛检测器提取人脸的左眼区域和右眼区域,并对每个眼部区域进行直方图均衡。

这步涉及的操作有以下内容:

1、几何变换和裁剪

人脸对齐很重要,旋转人脸使眼睛保持水平,缩放人脸使眼睛之间距离始终相同,平移人脸使眼睛总是在所需高度上水平居中,

裁剪人脸外围(如图像背景、头发、额头、耳朵和下巴)。

2、对人脸左侧和右侧分别用直方图均衡

3、平滑

用双边滤波器来减少图像噪声

4、椭圆掩码

OpenCV实现人脸识别(opencv人脸识别模型训练)

将剩余头发和人脸图像背景去掉

项目中的关键代码如下:

收集并训练人脸:

一个好的数据集应包含人脸变换的各种情形,这些变化可能出现在训练集中。如只测试正面人脸,则只需训练图像有完全正面人脸即可。

因此一个好的训练集应包含很多实际情形。

本项目收集的图像之间至少有一秒的间隔,使用基于L2范数的相对错误评价标准来比较两幅图像素之间的相似性。

再与收集新人脸的阈值相比来决定是否收集这次图像。

可用很多技巧来获取更多的训练数据,如,使用镜像人脸、加入随机噪声、改变人脸图像的一些像素、旋转等。

对每个人收集到足够多的人脸图像后,接下来必须选择适合人脸识别的机器学习算法,通过它来学习收集的数据,从而训练出一个人脸识别系统。

人脸识别算法:

1、特征脸,也称PCA(主成分分析)

2、Fisher脸,也称LDA(线性判别分析)

3、局部二值模式直方图(Local Binary Pattern Histograms,LBPH)

其他人脸识别算法:www.face-rec.org/algorithms/

OpenCV提供了CV::Algorithm类,该类有几种不同的算法,用其中一种算法就可以完成简单而通用的人脸识别。

OpenCV的contrib模板中有一个FaceRecognizer类,它实现以上这些人脸识别算法。

这一代码将执行所选人脸识别的整个训练算法。

人脸识别:

1、人脸识别:通过人脸来识别这个人

可以简单调用FaceRecognizer::predict()函数来识别照片中的人,

int identity = model->predict(preprocessedFace);

它带来的问题是它总能预测给定的人(即使输入图像不属于训练集中的人)。

解决此问题的办法是制定置信度标准,置信度过低则可判读是一个不认识的人。

2、人脸验证:验证图像中是否有想找的人

为了验证是否可靠,或者说系统是否能对一个不认识的人进行正确识别,这需要进行人脸验证。

这里计算置信度的方法是:

使用特征向量和特征值重构人脸图,然后将输入的图像与重构图进行比较。如果一个人在训练集中有多张人脸图,用特征向量和特征

值重构后应该有非常好的效果,如果没有则差别很大,表明它可能是一个未知的人脸。

subspaceProject()函数将人脸图像映射到特征空间,再用subspaceReconstruct()函数从特征空间重构图像。

收尾:交互式GUI

利用OpenCV函数很容易绘制一些组件,鼠标点击等。

标签: opencv人脸识别模型训练

本文链接地址:https://www.jiuchutong.com/biancheng/377109.html 转载请保留说明!

上一篇:python使用opencv进行人脸识别(opencv for python)

下一篇:Python贪吃蛇游戏编写代码(python贪吃蛇游戏代码怎么运行)

  • 税务局代个人开票
  • 没有社保可以缴费吗
  • 管理费用月末结转总账登记图
  • 设备折旧费用的作用
  • 赞助给客户年节祝福语
  • 退款扣除的手续费怎么查
  • 销售企业需要交的营业税
  • 非居民企业所得税源泉扣缴管理暂行办法
  • 如何看发票是否被抵扣
  • 什么时候计提减值
  • 劳务外包与劳务派遣公司
  • 员工探亲路费报销交个税吗
  • 增量留底税额怎么进行确定
  • 应收预收账款属于什么科目
  • 收到银行存款利息记账凭证怎么写
  • 网页显示不全怎么回事
  • 员工垫付公司钱怎么入账
  • linux中的util值很高
  • win10怎么样禁止电脑运行某个程序
  • 认缴出资额日期没有是什么意思
  • 受托方代收代缴的消费税计入成本吗
  • 怎么用onekey重装系统
  • windows没有搜索
  • linux attached
  • 公司账户上的钱怎么转到老板账户上
  • 民营非盈利机构
  • 担保公司代偿账户是什么
  • 个体工商户减免个人所得税政策
  • 资产减值会计处理论文
  • 企业注销未抵扣完的进项税额怎么处理做账
  • php 遍历树
  • 如何设置长期有效的群二维码安卓手机
  • [九]深度学习Pytorch-transforms图像增强(剪裁、翻转、旋转)
  • nodejs 2020
  • 一学就会的人是天才吗
  • php类型约束用法有哪些
  • 出口退税哪些税不退
  • 报废产品需要入库吗
  • 增值税发票有什么用途和作用
  • 个人提供劳务需要开发票吗
  • 没收的定金收入怎么入账
  • lldb python
  • mysql存储过程之错误处理
  • 2020年增值税税收政策
  • 技术服务费该怎么收
  • 损益类科目的账务处理
  • 应收帐款的帐务处理流程
  • 差旅费科目设置
  • 受疫情影响较大的困难行业企业2020
  • 收到法院退回的诉讼费怎么做账
  • 企业退休返聘人员怎么规避风险
  • 存货账面价值的确定
  • 金税盘税费减免分录
  • 会计忘记申报税款会有什么影响
  • 通过sql存储过程发送邮件的方法
  • mysql新手视频教学
  • 如何保证系统异常状态
  • ubuntu怎么开启root
  • mac可以上qq但是打不开网页
  • openbsd4.1+apache+mysql+php 环境配置
  • 网络硬盘在哪
  • Win8.1如何能将任意文件隐藏到普通图片中例如JPG图片
  • linux ifcon
  • 电脑防火墙在哪里设置
  • 如何去掉windows7开机密码
  • win7系统如何关闭开机自动启动软件
  • windows8怎么去除广告
  • windows8用的人少
  • 原生封装ajax
  • cocos2dx 2.2.2
  • shell脚本数组的用法
  • nodejs 异步io底层原理
  • Python3.6正式版新特性预览
  • 安卓自定义app
  • javascript面向对象编程指南
  • 购买的环保设备未使用检察建议
  • 新都税务局咨询电话号码
  • 河北国家税务局官网站
  • 十堰市税务大厅
  • 四川残疾人社保补贴
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设