热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

MDFR:基于人脸图像复原和人脸转正联合模型的人脸识别方法

AI科技评论报道编辑|陈大鑫在现实生活中,许多因素可能会影响人脸识别系统的识别性能,例如大姿势,不良光照,低分辨率&#x

MDFR:基于人脸图像复原和人脸转正联合模型的人脸识别方法

AI 科技评论报道

编辑 | 陈大鑫

在现实生活中,许多因素可能会影响人脸识别系统的识别性能,例如大姿势,不良光照,低分辨率,模糊和噪声等。为了应对这些挑战,之前的人脸识别方法通常先把低质量的人脸图像恢复成高质量人脸图像,然后进行人脸识别。然而,这些方法大多是阶段性的,并不是解决人脸识别的最优方案。

AI 科技评论今天介绍一篇能够对此有着很好的解决方案的论文,在本文中,作者提出一种多退化因子的人脸复原模型(Multi-Degradation Face Restoration,MDFR),来一次性解决所有的这些影响因素。

MDFR:基于人脸图像复原和人脸转正联合模型的人脸识别方法

原文标题:《Joint Face Image Restoration and Frontalization For Recognition》

论文地址:
https://ieeexplore.ieee.org/document/9427073/

MDFR 可以从给定的多姿态、多重低质量因素影响的人脸图像中复原其高质量的正面人脸图像。MDFR是一个设计良好的编码器-解码器网络结构。

在模型的构建中,作者引入了姿态残差学习策略,以及一个基于3D的姿势归一化模块(3D-based Pose Normalization Module,PNM),该模块可以感知输入人脸姿态和正面人脸姿态之间的差异,以此差异来指导人脸的转正学习。

实验表示,训练完成之后的MDFR可以通过一个单一化的网络,一次性地从多重低质量因素影响的侧面人脸图像中恢复其高清的正面人脸图像,并有效的提高人脸算法的识别率。

1 背景及简介

非限制条件下的人脸识别方法是计算机视觉任务中一项重要的工作。在实际应用中,采集到的人脸图像可能包含大姿态,不良光照,低分辨率以及模糊和噪声等,这些影响人脸成像质量的因素可能导致人脸识别应用的失败。为了解决这些问题,已经有很多方法使用分阶段模型来分别处理相应的低质量因子影响的人脸图像,即首先将低质量人脸恢复成高质量的人脸图像,随后进行人脸转正并用于人脸识别。

然而这些方法都只考虑了人脸识别的单一因素,很少有方法能够同时解决影响人脸识别的多重因素。因此,这类基于单一因素的人脸处理方法并不能很好的适用于非限制条件下的人脸识别。在本文中,作者提出了一种解决多退化因子的人脸复原模型(MDFR),从给定任意姿态的低质量人脸图像中恢复出高质量正面人脸。

文章的贡献如下:


  • 提出了一种多退化因子人脸复原模型(Multi-Degradation Face Restoration, MDFR),将给定的任意姿态和受多重低质量因子影响的人脸图像恢复为正面且高质量的图像;

  • 在人脸转正过程中,使用了姿态残差学习策略,并且提出了一种基于3D的姿态归一化模块;

  • 提出了一种有效的整合训练策略将人脸重建和转正任务融合到一个统一的网络中,该方法能够进一步提升输出的人脸质量和后续的人脸识别效果;

2 方法描述

MDFR结构如图1所示。在训练过程中,MDFR主要包含两个模块,即双代理生成器(Dual-Agent Generator)和双代理判别器(Dual-Agent Discriminator)。姿态归一化模型模块(Pose Normalization Module, PNM)被嵌入到网络中对人脸的姿态进行归一化。

MDFR:基于人脸图像复原和人脸转正联合模型的人脸识别方法

图1. MDFR模型的结构,包括双代理生成器,姿态归一化模型,以及双代理判别器。

(1)双代理生成器

