| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 游戏开发 -> 【FaceEdit论文阅读】Latent to Latent: A Learned Mapper for Identity Preserving Editing -> 正文阅读 |
|
[游戏开发]【FaceEdit论文阅读】Latent to Latent: A Learned Mapper for Identity Preserving Editing |
? 简单概括一下:最近很多文章介绍了利用StyleGAN调整人脸属性的工具方法,尽管在解纠缠方面做了很多努力,但往往在修改人脸某一属性的情况下会同时修改其他人脸属性,同时很多修改过的人脸不再像原来的人。于是作者提出来一种神经网络,以人脸的latent code+所需要调整的属性attributes作为输入,输出为更改过的latent code。训练过程中,使用无监督的数据,训练标签由pretrained属性分类器生成,同时加入了身份维护。 Introduction? 基于属性的人脸图像编辑是一个非常活跃的研究领域,有许多直接的实际应用。给定一个人的照片,可以生成更改过特定属性的新照片(比如年龄或面部表情被修改)。但目前存在一些纠缠问题:例如,当面部变老时,在面部添加了眼镜(眼镜的存在应该是一个独立可控的属性)。此外,即便修改了很多属性,编辑前后图像中的人物应该保持不变(应能辨认出是同一个人)。 ? 最近,StyleGan反演技术可以更加有效地将真实世界的图片投射到latent space,一旦获取了图片在latent space的latent code,就可以通过更改部分latent code实现属性编辑。之前的论文提到过可以在latent space内寻找到切割特定属性正负样本的超平面,然后获取到改变该属性的directions,但这些属性在latent space中却是复杂的、非线性的,通过线性修改很容易修改到其他属性。为了解决该问题,很多最新的papers开始使用非线性的映射,同时也有的做法是针对特定属性只修改对应的style层(例如,修改年龄时,更改StyleGAN的第6和7层) ? 本文中,作者训练了一个神经网络来完成latent-to-latent的transformation,用于获取image with the changed attribute所对应的latent code。由于这个技术是one-shot,同时不依赖于线性或非线性的directions变化,一旦网络训练完成,可针对任意其他图片完成编辑。训练该网络不需要对图片进行手动标记,只需要通过一个属性分类器,所以网络可控制的属性数量完全由属性分类器决定,在作者的实验中,训练了一个可控制35个不同面部属性的分类器(比过去所有方法都要多)。作者认为在改变特定属性时应保持其他属性不变,例如改变年龄也不应该自动改变头发的颜色,在作者的体系结构中通过FaceNet计算脸部特征之间的欧氏距离来计算身份损失。 ? 本文的贡献如下:
Latent-to-LatentDefining and measuring face attributes? 当我们去描述一张图片中的人脸时,我们通常会使用诸如性别、年龄、头发等属性,将这些人类评估表示为与图像关联的属性集合 Adjusting the attributes with a latent-to-latent network? 给定一张图片I和属性向量a,我们希望用户可以指定一个不同的属性向量: ? 我们的方法基于以下想法:图片I和I’都是StyleGan生成得到,同时和latent codes w、w’有关联。如果I来自真实世界图片,可以先将它反演到latent space生成w,接下来利用网络完成: ? 我们的方法中使用了StylegGan(18*512)、35维属性变换向量,由于在空间地图中,latent space的维度代表着 “styles”,所以在transformation network中使用卷积层是不合适的。我们的transformation是single shot,因此循环架构不适用。我们使用了一个多层全连接神经网络,自由变量是层的大小和数量同时非线性使用,为了保护输入图像的细节,我们将所有隐藏层都设置为输入输出相同的size。至于网络的层数,我们进行了1~4层的实验,这对训练数据以及机器性能的消耗有显著提升。 ? 过去的研究中证明了简单的遵循线性方向不会产生好结果,虽然ReLU是默认的神经网络中非线性的激活函数,但在我们的网络中它表现并不好,因为它通过网络传播不可避免地抑制了一些信息,因此我们最终选择使用Tanh函数。 Training the latent-to-latent network? 训练latent-to-latent transformation网络可以使用标注过的人脸图片监督训练,但这毫无疑问耗费的成本过大。 ? 我们的训练方法是将网络嵌入到一个框架中,其中信息流经许多pretrained组件,除了f 网络参与训练,其他的网络冻结权重。通过应用不同的信息流,我们可以定义一些不同的损失,有助于训练latent-to-latent网络的功能。 ? 我们观察到,仅仅改变单个属性可能会产生不合理的属性向量,比如一个胡子男没有面部毛发,所以我们首先通过了一种方法修正了目标属性向量,生成了一个修正过的属性向量ac’,所以输入到网络中的应该是: Target attribute loss ? 生成图像的属性应尽可能接近修正后的目标属性。 我们使用输出 a^ 和校正后值ac’之间的均方误差,均方误差在这里很有帮助。 ? 从逻辑上讲,同一个人的属性变化应该是可逆的:将年龄增加十年然后减少它应该会产生相同的图像。 这种目标属性损失不会自动强制执行,因为在这个过程中,图片的其他方面可能未被特定属性覆盖得到改变。 我们以循环损失的形式实现这个目标,实现为原始潜在向量 w 与通过应用两个属性变化获得的潜在向量之间的距离相反的迹象。 我们将使用 L1 距离进行测量潜在空间中的距离: ? 当不添加属性改变时,应该生成相同的latent vector。 ? 潜在空间变换的一个挑战是由于非线性和潜在空间内部相互纠缠,相对较小的属性转换可能会使向量偏离较大。Neighborhood loss代表原始latent vector偏离的输出,鼓励网络实现属性转换后的latent vector与原始latent code的偏离量最小。 ? 确保属性变换前后的人身份一致,在这里使用了FaceNet完成。 实验结果
Conclusions? 在本文中,我们介绍了一种在 StyleGAN 生成的图像中编辑人脸属性的新技术。 我们的方法基于一个映射潜在向量的网络,潜在到潜在映射器可以通过嵌入在一个更大的网络中来学习,并结合以下方法对其进行训练损失。 其中一些损失强制执行新的属性值,而另一些则引导网络找到解决方案,使得保留原始图片的个人身份和其他特征。 通过定性和定量实验我们发现,与最先进的方法相比,我们的方法可以处理更多的属性,更好的维护面部的个人身份。 |
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/25 22:38:50- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |