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.mzph.cn/news/639705.shtml

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

相关文章

FPGA物理引脚,原理(Pacakge and pinout)-认知3

画FPGA芯片引脚封装图(原理),第一是参考开发板(根据一下描述了解总览),第二是研究Datasheet. ASCII Pinout File Zynq-7000 All Programmable SoC Packaging and Pinout(UG585) 1. Pacakge overview 1.1&#xff0…

智能生产系统的数字孪生应用场景

数字孪生引擎技术可以支持智能生产系统的设计、建设以及运营管理。和产品生命周期类似,生产制造系统也有其生命周期。图1中表述为:设计、构建、调试、运营与维护、报废与回收。智能生产系统的典型代表就是智能车间或智能工厂,其设计和建造是为了完成某一…

中仕教育:国考调剂和补录的区别是什么?

国考笔试成绩和进面名单公布之后,考生们就需要关注调剂和补录了,针对二者之间的区别很多考生不太了解,本文为大家解答一下关于国考调剂和补录的区别。 1.补录 补录是在公式环节之后进行的,主要原因是经过面试、体检和考察&#…

【C++】priority_queue模拟实现过程中值得注意的点

👀樊梓慕:个人主页 🎥个人专栏:《C语言》《数据结构》《蓝桥杯试题》《LeetCode刷题笔记》《实训项目》《C》《Linux》《算法》 🌝每一个不曾起舞的日子,都是对生命的辜负 前言 本篇文章旨在记录博主在模…

【C++】命名空间(namespace)

文章目录 1. 为什么要有命名空间?2. 命名空间介绍3.命名空间三种使用方式4. 注意 1. 为什么要有命名空间? 在C语言中,局部变量和全局变量如果同名,在使用时可能会造成冲突。这并不是想避免就能避免的,在程序中,不仅仅是变量&…

k8s是什么?一文详解!

前言 大家好,我是chowley,之前面试中有被问道项目中使用的web容器,今天我就来好好讲一讲其中主流的k8s是什么 Kubernetes 通常简称为K8s,是一个用于自动部署、扩展和管理容器化应用程序的开源平台。它提供了一个强大的容器编排…

[pytorch入门] 4. torchvision中数据集的使用

介绍 文档 可以去看官方文档 可以在里面找到一些数据集的使用 CIFAR10 import torchvision from torch.utils.tensorboard import SummaryWriterdataset_transform torchvision.transforms.Compose([torchvision.transforms.ToTensor(), ])train_set torchvision.datas…

SpringBoot开启 Actuator springboot开启actuator监控信息

SpringBoot开启 Actuator springboot开启actuator监控信息 1、加入依赖2、yml配置文件3、访问 1、加入依赖 官网文档&#xff1a; https://docs.spring.io/spring-boot/docs/2.1.5.RELEASE/actuator-api/html/ 2.1.5.RELEASE 为对应springboot版本号 <dependency><gr…

测开和测试平台是否有存在的必要?

前言 在一线大厂&#xff0c;没有测试这个岗位&#xff0c;只有测开这个岗位&#xff0c;即使是做业务测试&#xff0c;那么你的title也是测开。 所以想聊一聊测开的看法&#xff0c;但不代表这是正确的看法&#xff0c;仅供参考。 没来阿里之前我对测开的看法 一直以为专职…

VMware ESXI系统安装

VMware ESXi是可直接安装在物理服务器上的强大的裸机管理系统&#xff0c;不需安装其他操作系统&#xff0c;是VMware服务器虚拟化的基础。通过直接访问并控制底层资源&#xff0c;VMware ESXi能有效地对硬件进行分区&#xff0c;以便整合应用并降低成本&#xff0c;是业界领先…

竹子(?)

青蛙哥种了 n n n 棵竹子&#xff0c;一开始第 i i i 棵竹子的高度为 h i h_i hi​&#xff0c;每天会长高 a i a_i ai​。由于竹子长得太快&#xff0c;青蛙哥不得不砍掉一些竹子&#xff0c;但是&#xff0c;每次只能砍下一截长度为 p p p 的竹子&#xff0c;而且为了防…

