目录

4 数据提取算法

4.1 数据提取目的

4.2 数据提取算法

5 交叉验证

5.1 交叉验证原理

A.交叉验证

B.交叉验证的用途

C.K-folds cross validation

5.2 k折交叉验证结果分析

6 程序演示界面

总结


4 数据提取算法

4.1 数据提取目的

由于数据来源是参数矩阵和对应的文字特征说明,故需要数据提取将数据处理成想要的数据矩阵,可借用MATLAB, python或者Excel处理数据,方便后续处理。本节通过说明程序中的如何实现faceR,faceS,faceDR,faceDS数据的提取与整理。

4.2 数据提取算法

A.转文本变成列向量

将faceDR全部复制转成txt文件,通过调用MATLAB中的textread函数生成列向量datafaceDR(22547 x 1)。

B.查找hat对应的位置

遍历datafaceDR有hat的行号,调用strfind函数。

C.通过比较得出有hat的编号

接着有hat的行号向上寻找30行内数字(除了人脸编号,其他都是文本),并通过比较选出最大的数字,也就是hat真正编号。其中30行只是预留,可以按照自己识别的特征数进行调整。

D.剔除hat和无效编号,得出无hat的编号

有缺失数据(如1228, 1808, 4056, 4135, 4136, and 5004),建议将有缺失数据的人脸记录不予考虑。

E.编号重新整理

将1223编号整理成参数矩阵的行号,便于参数矩阵的整理。

F.将hat和无hat的参数放进两个不同的数据

将不同类的参数放进两个矩阵,并且生成一个矩阵(有hat放前面和无hat放后面),便于后续的特征提取和分类器分类。测试集也是执行以上相同操作。

5 交叉验证 

5.1 交叉验证原理

A.交叉验证

交叉验证(Cross-Validation)可能是数据科学家在进行统计分析时最重要的技术之一,因为在实际中经常需要验证一个ML模型的稳定性--模型在新数据集上的泛化能力。它需要确保由数据集得到的ML模型已经获得数据集大部分正确的信息,并且不能包含太多噪声,换句话说,它的偏差和方差是较小的。本文将要介绍交叉验证的相关概念。

交叉验证是一种模型的验证技术用于评估一个统计分析模型在独立数据集上的概括能力。主要用于在使用ML模型进行预测时,准确衡量一个模型在实际数据集上的效果。具体来说就是将整个数据集划分为若干部分,一部分用以训练模型、一部分用以测试最终模型的优劣、一部分验证模型结构和超参数。

交叉验证的目标是确定一个原数据集的子集,去限制ML模型在训练阶段的一些问题,比如模型的过拟合、欠拟合等,同时提供了一种判断标准去衡量模型在独立数据集上的泛化能力。值得注意的是,数据集和测试集必须是独立同分布,不然反而会得到很槽糕的模型。

B.交叉验证的用途

 交叉验证可以有效评估模型的质量。

 交叉验证可以有效选择在数据集上表现最好的模型。

 交叉验证可以有效避免过拟合和欠拟合。

⚫ 欠拟合(Underfitting)

是指模型不能获取数据集的主要信息,在训练集及测试集上的表示都十分糟糕。

⚫ 过拟合(Overfitting)

是指模型不仅获取了数据集的信息还提取了噪声数据的信息是的模型在训练集有非常好的表现但在测试集上的表现及其糟糕。 所以可以得出一个较为草率的结论:一个最佳的ML模型在训练集和测试集上都有较好的表现。

C.K-folds cross validation

当没有足够的数据用于训练模型时,划分数据的一部分进行验证会导致得到模型欠拟合,减少训练集,会使模型丧失部分数据集中重要的特征或趋势,这会增加偏差导致的误差。因此,我们需要一种方法来提供样本集训练模型并且留一部分数据集用于验证模型,k折交叉验证(K-Fold)因此被提出。

