2017年认证杯SPSSPRO杯数学建模B题(第二阶段)岁月的印记全过程文档及程序

2017年认证杯SPSSPRO杯数学建模

B题 岁月的印记

原题再现:

  对同一个人来说,如果没有过改变面容的疾病、面部外伤或外科手术等经历,年轻和年老时的面容总有很大的相似性。人们在生活中也往往能够分辨出来两张不同年龄段的照片是不是同一个人。当然,年龄段相差越大,识别起来也就越困难。
  第二阶段问题: 我们希望通过一个人在年轻时的面部照片来预测其过若干年后的容貌,也希望做到通过一个人在较大年龄时的照片来还原其年轻时的容貌。请你建立合理的数学模型来完成这项任务。

整体求解过程概述(摘要)

  本文采用局域二值模式特征提取,SVM 支持向量机对图像人脸进行年龄预测,又利用人脸随着年龄的形状变化和纹理特征变化对不同目标年龄的人脸进行重构,还对重构后的人脸和真实人脸进行了相似度分析。
  首先,为了提高模型准确率,我们对图像进行灰度均衡化、旋转调整、尺度归一化处理。我们建立了基于局域二值模式的纹理特征提取模型,并且建立了基于 BP 神经网络贡献分析法对特征向量进行降维,得出额头、嘴巴、眼角等地方对年龄的影响较大,将原维数 256 维的纹理特征向量降到 30 维。我们将降维后的特征向量作为输入,训练了加权支持向量机的年龄估计函数。同时,我们利用 FG-NET 人脸数据库验证年龄估计的支持向量回归模型,准确率达到 76.2%,且误差控制在 3 岁以内。
  其次,我们选取 50 个特征点来标定人脸正面,得到了 8 个年龄段的平均脸型。接着我们建立了基于径向基函数的人脸形状变化模型,并计算出该年龄段人脸纹理特征向量,利用 LBP 算子提取的纹理特征与人脸型的变化相结合,进而重构了出目标年龄的人脸图像,其中人脸预测时进行的是纹理特征向量的叠加计算,人脸还原时进行的是纹理特征向量的差运算。
  最后,我们建立基于欧氏距离的照片相似度分析模型,对模型重构出的人脸与真实的人脸进行相似度分析,检验出模型的正确率在 58.6%。我们还分析了所建模型的优缺点,讨论了模型的推广应用。

问题分析:

  人脸图像识别问题是现今模式识别、图像处理等学科的一大研究热点,可以广泛的应用于安全部门、身份鉴别、电视会议、数字监控等领域。随着年龄的变化,人脸会发生变化,具体表现在色相衰老和皱纹的出现。本题要求我们在第一阶段的基础上,建立数学模型,解决通过一个人年轻时候来预测其若干年后的容貌,以及通过一个人在年老
时的照片来还原其年轻时候的容貌两个问题。
  首先,我们选取了 FG-NET 年龄人脸库,该人脸数据库中的人脸图像并不是在标准光线和标准角度中拍摄的,所以我们首先进行预处理,才能使用图像数据进行建模。但由于采集的图像往往会带有很多的噪声和干扰信号,因此对于采集的人脸图像,首先需要进行规范化处理,将外界的因素带来的影响提出,这里可以采用灰度化、集合规范化(图像的平移、旋转、缩放变化)、灰度规范化(即平滑、灰度均衡化)等预处理的方法。
  其次,要对图像进行面部特征提取和年龄估计,因为只有根据人脸的特征才能对其年龄进行合理的估计。可以使用 LBP 纹理特征提取算法,提取出人脸的纹理特征向量,并通过神经网络贡献分析法对特征向量作降维处理。对降维后的人脸纹理特征向量,可以使用 SVR 支持向量机回归模型, 以特征向量为输入对 SVR 进行训练,可以得到年龄估计模型。以此对图像的人脸进行较为准确的年龄估计。为下一步的人脸预测和人脸还原做准备。
  然后,是人脸的重构部分。由于人脸的变化主要表现为人脸形状随年龄的变化和人脸纹理特征(青春痘、皱纹等)随年龄的变化。因此,在确定目前人脸的年龄以后,就可以以此为基础,对人脸进行重构。这里的重构有两类,一类是对预测一张年轻的脸若干年后的容貌,令一类是还原一张年老的脸若干年前的容貌。重构主要包含有两个阶段,一是对人脸形状的改变,而是对人脸纹理的变化。在预测人脸的容貌时,只要利用该年龄段的人的脸形状变化后,叠加上预测年龄段的人脸纹理特征即可。对于还原人脸容貌,则要将人脸形状还原后,去除掉相应的纹理特征。
  最后,还要检验人脸重构是否合理,即检验重构后的人脸是否还是与原来的人脸是同一个,因此可以建立人脸相似度检验模型,对重构后的人脸和该年龄的人脸进行相似度分析,检验模型的准确性。

