点击上方“小白学视觉”,选择加"星标"或“置顶

重磅干货,第一时间送达

如今,深度学习已近在图像合成、图像处理领域中取得惊人的成果。FaceShifter [1]便是其中之一,它是一种深度学习模型,可以非常先进的技术实现人脸交换。在本文中,我们将了解它是如何工作的。

01.问题描述

我们有一张源人脸图像Xₛ和一张目标人脸图像Xₜ,我们想要产生一个新的人脸图像Yₛₜ。它具有Xₜ图像中的属性(姿势,照明,眼镜等)和Xₛ图像中人的身份。图1总结了该问题陈述。现在,我们继续解释模型。

图1.换脸的问题描述,所示结果来自FaceShifter模型

02.FaceShifter模型

FaceShifter由AEI-Net和HEAR-Net的两个网络组成。AEI-Net产生初步的面部交换结果,而HEAR-Net对该输出进行细化。

AEI-Net

AEI-Net是“自适应嵌入集成网络”的缩写,AEI-Net包含3个子网:

1.身份编码器:与将Xₛ嵌入描述图像中人脸身份的空间有关的编码器。

2.多级属性编码器:一种与将X emb嵌入到空间中有关的编码器,该空间描述了交换面部时要保留的属性。

3.AAD生成器:一种生成器,它集成了前面两个子网的输出,以生成Xₜ的面与Xₛ的标识交换。

图2. AEI-Net的体系结构

身份编码器

该子网将源图像Xₛ投影到低维特征空间。输出只是一个矢量,我们将其称为zᵢ,如图3所示。此矢量编码Xₛ中人脸的身份,这意味着它应提取人类用来区分不同人的人脸的特征,例如眼睛的形状,眼睛与嘴巴之间的距离,嘴巴的弯曲度等。

使用了经过训练的人脸识别网络。这可以满足我们的要求,因为区分面部的网络必须提取与身份相关的特征。

图3.身份网络

多级属性编码器

该子网对目标图像Xₜ进行编码。它产生多个向量,每个向量以不同的空间分辨率描述X的属性,称为zₐ。这里的属性表示目标图像中人脸的配置,例如人脸的姿势,轮廓,面部表情,发型,肤色,背景,场景照明等。它是具有类似U-Net结构的ConvNet,例如可以在图4中看到,其中输出矢量只是放大/解码部分中每个级别的特征图。但是这里的子网并没有经过预训练。

图4.多级属性编码器体系结构

我们需要将Xₜ表示为多个嵌入的形式,因为在单个空间分辨率下使用会导致生成需要交换面部的输出图像所需的信息丢失(即,我们想从X from保留太多精细的细节,使压缩图像不可行)。这在作者进行的烧蚀研究中很明显,他们尝试仅使用前3个zₐ嵌入而不是8个嵌入来表示Xₜ,从而导致图5所示的输出更加模糊。

图5.使用多个嵌入表示目标的效果。如果使用前3个zₐ嵌入,则压缩为输出

而当使用全部8个z 8嵌入时,则为AEI-Net

AADGenerator

AAD Generator是“ Adaptive Attentional Denormalization Generator”的缩写。它以提高的空间分辨率集成了前两个子网的输出,以生成AEI-Net的最终输出。它是通过堆叠如图6所示的称为AAD Resblock的新块来实现的。

图6.左图为AAD Generator架构,右图为AAD ResBlock

此块的新块是AAD层。让我们将其分解为3部分,如图7所示。从较高的层次来看,第1部分告诉我们如何在属性方面将输入特征映射hᵢₙ编辑为更像Xₜ。具体来说,它输出两个张量,它们的大小与hᵢₙ相同。一个包含比例值,该比例值将与hᵢₙ中的每个单元相乘,另一个包含位移值。第1部分层的输入是属性向量之一。同样,第2部分将告诉我们如何将特征图hᵢₙ编辑为更像Xₛ。

图7. AAD层的体系结构

第3部分的任务是选择每个单元/像素应听哪一部分(2或3)。例如,在与嘴相关的单元/像素处,该网络将告诉我们更多地收听第2部分,因为嘴与身份之间的关系更大。通过图8所示的实验以经验证明了这一点。

因此,AAD生成器将能够逐步构建最终图像,其中在给定身份和属性编码的情况下,AAD生成器将在每个步骤中确定最佳的方法来放大当前特征图。

现在,我们有了一个网络,即AEI-Net,可以嵌入Xₛ和Xₜ并以实现我们目标的方式将它们集成。我们将AEI-NetYₛₜ*的输出称为。

03.损失函数

一般而言,损失是我们希望网络做什么的数学公式。培训AEI-Net有4个损失:

1.我们希望它能输出逼真的人脸,因此像任何GAN一样,我们将遭受不利的损失。

2.我们希望生成的脸具有Xₛ的身份。我们拥有的唯一表示身份的数学对象是zᵢ。因此,此目标可由以下损失表示:

3.我们希望输出具有Xₜ的属性。造成的损失是:

4.作者添加了另一个损失,其依据是如果Xₜ和Xₛ实际上是相同的图像,则网络应输出Xₜ:

最后的损失是驱动zₐ实际编码属性所必需的,因为它没有像zᵢ那样经过预训练。没有它,可以猜测,AEI-Net可能会忽略Xₜ并使zₐ产生零。我们的总损失只是先前损失的加权总和。

HEAR-Net

AEI-Net是一个可以进行面对面交换的完整网络。但是,在保留遮挡方面还不够好。具体来说,只要有一个项目遮挡了目标图像中应该出现在最终输出中的面部部分(例如眼镜,帽子,头发或手),AEI-Net就会将其删除。这些项目仍应保留,因为它与将要更改的身份无关。因此,作者实现了一个名为“启发式错误确认细化网络”的附加网络,该网络的工作就是恢复此类遮挡。

他们注意到,当他们将AEI-Net(即Xₛ和Xₛ)的输入设为相同的图像时,它仍然没有保留如图9所示的遮挡。

图9.当我们输入与Xₛ和Xₜ相同的图像时,AEI-Net的输出。注意头巾的链子如何在输出中丢失

因此,他们没有将其输入到HEAR-NetYₛₜ*和Xₜ中,而是将其设为Yₛₜ*&(Xₜ-Yₜₜ*),其中Xₜₜ和Xₜ是同一图像时,Yₜₜ*是AEI-Net的输出。这会将HEAR-Net指向未保留遮挡的像素。HEAR-Net可以在图10中看到。

图10. HEAR-Net的体系结构

培训损失

HEAR-Net的损失为:

1.保留身份的损失:

2.由于不改变Yₛₜ*而造成的损失:

3.如果Xₛ和Xₜ是相同的图像,则HEAR-Net的输出应为Xₜ的事实造成了损失:

总损失是这些损失的总和。

结果

FaceShifter的结果是惊人的。在图11中,您可以找到在其所设计的数据集之外(即从野外获取)的图像上的泛化性能的一些示例。请注意,它如何能够在不同的恶劣条件下正常工作。

图11.结果证明了FaceShifter的出色性能

参考文献

[1] L. Li, J. Bao, H. Yang, D. Chen, F. Wen, FaceShifter: Towards High Fidelity And Occlusion Aware Face Swapping (2019), Arxiv.

下载1:OpenCV-Contrib扩展模块中文版教程

在「小白学视觉」公众号后台回复:扩展模块中文教程即可下载全网第一份OpenCV扩展模块教程中文版,涵盖扩展模块安装、SFM算法、立体视觉、目标跟踪、生物视觉、超分辨率处理等二十多章内容。

下载2:Python视觉实战项目52讲

在「小白学视觉」公众号后台回复:Python视觉实战项目即可下载包括图像分割、口罩检测、车道线检测、车辆计数、添加眼线、车牌识别、字符识别、情绪检测、文本内容提取、面部识别等31个视觉实战项目,助力快速学校计算机视觉。

下载3:OpenCV实战项目20讲

在「小白学视觉」公众号后台回复:OpenCV实战项目20讲即可下载含有20个基于OpenCV实现20个实战项目,实现OpenCV学习进阶。

交流群

欢迎加入公众号读者群一起和同行交流,目前有SLAM、三维视觉、传感器、自动驾驶、计算摄影、检测、分割、识别、医学影像、GAN、算法竞赛等微信群(以后会逐渐细分),请扫描下面微信号加群,备注:”昵称+学校/公司+研究方向“,例如:”张三 + 上海交大 + 视觉SLAM“。请按照格式备注,否则不予通过。添加成功后会根据研究方向邀请进入相关微信群。请勿在群内发送广告,否则会请出群,谢谢理解~

