图像修复_LaFIn_Generative Landmark Guided Face Inpainting

2024-03-19 09:59

本文主要是介绍图像修复_LaFIn_Generative Landmark Guided Face Inpainting,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

在这里插入图片描述

Abstract

提出了一个深度学习策略来修复人脸图像,这个网络由两个部分组成,一个是人脸关键点预测子网络,该网络的目的是给另一个网络提供人脸的结构信息(破损人脸图像的人脸拓扑信息,表情信息)。另一个是图像修复网络,该网络的目的是修复出符合真实外观的人脸图像。该人脸图像修复方法在数据集CelebA-HQ和CelebA上进行了实验。

Introduction

人脸图像相比较海洋、草地等自然风景图像具有更强的拓扑结构和更强的局部连贯性,因此修复人脸图像任务更具挑战性。

传统的修复方法:diffusion-based and patch-based

基于深度学习的修复方法:成为主流。context-encoder,global and local,CA,Pconv,这些方法通常在破损区域较大时,会使得修复区域变的模糊扭曲。

为了保持人脸图像的结构信息,一些方法也尝试预测破损图片的边缘信息,来作为指导信息。这类方法在破损区域较小时表现较好,但是当破损区域变大时,那么边缘信息就不是那么好预测了,导致最终的修复效果变差。

文献15提出了一种基于人脸语义分隔的损失来期望保存结构信息,

文献11,33,提出让用户手动提供边缘信息。

文献36,35,26已经成功的将人脸关键点信息应用到人脸生成任务上了。

为什么采用人脸关键点?因为人脸关键点,简洁,有效,鲁棒性好。

可能会有人问,人脸的边缘信息或者语义分割信息是否能够提供更加强大的指导信息?

问题在于,当破损区域较大时,人脸的边缘信息,语义分割信息是否能够预测的相当准确,如果足够准确,那么当然是用这个二者作为指导信息更好。如果预测的不准确,那么提供的信息就是冗余的甚至是错误的,会损害修复的表现。相应的一组人脸关键点信息总是存在的,不论是什么情况。此外,人脸关键点可以看作是在人脸关键边缘/区域上采样的离散/有序点,这足以在去除冗余信息的情况下对关键边缘/面部区域(人脸解析)进行反向改造。

本文的贡献点:

  1. 提出用人脸关键点作为指导信息,人脸关键点相比较其他(人脸边缘信息、人脸语义分割信息)更加简洁、有效、鲁棒性更好,设计出了一个预测人脸关键点的子网络,来提供拓扑结构信息、姿势、表情信息
  2. 提出了修复图像子网络,为了使得属性的连贯性,子网络充分利用了遥远的空间信息和连接中间的特征层信息
  3. 做了大量的实验来验证本方法的有效性
  4. 完成后可以根据地标产生各种看似合理的新面孔。因此,生成的人脸和相应的(地面真实)标记可以作为增强数据,缓解人工标注的压力。在WFLW和300W数据集上的实验结果证实了这种方法的有效性。

Method

整个网络架构:
在这里插入图片描述

1. landmarks 预测子网络

由于celebA-HQ和celebA的数据集都没有提供人脸关键点的标签。那么首先需要获得相应的人脸关键点标签,才能对破损的人脸图像进行人脸关键点的预测。本文采用FAN方法来对上述数据集生成人脸关键点标签作为ground truth,(标签的形式是64个关键点,每个点由(x,y)坐标组成),预测人脸关键点的子网络采用MobileNet-v2网络来预测。该网络的输出也是64个人脸关键点坐标。损失函数采用的是l2损失。

2. image inpainting 图像修复子网络

该子网络包含修复网络和鉴别器网络.

1.鉴别器采用的是Patch-Gan架构,为了稳定训练过程,为鉴别器引入了普归一化(spectral normalization),与其他的修复方法不一样,本文只用了一个鉴别器。论文中有解释原因(但我觉得不是很有道理).

2.修复网络是基于U-net架构形式,网络包含,三个逐渐下采样的 编码块,然后跟着7个扩张卷积的残差块和一个长短期注意力块,最后解码器逐渐的将特征图上采样到和输入时的此寸一样。修复网络的输入是(破损的人脸图片,landmasks单通道数据).

但是人脸关键点预测子网络的输出是64个关键点坐标,那么修复网络是如何利用的:

采用的方法是:将这64个关键点变成一个单通道的图像数据。具体做法是,先创建一个和人脸图像数据尺寸大小一样的单通道的数据,所有像素点先全部设为0,然后根据64个关键点的坐标数据,将那64点的坐标像素变为1.

3 损失函数

损失函数采用了:

1.重建损失(per-pixel loss)

2.感知损失(perceptual loss)

3.风格损失(style loss)

4.TV损失(total variation loss)

5.生成对抗损失(adversarial loss)

4.训练策略

人脸关键点预测子网络和修复子网络是被分开训练的,或许有人认为可以进行联合训练,但是实际上将二者进行联合进行训练导致最后的效果是不好的,因为如果进行联合训练,在训练的开始阶段人脸关键点预测实际上是非常不准确的,那么这样的指导信息只会导致错误的修复,论文中作者将二者分开进行训练给出了两点原因:

​ 1.对于人脸关键点预测子网络只有68个关键位置点需要被进行预测,这,这与修复网络是非常不匹配的。