双代理生成器包含一个人脸复原子网络(Face Restoration sub-Net, FRN)和一个人脸转正子网络(Face Frontalization sub-Net, FFN)。FRN网络的作用是将低质量人脸图像重建为高质量人脸图像,而FFN网络将FRN生成的侧脸图像进行转正。其中每个子网络均包含一个编码器和解码器,前者用来将输入映射到特征空间,而后者主要将编码后的特征重建为相应的目标人脸图像。两个子网络具有相同的网络结构,但是输入有所不同。FRN的编码器对输入的人脸图像进行编码,随后解码器对编码器的特征进行解码。FFN的解码器的输入除了人脸的编码特征外,还包含人脸两种姿态的编码残差,如图2所示。

MDFR:基于人脸图像复原和人脸转正联合模型的人脸识别方法

图2生成网络的网络结构

(2)姿态归一化模块

作者设计了一个姿态归一化模块(PNM)对姿态进行归一化。PNM提供了标准的、并且尺度统一的真实正面姿态来来引导人脸转正。基于3D形变模型(3D Morphable Model, 3DMM),二维人脸图像对应的三维顶点可以通过人脸正交基线性加权相加而得到:

MDFR:基于人脸图像复原和人脸转正联合模型的人脸识别方法

通过尺度正交映射将三维人脸顶点映射到二维图像平面,二维侧脸人脸图像可以表示为:

MDFR:基于人脸图像复原和人脸转正联合模型的人脸识别方法

其中,参数

MDFR:基于人脸图像复原和人脸转正联合模型的人脸识别方法

是相应的旋转矩阵,t 为平移向量。当移去旋转矩阵和平移向量后,归一化后真实转正的人脸密集二维坐标可以表述为:

MDFR:基于人脸图像复原和人脸转正联合模型的人脸识别方法

在文章中,作者使用3D人脸转正方法 2DAL 从一张给定的二维人脸图像中获取人脸密集坐标,最后选取18个常用的关键点来生成相应的高斯热力图(Gaussian Heatmaps)。

(3)双代理先验引导判别器

在人脸超分辨率领域使用的判别损失能够很好的提高重建人脸的真实度。因此,在本文中,作者在判别器中加入两种额外的先验信息:目标人脸的landmarks以及正脸的身份特征图,使得生成的人脸不仅能够获得目标姿态,还具有真实的身份信息。对应的判别器分别为PCD(Pose Conditioned Discriminator)以及ICD(Identity Conditioned Discriminator)。

在实现过程中,作者将两种先验信息分别作用到输入判别器中引导人脸的生成,然后再输入到相应的判别器中进行判别损失的求解。PCD和ICD不仅可以区分真实人脸和生成的人脸,同时可以学习到真实人脸和生成人脸的姿态和身份差异。

(4)网络训练

网络的训练主要分为两个阶段:Separate Training和TI Training。

Separate Training:文章首先分别训练FRN和FFN两个子网络,两个训练过程分别简写为FRN-S和FFN-S。FRN-S训练过程中所用到的损失函数如下:

身份信息损失:

MDFR:基于人脸图像复原和人脸转正联合模型的人脸识别方法

重建像素损失:

MDFR:基于人脸图像复原和人脸转正联合模型的人脸识别方法

总的损失:

MDFR:基于人脸图像复原和人脸转正联合模型的人脸识别方法

FFN-S训练过程中所用到的损失函数如下:

转正损失:

MDFR:基于人脸图像复原和人脸转正联合模型的人脸识别方法

条件对抗损失:

MDFR:基于人脸图像复原和人脸转正联合模型的人脸识别方法

总的损失:

MDFR:基于人脸图像复原和人脸转正联合模型的人脸识别方法

Task-Integrated (TI) training:在FRN和FFN完成了相应的分开训练后,作者在预训练模型的基础上进行整合训练。在这个阶段,作者使用FFN模型的输出作为ground-truth来训练FRN。同时,使用PNM归一化后的真实转正面部landmarks来引导FFN中人脸的转正。为了生成更好的人脸效果,在这一阶段作者还使用了特征对齐损失(Feature Alignment Loss, FA),具体的定义如下:

