首页 > 其他分享 >GPEN——使用GANs恢复对人脸图像进行修复

GPEN——使用GANs恢复对人脸图像进行修复

时间:2024-06-05 12:58:31浏览次数:22  
标签:GANs LQ 模型 HQ GAN 人脸 图像 GPEN

1. 简介

盲目的面部修复(Blind Face Restoration, BFR)是一个活跃的研究领域,它涉及到在没有任何先验信息的情况下改善低质量(Low Quality, LQ)图像的质量。这确实是一个具有挑战性的问题,因为模型需要能够处理多种未知的退化,例如模糊、噪声、压缩伪影等,这些退化可能在训练数据中并未全部出现。

在面部修复的上下文中,以下是一些常见的挑战和考虑因素:

(1). 未知退化:BFR的难点在于模型必须能够处理在训练期间未遇到的退化类型。这要求模型具有很好的泛化能力。

(2). 真实性与细节:在恢复面部图像时,保持图像的真实性和身份特征是非常重要的。一些模型可能倾向于产生过度平滑的结果,这会丢失重要的面部特征和细节。

(3). 对抗性训练:为了提高模型的泛化能力,研究人员可能会使用对抗性训练技术,通过让模型学习区分真实图像和修复图像之间的微妙差异来提高其性能。

(4). 多任务学习:模型可能需要同时学习执行多个任务,例如去噪、去模糊、颜色校正等,以更全面地理解和修复图像。

(5). 数据增强:为了使模型能够处理各种退化,可以使用数据增强技术来模拟不同的退化效果,并增加训练数据的多样性。

(6). 注意力机制:集成注意力机制可以帮助模型集中于图像中的关键特征,从而在保持面部特征的同时提高修复质量。

(7). 评估指标:评估BFR模型的性能可能很复杂,因为除了传统的图像质量指标外,还需要考虑面部特征的准确性和自然性。

(8). 用户交互:在某些情况下,可能需要用户交互来指导修复过程,例如,通过让用户确认某些特征是否被正确修复。

在这里插入图片描述

在这里插入图片描述

在本文中,我们提出了一种新的方法来恢复自然状态下的人脸图像(即经历了复杂的现实生活中的扭曲的图像)。具体来说,我们将深度神经网络(DNN)解码器与生成对抗网络(GAN)整合在一起,并对HQ人脸图像的生成进行了预训练。这个模型建立了一个新的BFR技术水平,能够恢复严重损坏的图像。

论文地址:https://arxiv.org/pdf/2105.06070.pdf
源码地址:https://github.com/yangxy/GPEN

2. GAN Prior Embedded Network (GPEN)


在盲目面部修复(BFR)领域,将低质量(LQ)图像恢复到高质量(HQ)图像面临诸多挑战。目前的方法尝试通过训练深度神经网络(DNNs)来实现从LQ图像集X到HQ图像集Y的映射。然而,这个过程存在一个关键问题:对于任何一个给定的LQ图像x,可能存在多种不同的HQ图像y。DNNs通常使用像素级损失函数进行训练,这导致生成的HQ图像y倾向于呈现目标面部的平均特征,造成面部细节的丢失和过度平滑。

为了解决这个问题,一种全新的超分辨率方法PULSE被提出。PULSE通过训练一个生成对抗网络(GAN)先验网络,并将其嵌入到DNN解码器中来生成HQ图像。在这个流程中,LQ图像首先通过CNN处理,映射到潜在空间Z中的潜在代码z。随后,这个潜在代码z被用于GAN来生成HQ图像。与传统方法不同,GAN在这里实现了一对一的映射,将特定的潜在代码z映射到一个确定的HQ图像。

值得注意的是,尽管PULSE方法提高了生成图像的质量和细节,但它并不支持从单个LQ图像生成多个可能的HQ图像。这种方法限制了生成图像的多样性,但有助于生成更加逼真和细节丰富的面部图像。接下来,PULSE的架构细节将进一步介绍,以展示其如何克服现有技术的局限性。

2.1 算法架构

GPEN模型的架构结构与UNET(c)相似,前半部分由DNN组成,后半部分由GAN组成。模型的前半部分由DNN组成,后半部分由GAN组成;与UNET一样,前半部分每个块的特征图作为后半部分相应GAN块的输入。 在结合两者之前,GANs被单独预训练以生成HQ人脸图像。之后,这两个块被组合起来,并为BFR进行微调:一个GAN(a)由几个GAN块(b)组成,可以从任何流行的GAN(BigGAN、StyleGAN、PGGAN)中选择。在这里,我们使用StyleGAN-v2 GAN块,它在生成HQ图像方面更胜一筹:与StyleGAN一样,从DNN获得的潜在向量 "z "首先被转换为一个纠缠较少的空间 “W”,这个转换的向量 "w "被广播给每个GAN块。转换后的向量 "w "被广播给每个GAN块。在单独训练GAN的过程中,噪声也被广播到每个GAN块,并与特征图相结合。然后,这个噪声被组合模型中的DNN各自的特征图所取代。关于GANs的更多信息,请参见本文

