【人脸朝向识别与分类预测】基于PNN神经网络

课题名称:基于PNN神经网络的人脸朝向识别分类

版本日期:2024-02-20

运行方式:直接运行PNN0503.m文件

代码获取方式:私信博主或 QQ:491052175

模型描述:

采集到一组人脸朝向不同角度时的图像,图像来自不同的10个人,每个人5幅图像,人脸的朝向分别是左方,左前方,前方,右前方,右方。通过观察不难法线,当人脸面朝不同方向时,眼睛在图像中的位置差别比较大.因此可以考虑将图片中描述眼睛位置的特征喜喜提取出来作为LVQ神经网络的输入,5个朝向分别用1,2,3,4,5表示,作为LVQ神经网络的输出。通过对训练集的图像进行训练,得到具有预测功能的网络,便可以对任意给出的人脸图像进行朝向判断和识别分类

算法流程:

1.人脸特征向量提取:如设计思路中所述,当人脸朝向不同时,眼睛在图像中的位置会有明显的差别。因此,只需要将描述人眼位置信息的特征向量提取出来即可。方法是将整幅图像划分成6行8列, 人眼的位置信息可以用第2行的8个子矩阵来描述(注意:针对不同大小的图像,划分的网格需稍作修改)边缘检测后8个子短阵中的值为“1”的像萦点个数与人脸朝向有直接关系, 只要分别统计出第2行的8个子短阵中的值为“1”的像素点个数即可。

2.训练集和测试集的产生:为了保证训练集数据的随机性,随机选取图像库中的30隔入脸图像提取出的特征向量作为训练集数据,剩余的20幅人脸图像提取出来的特征向盘作为测试集数据。

3.PNN神经网络创建:利用newpnn函数和spread值用于创建PNN神经网络

4.PNN网络训练:PNN神经网络不需要特别训练,影响网络的预测精度主要由spread值决定。

5.人脸识别测试:网络训练收敛后,便可以对测试集数据进行预测,即对测试集的图像进行人脸朝向识别.对于任意给出的图像,只需要将其特征向量提取出来,便可对其进行识别。

PNN神经网络调用格式:

net=newpnn(P,T,SPREAD)

P:为输入数据的矩阵

T:为输出数据的矩阵

SPREAD:径向基函数的拓展速度,默认值为1

改进方向:

待改进方向:

因为训练数据比较少,为了提高预测精度,通过交叉验证并不断迭代寻找最佳的SPREAD值,最后应用于PNN神经网络里。相比于固定的SPREAD值而言,自适应求解SPREAD值的方式可以更好地提高预测精度

特殊说明:

1.根据测试,当spread值在3.5~4范围的时候,PNN神经网络在当前模型下的预测

2.经过测试,对训练和测试数据进行归一化,反而降低了预测精度

3.神经网络每一次的预测结果都不相同,为了得到更好的结果,建议多次运行取最佳值

Matlab仿真结果

基于PNN神经网络的人脸朝向识别精确率:

基于PNN神经网络的人脸朝向识别分类结果:

基于PNN神经网络的人脸朝向识别分类预测误差:

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/703666.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【Spring】事务总结

目录 1. 什么是事务? 2. 事务的特性(ACID)了解么? 3. 详谈 Spring 对事务的支持 3.1. Spring 支持两种方式的事务管理 1).编程式事务管理 2)声明式事务管理 3.2. Spring 事务管理接口介绍 3.2.1. PlatformTransactionManager:事务管理…

投资黄金在哪里买比较好?

黄金,作为一种传统的避险资产,历来受到投资者的青睐。在全球经济波动的大背景下,黄金的价值愈发凸显。那么,投资黄金在哪里买比较好呢?本文将重点探讨在香港黄金平台投资黄金的优势,并以金田金业为例&#…

C++面试基础:如何高效利用CPU缓存

目录 局部性原理(Locality Principle) 数据结构的布局 缓存友好的算法 缓存大小和关联性 避免随机访问 使用缓存友好的数据结构 总结 高效利用CPU缓存是编写高性能C代码的关键之一。以下是一些在面试中可能会讨论到的方法。 局部性原理(Locality Principle) 时间局部性…

Powershell中conda init失效、无法使用conda activate的问题

起因 近期折腾了一下Windows Terminal,安装配置了Powershell 7.3,然后发现conda activate在Powershell中用不了了,conda init powershell不起作用,conda init cmd.exe没有问题 分析 因为powershell的profile.ps1文件路径中存在…

ELK 简介安装

1、概念介绍 日志介绍 日志就是程序产生的,遵循一定格式(通常包含时间戳)的文本数据。 通常日志由服务器生成,输出到不同的文件中,一般会有系统日志、 应用日志、安全日志。这些日志分散地存储在不同的机器上。 日志…

网络层的DDoS攻击与应用层的DDoS攻击之间的区别

DDoS攻击(即“分布是拒绝服务攻击”),是基于DoS的特殊形式的拒绝服务攻击,是一种分布式、协作的大规模攻击方式,主要瞄准一些企业或政府部门的网站发起攻击。根据攻击原理和方式的区别,可以把DDoS攻击分为两…

