基于StyleGAN的Face-Morphing

article/2025/9/4 19:02:30

本文详细介绍了生成对抗网络(GAN)的知识,并用其变换人脸,并探寻如何利用StyleGAN生成不同属性(如年龄、微笑等)的人脸。

概述

直到最近,我才开始探索深度学习的全部内容,并在计算机视觉中遇到了这些有趣的想法和项目。

即使我的知识和经验有限,我也希望这可以帮助其他一些初学者对该领域产生兴趣并尝试一些令人兴奋的新事物。

我找到一个非常棒的YouTube频道,叫做Arxiv Insights(或者简称AI,这是个巧合吗?我看不是)。在这个频道,我发现其中一个视频是相当有趣的:如何使用生成对抗网络对人脸变形!本文是对我从上述视频中学到的知识的总结,我希望到结束时您对这个想法有一个很好的了解,并且可能想自己尝试一下。

上图中的人在现实生活中并不存在,他们是计算机生成的。朋友们,那就是GAN的力量。果这引起了您的注意,请继续阅读以了解更多信息。

第一部分:GAN是什么

GAN有一个非常简单的任务要做,就是从头开始生成数据,而这种数据甚至可以欺骗人类。

该模型由Ian Goodfellow及其同事于2014年发明,由两个神经网络组成(生成器和判别器),它们相互竞争,从而产生了一些真实的内容。

使用两个网络的目的可以概括为尽可能多地学习输入数据的基础结构,并利用该知识来创建相似的内容,该内容拟合了所有参数以适应同一类别。

如上所示,输入的是人脸,GAN准确地学习到怎样生成人脸或人。利用这种理解,它会生成随机的人脸,这些人脸也可能是真实的。

让我们详细了解一下:

GAN的基本结构

这张图是简化后的GAN模型结构,但它捕获了该概念的完整本质。

这是在GAN的一次迭代中发生的情况:

1. 生成器

  • 生成器将随机噪声矢量作为输入;

  • 生成器将执行多次转置卷积,以对噪声进行上采样,最终生成图像。

 

2. 判别器

  • 它从现实世界样本(真实样本)或生成的图像样本(假样本)中获取随机输入;

  • 顾名思义,判别器只干一件事:判别输入的“真是样本”还是“假样本”。

 

作为用户,我们知道它是来自真实样本还是伪造样本,并利用此知识使用反向传播(BP)训练损失,以使判别器更好地完成其工作。

但是众所周知,生成器也是神经网络,因此我们可以一直传播到随机样本噪声,从而帮助生成器生成更好的图像。这样,判别器和生成器都可以使用相同的损失函数。

诀窍在于在训练过程中平衡这两个网络。如果做得正确,判别器将学会区分即使是很小的异常,同时发生器将学会产生最真实的输出。

 

对GAN工作原理的技术理解:

生成器和判别器处于最小-最大博弈中。

  • 生成器试图最小化真实图像和伪图像之间的差距,以欺骗判别器;

  • 判别器试图最大化对真实图像的理解,以便区分假样本。

在上面的图像中,D(x)只是图像为“真实样本”的概率。

这里有另一个函数G(z)是生成器的输出,z是随机隐变量输入。生成“真实样本”的概率由判别器D(G(z))计算得。

对于判别器,我们希望:

  • 正确识别实样本图像,因此D(x)必须接近1;

  • 同时,同样正确识别假图像,因此D(G(Z))必须接近1。

对于生成器:

  • 生成器与D(x)的准确度无关,只有D(G(z))必须被标识为真实样本,因此其必须尽可能接近1。

GAN的目标函数

只有当两个网络之间取得很好的平衡,这种损失函数才是GAN体系结构的基础,我们才能获得高性能的生成器和判别器。

对于那些对详细了解GAN感兴趣的人:

  • 这是Ian Goodfellow的原始论文链接。

    https://papers.nips.cc/paper/5423-generative-adversarial-nets.pdf

  • 这是“GAN-GAN系列(从开始到结束)”—— 由Jonathan Hui撰写可以深入了解GAN及其应用的最佳资料之一。

    https://medium.com/@jonathan_hui/gan-gan-series-2d279f906e7b

第二部分:有趣部分

该模型背后的原理:

  • 训练完生成器后,其隐变量已充分了解了数据集的底层结构。

  • 在我们的示例中,我们将使用的模型已经了解了人脸的结构。该模型是由NVIDIA研究人员开发的StyleGAN。

    https://en.wikipedia.org/wiki/StyleGAN

  • 我们的目标是利用这种结构并操纵它生成有趣的东西。

 

您应该知道,在像素域中处理图像非常繁琐且困难,因此,我们将在隐向量中处理图像。

然后,我们的第一个障碍来到了,怎么做?对于任何给定的图像,我们能否始终找到该图像对应的潜向量?正如下图所示:

