人工神经网络论文_第1页
人工神经网络论文_第2页
人工神经网络论文_第3页
人工神经网络论文_第4页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、基于LVQ神经网络的人脸朝向识别摘要 人脸识别是当今模式识别和人工智能的一个重要的研究方向。人脸的朝向识别是一个复杂的模式识别问题。在实际应用中,大量图像和视频源中人脸的位置、朝向、旋转角度都是不固定的,这大大增加了人脸识别的难度。为了解决这些问题,本实验采用了LVQ神经网络模型对图像中的人脸朝向识别进行研究。本实验基于matlab平台设计LVQ神经网络,实现对人脸朝向的判断。实验结果表明,LVQ神经网络可以根据输入图像的二值信息,以较高的准确率判别该图像中的人脸朝向。关键字: 人脸朝向识别; LVQ神经网络; matlab; 特征提取人脸识别是一个活跃的研究领域。尽管相对于虹膜和指纹识别,人

2、脸识别的准确还比较低,但人脸的易采集、非接触的优点,让人脸识别受到越来越多的关注。人脸识别对人脸位置和状态都有一定的限制,实际应用中,图像和视频源中人脸的位置,朝向和旋转都不是固定的,这就为我们后续的人脸识别有了更大的难度。在人脸识别的研究领域中,人脸朝向识别是其中的一个分支。在以往的研究中,绝大多数的研究人员希望能够消除人脸朝向在人脸识别中的不良影响,但在复杂的实际环境中,我们无法忽略人脸朝向对人脸识别的影响。因此,对人脸朝向的判定和识别是非常有必要和有意义的。1 LVQ神经网络学习向量量化 (Learning Vector Quantization,LVQ) 神经网络,属于前向神经网络类型

3、,在模式识别和优化领域有着广泛的应用。LVQ神经网络由三层组成,即输入层、隐含层和输出层,网络在输入层与隐含层间为全连接,而在隐含层与输出层间为部分连接,每个输出层神经元与隐含层神经元的不同组相连接。隐含层和输出层神经元之间的连接权值固定为1。输入层和隐含层神经元间连接的权值建立参考矢量的分量(对每个隐含神经元指定一个参考矢量)。在网络训练过程中,这些权值被修改。隐含层神经元(或称为Kohnen神经元)和输出神经元都具有二进制输出值。当某个输入模式被送至网络时,参考矢量最接近输入模式的隐含神经元因获得激发而赢得竞争,因而允许它产生一个“1”,而其它隐含层神经元都被迫产生“0”。与包含获胜神经元

4、的隐含层神经元组相连接的输出神经元也发出“1”,而其它输出神经元均发出“0”。产生“1”的输出神经元给出输入模式的类,由此可见,每个输出神经元被用于表示不同的类。2 人脸朝向识别的设计2.1 问题描述现采集到一组不同人脸朝向的图像,这组图像来自于10个人,每人5张图片,人脸朝向分为:左方、左前方、正面、右前方、右方,如图2-1所示。创建一个LVQ神经网络,对给出的人脸进行朝向的判定与识别。2-1 人脸朝向识别图2.2 建立模型2.2.1 设计思路通过观察不难发现,当人脸朝向不同的方向时,眼睛在图像中的位置差别较大。所以,将眼睛位置的特征信息作为LVQ神经网络识别的输入,将5个朝向作为其输出。在

5、对训练集进行训练之后,得到具有预测功能的神经网络,对测试集中的图片进行人脸朝向的预测。2.2.2 设计步骤根据上述的设计思路,可以归纳为如下步骤,如图2-2所示。图2-2 设计步骤流程图(1)眼部特征向量的提取在设计思路中,可以知道人脸朝向不同时,其眼睛所在的位置也有所不同。因此,选取描述人眼位置的特征向量作为LVQ神经网络的输入。方法:将整幅图像分为6行8列,人眼的位置信息可以用第2行的8个子矩阵来描述,边缘检测后8个子矩阵中的值为“1”的像素点的个数与人脸朝向有直接关系。只要分别统计出第2行8个子矩阵中值为“1”的像素点的个数即可。(2)生成训练集和测试集为了保证训练集数据的随机性,我们随

6、机选取图像库中的30张图片作为训练数据,选取20张图片作为测试数据。(3)LVQ网络的创建因为LVQ神经网络具有不需要将输入向量正交化、归一化的优点,利用Matlab工具中的newlvq()函数构建一个LVQ神经网络。(4)LVQ网络的训练将训练集中输入向量送入LVQ神经网络,之后对网络中权值进行迭代调整,达到要求。利用Matlab中的网络训练函数train()对LVQ神经网络进行训练学习。(5)人脸朝向的识别网络训练收敛后,对测试集的数据进行预测。对于任意给定的图像,只需将其特征向量提取出来,便可以进行识别。3 人脸朝向识别的实现Matlab提供了许多函数能够让我们在Matlab环境下可以实

7、现上述步骤。3.1 清空环境变量在程序运行之前,需要清空工作空间中的变量和命令窗口的命令。源代码如下:clear allclc3.2 眼部特征向量的提取首先将图像中描述眼部信息的特征向量提取出来,即统计出第2行8个子矩阵中值为“1”的像素点的个数,源代码如下:% 人脸特征向量提取 % 人数M=10;% 人脸朝向类别数N=5; % 特征向量提取pixel_value=feature_extraction(M,N);feature_extraction()为人脸特征向量提取子函数,函数体如下:% 特征提取子函数function pixel_value=feature_extraction(m,n)

8、pixel_value=zeros(50,8);sample_number=0;for i=1:m for j=1:n str=strcat('Images',num2str(i),'_',num2str(j),'.bmp'); %将字符串进行水平连接 img= imread(str); %将图像转换为对应的矩阵 rows cols= size(img); img_edge=edge(img,'Sobel'); %用sobel边缘提取算子来提取边缘 sub_rows=floor(rows/6); sub_cols=floor(co

9、ls/8); sample_number=sample_number+1; for subblock_i=1:8 for ii=sub_rows+1:2*sub_rows for jj=(subblock_i-1)*sub_cols+1:subblock_i*sub_cols pixel_value(sample_number,subblock_i)=. pixel_value(sample_number,subblock_i)+img_edge(ii,jj); end end end endend3.3 生成训练集和测试集将图片库中图片的眼部特征向量提取出来,随机分为两组,即训练集组和测试集

10、组。训练集中包括30幅图像的特征向量,测试集中包括20幅图像的特征向量,具体源代码如下:% 训练集/测试集产生% 产生图像序号的随机序列rand_label=randperm(M*N); %产生一个从1到m*n的随机序列% 人脸朝向标号direction_label=repmat(1:N,1,M); %用于矩阵复制% 训练集train_label=rand_label(1:30);P_train=pixel_value(train_label,:)'Tc_train=direction_label(train_label);% 测试集test_label=rand_label(31:e

11、nd);P_test=pixel_value(test_label,:)'Tc_test=direction_label(test_label);3.4 创建LVQ神经网络利用newlvq()函数来创建LVQ神经网络,隐含层神经元个数设置为20,具体源代码如下:% 计算PCfor i=1:5 ratei=length(find(Tc_train=i)/30;end% 创建LVQ网络net=newlvq(minmax(P_train),20,cellmat(rate);% 设置训练参数net.trainParam.epoch = 100;net.trainParam.goal = 0.001;net. trainParam.lr = 0.13.5 训练LVQ神经网络 用Matlab提供的train()函数对LVQ神经网络训练学习,源代码如下: net = t

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论