The Grapes NFT 概览与数据分析

作者:stellafootprint.network 编译:cicifootprint.network 数据源:The Grapes NFT Collection Dashboard The Grapes 是一个有趣且具有吸引力的 NFT 收藏集合,包含 3,333 个精心制作的 NFT。这个 NFT 项目会在 2024 年再创高…

linux僵尸进程

僵尸进程(Zombie Process)是指在一个进程终止时,其父进程尚未调用wait()或waitpid()函数来获取该进程的终止状态信息,导致进程的资源(如进程表中的记录)仍然保留在系统中的一种状态。 当一个进程结束时&am…

GO数组解密:从基础到高阶全解

在本文中,我们深入探讨了Go语言中数组的各个方面。从基础概念、常规操作,到高级技巧和特殊操作,我们通过清晰的解释和具体的Go代码示例为读者提供了全面的指南。无论您是初学者还是经验丰富的开发者,这篇文章都将助您更深入地理解…

css美化网页元素

1.span标签的作用 能让某个文字或词语凸显出来 2.字体样式 属性 含义 示例 font-family 设置字体类型 font-family:"隶书"; font-size 设置字体大小 font-size:12px; font-style 设置字体风格 font-style:italic; font-weight 设置字体的粗细 font-we…

java使用Swagger文档报错“java.lang.NullPointerException: null”

java使用Swagger文档报错 一、问题二、解决1、报错2、源码3、方法 一、问题 java项目引入Swagger文档,后期因为一些原因导致Swagger文档不能使用,但是不影响项目运行和正常使用,但每次启动都会报错。 原因有可能是: 1、一个实体类…

手写myscrapy(八)

项目地址:https://gitee.com/wyu_001/myscrapy 接下来接着说明如何多线程运行多个爬虫脚本: 项目的根目录下有个batch.py文件,这个就是批量运行多个爬虫的脚本,这里使用了线程池,同时运行spider下的多个爬虫类&#xf…

编程笔记 Golang基础 038 并发与原子变量

编程笔记 Golang基础 038 并发与原子变量 一、原子操作(Atomic Operation)二、原子变量三、应用示例 在 Go 语言(Golang)的并发编程中,原子变量是用于确保多线程安全的重要工具。当多个 Goroutine 并发访问和修改同一变…

【HMAC-SHA1算法以及工作原理】

曾梦想执剑走天涯,我是程序猿【AK】 目录 简述概要知识图谱总结 简述概要 连接HMAC-SHA1工作原理以及工具代码 知识图谱 HMAC(Hash-based Message Authentication Code,基于散列的消息认证码)是一种结合了密钥和消息的认证方法…

刚拿到的《HarmonyOS应用开发者高级认证》,全网整理的题目,将近300题,100%通过

刚拿到《HarmonyOS应用开发者高级认证》,现在把题目和答案分享一下,这些题目是我根据其他网站整理的,宁滥勿缺,有个别题目是重复的,抽半天时间看一下,应该是稳过的。当然建议还是先跟着文档学一下鸿蒙或者看…

Centos 7.5 上nginx设置开机自启动

nginx的安装目录 : /usr/local/nginx 一、没有设置开机自启动前,需要执行/usr/local/nginx/sbin/nginx 启动 二、接下来,我们设置开机自启动,就不用手动启动nginx了 1、cd /usr/lib/systemd/system/ 2、vi nginx.service [un…

如何在Win系统搭建Oracle数据库并实现远程访问【内网穿透】

文章目录 前言1. 数据库搭建2. 内网穿透2.1 安装cpolar内网穿透2.2 创建隧道映射 3. 公网远程访问4. 配置固定TCP端口地址4.1 保留一个固定的公网TCP端口地址4.2 配置固定公网TCP端口地址4.3 测试使用固定TCP端口地址远程Oracle 前言 Oracle,是甲骨文公司的一款关系…

TensorRT及CUDA自学笔记007 运行时库及矩阵加法demo

TensorRT及CUDA自学笔记007 运行时库及矩阵加法demo Runtime 运行时库 明天再补充,先去准备面试了 矩阵加法demo cudaMalloc和cudaMemcpy 它们和c的malloc和memcpy功能一致,只是操作的不是host端的内存空间,而是device端的”显存空间“ …

【深入理解设计模式】适配器设计模式

适配器设计模式 适配器设计模式是一种结构型设计模式,用于将一个类的接口转换成客户端所期望的另一个接口,从而使得原本由于接口不兼容而不能一起工作的类能够一起工作。适配器模式通常用于以下场景: 现有接口与需求不匹配:当需要…

Linux安装Mysql(超详细,亲测)

文章中的全部内容自己都有亲身实践,都是有效的,像常见登录错误中,那种错误的密码修改方式自己以前就浪费了很多事件,还有设置Mysql远程登录这些也是,所以我把这些操作整理了一下,让大家在安装和使用Mysql的…