k折交叉验证在进行k次交叉验证之后,使用k次平均识别率作为整个模型的得分。每个数据在验证集中出现一次,并且在训练中出现k-1次。这将显著减少欠拟合,因为使用了数据集中的大多数的数据进行训练,同时也降低了过拟合的可能,因为也使用了大多数的数据进行模型的验证。

当我们需要对一些小的数据集进行统计分析时,K-Fold是一个好的选择,在进行k次交叉验证时能获得足够多的模型的质量差异和不同的最佳参数。一般来说,经过长期的经验积累,我们选择或,以产生既不受过高偏差也不受过高偏差影响的测试误差估计。

5.2 k折交叉验证结果分析

接下来是将faceR样本分别分为K=5,K=10进行交叉验证,由于帽子和眼镜的特征可能分布不均,故用性别作为交叉验证的识别对象。由于J2判据和FLDA的特征提取有些思路相似,故下面采用J2判据对各个分类器进行交叉验证。

由于交叉验证是一种模型的验证技术用于评估一个统计分析模型在独立数据集上的概括能力。主要用于在使用ML模型进行预测时,准确衡量一个模型在实际数据集上的效果。从上面的k折交叉验证结果看,能适合随机性越大的模型越好,故随机森林和决策树结果是最好的。

那排除能适合随机性越大的分类器来看,其SVM和KNN的标准差相对较小,而且其平均准确率都属于几个分类器平均以上。故交叉验证的结果可知,随机森林和决策树的交叉验证结果是最好的,但如果分类器不设随机性时,属SVM和KNN。再结合前面运行时间来看,KNN分类器应属于与J2判据特征提取结合得最好的分类器,而且其适应能力更广泛。

6 程序演示界面

为了程序更容易操作运行,在完成上面的人脸识别的基础上,做了个小界面。界面如下所示

其交叉验证中K=10,其中眼镜在交叉验证的时候会报错。这是因为faceR的数据分成10组测试时,由于在1878-2500中间,只有1878, 1940, 2286 ,2292,2456是有眼镜的;在第五组时,即2023-2223作为测试集进行交叉验证,但有上述可知,I=5第五组的测试集中都是全没戴眼镜,即作为空矩阵,故程序报错。这其实是跟样本分布有关,可以适当将样本进行调整再进行测试或者K改为5,保证每个交叉验证样本中有眼镜和没眼镜的数据。

总结

本文实现了对关于帽子的人脸识别系统设计基本要求,用有监督学习机制设计并实现模式识别方法,用于进行人脸面部特征识别。其特征选取算法为基于欧氏距离J2判据,分类器为SVM。用MATLAB作为编程实现人脸识别,最终识别率为96.34%。

另外对传统SVM加入核函数进行了改进,不仅保持识别准确度高和稳定,而且其运行时间比传统的SVM快了近50倍。故后续SVM分类器的对比都是基于加入核函数后的SVM分类器作为对比。

另外,还完成了对其他特征:戴眼镜(是、否),性别(男性、女性)做分类,采用了基于欧氏距离J2判据和FLDA的两种特征提取算法作对比,并利用分类器(包括SVM,随机森林,贝叶斯,集成方法,决策树,KNN,逻辑回归,最小距离分类器)进行人脸识别。最后用交叉验证的方法对分类器进行评估分析,得出随机森林,决策树,KNN是较为良好的分类。综合性能来说,KNN是属于最优的分类器。

其中,在做性别的分类时出现识别率偏低情况。分析得知做性别的二分类对特征提取和分类器的要求要比戴帽子和眼镜的高很多,故其性别识别率会偏低一些。

上一章:人脸识别系统设计 -- 基于J2判据和FLDA的多分类器的人脸识别系统设计论文报告(二)_对不起,我还只是小孩的博客-CSDN博客

仿真文件(所有组合包括KL,共6*3*7种组合):人脸识别系统设计--基于J2判据和FLDA的多分类器的人脸识别系统设计-机器学习文档类资源-CSDN下载

matlab(所有组合包括KL):链接:https://pan.baidu.com/s/18MKYYTW1soczEwmY5yCQOg?pwd=8878 
提取码:8878

