一种通过增强的面部边界实现精确面部表示的多级人脸超分辨率

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档

文章目录

  • 摘要
  • Abstract
  • 文献阅读:一种通过增强的面部边界实现精确面部表示的多级人脸超分辨率
  • 二、使用步骤
    • 1、研究背景
    • 2、方法提出
    • 3、相关方法
      • 3.1、FSR网络结构
      • 3.2、多阶段FSR网络结构
    • 4、实验工作
    • 5、方法比较
  • LSTM代码学习
    • 2.1、什么是LSTM
    • 2.2、LSTM的处理过程
    • 2.3、LSTM代码分析
  • 总结


摘要

本周主要阅读了2020CVPR的文章,一种通过增强的面部边界实现精确面部表示的多级人脸超分辨率,该论文提出了一种创新的MSFSR模型,旨在提高人脸超分辨率的精度和稳定性。通过多阶段处理和面部边界的增强,提高超分辨率模型对人脸的精细特征的重建能力,该模型能够更好地捕捉和处理人脸的精细特征和表情变化,从而在人脸超分辨率任务中取得更好的性能。除此之外,我还学习复习了LSTM的相关知识,并通过其实现过程来进行代码的学习。

Abstract

This week, I mainly read the articles of CVPR 2020. One of them is a multi-level face super-resolution method that achieves accurate facial representation through enhanced facial boundaries. This paper proposed an innovative MSFSR model to improve the precision and stability of face super-resolution. Through multi-stage processing and facial boundary enhancement, the model enhances the reconstruction ability of fine features of faces by super-resolution models. The model can better capture and process fine features and expressions of faces, achieving better performance in face super-resolution tasks. Besides, I also reviewed the relevant knowledge of LSTM and learned the code through its implementation process.


文献阅读:一种通过增强的面部边界实现精确面部表示的多级人脸超分辨率

Title: MSFSR: A Multi-Stage Face Super-Resolution With Accurate Facial Representation via Enhanced Facial Boundaries
Author:Bingfan Zhu , Yanchao Yang , Xulong Wang , Youyi Zheng† , Leonidas Guibas
From:2023 IEEE/CVF Conference on Computer Vision and Pattern Recognition (CVPR)

二、使用步骤

1、研究背景

FSRNet是基于结构先验知识的人脸超分辨率算法的经典之作。它首次提出采用双分支网络结构,通过常规图像超分辨率放大分支和人脸先验提取分支,从低分辨率图像中挖掘不同层次的特征,帮助网络进行超分辨率放大。通过显式引入外部人脸结构先验知识(人脸解析图和人脸关键点),不仅提升了输出高分辨率人脸图像的分辨率;而且也不需要对人脸图像进行复杂的预对齐工作。受益于上述优点,FSRNet在一段时间内成为基于结构先验知识的FSR算法中最出色的一种。但是FSRNet存在以下缺点:公开人脸数据集中几乎没有提供高质量的人脸解析图,而人脸解析图的标注是昂贵且复杂的,这使得这类方法的研究变得非常困难;尽管我们可以采用公开数据集中普遍提供的人脸关键点作为外部人脸结构先验知识,但是何种密度的人脸关键点能够最大化FSR网络的重建性能也是未知的。

2、方法提出

为了解决FSRNet所具有的小毛病,提出了一种采用人脸边缘线作为人脸结构表示方式,该方法能够以极低成本扩充人脸数据集规模,更能摆脱了关键点密度的约束,直接用轮廓线代替点。人脸边缘线不仅仅只是一种中间表示方式,其本身就对于人脸几何结构进行了建模,是一种良好的人脸结构表示方式。一方面,由于边缘线的连续性,无论人脸关键点定义密度如何,表示同一五官特征的关键点都会落在11条人脸边缘线上。此时我们就将一个复杂的预测各个数据集不同人脸关键点的任务转换为了一个相对简单的预测人脸边缘线的任务。另一方面,人脸边缘线本文就是对人脸结构的一种较为完备的建模。其相较于人脸关键点,包含了更完整的人脸结构信息;相较于人脸解析图,对于五官内部的结构特征(如鼻翼)有更精确的刻画。
在这里插入图片描述

