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

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

文章目录

  • 摘要
  • 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.mfbz.cn/a/351046.html

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

相关文章

【微信小程序】常用的几种轮播图

轮播效果一 wxml: <view classpageBox pageOne><view classlist><swiper indicator-dots"{{true}}" autoplay"{{false}}" previous-margin"{{140rpx}}" next-margin"{{140rpx}}" bindchange"swiperChange"&…

AI编译器的后端优化策略

背景 工作领域是AI芯片工具链相关&#xff0c;很多相关知识的概念都是跟着项目成长建立起来&#xff0c;但是比较整个技术体系在脑海中都不太系统&#xff0c;比如项目参与中涉及到了很多AI编译器开发相关内容&#xff0c;东西比较零碎&#xff0c;工作中也没有太多时间去做复盘…

算子:详细篇

目录 一、执行环境 1.1 创建执行环境 1.2 执行模式 二、源算子 2.1 从集合中读取数据 2.2 从文件读取数据 2.3 从socket读取数据 2.4 从kafka读取数据 三、转换算子 3.1 基本转换算子 &#xff08;1&#xff09;映射(map) &#xff08;2&#xff09;过滤(filter) &#xff08…

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

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

云手机哪一款好用?

随着海外市场的不断发展&#xff0c;云手机市场也呈现蓬勃的态势&#xff0c;众多云设备软件纷纷涌现。企业在选择云手机软件时&#xff0c;如何找到性能卓越的软件成为一项关键任务。在众多选择中&#xff0c;OgPhone云手机凭借其卓越的性能和独特功能脱颖而出。以下是OgPhone…

音频格式之AAC:(3)AAC编解码原理详解

系列文章目录 音频格式的介绍文章系列&#xff1a; 音频编解码格式介绍(1) ADPCM&#xff1a;adpcm编解码原理及其代码实现 音频编解码格式介绍(2) MP3 &#xff1a;音频格式之MP3&#xff1a;(1)MP3封装格式简介 音频编解码格式介绍(2) MP3 &#xff1a;音频格式之MP3&#x…

一文详解C++拷贝构造函数

文章目录 引入一、什么是拷贝构造函数&#xff1f;二、什么情况下使用拷贝构造函数&#xff1f;三、使用拷贝构造函数需要注意什么&#xff1f;四、深拷贝和浅拷贝浅拷贝深拷贝 引入 在现实生活中&#xff0c;可能存在一个与你一样的自己&#xff0c;我们称其为双胞胎。 相当…

5|领域建模实践(上):怎样既准确又深刻地理解业务知识?

上节课咱们完成了事件风暴&#xff0c;梳理了系统的行为需求。但你可能也发现了&#xff0c;其实还有些微妙的业务概念还没有澄清&#xff0c;这就要靠领域建模来完成了。 建立领域模型是 DDD 的核心。要建好领域建模&#xff0c;需要理论和实践相结合。由于我们的模型有一定的…

CSC签证费报销的相关规定及要求-主要国家签证费报销凭据

国家留学基金委&#xff08;CSC&#xff09;派出流程很多是在留学服务机构办理&#xff0c;即北京教育部留学服务中心及教育部出国人员上海集训部&#xff0c;其中含签证费报销。本篇知识人网小编以上海集训部为例&#xff0c;详细解读一下签证费报销的相关规定及要求&#xff…

sql 行转列 日周月 图表统计

目录 目录 需求 准备 月 分析 按月分组 行转列 错误版本 正确版本 日 分析 行转列 周 分析 按周分组 行转列 本年 需求 页面有三个按钮 日周月&#xff0c;统计一周中每天(日)&#xff0c;一月中每周(周)&#xff0c;一年中每月(月)&#xff0c;设备台数 点…

Linux中断 -- 中断路由、优先级、数据和标识

目录 1.中断路由 2.中断优先级 3.中断平衡 4.Linux内核中重要的数据结构 5.中断标识 承前文&#xff0c;本文从中断路由、优先级、数据结构和标识意义等方面对Linux内核中断进行一步的解析。 1.中断路由 Aset affinity flow GIC文中有提到SPI类型中断的路由控制器寄存器为…