模型假设:

  1. 假设人的衰老是正常衰老,不考虑人的生病、吸烟、压力大等不良生活习惯造成的非正常变老。
  2. 假设本文所研究的人在成长过程中没有经历因为搬家等造成的生存环境的改变,外部环境对其造成的外貌的影响不予考虑。
  3. 假设选取的人脸图像样本采取时,没有意外伤害或病变导致的人脸局部区域的形状、颜色发生显著性改变
  4. 假采样人脸图像时,被采样者没有故意扭曲脸型,即为正常拍照。

论文缩略图:

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

全部论文请见下方“ 只会建模 QQ名片” 点击QQ名片即可

部分程序代码:(代码和文档not free)

function [ opic ] = picInit( ipic )
%PICINIT 此函数用来预处理图片
mysize=size(ipic);
if numel(mysize)>2tmp = rgb2gray(ipic);% 将图像灰度化
elsetmp = ipic;
end
%灰度调整
gc = imadjust(tmp,[0.2, 0.6], [0, 1]);
opic = gc;
end
//----------------------------------------------------------------------------
function [out] = get_bar( pic )
%GET_LBR 此处显示有关此函数的摘要
% 此处显示详细说明
gpic = double(pic);
lw=int16(size(gpic,1)/7);
lh=int16(size(gpic,2)/7);
for i = 0:6for j = 0:6res = zeros(lh, lw);for x = i*lw+1:(i+1)*lwfor y = j*lh+1:(j+1)*lhif x > size(gpic, 1) || y > size(gpic, 2)continue; endres(x-i*lw,y-j*lh) = pic(x,y);endendtmp = get_barD(res);if i == 0 && j == 0out=tmp;elseout=array_add(out,tmp);endend
end
end
function [ opic ] = lbp( pic )
%LBP 进行 lbp 处理
tmp=pic;
for i = 2:size(pic,1)-1for j = 2:size(pic,2)-1res=0;for k=i-1:i+1for l=j-1:j+1if k==i && l == jcontinueendres=res*2;x = 0;
if pic(k,l)>pic(i,j)x=1;endres = res+x;endendtmp(i,j)=res;end
end
opic = tmp;
end
function [out] = get_bar( pic )
%GET_LBR 此处显示有关此函数的摘要
% 此处显示详细说明
gpic = double(pic);
lw=int16(size(gpic,1)/7);
lh=int16(size(gpic,2)/7);
for i = 0:6for j = 0:6res = zeros(lh, lw);for x = i*lw+1:(i+1)*lwfor y = j*lh+1:(j+1)*lhif x > size(gpic, 1) || y > size(gpic, 2)continue; endres(x-i*lw,y-j*lh) = pic(x,y);endendtmp = get_barD(res);if i == 0 && j == 0out=tmp;elseout=array_add(out,tmp);endend
end
end
全部论文及程序请见下方“ 只会建模 QQ名片” 点击QQ名片即可

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

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

相关文章

3D应用开发工具HOOPS引领数字化工厂浪潮:制造业转型的关键角色!

随着科技的迅猛发展,制造业正经历着数字化转型的浪潮。在这一变革的前沿,Tech Soft 3D 的 HOOPS技术正扮演着关键的角色。 本文将深入研究HOOPS技术如何在数字化工作流程中发挥作用,以及它是如何引领制造业朝着更高效、智能的未来迈进的。 …

对读取的Excel文件数据进行拆分并发请求发送到后端服务器