2.2 学习

GANs首先在一个与StyleGANs类似的设置中独立训练。然后将其纳入DNN并用于对抗性损失。LA,内容损失LC内容损失,特征匹配损失LF使用三个损失函数进行训练。敌方的损失由以下公式得出:
在这里插入图片描述
其中,D是判别器模型,G是发生器模型GPEN,X’是LQ图像,X是地面真相 总部图像,LC是的L1准则。识别图像和生成图像之间的L-2准则之和,LF是生成图像和原始图像的识别器特征图之间的L-2准则之和。
在这里插入图片描述
其中T是判别器中的中间层数量。这意味着,综合损失如下:
在这里插入图片描述
在所有的实验中,我们设定α=1,β=0.02。特征匹配损失使我们能够平衡对抗性损失并恢复更真实/详细的图像。

3. 实验

我们使用FFHQ数据集来训练我们的模型,该数据集包含超过70000张分辨率为1024x1024的HQ图像。使用相同的数据集,我们训练了一个GAN先验网络并对组合网络进行了微调。为了进行微调,LQ图像由FFHQ数据集组合而成;HQ图像被随机模糊、下采样和用高斯噪声压缩。在数学上,退化由以下模型表示:
在这里插入图片描述
I, k, nσ, Id分别是输入的人脸图像、模糊核、标准差为σ的高斯噪声和退化的图像。同样,⊗,↓s,JPEGq表示JPEG压缩的2维卷积,标准的s倍下采样器和质量系数q。编码器、解码器和鉴别器模型是用亚当的三种不同学习率来建模的lr编码 = 0.002; lr编码lr颓废lr弃权= 100:10:1是由

3.1 GPEN的变体比较

为了研究GPEN组件的重要性,我们在BFR上评估了GPEN的不同变体:GPEN-w/o-ft,一个不对嵌入式GAN进行微调的版本;GPEN-w/o-noise,一个在GAN块训练期间不向其添加噪声的版本;GPEN-noise-add,一个向GAN块添加噪声输入而不是串联的变体;以及GPEN-w/o-noise,一个向GAN块添加噪声输入而非串联的变体。GPEN-noise-add是一个变体,它将噪声输入添加到GAN块中,而不是串联起来。

上表显示了所有这些变体在FFHQ数据集中的PSNR、FID和LPIPS得分;很明显,GPEN模型的表现优于其变体。

3.2 与其他GANs的比较

大多数人脸修复GANs是为FSR任务设计的,即从LR图像生成HR图像。因此,我们将GPEN与其他最先进的GANs在FSR、合成BFR和野外BFR方面进行比较。

上表显示了FSR的结果,比较了为BFR设计的模型和专门为FSR设计的模型;LR图像是使用CelebA-HQ数据集生成的。可以看出,没有增加任何东西的双线性模型在PSNR指标上得分最高,说明PSNR不是FSR的合适指标;值得注意的是,GPEN在FID和LPIPS指标上优于其他模型。

上表显示了从CelebA-HQ数据集合成的LQ图像的BFR结果:与FSR一样,GPEN在FID和LPIPS指数上比其他模型高出很多。

为了确定GPEN的实际意义,我们从互联网上收集了1000张LQ人脸图像,并请志愿者评估GPEN和其他SOTA模型的结果以及重建图像的质量。结果表明,由GPEN重建的图像的感知质量要比其他SOTA方法好得多。让我们来看看一些样本图片。


因此,我们可以看到,其他方法的特点是我们一直在谈论的 “过度平滑图像”,并没有增加任何视觉细节。
在未来,作者希望扩展GPEN,以允许单个LQ图像的多个HQ输出。例如,他们设想使用一个额外的HQ脸部图像作为参考,这样GPEN可以为不同的参考图像产生不同的HQ输出。

4. 总结

正如论文所提到,当前的最先进(State of the Art, SOTA)模型在处理现实世界中的退化图像时仍存在局限,但论文提出的方法成功地克服了这些挑战。论文的方法不仅在实际应用中显示出了直接的效用,而且还具备了扩展到其他领域的潜力。

论文的工作不仅限于面部修复,还可以扩展到面部着色、面部绘画以及非面部图像的修复等任务。此外,GPEN(Guided Perception and Exploration Network)的设计允许它为单个低质量图像生成多个高质量的输出,这为创造性的应用和进一步的探索提供了可能。

