腾讯开源LaFIn生成网络基于人脸关键点修复人脸

2024-03-19 09:59

本文主要是介绍腾讯开源LaFIn生成网络基于人脸关键点修复人脸,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

【导语】

由于外观变化很大,例如不同的姿势,表情和遮挡,在野外修复脸部图像非常具有挑战性。一个好的修复算法应该保证输出的真实性,包括眼睛,鼻子和嘴巴之间的拓扑结构,以及姿势,性别,种族,表情等方面的属性一致性。

由腾讯联合天津大学、武汉大学等高校研究了一种有效的基于深度学习的策略来处理这些问题,包括面部界标预测子网和图像修复子网。具体而言,在进行部分观察的情况下,地标预测器旨在提供不完整面孔的结构信息(例如,拓扑关系和表情),而画家则根据预测的地标生成合理的外观(例如,性别和种族)。进行CelebA-HQ和CelebA数据集的实验以揭示我们设计的功效,并从质量和数量上证明其优于最新替代方案的优越性。此外,我们假设高质量完成的面孔及其地标可以用作增强数据,以进一步提高(任何)地标预测器的性能,这在300W和WFLW数据集上的实验结果得到了证实。

图像修复(Image Inpainting)是指对丢失或损坏的图像进行重建的过程,它可以作为图像恢复或图像编辑等各种其他任务的预处理。毫无疑问,研究人员期望达到的结果是不一致的。与海洋、草坪等自然景观相比,人脸将更具挑战性。因为面将具有更强的拓扑结构,并且需要保留一致的面属性。

如图1所示。根据观察,研究人员很容易在重建的人脸上发现明显的缺陷。这个问题的定义如下:

图1:根据我们的方法得出的三张面孔完成结果。

从左至右:分别是损坏的输入,从输入中预测的界标以及我们的最终结果。

定义:面部修复。给出了一个损伤区域为M的人脸图像I。然后M'被指定为M的补语。o是哈达玛积。目标是用语义上连续且有意义的信息填充遮挡区域。换句话说,最终结果I'=M oI'+M'oI应保持眼睛、鼻子和嘴之间的拓扑结果,以及态度、性别和种族。与表达式等属性的一致性。

在现实生活中完成面部修复是一项非常具有挑战性的任务。一个合格的人脸修补算法应该仔细考虑以下两个方面,以确保输出的真实性:

  • 人脸结构非常稳定。眉毛、眼睛、鼻子和嘴等面部特征之间的拓扑关系总是有组织的。生成的面必须首先满足此拓扑。
  • 面部特征,如姿势、性别、种族和表情,应在整个修补区域和可见区域保持一致。

如果上述两个条件稍有不符,就会出现明显的知觉缺陷。

为什么使用面关键点?

由于该方法具有简洁、充分和鲁棒性强的特点,所以将工作面关键点作为结构监测信息。人们可能会问,边缘信息或分析信息是否比关键点更有启发性?如果获得的信息非常准确,那当然。然而,在非常具有挑战性的环境中(例如具有大姿态的大规模受损面),不容易生成合理的边。在这种情况下,冗余和不准确的信息会损害性能。关键的一点是比这些信息更简洁和可靠。从编辑的角度来看,关键点更容易控制。这些特征是使用关键点进行面部修复的更好选择。

如何保持属性的一致性?

除了由关键点决定的面部姿势和表情属性外,还需要考虑其他几个属性,如性别、种族和外观风格。最重要的一致点是连接可视区域和修复区域。对于这些细粒度的属性,修复算法应该使用可见信息作为图像重建的参考。

图3:提出的模型的体系结构。 对于校正的图像,首先由地标估算地标预测模块。 然后,inpaint模块会像在inpaint图像之前一样应用界标。 符号c,k,s和p分别代表通道号,内核大小,步幅和填充。 此外,对于每个反向残差块,包含重复t次的相同层的序列,并且扩展因子为f。