3、相关方法

3.1、FSR网络结构

现有的双分支网络设计通过额外分支显式地引入人脸结构先验信息,这种结构不仅直观且有效。但是,双分支网络内部本身耦合较紧密,很难通过对每部分单独优化实现整体的优化。因此,对现有的FSR网络结构进行了重思考,采用三大模块作为基本组件,通过灵活的连接,组成一个完整的FSR网络。三大基础模块按照功能进行划分:基础上采样模块(Basic Upscale Module,BUM),边缘预测模块(Boundary Estimation Module,BEM),边缘融合模块(Boundary Fusion Module,BFM)。
其中,基础上采样模块将输入的低分辨率图片进行了尺度放大。这里的基础上采样模块可以被替换为任意通用图像超分辨率算法,这样FSR算法就能够充分受益于通用图像超分辨率算法的进化。边缘预测模块则是采用漏斗结构,将经过了基础上采样模块后的大尺寸图像中人脸边缘线的可能位置进行预测。而边缘融合模块则是将大尺寸图像中的特征信息和边缘预测模块中的人脸边缘线信息进行加权融合,用以最终生成人脸图像。
在这里插入图片描述

3.2、多阶段FSR网络结构

现有的单阶段直接放大的FSR网络在处理超过8倍的上采样操作时,性能会出现明显的下降。正因为在上一步,我们将整个FSR网络的组成分解为了三个模块的组合与连接,我们可以灵活的将一个单阶段直接放大的网络改进为多阶段渐进放大的网络。多阶段的FSR网络不单单是简单的将模块进行级联链接,同时还需要考虑到不同阶段网络处理的任务难度的差异。在网络的初始阶段,图像的分辨率较小,边缘预测模块预测精确的人脸边缘线的难度较大,因此直接施加细粒度的人脸边缘线会导致网络难以收敛;伴随着网络的深度增加,图像的尺寸也逐级增大,此时我们需要逐渐的约束人脸边缘线的粒度,从粗粒度的边缘线变为细粒度的人脸边缘线,进一步约束网络进行图像的”精修“。
于是提出这样的网络设计,一个从粗到细的边缘线监督机制,通过人脸边缘线粒度进行数值控制,探究了不同阶段人脸边缘线的最佳设置,充分提升了多阶段网络的性能。同时,在多阶段网络重建过程中,我们还尝试了在网络的不同阶段直接使用生成对抗网络结构来逐级优化各个阶段的输出结果。但是,试验效果不如人意。主要原因在于:网络的前期阶段,图像的分辨率尺寸较小,直接采用生成对抗网络会给重建的图像引入过大的额外噪声,不利于下一级网络的重建。因此,我们只在多阶段网络的最后一个阶段引入生成对抗网络结构,生成更加逼真的人脸图像。

4、实验工作

首先进行了人脸边缘线有效性试验,在相同的试验设置下,我们对人脸边缘线、人脸解析图和不同标注密度的人脸关键点进行了试验比较。试验结果如下图所示。从结果中体现了一些有趣的结论:横向对比5个人脸关键点的FSR算法结果和81个人脸关键点的FSR算法结果,可以看出:当人脸关键点的数目增加,FSR网络的性能逐步提升。进一步对比人脸关键点和人脸解析图作为人脸结构先验知识的FSR算法,验证了引入的外部人脸表示所携带的人脸结构语义信息越多,FSR网络的性能越好。横向对比81个人脸关键点和194个人脸关键点的FSR网络的性能表现,本文发现:更加密集的人脸关键点信息并不能有效提升FSR算法的性能。
在这里插入图片描述

5、方法比较

将提出的方法与近两年的其他网络进行了比较。为了全面展示我们算法的性能,选取了EDSR,EnhanceNet, ESRGA,URDGN, FSRNet,PFSR作为比较。这里我简单对于几个客观指标进行一下简单介绍:几个客观评价指标中,PSNR,SSIM指标都是越高越好;PI(Perception Index)指标是越低越好。从结果中可以看出,我们的算法在客观指标上,也优于其他竞争对手。同时,这也是首次在评估人脸图像重建效果的过程中采用了公开的人脸对比API(这里用的是旷场的Face++人脸对比API)。提出的算法不仅在通用图像质量评估指标上领先,同时重建的图像与真实人脸图像的身份相似度也保持了极高的相似度,证明该算法在身份保真度上也遥遥领先。
在这里插入图片描述