标签:GANs,LQ,模型,HQ,GAN,人脸,图像,GPEN
From: https://blog.csdn.net/matt45m/article/details/139438013

相关文章

  • python学习 - 通过OpenCV库识别视频、图片画面等来捕捉人脸信息等
    #-*-coding:utf-8-*-#import进openCV的库importcv2importos#调用摄像头检测人脸并截图defCatchPICFromVideo(window_name,path_name):cv2.namedWindow(window_name)#视频来源,可以来自一段已存好的视频,也可以直接来自USB摄像头cap=cv2.......
  • 摄像头对人脸进行性别和年龄的判断
    摄像头对人脸性别和年龄判断导入必要的库加载预训练的人脸检测模型加载预训练的性别和年龄识别模型定义性别和年龄的标签列表打开摄像头从摄像头读取一帧转换为灰度图像检测人脸遍历检测到的人脸显示视频流按‘q’或点击窗口的“×”退出循环释放摄像头和销毁所有窗口......
  • Transgaga——人脸与猫脸之间互相转换算法解析
    1.概述虽然pix2pix作为风格转换模型被提出,但它依赖于成对的数据集。与之相比,CycleGAN通过引入循环损失,实现了无需配对数据的风格转换。不过,CycleGAN在处理需要大幅几何变化的风格转换时表现不佳,仅在如马和斑马这类颜色变化的场景中有效。2018年,MUNIT利用变分自编码器(VAE)......
  • manjora Linux下使用howdy实现人脸识别登录的简明教程
    前言从windows切换到Linux会有很多的不适应,自然会想找一些类似于windows体验的Linux替代品,比如windows上的windowshello就很好用,可以使用指纹或者摄像头实现人脸识别在很多场景下可以避免输入密码。经过一番搜索发现howdy是目前Linux上最流行的人脸识别认证的软件,于是就第一时......
  • OpenCv之简单的人脸识别项目(特征标注页面)
    人脸识别准备八、特征标注页面1.导入所需的包2.设置窗口2.1定义窗口外观和大小2.2设置窗口背景2.2.1设置背景图片2.2.2创建label控件3.定义两个全局变量4.定义选择图片的函数4.1函数定义和全局变量声明4.2打开文件对话框并获取文件路径4.3处理图片并创建标签4.4显示图......
  • 对人脸图像进行性别和年龄的判断
    判断性别和年龄导入必要的库加载预训练的人脸检测模型加载预训练的性别和年龄识别模型定义性别和年龄的标签列表创建Tkinter窗口:定义选择图片的函数:创建一个按钮,用于打开文件选择对话框定义显示图片的函数创建预测性别和年龄的函数创建预测性别和年龄的按钮运行Tkinter事......
  • ESP32 实时人脸检测系统:ESP32 与上位机通信(microPython框架)
    实时人脸检测系统:ESP32与上位机通信在这篇博客中,我将介绍如何使用ESP32摄像头捕获图像,并通过UDP协议将图像传输到上位机进行实时人脸检测。我们将使用Python编程语言和OpenCV库来实现上位机端的人脸检测功能。硬件与软件准备ESP32开发板:我们使用ESP32开发板......
  • 使用 Unity Sentis 和 Compute Shader,det_10g.onnx 进行高效人脸五官定位
    前言在计算机视觉领域,人脸五官定位是一个重要的任务。本文将介绍如何使用UnitySentis和ComputeShader,结合det_10g.onnx模型,实现高效的人脸五官定位。我们将详细讲解每一步骤,并提供完整的代码示例。模型分析输入值:模型的输入是我这边选择的是1x3x640x640;输出值:步......
  • 使用 Unity Sentis 和 Compute Shader,2d106det.onnx 进行高效人脸网格标记
    前言前篇:使用UnitySentis和ComputeShader,det_10g.onnx进行高效人脸五官定位-CSDN博客在计算机视觉领域,人脸网格标记是一项重要的任务,用于识别人脸关键点和特征。本文将介绍如何使用UnitySentis和ComputeShader,结合2d106det.onnx模型,实现高效的人脸网格标记。我......
  • 基于深度神经网络的人脸识别相关问题
    基于深度神经网络的人脸识别相关问题1、DNN与CNN的关系CNN可以看作是一种特殊的DNN,它们之间的关系是包含和被包含的关系。CNN的核心是卷积层,该层可以有效地识别图像中的局部模式,并使用池化层来减少特征映射的维度。此外,CNN还包括其他类型的层,例如全连接层和激活函数层,用于将卷......