本文的贡献:本文提出了一种由人脸关键点预测子网和图像修复子网组成的深层网络“生成性路标导向人脸修复器”(LaFIn)。面对维修问题,主要贡献概括如下:

  1. 分析表明,人脸的关键点是干净、充足和健壮,可以作为人脸修复的监督。本文建立了一个预测不完整人脸关键点的模块,该模块可以映射目标人脸的拓扑结构、姿态和表情。
  2. 为了修复人脸,本文设计了一个基于人脸关键信息的修复子网。为了实现属性一致性,子网使用上下文信息并连接关联的特征映射。
  3. 本文通过大量实验验证了该算法的有效性,并从定性和定量上证明了其优于现有的SOTA方法。
  4. 此外,我们还可以进一步利用完成结果来提高关键点检测器的性能。由于在实际应用中,训练数据往往不够充分,而手工键盘指向又很费时,因此需要一种简单可靠的数据扩展方法。这是本文的另一个贡献。
  5. 修复后的地图可以根据关键点生成各种新的面。因此,生成的人脸和相应的(GroundTruth)关键点可以用作增强数据。在WFLW和300W两个数据集上的实验结果证实了该方法的有效性。

方法

整个模型由两个子网络组成,一个是预测关键点的网络,另一个是基于关键点生成新像素的图像修复网络。本文中的关键点预测子网可以使用任何现有的关键点检测算法,但作者的关注点是不同的。他们更喜欢得到一些基本拓扑和某些属性,而不是每个关键点的确切位置。因此,作者将不同阶段的特征图连接起来,实现最终的关键点预测。

图像修复模型的输入是受损图像和关键点(预测结果或地面真实性)。该模型包含生成器和鉴别器。生成器基于U-net网络结构,但略有不同。具体的网络结构参数由作者在附录的表格中详细给出。该鉴别器基于70×70补丁GAN网络结构。介绍了几种常用的稳定模型训练结构,如SN。附录中还有非常详细的结构参数。在损失函数方面,作者采用了各种损失的组合,包括每像素损失、知觉损失、风格损失、电视损失和对抗性损失。

实验

第一个实验数据集是CelebA HQ,其中损伤和遮挡是随机生成和添加的。比较方法包括CE、GFC、CA、GAFC、PIC、EC。客观评价指标采用PSNR、SSIM和FID。

图4:与CelebA-HQ数据集上其他最新技术的定性比较。 (a)显示地面真相图片。 (b)描绘了(a)的蒙版。 (c)-(f)分别是CA,EC,PIC和我们的LaFIn获得的结果。

图5:CelebA数据集上竞争对手之间的视觉比较。 (a)显示了真实的图像。 (b)描绘(a)的蒙版。(c)-(f)分别是CE,GFC,EC和我们的LaFIn获得的结果。

表1:在CelebA-HQ数据集上对随机和中心掩码上的PSNR,SSIM和FIC进行了定量比较。

表2:在中心遮罩上的SNRA,SSIM和FID中CelebA数据集上的定量比较。

作者还尝试使用LaFIn来增加关键点检测的训练数据。在WFLW和300W两个数据集上进行了测试,结果如下:

总结

论文或源码数据集下载地址:关注“图像算法”wx公众号 回复“LaFIn”,本文开发了一个LaFIn的生成网络被开发用于面部修复,该算法首先预测关键点,然后根据关键点进行图像修复。本文基于一个原则,即必须有足够的和健壮的关键点,为人脸修补程序提供结构信息指导。为了保证属性的一致性,本文利用上下文信息。通过大量实验,验证了该方法的有效性,并从定性和定量上证明了该方法优于SOTA方法。此外,LaFIn算法还可以用来增加人脸上关键点的数据量。实验证明了该方法的有效性。

 

这篇关于腾讯开源LaFIn生成网络基于人脸关键点修复人脸的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/825604

相关文章

Java利用docx4j+Freemarker生成word文档