首先,我们先回顾一下文件的读取操作: 本地读取Excel文件并进行数据压缩传递到服务器-CSDN博客 第一步:根据以上博客,我们将原先的handleFile方法,改为以下内容: const handleFile async(e) > {conso…

低代码技术杂谈

一、探讨低代码的定义 “Low-Code”是什么?身为技术人员听到这种技术名词,咱们第一反应就是翻看维基百科 或者其他相关技术论文,咱们想看维基百科的英文介绍: A low-code development platform (LCDP) provides a development env…

HCIA-HarmonyOS设备开发认证-HarmonyOS简介

目录 前言目标一、HarmonyOS简介1.1、初识HarmonyOS1.2、HarmonyOS典型应用场景 二、HarmonyOS架构与安全2.1、HarmonyOS架构2.1.1 内核层2.1.2 系统服务层2.1.3 框架层2.1.4 应用层 前言 本章主要介绍HarmonyOS分布式操作系统的概念、关键技术与能力以及HarmonyOS典型的应用场…

我们从海龟交易法上能够学到什么现货黄金投资技术?

海龟交易法是一种应用于股票和期货市场的交易方法,一度很流行。但后来随着市场参与者水平的变化,还有交易技术的革新,海龟交易法逐渐失效,简单地应用这个方法已经不能盈利了。尽管如此,我们还是可以从这个方法中学习到…

【Linux】vim配置

我们普通用户打开未配置的vim的时候,和Windows中的vs界面差别很大,使用不是很便捷 这里我们可以配置一下vim,便于我们的操作 我们可以在gitee中搜索vimforcpp VimForCpp: 快速将vim打造成c IDE (gitee.com) curl -sLf https://gitee.com/HGt…

vue2面试题:什么是双向数据绑定

vue2面试题:什么是双向数据绑定 回答思路:1.什么是双向绑定-->2.双向数据绑定的原理-->3.如何实现双向数据绑定1.什么是双向绑定2.双向数据绑定的原理3.如何实现双向数据绑定来一个构造函数:执行初始化,对data执行响应化处理…

【江科大】STM32:定时器中断

文章目录 TIM(Timer)定时器根据复杂度和应用场景分为了高级定时器、通用定时器、基本定时器三种类型基本定时器通用定数器 高级定时器 时钟(时钟电路)的作用是什么:设置定时器触发中断普通方法:预分频器时序…

年末怒赚一笔,程序员快码住!趁热接单

元旦已过,龙年将至。 有钱没钱,回家过年。 话说回来,年关将至,农历的2023即将落下帷幕。天气渐寒,你的钱包是否也让你心生寒意?年初立下的赚钱flag是否优雅地实现了? 如果flag都倒了,你先别…

Nginx 基础使用

目录结构 进入Nginx的主目录我们可以看到这些文件夹 client_body_temp conf fastcgi_temp html logs proxy_temp sbin scgi_temp uwsgi_temp其中这几个文件夹在刚安装后是没有的,主要用来存放运行过程中的临时文件 client_body_temp fastcgi_temp proxy_temp scg…

全文干货!信息化和数字化的本质区别是什么?

信息化和数字化都是行业的发展方向,但有一些区别。 简单来说就是,信息化侧重系统建设,用以管理生成的信息与数据,通常包括建立OA办公系统、业务系统、财务管理系统、客户关系管理系统和人力管理系统等。数字化侧重于将物理业务和…

用Axure RP 9制作弹出框

制作流程 1.准备文本框 下拉列表 按钮 动态面板 如图 2.先把下拉列表放好 再放动态面板覆盖 3.点动态面板 进入界面 如图 4.给按钮添加交互 3个按钮一样的 如图 5.提交按钮添加交互 如图

基于 LangChain 框架,向量数据库如何创建、读取、更新、删除(CRUD)

RAG是目前大语言模型从工具走向生产力实践的最热门的方式,它可以实现从海量的文本数据中检索相关的信息,并用于生成高质量的文本输出。 而聊到RAG,我们就很难避开使用RAG的基础设施-向量数据库 今天我将带领大家,以最为基础的CRU…

Linux配置yum源以及基本yum指令

文章目录 一、yum介绍二、什么是软件包三、配置yum源四、一键配置yum源【三步走】五、yum指令搜索软件安装软件卸载软件 六、其他yum指令更新内核更新软件更新指定软件显示所有可更新的软件清单卸载指定包并自动移除依赖包删除软件包,以及软件包数据和配置文件 一、…

Postman基本使用、测试环境(Environment)配置

文章目录 准备测试项目DemoController测试代码Interceptor模拟拦截配置 Postman模块简单介绍Postman通用环境配置新建环境(Environment)配置环境(Environment)设置域名变量引用域名变量查看请求结果打印 Postman脚本设置变量登录成功后设置全局Auth-Token脚本编写脚本查看conso…

大创项目推荐 行人重识别(person reid) - 机器视觉 深度学习 opencv python

文章目录 0 前言1 技术背景2 技术介绍3 重识别技术实现3.1 数据集3.2 Person REID3.2.1 算法原理3.2.2 算法流程图 4 实现效果5 部分代码6 最后 0 前言 🔥 优质竞赛项目系列,今天要分享的是 🚩 深度学习行人重识别(person reid)系统 该项目…

C语言第六弹---分支语句(下)

✨个人主页: 熬夜学编程的小林 💗系列专栏: 【C语言详解】 【数据结构详解】 分支语句 1、 逻辑操作符:&& , || , !4.1、 逻辑取反运算符 !4.2、 与运算符4.3、 或运算符4.4、 练习:闰…

【开源】基于JAVA的人事管理系统

目录 一、摘要1.1 项目介绍1.2 项目录屏 二、功能模块2.1 管理员功能模块2.2 普通员工功能模块2.3 答辩文案 三、系统展示四、核心代码4.1 查询职称4.2 新增留言回复4.3 工资申请4.4 工资审核4.5 员工请假 五、免责说明 一、摘要 1.1 项目介绍 基于JAVAVueSpringBootMySQL的人…

golang 中使用 statik 将静态资源编译进二进制文件中

现在的很多程序都会提供一个 Dashboard 类似的页面用于查看程序状态并进行一些管理的功能,通常都不会很复杂,但是其中用到的图片和网页的一些静态资源,如果需要用户额外存放在一个目录,也不是很方便,如果能打包进程序发…

推荐IDEA一个小插件,实用性很高!!

插件: Convert YAML and Properties File 由于每个人的开发习惯不同,在开发过程中会遇到各种小细节的问题。今天给大家介绍一个小插件,作用不大,细节很足。 就是properties类型文件和yml文件互相自由转换 解决:…