MDFR:基于人脸图像复原和人脸转正联合模型的人脸识别方法

整体的训练损失函数为:

MDFR:基于人脸图像复原和人脸转正联合模型的人脸识别方法

3 实验结果

作者首先探索了不同的网络结构和损失函数的组合来观察FFN-S和FRN-TI相应部分对人脸生成的影响,实验结果如图3所示。

MDFR:基于人脸图像复原和人脸转正联合模型的人脸识别方法

图3. 消融实验在Multi-PIE数据库上的对比结果。

同时,表1展示了 MDFR 的不同变异体对不同姿态人脸的 rank-1 识别率。在所有的实验模型中,FFN-S 和 FRN-TI 均获得了最好的精度。

MDFR:基于人脸图像复原和人脸转正联合模型的人脸识别方法

表2列举了 FFN-S 和 FRN-TI 同其他方法在 Multi-PIE 数据集上人脸识别率的比较。FFN-S 在所有的姿态中获得了最好的效果,其次是FFN-TI。当姿态角度在±45°以内时,FFN-S 和FFN-TI获得了同 CAPG-GAN 相似的识别效果。但当姿态角度大于±45°时,FFN-S 和 FFN_TI 的效果要显著的好于 CAPG-GAN。

MDFR:基于人脸图像复原和人脸转正联合模型的人脸识别方法

图4. 不同方法在多重低质量因素影响下的人脸复原效果

作者在多重低质量因素影响的人脸图像上进行相应的验证,包括低分辨率、不良光照、噪声以及模糊。实验表明,文章提到的方法不仅可以充分应对多种低质量因子,而且都可以生成相应的高质量人脸图像。图4展示了不同方法在多重低质量因素影响下的人脸复原效果。可以看出不同于之前只能处理单一的任务的方法,文中所提出的方法既可以对人脸进行转正也可以进行高质量复原,且取得了最好的视觉效果。