流程:

对于我们的第一个障碍,以下解决方案最有效:

  • 通过生成器生成随机面孔;

  • 使用这些图像作为数据集,训练ResNet从源图像到其潜在的矢量代码(初步估计值);

  • 我们将使用经过预训练的ResNet,可以找到查询图像的潜代码(粗略估算);

  • 然后,以该图像为起点,计算与“原始图像”的L2损失,并相应地更新隐矢量代码(同时固定发生器本身的权重)。

这是第二部分的视频——更新估计的隐代码

在视频的后半部分,由于隐代码估计收敛到查询的真实图像的代码,因此更新很难观察到。

第三部分. 时间变形

好吧,也许不是这个。

计划:

  • 我们需要另一个数据集,然后再次生成随机面孔数据库。

  • 我们应用预训练的属性分类器来获取诸如“性别”,“年龄”,“微笑”等属性。

  • 这样做是为了让我们可以将潜在代码映射到图像属性以找到相应的模式。

  • 我们需要了解,StyleGAN的潜在空间是一个高度复杂的512维空间。

StyleGAN的隐空间

在这里,每个点都代表一张图片,我们需要在该空间中找到一个图案。例如,在该空间中沿某个方向移动将如何更改生成的图像?

  • 可以观察到,在隐空间中,这些属性可以很容易地通过“线性超平面”来分离。

  • 沿该平面取法线将为我们提供改变该属性的方向。

最后,我想展示另一个示例,我更改了Emma Watson图像的“ age”属性。

这是我尝试过的GitHub存储库的链接,视频是其实际输出。

https://github.com/rudraina/Face-Morph

再次感谢Arxiv Insight涵盖了如此有趣的话题。

https://github.com/rudraina/Face-Morph

加油,大家可以自己尝试一下。

原文标题:

Face-Morphing using Generative Adversarial Network(GAN)

原文链接:

https://medium.com/swlh/face-morphing-using-generative-adversarial-network-gan-c751bba45095

 

 

网址参考:

  1. https://xueqiu.com/7788828530/136369374
  2. https://blog.csdn.net/weixin_42137700/article/details/103235520
  3. https://www.ifanr.com/1173717?from=singlemessage

http://chatgpt.dhexx.cn/article/JZD9PZDQ.shtml

相关文章

人脸融合技术,用 Python - OpenCV 来帮你实现

提了好几天的人脸融合技术,今天终于被提上日程,该技术是基于之前介绍的技术基础上延伸得到的,如果之前没有了解过这两篇文章,建议提前看下, 实现人脸识别、人脸68个特征点提取,或许这个 Python 库能帮到你&…

FaceMorphing

大学时候上《计算机视觉与模式识别》课程的时候,一个人脸morphing作业的源代码,运行环境为VS2015。 项目源代码下载链接 效果图如下:

实时渲染(RealTimeRendering-4thEdition)笔记——4变换(下)

变换(下) 顶点混合(vertex blender)渐变(Morphing)Geometry Cache Playback投影(Projections)透视投影 顶点混合(vertex blender) 现在我们想象要完成一个手…

基于图像的虚拟换装:Morphing architectures for pose-based image generation of people in clothing

项目的重点是变形操作的特征化与实现,解决卷积神经网络中的信息失准问题。我们将所研究的方法应用到一个换衣服的任务中,将其建模为一个条件图像生成问题。尽管对抗性方法在生成性任务中很流行,但我们将此项目的范围限制为监督方法&#xff0…

Traffic morphing阅读笔记

文章目录 前言1 变形1.1 符号表示及算法讲解1.1.1 符号1.1.2 凸优化求解1.1.3 降低开销1.1.4大样本空间分治1.1.5实验中的注意事项短会话源分布变化多样数据包分片 2 实验评估2.1 加密IP语音识别白盒变形黑盒变形2.1.1 与原始分类器对抗二元分类器三元分类器 2.1.2 不可区分性评…

云波社区 l Mecha Morphing(变形机甲)游戏介绍

Mecha Morphing(变形机甲)由YGG领投的一个创新型GameFi项目即将开始打金! 简单介绍一下,该游戏由Call of duty核心团队研发,画风完美阐释暴力美学。在MechaMorphing元宇宙中,玩家可以通过参与PVE, PVP, 土地…

Real-Time Rendering——4.5 Morphing 变形

Imagine that one model is displayed at time t0 and we wish it to change into another model by time t1. For all times between t0 and t1, a continuous “mixed” model is obtained, using some kind of interpolation. An example of morphing is shown in Figure 4.…

《数字图像处理》dlib人脸检测获取关键点,delaunay三角划分,实现人脸的几何变换warpping,接着实现两幅人脸图像之间的渐变合成morphing