Leetcode—114. 二叉树展开为链表【中等】

2023每日刷题&#xff08;九十八&#xff09; Leetcode—114. 二叉树展开为链表 Morris-like算法思想 可以发现展开的顺序其实就是二叉树的先序遍历。算法和 94 题中序遍历的 Morris 算法有些神似&#xff0c;我们需要两步完成这道题。 将左子树插入到右子树的地方将原来的右…

Java - OpenSSL与国密OpenSSL

文章目录 一、定义 OpenSSL&#xff1a;OpenSSL是一个开放源代码的SSL/TLS协议实现&#xff0c;也是一个功能丰富的加密库&#xff0c;提供了各种主要的加密算法、常用的密钥和证书封装管理功能以及SSL协议。它被广泛应用于Web服务器、电子邮件服务器、VPN等网络应用中&#x…

线性表--栈

1.什么是栈&#xff1f; 栈是一种特殊的线性表&#xff0c;其只允许在固定的一端进行插入和删除元素操作。进行数据插入和删除 操作的一端称为栈顶&#xff0c;另一端称为栈底。栈中的数据元素遵守后进先出的原则。 压栈&#xff1a;栈的插入操作叫做进栈/压栈/入栈&#xff…

YOLOv5改进 | Conv篇 | 在线重参数化卷积OREPA助力二次创新(提高推理速度 + FPS)

一、本文介绍 本文给大家带来的改进机制是一种重参数化的卷积模块OREPA,这种重参数化模块非常适合用于二次创新,我们可以将其替换网络中的其它卷积模块可以不影响推理速度的同时让模型学习到更多的特征。OREPA是通过在线卷积重参数化(Online Convolutional Re-parameteriza…

TensorFlow2实战-系列教程3:猫狗识别1

&#x1f9e1;&#x1f49b;&#x1f49a;TensorFlow2实战-系列教程 总目录 有任何问题欢迎在下面留言 本篇文章的代码运行界面均在Jupyter Notebook中进行 本篇文章配套的代码资源已经上传 1、项目介绍 基本流程&#xff1a; 数据预处理&#xff1a;图像数据处理&#xff0c…

Spring 的执行流程以及 Bean 的作用域和生命周期

文章目录 Bean 的作用域更改作用域的方式singletonprototype Spring 执行流程Bean 的生命周期 Bean 的作用域 Spring 容器在初始化⼀个 Bean 的实例时&#xff0c;同时会指定该实例的作用域。Bean 有6种作用域 singleton&#xff1a;单例作用域prototype&#xff1a;原型作用域…

Hadoop-MapReduce-MRAppMaster启动篇

一、源码下载 下面是hadoop官方源码下载地址&#xff0c;我下载的是hadoop-3.2.4&#xff0c;那就一起来看下吧 Index of /dist/hadoop/core 二、上下文 在上一篇<Hadoop-MapReduce-源码跟读-客户端篇>中已经将到&#xff1a;作业提交到ResourceManager&#xff0c;那…

首发:2024全球DAO组织发展研究

作者&#xff0c;张群&#xff08;专注DAO及区块链应用研究&#xff0c;赛联区块链教育首席讲师&#xff0c;工信部赛迪特邀资深专家&#xff0c;CSDN认证业界专家&#xff0c;微软认证专家&#xff0c;多家企业区块链产品顾问&#xff09; DAO&#xff08;去中心化自治组织&am…

adb测试冷启动和热启动 Permission Denial解决

先清理日志 adb shell logcat -c 打开手机模拟器中的去哪儿网&#xff0c;然后日志找到包名和MainActivity adb shell logcat |grep Main com.Qunar/com.mqunar.atom.alexhome.ui.activity.MainActivity 把手机模拟器的去哪儿的进程给杀掉 执行 命令 adb shell am start -W…
最新文章