word报告:链接:https://pan.baidu.com/s/16WBax77NbO-9v2cj7tsKdg?pwd=8878 
提取码:8878

参考文献

[1] 赵丽红. 人脸检测和识别算法的研究与实现[D].东北大学,2006.

[2] 田海军. 基于支持向量机的人脸识别技术研究与实现[D].国防科学技术大学,2009.

[3] 杨国亮,李欢.改进的基于特征脸和欧氏距离的人脸识别方法[J].软件导刊,2010,9(03):168-170.

[4] 赵旻. 基于KL算法的人脸识别理论的研究及系统实现[D].四川大学,2004.

[5] 山世光. 人脸识别中若干关键问题的研究[D].中国科学院研究生院(计算技术研究所),2004.

[6] 杨健,杨静宇,叶晖.Fisher线性鉴别分析的理论研究及其应用[J].自动化学报,2003(04):481-493.

[7] 张燕昆,杜平,刘重庆.基于主元分析与支持向量机的人脸识别方法[J].上海交通大学学报,2002(06):884-886.

[8] 杨淑平. 人脸特征提取与识别算法研究[D].中南大学,2013.

[9] 张建明,杨忠,李巍.改进KNN-SVM的性别识别[J].计算机工程与应用,2009,45(04):177-179+224.

[10] 高文强. 基于贝叶斯网络的人脸表情识别算法研究[D].陕西科技大学,2019.

[11] 易军. 人脸识别中的特征提取与度量学习算法研究[D].北京邮电大学,2015.

[12] 唐京海,张有为.基于FLD特征提取的SVM人脸表情识别方法[J].计算机工程与应用,2006(11):10-12.

[13] 袁正海. 人脸识别系统及关键技术研究[D].南京邮电大学,2013.

[14] Noh Yung-Kyun and Zhang Byoung-Tak and Lee Daniel D. Generative Local Metric Learning for Nearest Neighbor Classification.[J]. IEEE transactions on pattern analysis and machine intelligence, 2018, 40(1) : 106-118.

[15] Shen Chunhua et al. Efficient dual approach to distance metric learning.[J]. IEEE transactions on neural networks and learning systems, 2014, 25(2) : 394-406.

[16] 李栋. 基于局部纹理特征融合的面部表情识别方法研究[D].吉林大学,2014.