《Java利用docx4j+Freemarker生成word文档》这篇文章主要为大家详细介绍了Java如何利用docx4j+Freemarker生成word文档,文中的示例代码讲解详细,感兴趣的小伙伴... 目录技术方案maven依赖创建模板文件实现代码技术方案Java 1.8 + docx4j + Fr

Java编译生成多个.class文件的原理和作用

《Java编译生成多个.class文件的原理和作用》作为一名经验丰富的开发者,在Java项目中执行编译后,可能会发现一个.java源文件有时会产生多个.class文件,从技术实现层面详细剖析这一现象... 目录一、内部类机制与.class文件生成成员内部类(常规内部类)局部内部类(方法内部类)匿名内部类二、

使用Jackson进行JSON生成与解析的新手指南

《使用Jackson进行JSON生成与解析的新手指南》这篇文章主要为大家详细介绍了如何使用Jackson进行JSON生成与解析处理,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录1. 核心依赖2. 基础用法2.1 对象转 jsON(序列化)2.2 JSON 转对象(反序列化)3.

Linux系统配置NAT网络模式的详细步骤(附图文)

《Linux系统配置NAT网络模式的详细步骤(附图文)》本文详细指导如何在VMware环境下配置NAT网络模式,包括设置主机和虚拟机的IP地址、网关,以及针对Linux和Windows系统的具体步骤,... 目录一、配置NAT网络模式二、设置虚拟机交换机网关2.1 打开虚拟机2.2 管理员授权2.3 设置子

揭秘Python Socket网络编程的7种硬核用法

《揭秘PythonSocket网络编程的7种硬核用法》Socket不仅能做聊天室,还能干一大堆硬核操作,这篇文章就带大家看看Python网络编程的7种超实用玩法,感兴趣的小伙伴可以跟随小编一起... 目录1.端口扫描器:探测开放端口2.简易 HTTP 服务器:10 秒搭个网页3.局域网游戏:多人联机对战4.

java中使用POI生成Excel并导出过程

《java中使用POI生成Excel并导出过程》:本文主要介绍java中使用POI生成Excel并导出过程,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录需求说明及实现方式需求完成通用代码版本1版本2结果展示type参数为atype参数为b总结注:本文章中代码均为

在java中如何将inputStream对象转换为File对象(不生成本地文件)

《在java中如何将inputStream对象转换为File对象(不生成本地文件)》:本文主要介绍在java中如何将inputStream对象转换为File对象(不生成本地文件),具有很好的参考价... 目录需求说明问题解决总结需求说明在后端中通过POI生成Excel文件流,将输出流(outputStre

SpringBoot使用OkHttp完成高效网络请求详解

《SpringBoot使用OkHttp完成高效网络请求详解》OkHttp是一个高效的HTTP客户端,支持同步和异步请求,且具备自动处理cookie、缓存和连接池等高级功能,下面我们来看看SpringB... 目录一、OkHttp 简介二、在 Spring Boot 中集成 OkHttp三、封装 OkHttp

mss32.dll文件丢失怎么办? 电脑提示mss32.dll丢失的多种修复方法

《mss32.dll文件丢失怎么办?电脑提示mss32.dll丢失的多种修复方法》最近,很多电脑用户可能遇到了mss32.dll文件丢失的问题,导致一些应用程序无法正常启动,那么,如何修复这个问题呢... 在电脑常年累月的使用过程中,偶尔会遇到一些问题令人头疼。像是某个程序尝试运行时,系统突然弹出一个错误提

电脑提示找不到openal32.dll文件怎么办? openal32.dll丢失完美修复方法

《电脑提示找不到openal32.dll文件怎么办?openal32.dll丢失完美修复方法》openal32.dll是一种重要的系统文件,当它丢失时,会给我们的电脑带来很大的困扰,很多人都曾经遇到... 在使用电脑过程中,我们常常会遇到一些.dll文件丢失的问题,而openal32.dll的丢失是其中比较