​ 2.另外网络权重参数的训练本身就是非常困难的,在训练的开始阶段,二个子网络的能力都是非常差的导致预测出的人脸关键点预测和修复网络的质量非常差,这两个因素很可能就将训练陷入了鞍点。

外网络权重参数的训练本身就是非常困难的,在训练的开始阶段,二个子网络的能力都是非常差的导致预测出的人脸关键点预测和修复网络的质量非常差,这两个因素很可能就将训练陷入了鞍点。

训练所用的优化器采用的是Adam优化器,b1=0,b2=0.9,学习率采用10-4,鉴别器的学习率采用10-5.

参考文献

[1] Yang Y , Guo X , Ma J , et al. LaFIn: Generative Landmark Guided Face Inpainting[J]. 2019.

这篇关于图像修复_LaFIn_Generative Landmark Guided Face Inpainting的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!


原文地址:https://blog.csdn.net/qq_37937847/article/details/119902994
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.chinasem.cn/article/825605

相关文章

Python中OpenCV与Matplotlib的图像操作入门指南

《Python中OpenCV与Matplotlib的图像操作入门指南》:本文主要介绍Python中OpenCV与Matplotlib的图像操作指南,本文通过实例代码给大家介绍的非常详细,对大家的学... 目录一、环境准备二、图像的基本操作1. 图像读取、显示与保存 使用OpenCV操作2. 像素级操作3.

C/C++的OpenCV 进行图像梯度提取的几种实现

《C/C++的OpenCV进行图像梯度提取的几种实现》本文主要介绍了C/C++的OpenCV进行图像梯度提取的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的... 目录预www.chinasem.cn备知识1. 图像加载与预处理2. Sobel 算子计算 X 和 Y

c/c++的opencv图像金字塔缩放实现

《c/c++的opencv图像金字塔缩放实现》本文主要介绍了c/c++的opencv图像金字塔缩放实现,通过对原始图像进行连续的下采样或上采样操作,生成一系列不同分辨率的图像,具有一定的参考价值,感兴... 目录图像金字塔简介图像下采样 (cv::pyrDown)图像上采样 (cv::pyrUp)C++ O

电脑蓝牙连不上怎么办? 5 招教你轻松修复Mac蓝牙连接问题的技巧

《电脑蓝牙连不上怎么办?5招教你轻松修复Mac蓝牙连接问题的技巧》蓝牙连接问题是一些Mac用户经常遇到的常见问题之一,在本文章中,我们将提供一些有用的提示和技巧,帮助您解决可能出现的蓝牙连接问... 蓝牙作为一种流行的无线技术,已经成为我们连接各种设备的重要工具。在 MAC 上,你可以根据自己的需求,轻松地

电脑提示Winmm.dll缺失怎么办? Winmm.dll文件丢失的多种修复技巧

《电脑提示Winmm.dll缺失怎么办?Winmm.dll文件丢失的多种修复技巧》有时电脑会出现无法启动程序,因为计算机中丢失winmm.dll的情况,其实,winmm.dll丢失是一个比较常见的问... 在大部分情况下出现我们运行或安装软件,游戏出现提示丢失某些DLL文件或OCX文件的原因可能是原始安装包

无法启动此程序因为计算机丢失api-ms-win-core-path-l1-1-0.dll修复方案

《无法启动此程序因为计算机丢失api-ms-win-core-path-l1-1-0.dll修复方案》:本文主要介绍了无法启动此程序,详细内容请阅读本文,希望能对你有所帮助... 在计算机使用过程中,我们经常会遇到一些错误提示,其中之一就是"api-ms-win-core-path-l1-1-0.dll丢失

Python+wxPython构建图像编辑器

《Python+wxPython构建图像编辑器》图像编辑应用是学习GUI编程和图像处理的绝佳项目,本教程中,我们将使用wxPython,一个跨平台的PythonGUI工具包,构建一个简单的... 目录引言环境设置创建主窗口加载和显示图像实现绘制工具矩形绘制箭头绘制文字绘制临时绘制处理缩放和旋转缩放旋转保存编

python+OpenCV反投影图像的实现示例详解

《python+OpenCV反投影图像的实现示例详解》:本文主要介绍python+OpenCV反投影图像的实现示例详解,本文通过实例代码图文并茂的形式给大家介绍的非常详细,感兴趣的朋友一起看看吧... 目录一、前言二、什么是反投影图像三、反投影图像的概念四、反向投影的工作原理一、利用反向投影backproj

电脑找不到mfc90u.dll文件怎么办? 系统报错mfc90u.dll丢失修复的5种方案

《电脑找不到mfc90u.dll文件怎么办?系统报错mfc90u.dll丢失修复的5种方案》在我们日常使用电脑的过程中,可能会遇到一些软件或系统错误,其中之一就是mfc90u.dll丢失,那么,mf... 在大部分情况下出现我们运行或安装软件,游戏出现提示丢失某些DLL文件或OCX文件的原因可能是原始安装包

电脑显示mfc100u.dll丢失怎么办?系统报错mfc90u.dll丢失5种修复方案

《电脑显示mfc100u.dll丢失怎么办?系统报错mfc90u.dll丢失5种修复方案》最近有不少兄弟反映,电脑突然弹出“mfc100u.dll已加载,但找不到入口点”的错误提示,导致一些程序无法正... 在计算机使用过程中,我们经常会遇到一些错误提示,其中最常见的就是“找不到指定的模块”或“缺少某个DL