东南大学研究生课程《计算机网络体系结构》期末考试英文缩写-全称词汇表大全

前言 东南大学计算机科学与工程学院/软件学院在研一学期会开一门C类必修课程《计算机网络体系结构》&#xff08;这里的必修&#xff0c;是计入学分&#xff0c;评优评奖算成绩的意思&#xff0c;这门课其实也不是必须得上&#xff0c;依旧是选修&#xff0c;其实这门课算必修…

四.Winform使用Webview2加载本地HTML页面并互相通信

Winform使用Webview2加载本地HTML页面并互相通信 往期目录本节目标核心代码实现HTML代码实现的窗体Demo2代码效果图 往期目录 往期相关文章目录 专栏目录 本节目标 实现刷新按钮点击 C# winform按钮可以调用C# winform代码显示到html上点击HTML按钮可以调用C# winform代码更…

性能优化-OpenCL kernel 开发

「发表于知乎专栏《移动端算法优化》」 本文主要介绍OpenCL的 Kernel&#xff0c;包括代码的实例以及使用注意的详解。 &#x1f3ac;个人简介&#xff1a;一个全栈工程师的升级之路&#xff01; &#x1f4cb;个人专栏&#xff1a;高性能&#xff08;HPC&#xff09;开发基础教…

神策 CDP 获评中国软件评测中心「优秀大数据产品」

近日&#xff0c;中国软件评测中心在第十三届软件大会上揭晓了「第十五期优秀大数据产品、解决方案和案例测评结果」。神策数据基于客户旅程编排的客户数据平台&#xff08;CDP&#xff09;1.3.0 凭借出色的产品能力获评「优秀大数据产品」&#xff0c;并获得大数据基础设施类产…

linux 安装 grafana

Ubuntu 和 Debian(64 位)SHA256&#xff1a; e551434e9e3e585633f7b56a33d8f49cda138d92ad69c2c29dcec2c3ede84607 sudo apt-get install -y adduser libfontconfig1 muslwget https://dl.grafana.com/enterprise/release/grafana-enterprise_10.2.3_amd64.debsudo dpkg -i gra…

Java leetcode简单刷题记录3

Java leetcode简单刷题记录3 汇总区间&#xff1a; https://leetcode.cn/problems/summary-ranges/ 把数据按照是否连续分组输出 主要是 n<nums.length-1 && nums[n]1nums[n] 最多可以摧毁的敌人城堡&#xff1a; https://leetcode.cn/problems/maximum-enemy-fort…

SV学习——数据类型(1)

文章目录 1. 内建数据类型2. 用户自定义3. 枚举类型 1. 内建数据类型 SV中引入新的数据类型logic&#xff0c;SV作为侧重于验证的语言&#xff0c;并不十分关切logic对应的逻辑应该被综合位寄存器还是线网&#xff0c;因为logic被使用的场景如果是验证环境&#xff0c;那么它只…

【HarmonyOS】体验鸿蒙电商平台的未来之旅!

从今天开始&#xff0c;博主将开设一门新的专栏用来讲解市面上比较热门的技术 “鸿蒙开发”&#xff0c;对于刚接触这项技术的小伙伴在学习鸿蒙开发之前&#xff0c;有必要先了解一下鸿蒙&#xff0c;从你的角度来讲&#xff0c;你认为什么是鸿蒙呢&#xff1f;它出现的意义又是…

Linux调试分析诊断工具 strace

strace是个功能强大的Linux调试分析诊断工具&#xff0c;可用于跟踪程序执行时进程系统调用 (system call) 和所接收的信号&#xff0c;尤其是针对源码不可读或源码无法再编译的程序。在Linux系统中&#xff0c;用户进程不能直接访问计算机硬件设备。当进程需要访问硬件设备(如…