推荐阅读
  • MySQL多表数据库操作方法及子查询详解
    本文详细介绍了MySQL数据库的多表操作方法,包括增删改和单表查询,同时还解释了子查询的概念和用法。文章通过示例和步骤说明了如何进行数据的插入、删除和更新操作,以及如何执行单表查询和使用聚合函数进行统计。对于需要对MySQL数据库进行操作的读者来说,本文是一个非常实用的参考资料。 ... [详细]
  • 本文介绍了PhysioNet网站提供的生理信号处理工具箱WFDB Toolbox for Matlab的安装和使用方法。通过下载并添加到Matlab路径中或直接在Matlab中输入相关内容,即可完成安装。该工具箱提供了一系列函数,可以方便地处理生理信号数据。详细的安装和使用方法可以参考本文内容。 ... [详细]
  • 在Android开发中,使用Picasso库可以实现对网络图片的等比例缩放。本文介绍了使用Picasso库进行图片缩放的方法,并提供了具体的代码实现。通过获取图片的宽高,计算目标宽度和高度,并创建新图实现等比例缩放。 ... [详细]
  • MyBatis多表查询与动态SQL使用
    本文介绍了MyBatis多表查询与动态SQL的使用方法,包括一对一查询和一对多查询。同时还介绍了动态SQL的使用,包括if标签、trim标签、where标签、set标签和foreach标签的用法。文章还提供了相关的配置信息和示例代码。 ... [详细]
  • EPICS Archiver Appliance存储waveform记录的尝试及资源需求分析
    本文介绍了EPICS Archiver Appliance存储waveform记录的尝试过程,并分析了其所需的资源容量。通过解决错误提示和调整内存大小,成功存储了波形数据。然后,讨论了储存环逐束团信号的意义,以及通过记录多圈的束团信号进行参数分析的可能性。波形数据的存储需求巨大,每天需要近250G,一年需要90T。然而,储存环逐束团信号具有重要意义,可以揭示出每个束团的纵向振荡频率和模式。 ... [详细]
  • 本文介绍了在开发Android新闻App时,搭建本地服务器的步骤。通过使用XAMPP软件,可以一键式搭建起开发环境,包括Apache、MySQL、PHP、PERL。在本地服务器上新建数据库和表,并设置相应的属性。最后,给出了创建new表的SQL语句。这个教程适合初学者参考。 ... [详细]
  • 云原生边缘计算之KubeEdge简介及功能特点
    本文介绍了云原生边缘计算中的KubeEdge系统,该系统是一个开源系统,用于将容器化应用程序编排功能扩展到Edge的主机。它基于Kubernetes构建,并为网络应用程序提供基础架构支持。同时,KubeEdge具有离线模式、基于Kubernetes的节点、群集、应用程序和设备管理、资源优化等特点。此外,KubeEdge还支持跨平台工作,在私有、公共和混合云中都可以运行。同时,KubeEdge还提供数据管理和数据分析管道引擎的支持。最后,本文还介绍了KubeEdge系统生成证书的方法。 ... [详细]
  • 向QTextEdit拖放文件的方法及实现步骤
    本文介绍了在使用QTextEdit时如何实现拖放文件的功能,包括相关的方法和实现步骤。通过重写dragEnterEvent和dropEvent函数,并结合QMimeData和QUrl等类,可以轻松实现向QTextEdit拖放文件的功能。详细的代码实现和说明可以参考本文提供的示例代码。 ... [详细]
  • 本文介绍了数据库的存储结构及其重要性,强调了关系数据库范例中将逻辑存储与物理存储分开的必要性。通过逻辑结构和物理结构的分离,可以实现对物理存储的重新组织和数据库的迁移,而应用程序不会察觉到任何更改。文章还展示了Oracle数据库的逻辑结构和物理结构,并介绍了表空间的概念和作用。 ... [详细]
  • 如何用UE4制作2D游戏文档——计算篇
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了如何用UE4制作2D游戏文档——计算篇相关的知识,希望对你有一定的参考价值。 ... [详细]
  • 使用Ubuntu中的Python获取浏览器历史记录原文: ... [详细]
  • 本文介绍了Java高并发程序设计中线程安全的概念与synchronized关键字的使用。通过一个计数器的例子,演示了多线程同时对变量进行累加操作时可能出现的问题。最终值会小于预期的原因是因为两个线程同时对变量进行写入时,其中一个线程的结果会覆盖另一个线程的结果。为了解决这个问题,可以使用synchronized关键字来保证线程安全。 ... [详细]
  • 深入理解Java虚拟机的并发编程与性能优化
    本文主要介绍了Java内存模型与线程的相关概念,探讨了并发编程在服务端应用中的重要性。同时,介绍了Java语言和虚拟机提供的工具,帮助开发人员处理并发方面的问题,提高程序的并发能力和性能优化。文章指出,充分利用计算机处理器的能力和协调线程之间的并发操作是提高服务端程序性能的关键。 ... [详细]
  • 使用Spring AOP实现切面编程的步骤和注意事项
    本文介绍了使用Spring AOP实现切面编程的步骤和注意事项。首先解释了@EnableAspectJAutoProxy、@Aspect、@Pointcut等注解的作用,并介绍了实现AOP功能的方法。然后详细介绍了创建切面、编写测试代码的过程,并展示了测试结果。接着讲解了关于环绕通知的使用方法,并修改了FirstTangent类以添加环绕通知方法。最后介绍了利用AOP拦截注解的方法,只需修改全局切入点即可实现。使用Spring AOP进行切面编程可以方便地实现对代码的增强和拦截。 ... [详细]
  • seaborn箱线图_Seaborn线图的数据可视化
    seaborn箱线图Hello,folks!Inthisarticle,wewillbetakingtheSeaborntutorialaheadandunderstandingt ... [详细]
author-avatar
王功争_781
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有