FaceShifter:一秒换脸的人脸交换模型相关推荐

  1. FaceShifter:新的人脸交换模型

    点击上方"小白学视觉",选择加"星标"或"置顶" 重磅干货,第一时间送达 如今,深度学习已近在图像合成.图像处理领域中取得惊人的成果.Fac ...

  2. DeepFaceLab: A simple, flexible and extensible face swapping framework 一个简单、灵活和可扩展的人脸交换框架

    DeepFaceLab: A simple, flexible and extensible face swapping framework 一个简单.灵活和可扩展的人脸交换框架 文章目录 DeepF ...

  3. AI换脸-简单换脸、人脸对齐、关键点定位与画图

    ```bash简单换脸.人脸对齐.关键点定位与画图有人将其进行中文翻译也有将其进行一定改编有以下两个案例:1.<川普撞脸希拉里(基于 OpenCV 的面部特征交换)-2>变脸变脸贴图:从这 ...

  4. 《OpenCv视觉之眼》Python图像处理十九:Opencv图像处理实战四之通过OpenCV进行人脸口罩模型训练并进行口罩检测

    本专栏主要介绍如果通过OpenCv-Python进行图像处理,通过原理理解OpenCv-Python的函数处理原型,在具体情况中,针对不同的图像进行不同等级的.不同方法的处理,以达到对图像进行去噪.锐 ...

  5. 基于JSON数据交换模型的实时支付系统设计和实现

    随着支付行业向各类便民账单服务.金融服务类扩展,支付内核采用固定格式数据交换模型已不能适应快速灵活开发的需要.以JSON为基础构建精简3层数据交换模型,并对JSON内存分配管理.键值使用进行优化,实现 ...

  6. 模型仅1MB,更轻量的人脸检测模型开源,效果不弱于主流算法

    乾明 编辑整理  量子位 报道 | 公众号 QbitAI AI模型越来越小,需要的算力也也来越弱,但精度依旧有保障. 最新代表,是一个刚在GitHub上开源的中文项目:一款超轻量级通用人脸检测模型. ...

  7. OpenCV使用人脸界标检测进行人脸交换

    OpenCV使用人脸界标检测进行人脸交换 使用人脸界标检测进行人脸交换 简介 命令参数说明 源代码 结果 第一张图片 第二张图片 交换后的结果 使用人脸界标检测进行人脸交换 简介 此应用程序使您可以将 ...

  8. 大小仅1MB,超轻量级通用人脸检测模型登上GitHub趋势榜

    机器之心报道 项目作者:Linzaer 近日,用户 Linzaer 在 Github 上推出了一款适用于边缘计算设备.移动端设备以及 PC 的超轻量级通用人脸检测模型,该模型文件大小仅 1MB,320 ...

  9. 3模型大小_Github推荐一个国内牛人开发的超轻量级通用人脸检测模型

    Ultra-Light-Fast-Generic-Face-Detector-1MB 1MB轻量级通用人脸检测模型 作者表示该模型设计是为了边缘计算设备以及低功耗设备(如arm)设计的实时超轻量级通用 ...

最新文章

  1. php 实例说明 socket通信机制
  2. 字符的点阵显示(模拟户外广告显示屏)
  3. caffe 练习1:training LeNet on MNIST with Caffe/ 用LeNet识别手写字符集 Mnist------by 香蕉麦乐迪
  4. msql 复杂练习
  5. LNMP(nginx防盗链,访问控制,解析php相关配置,Nginx代理,常见502问题)
  6. 说说我的工作——桌面支持
  7. python xml et_Python 标准库之 XML(下)
  8. Android获取LAUNCHER,Android 获取Launcher 启动列表
  9. RPC——一切架构的基础
  10. win10浏览器闪退_从没法用到真香!没想到改进了 3 年的 Windows 10 浏览器,竟然这么好用...
  11. 无损1080i到1080p是如何制作的
  12. ES+Redis+MySQL,这个高可用架构设计太顶了!
  13. 人工智能、区块链、算法...这30个大数据热词你知道吗?
  14. 用java和tomcat安装jenkins过程
  15. InVEST模型(生态系统服务)
  16. caffe学习系列:网络融合
  17. 基于asp.net房屋按揭贷款管理系统
  18. 2005岁末BLOG程序大评点
  19. 2022年双十一百亿补贴,2022年聚划算双11玩法解读
  20. C之九剑其一——识剑

热门文章

  1. 编程语言发展70年,用50种不同语言输出「Hello World」
  2. 模型训练完才是业务的开始?说说模型监控 | CSDN博文精选
  3. 不甘心只做输入工具,搜狗输入法上线AI助手,提供智能服务
  4. “神人”or“闲人”?你的未来由AI与大数据决定
  5. 开源用于寻找系外行星的代码
  6. AI大咖山世光:AlphaGo Zero的成功并不能复制到人脸识别!
  7. Redis面试连环问:集群、复制以及与其他NOSQL数据库的区别?
  8. 面试官问:大量的 TIME_WAIT 状态 TCP 连接,对业务有什么影响?怎么处理?
  9. 看我如何作死 | 将CPU、IO打爆
  10. 使用YOLOv5模型进行目标检测!