腾讯开源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

相关文章

如何通过海康威视设备网络SDK进行Java二次开发摄像头车牌识别详解

《如何通过海康威视设备网络SDK进行Java二次开发摄像头车牌识别详解》:本文主要介绍如何通过海康威视设备网络SDK进行Java二次开发摄像头车牌识别的相关资料,描述了如何使用海康威视设备网络SD... 目录前言开发流程问题和解决方案dll库加载不到的问题老旧版本sdk不兼容的问题关键实现流程总结前言作为

浅析如何使用Swagger生成带权限控制的API文档

《浅析如何使用Swagger生成带权限控制的API文档》当涉及到权限控制时,如何生成既安全又详细的API文档就成了一个关键问题,所以这篇文章小编就来和大家好好聊聊如何用Swagger来生成带有... 目录准备工作配置 Swagger权限控制给 API 加上权限注解查看文档注意事项在咱们的开发工作里,API

Java使用POI-TL和JFreeChart动态生成Word报告

《Java使用POI-TL和JFreeChart动态生成Word报告》本文介绍了使用POI-TL和JFreeChart生成包含动态数据和图表的Word报告的方法,并分享了实际开发中的踩坑经验,通过代码... 目录前言一、需求背景二、方案分析三、 POI-TL + JFreeChart 实现3.1 Maven

MybatisGenerator文件生成不出对应文件的问题

《MybatisGenerator文件生成不出对应文件的问题》本文介绍了使用MybatisGenerator生成文件时遇到的问题及解决方法,主要步骤包括检查目标表是否存在、是否能连接到数据库、配置生成... 目录MyBATisGenerator 文件生成不出对应文件先在项目结构里引入“targetProje

Python使用qrcode库实现生成二维码的操作指南

《Python使用qrcode库实现生成二维码的操作指南》二维码是一种广泛使用的二维条码,因其高效的数据存储能力和易于扫描的特点,广泛应用于支付、身份验证、营销推广等领域,Pythonqrcode库是... 目录一、安装 python qrcode 库二、基本使用方法1. 生成简单二维码2. 生成带 Log

SSID究竟是什么? WiFi网络名称及工作方式解析

《SSID究竟是什么?WiFi网络名称及工作方式解析》SID可以看作是无线网络的名称,类似于有线网络中的网络名称或者路由器的名称,在无线网络中,设备通过SSID来识别和连接到特定的无线网络... 当提到 Wi-Fi 网络时,就避不开「SSID」这个术语。简单来说,SSID 就是 Wi-Fi 网络的名称。比如

Python使用Pandas库将Excel数据叠加生成新DataFrame的操作指南

《Python使用Pandas库将Excel数据叠加生成新DataFrame的操作指南》在日常数据处理工作中,我们经常需要将不同Excel文档中的数据整合到一个新的DataFrame中,以便进行进一步... 目录一、准备工作二、读取Excel文件三、数据叠加四、处理重复数据(可选)五、保存新DataFram

SpringBoot生成和操作PDF的代码详解

《SpringBoot生成和操作PDF的代码详解》本文主要介绍了在SpringBoot项目下,通过代码和操作步骤,详细的介绍了如何操作PDF,希望可以帮助到准备通过JAVA操作PDF的你,项目框架用的... 目录本文简介PDF文件简介代码实现PDF操作基于PDF模板生成,并下载完全基于代码生成,并保存合并P

Java实现任务管理器性能网络监控数据的方法详解

《Java实现任务管理器性能网络监控数据的方法详解》在现代操作系统中,任务管理器是一个非常重要的工具,用于监控和管理计算机的运行状态,包括CPU使用率、内存占用等,对于开发者和系统管理员来说,了解这些... 目录引言一、背景知识二、准备工作1. Maven依赖2. Gradle依赖三、代码实现四、代码详解五

详解Java中如何使用JFreeChart生成甘特图

《详解Java中如何使用JFreeChart生成甘特图》甘特图是一种流行的项目管理工具,用于显示项目的进度和任务分配,在Java开发中,JFreeChart是一个强大的开源图表库,能够生成各种类型的图... 目录引言一、JFreeChart简介二、准备工作三、创建甘特图1. 定义数据集2. 创建甘特图3.