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

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

版本日期:2024-02-20

运行方式:直接运行BP0503.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.BP网络建立:利用BP神经网络调用函数建立BP神经网络

4.BP网络训练:利用训练数据进行网络训练,得到合适的网络权值和阈值

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

BP神经网络调用格式:

net=newff(P,T,S,TF,BTF,BLF,PF,IPF,OPF,DDF)

P:输入数据矩阵; T:输出数据矩阵; S:隐含层节点数

TF:节点传递函数; BTF:训练函数; BLF:网络学习函数

PF:性能分析函数; IPF:输入处理函数; OPF:输出处理函数; DDF:验证数据划分函数

改进方向:

待改进方向:

1.研究单隐含层的节点数,如何寻找到最佳隐含层节点数

2.将单隐含层替换为双隐含层,并且寻找到双隐含层的节点数

3.利用智能算法去优化BP神经网络的权值和阈值,比如GA算法,PSO算法,SA算法,GASA算法等等

特殊说明:

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

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

Matlab仿真结果:

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

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

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

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

如若内容造成侵权/违法违规/事实不符,请联系瞎胡闹网进行投诉反馈,一经查实,立即删除!

相关文章

springboot集成quartz定时任务并接入后台管理系统(copy即用)

说明:项目启动后会根据设置的时间进行执行,业务代码根据自己的需求更改,数据库文件在最后(记得清空数据库哦~)这里需要注意的一点就是className字段表示的是下面的对应的DynamicTask的路径如:com.example.demo.quartz.task.DynamicTask,如有多个定时任务copy并更改Dynam…

成都源聚达:开抖音店铺的成本用得了多少

在数字浪潮中,抖音不仅是年轻人的娱乐天地,也成为了新兴电商平台。不少创业者摩拳擦掌,想要在此开疆拓土。然而,开店并非空谈梦想,成本的投入是实现梦想的基石。那么,开设一家抖音店铺究竟需要多少成本呢?…

C++之std::async

std::async是C提供的一个异步处理函数。 函数原型&#xff1a; template<typename _Fn, typename... _Args> future<__async_result_of<_Fn, _Args...>> async(launch __policy, _Fn&& __fn, _Args&&... __args); 参数说明: int thFun(in…

李亚飞:什么是开发人员的工程能力?如何考察?

可以说工程能力是软件工程师最核心的能力&#xff0c;工程能力强的人工作效率往往很高&#xff0c;在动手之前就想清楚更多研发风险&#xff0c;也可以提出更多产品意见。 但到底什么是工程能力&#xff0c;该如何考察&#xff0c;是本文想跟大家探讨的内容。 知乎上关于【工…

如何使用GAP-Burp-Extension扫描潜在的参数和节点

关于GAP-Burp-Extension GAP-Burp-Extension是一款功能强大的Burp扩展&#xff0c;该工具在getAllParams扩展的基础上进行了升级&#xff0c;该工具不仅可以帮助广大研究人员在安全审计过程中扫描潜在的参数&#xff0c;而且还可以搜索潜在的链接并使用这些参数进行测试&#…

基于Prony算法的系统参数辨识matlab仿真

目录 1.程序功能描述 2.测试软件版本以及运行结果展示 3.核心程序 4.本算法原理 5.完整程序 1.程序功能描述 Prony算法是一种用于信号处理和系统辨识的经典方法&#xff0c;特别适用于线性时不变系统&#xff08;LTI&#xff09;的频率响应分析以及模拟复指数信号序列。其…

异地组网什么原理?企业适合SDWAN异地组网吗?

深入解析异地组网及其对企业的影响 在数字化时代的洪流中&#xff0c;企业正经历着前所未有的变革。随着业务需求的多样化和全球化&#xff0c;传统的网络架构已无法满足现代企业的灵活性和效率要求。异地组网技术的兴起&#xff0c;特别是SD-WAN的应用&#xff0c;为企业提供…

【每周AI简讯】Stable Diffusion 3大版本更新

ChatGPT中文版AI7号 Stable Diffusion 3大版本更新 Stability AI发布了其最新的图像生成模型Stable Diffusion 3&#xff0c;旨在挑战Sora和Gemini。此版本采用创新架构&#xff0c;提高跨硬件系统的性能&#xff0c;需较大计算力。Stable Diffusion 3增加了“流匹配”技术&a…

SQL-Labs靶场“26-28”关通关教程

君衍. 一、二十六关 基于GET过滤空格以及注释报错注入1、源码分析2、绕过思路3、updatexml报错注入 二、二十六a关 基于GET过滤空格注释字符型注入1、源码分析2、绕过思路3、时间盲注 三、二十七关 基于union及select的过滤单引号注入1、源码分析2、绕过思路3、联合查询注入4、…