这学期在上《数字图像处理》这门课程,老师布置了几个大作业,自己和同学一起讨论完成后,感觉还挺有意思的,就想着把这个作业整理一下 : 目录 1.实验任务和要求 2.实验原理 3.实验代码 3.1利用人脸特征点检测工具dli…

OpenCV:图像变形(Image Morphing)

融合/形变技术 Image Morphing的原理是十分简单的。有两幅图像 I 和 J ,我们希望通过融合图像 I 和 J 来创建一幅新的图像 M. 图像 I 和 J 的融合过程是由参数 alpha 来控制,参数 alpha 介于0和1之间。当alpha 0,新的图像 M看起来更接近 I;当alpha 1&…

计算机动画作业:图像morphing

本学期选了计算机动画课程,第一次作业是图像morphing, 本来打算选择基于四边网格的morphing, 但因为要用到曲面插值,感觉比较麻烦,因此使用基于三角网格的face morphing。 一、总体方案 1、检测人脸特征点&#xff0…

Morphing

<script src"http://widgets.amung.us/classic.js" type"text/javascript"></script> <script type"text/javascript"> </script> Morphing 这篇文章给大家介绍一下morphing&#xff0c;它是一种变型动画&#xff0c;…

深度学习中的GPU与CUDA

对应视频教程&#xff1a;https://www.bilibili.com/video/BV1S5411X7FY/ 文章目录 1. 显卡&#xff08;GPU&#xff09;与驱动2. 显卡与CUDA3. 如何查看自己的显卡 1. 显卡&#xff08;GPU&#xff09;与驱动 显卡&#xff0c;也称之为 GPU。GPU 的全称是 Graphics Processin…

CUDA详解

CUDA&#xff08;Compute Unified Device Architecture&#xff0c;统一计算设备架构&#xff09;&#xff0c;是显卡厂商NVIDIA推出的运算平台。 CUDA™是一种由NVIDIA推出的通用并行计算架构&#xff0c;该架构使GPU能够解决复杂的计算问题。 它包含了CUDA指令集架构&#xf…

CUDA入门

1. 引言 CUDA为a platform and programming model for CUDA-enabled GPUs。该平台通过GPU来进行计算。CUDA为GPU编程和管理 提供C/C语言扩展和API。 CUDA编程中&#xff0c;会同时使用CPU和GPU进行计算&#xff1a; CPU system&#xff1a;称为host。GPU system&#xff1a;…

cuda和cudatoolkit

Pytorch 使用不同版本的 cuda 由于课题的原因&#xff0c;笔者主要通过 Pytorch 框架进行深度学习相关的学习和实验。在运行和学习网络上的 Pytorch 应用代码的过程中&#xff0c;不少项目会标注作者在运行和实验时所使用的 Pytorch 和 cuda 版本信息。由于 Pytorch 和 cuda 版…

最新CUDA环境配置(Win10 + CUDA 11.6 + VS2019)

最新CUDA环境配置(Win10 CUDA 11.6 VS2019) 本篇博客根据NVIDIA 官方文档所述, 并根据自己实践得出. 供各位需要的朋友参考. 1.前言 本篇文章的软件环境为: Windows 10CUDA 11.6VS2019 CUDA是目前做人工智能, 深度学习等方向的必备工具库. 由CUDA衍生出的加速工具很多, …

一文搞懂CUDA

什么是cuda 统一计算设备架构&#xff08;Compute Unified Device Architecture, CUDA&#xff09;&#xff0c;是由NVIDIA推出的通用并行计算架构。解决的是用更加廉价的设备资源&#xff0c;实现更高效的并行计算。 CUDA是NVIDIA公司所开发的GPU编程模型&#xff0c;它提供…

GPU,CUDA,cuDNN的理解

我们知道做深度学习离不开GPU,不过一直以来对GPU和CPU的差别,CUDA以及cuDNN都不是很了解,所以找了些资料整理下,希望不仅可以帮助自己理解,也能够帮助到其他人理解。 先来讲讲CPU和GPU的关系和差别吧。截图来自资料1(CUDA的官方文档): 从上图可以看出GPU(图像处理器,…

CUDA编程之快速入门

CUDA(Compute Unified Device Architecture)的中文全称为计算统一设备架构。做图像视觉领域的同学多多少少都会接触到CUDA,毕竟要做性能速度优化,CUDA是个很重要的工具,CUDA是做视觉的同学难以绕过的一个坑,必须踩一踩才踏实。CUDA编程真的是入门容易精通难,具有计算机体…

CUDA学习

想想学习CUDA的时间也应该有十来天了&#xff0c;也该是做一个小总结了&#xff0c;说说我理解的CUDA&#xff0c;它到底是什么东西&#xff1f; 其实说到CUDA&#xff0c;还真的没几个人知道&#xff0c;说实话&#xff0c;我也听说不久&#xff0c;主要因为它2007年才刚发布&…