人脸识别系统设计 -- 基于J2判据和FLDA的多分类器的人脸识别系统设计论文报告(三)(附matlab)相关推荐

  1. YOLO车牌识别,基于深度学习YOLOv3,Yolov4开发,支持车辆车型识别

    YOLO车牌识别,基于深度学习YOLOv3,Yolov4开发,支持车辆车型识别 ID:6999650911717802盐市口会玩的川乌

  2. 优化算法 | 基于粒子群优化算法的Bp神经网络预测21~22赛季NBA总冠军(附MATLAB代码)

    文章目录 前言 一.数据准备 二.基于PSO的Bp神经网络预测 1.粒子表达方式 2.目标函数 3.粒子速度和位置的更新 三.MATLAB代码 四.预测结果 五.代码获取方式 总结 近期你可能错过了的 ...

  3. 【故障诊断】基于粒子群和多元宇宙算法优化最大相关峭度解卷积(MCKD)实现信号处理附matlab代码

    1 内容介绍 1.1研究背景及意义 制造业的发展支撑着国家经济的稳定快速发展,是人民生活幸福和国家局势 稳定的保障.发展制造业离不开科技创新.加强制造业创新.推动产业转型升级是 提升我国国际地位.实现 ...

  4. 【图像重建】基于布雷格曼迭代(bregman alteration)算法集合ART算法实现CT图像重建附matlab代码

    1 简介 Fluorescence diffuse optical tomography (fDOT) is a noninvasive imaging technique that makes it ...

  5. 【回归预测】基于TPA-LSTM(时间注意力注意力机制长短期记忆神经网络)实现数据多输入单输出回归预测附matlab代码

    1 内容介绍 随着当今时代科技不断地飞速发展,科技信息也在急剧增加,收集并挖掘分析这些来源多样化的科技信息,有助于推动科技的发展.而预测作为一种重要的数据研究方法,在各个行业各个领域都有着广泛的应用. ...

  6. 【机械】基于广义Hoek-Brown实现应变软化岩体GRC曲线及围岩位移应力塑性区绘制附matlab代码

    1 内容介绍 基于岩体的强度参数随着最大塑性主应变的增加而逐渐演化这一力学行为,采用广义Hoek-Brown(H-B)强度准则,以最大塑性主应变作为应变软化参数,假设广义Hoek-Brown强度准则中 ...

  7. 【路径规划】基于A星算法结合floyd和动态窗口法实现机器人栅格地图路径规划附matlab代码

    1 简介 针对移动机器人在静态环境中的特点,为了提高路径规划效率和精度,设计了A~*算法与Floyd算法结合的路径规划.我们根据实际环境,在栅格地图的基础上,利用A~*算法进行初步路径规划,找到了一条 ...

  8. 【智能优化算法】基于分段权重和变异反向学习的蝴蝶优化算法求解单目标优化问题附matlab代码

    1 简介 针对原始蝴蝶优化算法容易陷入局部最优解,收敛速度慢及寻优精度低等问题,提出分段权重和变异反向学习的蝴蝶优化算法.通过飞行引领策略来矫正邻域内蝴蝶的自身飞行,降低盲目飞行,增强算法跳出局部最优 ...

  9. 【多式联运】基于帝企鹅AFO 粒子群PSO 遗传GA算法求解不确定多式联运路径优化问题附matlab代码...

    ✅作者简介:热爱科研的Matlab仿真开发者,修心和技术同步精进,matlab项目合作可私信.

最新文章

  1. c语言中fflush的运用为什么没有效果呢,测试平台linux
  2. python在中小学教学中的应用-中小学Python编程语言教学
  3. java软尾山地车碳_JAVA FURIA 27.5入门软尾山地车评测
  4. 搭建MyBatis框架
  5. IE浏览器不能上网的处理办法
  6. kubectl mysql 集群_mysql-kubernetes
  7. 永久修改MySQL字符集(适用Mysql5.5、Mysql5.6、Mysql5.7以上)
  8. FISCO BCOS 最大tps 每秒出块个数 tx_count_limit 区块容量 控制台设置参数 区块大小
  9. win10微信卡顿_电脑一分钟小技巧:win10微信电脑端多开方法
  10. 上海大学生网络安全大赛 web write up
  11. HandlerThread的使用场景和用法
  12. php脉聊交友源码_脉聊源码-PHP脉聊交友网站源码(附app源码)下载-西西软件下载...
  13. 畅通工程2(prim模拟链表结构体建图+kru)
  14. 代码详解:以股票预测为例,揭秘时间序列预测
  15. 进制转换:二进制小数如何转换十进制
  16. 健身耳机哪些品牌好?健身运动耳机推荐
  17. 国际象棋绘制java_java使用swing绘制国际象棋棋盘
  18. 什么是tv域名?.tv域名不能实名吗?
  19. Kooboo CMS - 之后台注册用户流程方法。
  20. 为网站代码块pre标签增加一个复制代码按钮代码

热门文章

  1. CDA Level1知识点总结之多维数据透视分析
  2. GPS时钟的详细说明
  3. 菜鸟级别批处理命令IF~ELSE语法问题
  4. Android软键盘的全面解析,让你不再怕控件被遮盖
  5. 游戏测试内存泄露相关方案
  6. 选择尚学堂与传智播客的java培训?
  7. 今天是国际数学日,既是爱因斯坦的生日又是霍金的忌日
  8. 网络舆情数据汇总统计的方法技巧
  9. 计算机视觉——SIFT特征提取与检索+匹配地理标记图像+RANSAC算法
  10. live555服务器测试