Java设计模式 | 七大原则之依赖倒转原则

依赖倒转原则&#xff08;Dependence Inversion Principle&#xff09; 基本介绍 高层模块不应该依赖低层模块&#xff0c;二者都应该依赖其抽象&#xff08;接口/抽象类&#xff09;抽象不应该依赖细节&#xff0c;细节应该依赖抽象依赖倒转&#xff08;倒置&#xff09;的…

ZYNQ Vivado更新硬件后SDK不更新问题解决办法

一、情况说明 软件版本 Vivado 2018.3 Vivado更新硬件导出后&#xff0c;按正常SDK会自动检测到hdf文件的变化跳出更新提示&#xff08;如下图所示&#xff09;。但是我的项目如果是复制的或者是长时间没打开的项目更新硬件配置导出后SDK无法自动更新。 二、解决办法 2.1 …

苏宁商品详情大揭秘:一键解锁API接口,电商数据尽在掌握

苏宁商品详情API接口技术深度探索 一、引言 在电商领域&#xff0c;获取商品详情是许多业务场景的基础需求。苏宁商品详情API接口为此提供了便捷的途径。本文将带你深入了解苏宁商品详情API接口的技术细节&#xff0c;帮助你更好地利用这一接口&#xff0c;提升业务效率。 二…

刷题日记 | 字符串扩容和增强型for循环

for(char c:s)遍历字符串 增强型for循环 C for(char c:s)遍历字符串 增强型for循环_c for (char c : s)-CSDN博客 字符串使用前要进行扩容 reserve函数 【CString类成员函数辨析】resize(),size(),capacity(),reserve()函数的解析与对比_c reserve函数-CSDN博客 a.size() 用来…

【已解决】解决Win11忘记开机密码(不用重装系统)

问题起因 因为在实验室的电脑从过年就没有用过&#xff0c;也不知道为什么记性这么差&#xff0c;就把电脑密码忘了&#xff0c;但是又不想用系统盘重装电脑。于是从网上整理一些文章&#xff0c;最后写了下面一篇解决方法 解决方法 1.首先在登录界面&#xff08;输入密码那…

leetcode:46.全排列

1.什么是排列&#xff1f; 有顺序&#xff01;&#xff01; 2.树形结构&#xff1a; 使用used数组进行标记取过的元素&#xff0c;一个元素一个元素地进行取值&#xff0c;取完之后将used数组进行标记。 3.代码实现&#xff1a;&#xff08;循环从i0开始&#xff0c;而不是…

转本考前如何调整心态

不少同学还在过年的氛围中还没走出来。 担忧自己成绩不进反退&#xff0c;又不知道该如何调整心态&#xff01;这个时候小编就有几点小建议给到各位考生。 *心态*情绪 良好的考试心态是没有固定的心态&#xff0c;对不同学习情况的学生来说&#xff0c;良好的考试心态是不一…

如何优化一个看似正常的数据库

通常DBA是不会太了解业务逻辑的&#xff0c;遇到系统中劣质的sql 一般也是以通过添加索引的方式来优化&#xff0c;但是并不是所有的sql都能通过添加索引来优化 这就需要重sql的本身来做分析&#xff0c;另外还要了解什么样的语句会不走索引&#xff01;本文通过几个简单的例子…

国创证券:60分钟底背离什么意思?

60分钟底违背指的是当股价60分钟k线图中股票走势一峰比一峰低&#xff0c;而macd技术目标图形上的由红柱构成的图形走势是一峰比一峰高。即股价成跌落趋势时&#xff0c;技术目标呈上升利好&#xff0c;表示跌落动能削弱&#xff0c;股价或许迎来回转。 K线是由一段时间内的开…

4.4 MySQL存储

目录 1、使用前提 2、使用连接数据库最初步骤 2.1 最初步骤 2.2 connect()方法中参数简单传递 3、创建数据库(创建架构)和创建表 3.1 创建数据库(创建架构) 3.2 创建表 3.2.1 基本创建 3.2.2 创建自增主键 4、Pycharm 可视化连接 MySQL 图形界面 5、插入、更新、查询…

*ctf 2019 oob

diff文件如下 diff --git a/src/bootstrapper.cc b/src/bootstrapper.cc index b027d36..ef1002f 100644 --- a/src/bootstrapper.ccb/src/bootstrapper.cc-1668,6 1668,8 void Genesis::InitializeGlobal(Handle<JSGlobalObject> global_object,Builtins::kArrayProto…