LSTM代码学习

2.1、什么是LSTM

LSTM(Long Short-Term Memory)是一种长短期记忆网络,是一种特殊的RNN(循环神经网络)。与传统的RNN相比,LSTM更加适用于处理和预测时间序列中间隔较长的重要事件。LSTM通过引入记忆细胞、输入门、输出门和遗忘门的概念,能够有效地解决长序列问题。记忆细胞负责保存重要信息,输入门决定要不要将当前输入信息写入记忆细胞,遗忘门决定要不要遗忘记忆细胞中的信息,输出门决定要不要将记忆细胞的信息作为当前的输出。这些门的控制能够有效地捕捉序列中重要的长时间依赖性,并且能够解决梯度问题。

2.2、LSTM的处理过程

LSTM的处理过程包括以下步骤:

  • 输入门(InputGate):这一步决定了当前时刻网络将如何接收输入信息。首先,输入门会接收当前时刻的输入数据和前一时刻的隐藏层状态。然后,通过一个sigmoid函数,输入门会决定哪些信息将被更新。
  • 遗忘门(ForgetGate):这一步决定了哪些信息将被遗忘。遗忘门会接收前一时刻的隐藏层状态和当前时刻的输入数据,然后通过一个sigmoid函数,遗忘门会决定哪些信息将被丢弃。
  • 记忆单元状态更新:记忆单元状态更新是在输入门和遗忘门的基础上进行的。首先,通过结合遗忘门的输出和前一时刻的记忆单元状态,可以得到一个候选记忆单元状态。然后,结合输入门的输出和当前时刻的输入数据,可以得到一个更新后的记忆单元状态。
  • 输出门(OutputGate):这一步决定了当前时刻网络的输出。输出门接收当前时刻的隐藏层状态和当前时刻的输入数据,然后通过一个sigmoid函数,输出门会决定哪些信息将被作为输出。
  • 输出:最后,通过将tanh函数与输出门的输出相乘,可以得到最终的隐藏层状态。
    如下图所示,c类似于长期记忆,h类似于短期记忆。我们使用输入x和h来更新长期内存。在更新中,c的一些特征通过遗忘门f被清除,并且一些特征i,通过门g被添加,接着新的短期存储器是长期存储器的tanh乘以输出门o。
    在这里插入图片描述

2.3、LSTM代码分析

# 创建LSTM模型  
class LSTM(nn.Module):  def __init__(self, input_size, hidden_size, num_layers, output_size):  #定义类的构造函数,用于初始化模型的参数。参数包括输入特征数、隐藏层大小、LSTM层数和输出大小。super(LSTM, self).__init__()  self.hidden_size = hidden_size  self.num_layers = num_layers  self.lstm = nn.LSTM(input_size, hidden_size, num_layers, batch_first=True)  #创建一个LSTM层,输入特征数为input_size,隐藏层大小为hidden_size,LSTM层数为num_layers。#参数batch_first=True表示输入张量的形状为(batch_size, seq_len, feature_size)。self.fc = nn.Linear(hidden_size, output_size)  #创建一个全连接层,输入大小为隐藏层大小hidden_size,输出大小为output_size。def forward(self, x):  # 初始化隐藏状态和细胞状态  h0 = torch.zeros(self.num_layers, x.size(0), self.hidden_size).to(x.device)   c0 = torch.zeros(self.num_layers, x.size(0), self.hidden_size).to(x.device)  #初始化隐藏状态和细胞状态,形状分别为[层数, batch_size, 隐藏层大小],并移动到与输入数据x相同的设备上 # LSTM层输出  out, _ = self.lstm(x, (h0, c0))  # 取最后一个时间步的输出  out = self.fc(out[:, -1, :])  #取LSTM层输出out的最后一个时间步的输出,并将其传递给全连接层。全连接层的输出即为模型的最终输出。return out

