目录

一、理论基础

二、案例背景

1.问题描述

2.思路流程

三、部分MATLAB代码

四、仿真结论分析

五、参考文献


一、理论基础

这里,人脸的识别主要依据如下的流程进行:

具体的算法流程是这么一个过程:

第一:首先初始化一个区域,这个区域的大小和训练图片的大小相似;

第二:将需要测试的区域送入到神经网络模型,然后开始训练;

第三:然后将测试得到的结果和设定的门限值进行比较;

第四:如果符合门限要求,那么定义该区域值为1,否则为-1;

第五:将符合要求的门限值的位置进行标志,然后更新区域位置,然后再次进行测试;

第五:最后得到符合要求的测试区域,从而获得对应的人脸位置;

二、案例背景

1.问题描述

以二维形式存在的人脸图像所包含的数据信息是非常多的,而且,这些数据中还包含了很多与人脸身份并没有多少关系的冗余信息,例如,表情、光线条件等。因此,不能将这些数据直接作为人脸的代表特征来进行识别,也就是必须首先进行特征提取。特征提取的定义为:当原始特征的数量很大,或者说样本是处于一个高维空间中的向量时,通过映射(或变换)的方法用低维空间来表示。如上所述,由于人脸的维数在通常情况下很高,特征提取的成败就对整个识别阶段的效果有决定性的影响。甚至可以这样认为:在某种意义上,人脸识别过程的成败就决定于特征提取的好坏,因此,如何有效的进行特征提取就成为人脸识别科研人员不得不面对的关键性问题。鉴于特征提取的重要性,也有人将它独立作为整个人脸识别过程中的一个阶段。这里,其主要操作时提取特征,并将特征结果向量化,使二维的特征矩阵变为一维的特征向量,从而方便操作。

2.思路流程

第一步:读入图片;

将人脸库的大量图片读入到MATLAB中;

第二步:对读入的图片进行特征提取;

对标准的人脸库,提取相关的特征参数,具体的特征参数根据实际情况来确定;

第三步:对读入的图片的特征值进行训练,得到神经网络;

对大量的特征参数进行训练,从而获得一个神经网络;

第四步:使用得到的神经网络对不同的图片进行测试,从而实现人脸的识别;

根据标准库训练得到的神经网络进行测试,进行人脸的识别操作。

三、部分MATLAB代码

%代码的清空
clc;
clear;
close all;
warning off;
%代码的清空
%*************************************************************************%%STEP01:
%参数初始化
%1:进行图片的读取和特征提取;
%2:进行神经网络的训练;
%3:进行单个图片的识别
%4:对多个图片进行连续识别,并统计系统识别率
select = 3;
PICS   = cell(3,[]);                                               %定义图片数据库
fd1    = dir(['Library_picture/TRAIN/Man_Faces/','*','.pgm']);     %定义训练图片人脸数据库
Num1   = size(fd1,1);
fd2    = dir (['Library_picture/TRAIN/Not_Man_Faces/','*','.pgm']);%定义训练图片非人脸数据库
Num2   = size (fd2,1);
%参数初始化
%*************************************************************************%%STEP02:
%读取图片并提取每张图片的特征
if select == 1for k=1:Num1kimage            = imread(['Library_picture/TRAIN/Man_Faces/',fd1(k,1).name]);    [m n]            = size(image);PIC_feature      = func_feature_face(image);for i=1:10PICS{1,end+1}= ['Library_picture/TRAIN/Man_Faces/',fd1(k,1).name];PICS{2,end}  = 0.9;PICS(3,end)  = {PIC_feature{i}};end    endfor k=1:Num2kimage            = imread(['Library_picture/TRAIN/Not_Man_Faces/',fd2(k,1).name]);[m n]            = size(image);PIC_feature      = func_feature_noface(image);   for i=1:4PICS{1,end+1}= ['Library_picture/TRAIN/Not_Man_Faces/',fd2(k,1).name];PICS{2,end}  = -0.9;PICS(3,end)  = {PIC_feature{i}};end    end%save Pic_lib02 PICS;
end%读取图片并提取每张图片的特征
%*************************************************************************%%STEP03:
%通过神经网络进行训练
if  select == 2load net2;load Pic_lib02;net.trainFcn          = 'trainscg';net.trainParam.lr     = 0.4;net.trainParam.epochs = 400;net.trainParam.show   = 10;net.trainParam.goal   = 1e-3;T{1,1}                = cell2mat(Pic_lib02(2,:));P{1,1}                = cell2mat(Pic_lib02(3,:));NET                   = train(net,P,T);
end
%通过神经网络进行训练
%*************************************************************************%%STEP04:
%通过单张图片进行测试识别
if  select == 3load net2;load Pic_lib02; im    = imread('Library_picture\TEST\1\pics (2).jpg');im    = rgb2gray(im);[r,c] = size(im);if r>800im = imresize(im,0.1);elseim = imresize(im,0.2);end      figure;im_out = imscan(net,im);imshow(im_out,'notruesize');
end

四、仿真结论分析

打开文件夹,打开main.m函数。运行,会得到如下的效果:

具体的使用方法为:首先点击“读取图片特征“按钮,将需要进行训练的图片读取,然后提取他们的特征参数,然后点击“神经网络训练”,对训练图片提取的特征进行神经网络训练,会看到如下的训练过程:

训练结束后,就开始进行识别测试了。

点击“打开测试图片”按钮,选择对应的图片:

点击“开始识别”按钮:

使用其他图片进行识别:

    

    

    

最后使用ORL库的标准人脸进行识别率测试,其效果如下所示:

五、参考文献

[1]岳也, 王川龙. 一种基于改进PCA和BP神经网络的人脸识别算法[J]. 太原师范学院学报:自然科学版, 2021.A09-17

