位置: 编程技术 - 正文

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贪吃蛇游戏代码怎么运行)

  • 稳岗返还资金最新账务处理
  • 增值税税额怎么算出来
  • 个税系统里的免税收入在哪删除
  • 制造业的税率是多少啊
  • 出口退税普票
  • 税控盘服务费减免税会计分录
  • 固定资产提折旧 账务处理
  • 房贷利息抵个税细则 两套房
  • 公司员工的车外地的停车费怎么做分录
  • 保险公司多赔付的钱需要退还吗
  • 工会经费购买发的东西要算个税吗?
  • 个人申请补交个税怎么写
  • 劳务派遣差额征税5%
  • 广告制作需要缴纳文化事业建设税吗?
  • 高新企业研发投入后产出增加
  • 服装外贸进出口
  • 注销税务财务报表模板
  • 公司买的固定资产还没使用
  • 计提其他应收款坏账
  • 员工意外伤害保险怎么买
  • 库存商品入库的会计科目
  • iphone有没有
  • win7为什么现在不能用了
  • 生产车间设备检测费计入什么科目
  • php调用sql
  • 政府土地购买流程
  • 企业投资入股的几种方式
  • 二手车交易税咋算
  • 房地产企业前期物业费可否税前扣除
  • 销售费用里面的支付的安装人工费汇算清缴时计入哪里
  • npm info: node: --openssl-legacy-provider is not allowed in NODE_OPTIONS
  • 运输公司的账务处理
  • 最大规模的科技公司
  • php闭包和回调函数
  • 阿尔卑斯山环保
  • 长期股权投资会影响利润吗
  • 反斜杠python
  • 报错专业怎么补救
  • opencv图像识别特定形状
  • php中url什么意思
  • 应纳税所得额100-300万税率
  • 固定资产减值损失属于营业外支出吗
  • 企业所得税季度申报表怎么填
  • 判断文件是否存在,存在则删除
  • mysql自连接查询各个部门经理的工资
  • 材料采购账户的借方登记什么
  • 速达建账套期初数据
  • 个税哪种申报不用交个税的
  • 公户网银丢了
  • 怎样识别真假增值税发票
  • 固定资产减少处理
  • 融资租赁会计处理中,承租人与出租人之间有哪些联系?
  • 研发折旧怎么分类
  • 工资代发户怎么开
  • 劳务公司机械租赁费列入什么费用
  • 现金短缺无法查明计入什么科目
  • 失业人员的养老金
  • 资产负债表和科目余额表怎么核对
  • 印花税自查补缴情况说明补以前年度
  • sqlserver备份数据库命令
  • 安装sql2008时出现以下错误
  • 电脑主机windows 7
  • 安装centos图形界面
  • windows7升级到win8
  • win7电脑耳机插上还是外放
  • win8显示wifi关怎么办
  • Ext JS 4实现带week(星期)的日期选择控件(实战一)
  • Linux Shell+Curl网站健康状态检查脚本,抓出中国博客联盟失联站点
  • js点击按钮返回前一个页面
  • jqueryvalidate验证
  • 利用感情骗取钱财算诈骗吗
  • python遍历列表判断相同元素
  • jQuery simplePage+AJAX plus分页插件用法实例
  • python怎么用数组
  • js操作对象的方法
  • android怎么运行
  • jquery知识点总结
  • 国家税务网上办税平台
  • 国家税务总局2016年17号公告
  • 农村复耕复产
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设