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)>2
 tmp = rgb2gray(ipic);% 将图像灰度化
else
 tmp = 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:6
 for j = 0:6
 res = zeros(lh, lw);
 for x = i*lw+1:(i+1)*lw
 for y = j*lh+1:(j+1)*lh
 if x > size(gpic, 1) || y > size(gpic, 2)
 continue; 
 end
 res(x-i*lw,y-j*lh) = pic(x,y);
 end
 end
 tmp = get_barD(res);
 if i == 0 && j == 0
 out=tmp;
 else
 out=array_add(out,tmp);
 end
 end
end
end
function [ opic ] = lbp( pic )
%LBP 进行 lbp 处理
tmp=pic;
for i = 2:size(pic,1)-1
 for j = 2:size(pic,2)-1
 res=0;
 for k=i-1:i+1
 for l=j-1:j+1
 if k==i && l == j
 continue
 end
 res=res*2;
 x = 0;
if pic(k,l)>pic(i,j)
 x=1;
 end
 res = res+x;
 end
 end
 tmp(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:6
 for j = 0:6
 res = zeros(lh, lw);
 for x = i*lw+1:(i+1)*lw
 for y = j*lh+1:(j+1)*lh
 if x > size(gpic, 1) || y > size(gpic, 2)
 continue; 
 end
 res(x-i*lw,y-j*lh) = pic(x,y);
 end
 end
 tmp = get_barD(res);
 if i == 0 && j == 0
 out=tmp;
 else
 out=array_add(out,tmp);
 end
 end
end
end
全部论文及程序请见下方“ 只会建模 QQ名片” 点击QQ名片即可

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

sqli-labs通关笔记(less-11 ~ less16)

上一篇文章说了sqli-labs的less-1到less-10的注入方法,这一篇从less-11开始。 由于从11关开始都是post请求,不会像前十关一样存在符号转成url编码的麻烦,所以不再使用apifox,直接从页面上进行测试。 Less-11 老规矩,…

MySQL 8.3 发布,具体有哪些新增和删减?

MySQL 8.3 主要更新:用于标记事务分组的 GTID、JSON EXPLAIN 格式增强、一些功能删除等。 MySQL 是一款广泛使用的开源的关系型数据库管理系统,已推出其最新版本 MySQL 8.3。它带来了新功能和一些删除,有望简化数据库操作。让我们来看看有哪些…

机器学习:BootStrapping(Python)

import numpy as np import pandas as pd from sklearn.neighbors import KNeighborsClassifier from sklearn.decomposition import PCA # 主成分分析 from sklearn.preprocessing import LabelEncoder, StandardScaler # 类别标签编码,标准化处理 import matplo…

MySQL ORDER BY(排序) 语句

昨天介绍了 MySQL 数据库 UNION 操作符的使用,今天主要讲解下 ORDER BY(排序)语句。 我们知道从 MySQL 表中使用 SELECT 语句来读取数据。如果需要对读取的数据进行排序,我们就可以使用 MySQL 的 ORDER BY 子句来设定你想按哪个字…

React Native性能优化指南

摘要 本文将介绍在React Native开发中常见的性能优化问题和解决方案,包括ScrollView内无法滑动、热更新导致的文件引用问题、高度获取、强制横屏UI适配、低版本RN适配iOS14、缓存清理、navigation参数取值等。通过代码案例演示和详细说明,帮助开发者更好…

如何本地安装Python Flask并结合内网穿透实现远程开发

💝💝💝欢迎来到我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学…

深度学习记录--学习率衰减(learning rate decay)

学习率衰减 mini-batch梯度下降最终会在最小值附近的区间摆动(噪声很大),不会精确收敛 为了更加近似最小值,采用学习率衰减的方法 随着学习率的衰减,步长会逐渐变小,因此最终摆动的区间会很小,更加近似最小值 如下…

DSP Bootloader

DSP Bootloader Refer: DSP Bootloader开发思路讲解

SpringMvc中拦截器的配置及应用

拦截器原理 在 Spring MVC 中,拦截器(Interceptor)是一种机制,用于拦截请求并在处理程序(Controller)执行之前或之后执行一些操作。拦截器允许您在请求的不同阶段(如处理程序执行前、处理程序执…

网络安全(初版,以后会不断更新)

1.网络安全常识及术语 资产 任何对组织业务具有价值的信息资产,包括计算机硬件、通信设施、IT 环境、数据库、软件、文档 资料、信息服务和人员等。 漏洞 上边提到的“永恒之蓝”就是windows系统的漏洞 漏洞又被称为脆弱性或弱点(Weakness)&a…

Kafka-多线程消费及分区设置

目录 一、Kafka是什么?消息系统:Publish/subscribe(发布/订阅者)模式相关术语 二、初步使用1.yml文件配置2.生产者类3.消费者类4.发送消息 三、减少分区数量1.停止业务服务进程2.停止kafka服务进程3.重新启动kafka服务4.重新启动业…

【数据结构与算法】1.数据结构绪论

📚博客主页:爱敲代码的小杨. ✨专栏:《Java SE语法》 ❤️感谢大家点赞👍🏻收藏⭐评论✍🏻,您的三连就是我持续更新的动力❤️ 🙏小杨水平有限,欢迎各位大佬指点&…

用户头像上传

将用户上传的头像存储在腾讯云存储桶里 注册腾讯云 https://cloud.tencent.com/login 创建存储桶 配置跨域 来源 * (任何都可以访问) put get post 请求都可以 点击概览,查看存储桶基本信息 记录保存存储桶名称和地域 找到api密钥管理,新建密钥 ht…

1028 人口普查分数 (测试点3 20分)

某城镇进行人口普查,得到了全体居民的生日。现请你写个程序,找出镇上最年长和最年轻的人。 这里确保每个输入的日期都是合法的,但不一定是合理的——假设已知镇上没有超过 200 岁的老人,而今天是 2014 年 9 月 6 日,所…

基于深度学习的细胞感染性识别与判定

基于深度学习的细胞感染性识别与判定 基于深度学习的细胞感染性识别与判定引言项目背景项目意义项目实施数据采集与预处理模型选择与训练模型评估与优化 结果与展望结论 基于深度学习的细胞感染性识别与判定 引言 随着深度学习技术的不断发展,其在医学图像处理领域…

【遥感数字图像处理(朱文泉)】各章博文链接汇总及思维导图

遥感数字图像处理课程汇总 第0章 绪论第一章 数字图像基础第二章 数字图像存储与处理第三章 空间域处理方法第四章 变换域处理方法第五章 辐射校正第六章 几何校正第七章 图像去噪声第八章 图像增强第九章 感兴趣目标及对象提取第十章 特征提取与选择第十一章 遥感数字图像分类…

2.【SpringBoot3】用户模块接口开发

文章目录 开发模式和环境搭建开发模式环境搭建 1. 用户注册1.1 注册接口基本代码编写1.2 注册接口参数校验 2. 用户登录2.1 登录接口基本代码编写2.2 登录认证2.2.1 登录认证引入2.2.2 JWT 简介2.2.3 登录功能集成 JWT2.2.4 拦截器 3. 获取用户详细信息3.1 获取用户详细信息基本…

数字孪生技术助力澳大利亚绿色能源行业

OpenUtilities可实现变电站智能数字化设计,减少对环境的影响并节省 50% 的成本 将智能数字化设计扩展到小型基建工程 Essential Energy 的电网跨越 73.7 万公里,覆盖了澳大利亚新南威尔士州约 95%的地区,为 1,500 个地区、农村和…

C++并发编程:线程启动

启动线程 C中构造 std::thread 对象启动线程 void do_some_work(); std::thread my_thread(do_some_work); 最简单的情况下是无参数无返回的函数。启动一个新的线程执行hello()函数。这种函数在其所属线程上运行,函数执行完毕, 线程结束。为了让编译器…

【深度学习:数据增强 】提高标记数据质量的 5 种方法

【深度学习:数据增强 】提高标记数据质量的 5 种方法 计算机视觉中常见的数据错误和质量问题?为什么需要提高数据集的质量?提高标记数据质量的五种方法使用复杂的本体结构作为标签人工智能辅助标签识别标签错误的数据改进注释者管理 计算机视…