基于BP神经网络和ORL库的人脸识别matlab仿真相关推荐

  1. 基于BP神经网络的多因素房屋价格预测matlab仿真

    目录 一.理论基础 二.案例背景 1.问题描述 2.思路流程 三.部分MATLAB仿真 四.仿真结论分析 五.参考文献 一.理论基础 神经网络主要由处理单元.网络拓扑结构.训练规则组成.处理单元是神经 ...

  2. 分别使用BP神经网络和SVM支持向量机进行乳腺癌识别matlab仿真,输出识别率,召回率以及F1

    目录 一.理论基础 二.核心程序 三.测试结果 一.理论基础 乳腺癌是全球第二常见的女性癌症.2012年,它占所有新癌症病例的12%,占所有女性癌症病例的25%.当乳腺细胞生长失控时,乳腺癌就开始了. ...

  3. 使用MATLAB实现基于BP神经网络训练的手写字母识别程序

    前言 大三的时候利用MATLAB搭建了一个基于BP神经网络框架的手写字母识别程序,其中使用了EMNIST数据集进行训练和测试,可实时对手写输入样本进行识别,并返回两个最可能的结果,过程中可继续添加样本 ...

  4. 【图像识别】基于BP神经网络和RGB颜色空间实现人民币识别系统matlab代码

    1 简介 随着信息化时代的到来,智能识别成为研究的热点,本文以人民币识别为研究对象,运用 Matlab 软件系统中所提供的神经网络工具箱,结合图像处理技术,实现对各种不同面值纸质版人民币的识别.本文主 ...

  5. (文章复现)5.基于BP神经网络的风电功率预测方法(MATLAB程序)

    复现文章: 基于BP神经网络的风电功率预测方法--刘立群(2021年) 摘要: 风电功率预测结果的准确性,不仅关系到风力发电厂的综合运行效率,也与区域运行成本具备直接联系,为解决传统预测方法的不足,基 ...

  6. 基于BP神经网络手写数字和字母识别

    一:系统介绍 这个程序是在MATLAB中编写,基于BP神经网络的文字符号识别系统的具体实现,该系统既可以实现单一手写字符,也可以实现一连串的字符,而且具有较高的准确率.本系统主要有几个模块,图片输入, ...

  7. 【语音识别】基于BP神经网络0到10数字语音识别含Matlab源码

    1 简介 语音识别技术具有重要的理论价值和广阔的应用前景,近年来受到了人们的广泛重视.随着电子计算机的不断应用与发展以及人工智能的不断进步与完善,人们越来越希望让机器能够理解人类的自然语言,这种需求使 ...

  8. 基于ORL人脸数据库和PCA特征降维算法的人脸识别matlab仿真

    目录 1.算法仿真效果 2.MATLAB核心程序 3.算法涉及理论知识概要 4.完整MATLAB 1.算法仿真效果 matlab2022a仿真结果如下: 2.MATLAB核心程序 .......... ...

  9. m分别使用BP神经网络和GRNN网络进行时间序列预测matlab仿真

    目录 1.算法描述 2.仿真效果预览 3.MATLAB核心程序 4.完整MATLAB 1.算法描述 广义回归神经网络是径向基神经网络的一种,GRNN具有很强的非线性映射能力和学习速度,比RBF具有更强 ...

  10. 【人脸识别】基于 Gabor+SVM和PCA+SVM实现人脸识别matlab源码含 GUI

    1 简介 随着经济的快速发展,互联网的普及,信息安全逐渐被人们所重视.人脸识别技术作为保护信息安全的重要手段之一,也逐渐被研究学者所重视.人脸识别作为计算机视觉技术和生物特征识别技术的一个重要分支,模 ...

最新文章

  1. 不知道这些,简历上千万不要说你会 Redis 持久化。。。
  2. 商品和服务税收分类编码导出_谨慎选择加拿大商标的商品和服务分类!否则支付额外费用...
  3. SAP SD基础知识之特殊的业务交易
  4. zabbix监控之nginx状态监控(一)
  5. Restful API 设计规范实战
  6. 两个队列+k叉哈夫曼树 HDU 5884
  7. 渗透之cookie截取
  8. java求最小步数_关于java:查找两点之间的最小步数?
  9. mysql有哪些特色SQL语句_Linux-MySQL-有哪些常用sql语句
  10. 喷墨打印机一体机清零软件使用图解
  11. 服务器2016系统看图软件,PhotoX:Mac上最好用的免费看图软件
  12. es文件管理复制到fpt服务器,达人教你玩应用:ES文件浏览器之文件互传
  13. 庄文展解读李嘉诚(四十五) 如何管理好自己的”自负指数”?
  14. 两个正态总体均值差的检验(t)
  15. 转 纯真IP数据库格式详解
  16. 团队任务5:事后诸葛亮会议
  17. 总结--linux常用配置文件总结
  18. HDS日立 (高中低端)存储
  19. 海康威视曲面大屏出现花屏,闪烁等现象该如何解决?
  20. python 删除pdf页面_使用Python批量删除扫描PDF中的空白页

热门文章

  1. Mybatis3全面详解
  2. 【MCM-2017】2017年数学建模美赛题目原文及翻译-A (个人思路)
  3. 思考小型管理软件的诸多问题:附美萍部分客户的销售统计表
  4. 张俊芳电机学11章计算题答案
  5. extjs4 视频教程
  6. php可以运行js代码吗,php可以运行js代码吗?
  7. SQLServer 2016报错Microsoft R Open 和 Microsoft R Server的解决方案
  8. 对接GA/T1400协议注册流程简易demo【Java版】
  9. 处女座的砝码 long double
  10. 五种常用的MySQL图形化管理工具