总结

本周通过阅读论文,一种通过增强的面部边界实现精确面部表示的多级人脸超分辨率,了解了基于结构先验知识的人脸超分辨率算法的基础知识,并且看到了新的增强的面部边界实现的方法,能够更好地捕捉和处理人脸的精细特征和表情变化。其次本周因为配置Linux的环境导致花费了大量的时间,没能将LSTM进行训练测试,只进行了简单的代码学习,未来会继续加快进度。

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

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

相关文章

26.各品类中商品价格的中位数(ceil与floor函数)

题目: 题解: --这道题主要考察中位数的取法 SELECT category_id,cast(sum(price)/count(1) as DECIMAL(16,2)) medprice from( SELECTcategory_id,price,rn,max(rn)over(partition by category_id) max_rn from(SELECTcategory_id,price,row_number() …

Emergent Abilities of Large Language Models 机翻mark

摘要 证明通过扩大语言模型可以可靠地提高性能和样本效率在广泛的下游任务。相反,本文讨论了我们称之为大型语言模型的新兴能力的一种不可预测的现象。我们认为如果一个能力不存在于较小的模型中,但在较大的模型中存在,则该能力就是新兴的。…

开发微信小程序,将图片下载到相册的方法,saveImageToPhotosAlbum怎么用

在开发微信小程序的时候,经常能看到小程序里面有下载按钮,如何将小程序中的图片下载到手机相册中那,下面给大家说一下怎么做,代码如何去写。 一、到微信小程序后台开启“用户隐私保护指引” 1.进入小程序后台,侧拉拉到…

牛刀小试 - C++ 推箱子小游戏

参考文档 C笔记:推箱子小游戏 copy函数 memcpy()函数用法(可复制数组) 使用memcpy踩出来的坑,值得注意 完整代码 /********************************************************************* 程序名:推箱子小游戏 说明&#x…

前端怎么监听手机键盘是否弹起

摘要: 开发移动端中,经常会遇到一些交互需要通过判断手机键盘是否被唤起来做的,说到判断手机键盘弹起和收起,应该都知道,安卓和ios判断手机键盘是否弹起的写法是有所不同的,下面讨论总结一下两端的区别以及…

EMQX 单机及集群搭建

目录 1. 通过 Yum 源安装(CentOS7 单机安装) 1.1. 通过以下命令配置 EMQX Yum 源: 1.2. 运行以下命令安装 EMQX: 1.3. 运行以下命令启动 EMQX: 1.4. 访问 http://192.168.88.130:18083,默认用户名: adm…

C++ 重点内容:友元

目录 友元函数: 友元成员函数: 友元类: 友元是否有悖于OOP? 总结: 类因为具有封装和信息隐藏的特性(类外函数无法访问类的私有、保护成员),C提出友元解决特定的编程需要;友元分…

idea用version标签配置版本号报错版本号missing

问题描述&#xff1a; 用<mybatis-plus.version>3.3.2</mybatis-plus.version>配置pom的版本号&#xff0c;报错 dependencies.dependency.version for com.baomidou:mybatis-plus-boot-starter:jar is missing. line 33, column 21详细报错如下&#xff1a; 详…

安卓开发——Activity及常用布局和控件的使用

Activity及常用布局和控件的使用 一、实验目的 掌握Android常用布局和控件的使用。 Activity组件使用和Intent机制&#xff0c;加强对Activity生命周期的理解 二、实验设备及器件 Android Studio&#xff0c;图标&#xff1a;http://10.37.59.210/download/icon/MobileShopI…

记签名机制

签名过程&#xff1a; 首先将数据源通过摘要算法获取到数字摘要 对数字摘要用私钥进行加密得到签名 将原始消息 以及签名发送给消息接收方 接收方用公钥解密得到数字摘要 用同样的摘要算法将原始消息进行计算 比较得到的数字摘要与解密后的是否一致 Android学习笔记——Androi…

网络分层和网络原理之UDP和TCP

温故而知新 目录 网络分层 应用层 http协议 传输层 介绍 UDP协议 TCP协议 网络层 数据链路层 物理层 网络分层 一. 应用层 应用程序 现成的应用层协议有超文本协议http(不仅仅有文本&#xff09;. http协议 http://t.csdnimg.cn/e0e8khttp://t.csdnimg.cn/e0e8k 自定义应…

【复现 3D Gaussian Splatting】protobuf的版本太高而导致编译错误

输入训练&#xff1a; (base) C:\Users\15893\gaussian-splatting>python train.py -s data/tandt/train报错内容如下&#xff1a; If this call came from a _pb2.py file, your generated code is out of date and must be regenerated with protoc > 3.19.0.If you …

Spring: alibaba代码规范校验工具checkstyle

文章目录 一、idea配置checkstyle插件二、激活CheckStyle三、配置自动格式化功能 一、idea配置checkstyle插件 下载 Intellij IDEA Checkstyle 插件&#xff1a;File -> setting -> plugin通过关键字CheckStyle-IDEA搜索并安装。 安裝完成后重启idea 二、激活CheckSty…

[晓理紫]每日论文分享(有中文摘要,源码或项目地址)-机器人、强化学习

专属领域论文订阅 关注{晓理紫}&#xff0c;每日更新论文&#xff0c;如感兴趣&#xff0c;请转发给有需要的同学&#xff0c;谢谢支持 如果你感觉对你有所帮助&#xff0c;请关注我&#xff0c;每日准时为你推送最新论文。 分类: 具身智能&#xff0c;机器人强化学习开放词汇&…

模拟问题刷题

模拟类题目是机试题中出现频率很高的一种类型&#xff0c;这类题目的特点是并不涉及特别高 深的知识&#xff0c;只需利用程序实现题目的要求。由于这类题目通常不需要经过太多的思考&#xff0c;所以能够很纯粹地考查考生的编程能力。 1. 图形排版 图形排版是最为常见的模拟…

利用aiohttp异步爬虫实现网站数据高效抓取

前言 大数据时代&#xff0c;网站数据的高效抓取对于众多应用程序和服务来说至关重要。传统的同步爬虫技术在面对大规模数据抓取时往往效率低下&#xff0c;而异步爬虫技术的出现为解决这一问题提供了新的思路。本文将介绍如何利用aiohttp异步爬虫技术实现网站数据抓取&#x…

【UE插件DTRabbitMQ】 虚幻引擎蓝图连接RabbitMQ服务器使用插件说明

本插件可以使用蓝图连接 RabbitMQ服务器&#xff0c;并推送或者监听消息。 下载地址在文章最后。 1. 节点说明 Create RabbitMQ Client - 创建RabbitMQ客户端对象 创建一个RabbitMQ客户端对象&#xff0c;返回的对象需要提升为变量&#xff0c;以后就是用这个对象去操作。 Con…

Leetcode2826. 将三个组排序

Every day a Leetcode 题目来源&#xff1a;2826. 将三个组排序 解法1&#xff1a;贪心 二分查找 最长递增子序列的变种题。 利用 Leetcode300. 最长递增子序列 的方法&#xff0c;求出数组 nums 的最长递增子序列 g&#xff0c;最后答案为 nums.size() - g.size()。 代码…

【JaveWeb教程】(34)SpringBootWeb案例之《智能学习辅助系统》的详细实现步骤与代码示例(7)配置文件的设置

目录 SpringBootWeb案例054. 配置文件4.1 参数配置化4.2 yml配置文件4.3 ConfigurationProperties SpringBootWeb案例05 前面我们已经实现了员工信息的条件分页查询以及删除操作&#xff0c;以及实现新增和修改员工。 本节的主要内容&#xff1a; 配置文件的设置 4. 配置文件…

nginx反向代理负载均衡

一&#xff0c;kali作为负载服务器 打开kali nginx服务&#xff0c;访问页面如下 使用docker拉取nginx&#xff0c;并做出端口映射 ┌──(root?kali)-[/etc/nginx] └─# docker pull nginx ┌──(root㉿kali)-[/etc/nginx] └─# docker run -p 11111:80 --name Jdr -d ng…