美文网首页
神奇的“GAN”

神奇的“GAN”

作者: CV算法恩仇录 | 来源:发表于2022-02-16 14:27 被阅读0次

    原创:王稳钺
    资料来源:二可

    GAN最神奇的地方在于它可以生成新的信息,这是其他算法很难甚至根本就做不到的。因此,通过GAN,可以完成很多有趣的应用。本文章将从GAN在CV中的应用、GAN的理论与框架、应用GAN的实际项目和项目优化四个部分详细的介绍GAN的神奇之处。

    1. 对抗生成网络(GAN)在计算机视觉(CV)中的应用

    左图展示了可以通过自身的面部表情,来驱动其他物体的表情。人如何动,狗就会跟着改变。右图展示了一个瘦脸特效,这其实也可以通过GAN来实现。

    通过GAN,还可以让静态的图片动起来。进而延伸,GAN也可以应用在虚拟偶像领域,可以通过算法,让三维像二维一样动起来。GAN还能非常好的完成老照片的修复。老照片通常情况下可能存在颜色失真、模糊、细节及内容缺失等问题。通过GAN,可以很好的解决这类问题。

    同时,通过GAN,可以单纯的利用数据生成卡通图像,不需要经过任何的人为干预。相应的,也可以生成人脸图像。算法可以生成世界上不存在的人的人脸图像。

    刚才展示的应用,都是GAN的经典应用,为什么叫经典应用呢?这些应用的主体就是GAN或者GAN的结果就是项目的最终结果。那么GAN能不能起到其他作用呢?

    GAN在数据应用方面也有成熟的应用。在做一些计算机视觉的项目中,有的场景需要大量的数据。一旦涉及到利用人工智能或者深度学习等等这方面的算法的话,那么通常情况下就会需要大量的数据。但是很不幸的是,有些特殊的场景没有那么多的数据。这时,就可以利用GAN网络生成一些虚假的数据,这些虚假数据又非常像真实的数据,这样就通过算法补充了需要的数据。例如在元宇宙中,需要对人们的眼动进行追踪。不仅需要知道人的眼睛在哪,还需要判断眼睛的注视方向,这就需要大量眼睛的数据。而获得眼睛数据很困难,需要测试者佩戴特殊的设备进行测试,还需要人为标注注视方向,而且涉及到获取三维信息。这就需要大量的人力成本。这种情况下,就可以利用模型来生成数据。但是模型生成的数据和真实数据往往不一致。这就需要利用GAN来让生成的数据看上去更像一个真实的数据。

    除了眼睛项目以外,还有一个非常经典的应用就是手的应用,元宇宙或者 VR 当中很有可能会出现的就是裸手的交互。因为戴上头显之后,用户跟系统当中的交互通常情况下有两种,一种是利用遥控器,另一种就是点击头显,很明显这些方法都都不方便。更方便的方式是手什么都不带,就纯用手去跟虚拟场景进行交互,这个是第三种可行的方式。那么在第三种方式的时候,会出现一个什么问题,就是需要去找到手每一个关节点的位置。因为只有知道了每一个关节点的位置,才知道手的具体的信息,才知道手在做什么动作,每一个动作可能表示什么样的含义。那么在这个过程当中,如何去获取每一个手指关节点的位置?而且这个位置信息还必须是三维的,因为会需要有深度信息,比如点击操作。如果要用标注或者说采集的方式的话,有什么办法能够获得手指每一个关节点的信息呢?可以是采集这个二维的位置信息,然后进行标注,利用传统的计算机视觉的方法去生成三维信息,这需要大量的人力成本。或者是给每一个手指关节点上放上探测器,每一个探测器都是很贵的,而且每一个探测器都需要单独地进行校准,这是一个非常非常复杂的一个过程,成本也是非常非常高。这个时候也可以利用GAN生成看上去非常非常像真实数据的假图,然后用这些图来训练模型。

    2. GAN的理论与框架

    首先先解释一下GAN与CV、CG的关系。CV是指计算机视觉,CG是指计算机图形学。计算机视觉就是已有图像,然后从已有图像当中去获取信息的过程,这一类的算法称作计算机视觉的算法。比如说左边的图,已有一张图,首先可以检测到物体在哪,其次可以把这些物体给区隔开,车、人等等的。其实还可以分辨出人是谁,当然这图中没做,但是可以这么做。CG是从已有信息绘制出图像的过程。这个图像是一个广义的图像,它可以是三维的,它可以是二维的。右边的图是一个3D的海,这个海就是计算机图形学生成出来的。那么是根据什么信息绘制出来的呢?其实是物理公式,模拟流体力学当中的斯托克斯公式,水粒子相互之间的关系。CG电影也是类似的原理,CG电影贵的原因也是其中需要运用到超算。

    刚才看的GAN的例子都是跟 CV 相关的例子,它们和经典的 CV 的例子是不是有些不同?因为它们好像在生成一些东西。那是不是又跟CG 有点类似?但是它又不全是CG,因为它没有物理信息。它有的是什么信息?它有的是从这个人当中提取出来的信息,然后驱动这个狗的生成。所以它看上去好像是 CV 和 CG 的一个结合。但其实不是。GAN是一类方法论,它可以被应用在各个领域当中,CV和CG就是不同的领域。所以它的地位就是一些领域下面的某些方法。

    GAN与CNN是什么关系呢?它的位置要高于CNN。CNN是具体的算法,可以用CNN来实现GAN,目前人们使用CNN来实现只是因为效果比较好。

    GAN为什么能产生如此多的神奇的效果呢?下图展示了最经典的GAN的结构,其中最主要的两部分,一部分为判别器(discriminator),另一部分为生成器(generator)。整个结构最主要的目的就是对抗式学习。辨别器和生成器分别有各自的任务。判别器的任务是判别输入的图像是真的图还是假的图,而这个假的图就是用生成器生成出来的图。那么生成器的目标是什么呢?就是要生成图像,然后争取让判别器无法区分它是真的图还是假的图,或者说它更倾向于的生成一个真的图,这两部分像是在打架。所以这就是为什么这套理论叫做对抗网络,因为这两个东西在对抗。最终的目的是生成出来一张图。比如前面生成出来卡通图像或者生成出一张人脸,它们都来源于生成器。

    将上述过程转化为数学公式如下图。其实想要做AI相关,是需要数学的,数学最大的用处是帮助写代码。对于绝大部分AI算法,分为三个步骤。第一步是文字描述,就是前面说的判别器、生成器等。但是仅仅描述到这个阶段完全不够,因为不可能只通过描述写出任何的代码。如何判断真图还是假图,在代码当中怎么表示?文字描述仅仅是算法的第一个阶段。第二个阶段就是要把文字转化成相关的数学语言。最后一步就是将数学再转化为代码。

    V代表价值函数,即使得整体利益最大,右边的两个E代表期望。如何让V最大呢?这就需要确定一个policy,policy对应D、G中的一些参数。一旦确定某一套参数后,就可以让整体获得最大值。

    为什么要在D确定的情况下,让V最大呢?这就涉及到希望D(x)趋近于1,D(G(x))趋近于0。D是discriminator,判别器。判别器用来判断输入图像是真图还是假图。x代表真图,所以希望D(x)为1。G(z)代表假图,所以希望D(G(z))为0。这样,logD(x)和log(1-D(G(z)))都为0,所以其实希望V最大就是0。如果D(x)趋近于0,也就是判别器没有判别出真图,则logD(x)为负无穷,显然小于0。

    接下来解释为什么想要在G确定的情况下,V能够达到最小值。G是生成器,理想的G可以愚弄判别器。当输入一张假图,判别器分辨不了真假,即D(G(z))接近于1,那么log(1-D(G(z)))就趋近于负无穷,负无穷就是最小的V。当变为负无穷的时候,即判别器无法分辨真假图。这就是将文字转化为数学。

    x是真实或者叫目标数据,它要服从真实数据的概率分布,因为整个GAN的目标是希望拉近两个概率分布之间的距离。什么意思呢?图像有真实图像的概率分布,生成的图像有生成图像上的概率分布。刚开始的时候生成图像跟真实图像两个概率分布是完全不一样的,那么整个GAN的过程就是希望让生成图像的概率分布能够尽可能地去贴近于真实图像的概率分布,或者是能够尽可能地贴近于目标数据的概率分布。这就是GAN独特的地方,它可以创造信息。以前的人工智能都不能或者很难创造信息,因为它们的目标就是样本对样本。但一旦目标是概率分布的话,那么就可以创造信息,可以生成一个前所未有的样本,但只要这个样本是符合目标分布的话,那么这个样本就是一个好样本,这就是为什么干能够创造信息的原因。虽然它创造信息,但是它是创造了一个符合需求分布的信息。

    其实z也是同理,原始的GAN中,z是噪音。后来,z也可以是一些初始的图像等,它只要符合自己的分布就可以。

    3. 实际项目

    下面介绍一个真实的案例,是将BBC的一段对于中国的视频进行颜色矫正。

    这其中的生成器要复杂一些,使用的是经典的U-Net结构。整体分维三部分。第一部分为Encoder部分,提取图像当中的信息。然后经过FeaturePart,这一部分可以认为是最简单的神经网络的一部分。CNN有一个特性,网络越深,语义信息越来越多,物理信息越来越少。所以中间引入一个桥,把浅层的信息引入到最终的结果中。

    Discriminator就是非常简单的神经网络,但是也有一些区别。这里并不是一个简单的二值分类,而是得到一个张量,因为其对应着PatchGAN算法。

    下面展示的是最终的结果及一小部分代码。

    4. 项目优化

    在矫正BBC的视频颜色时,没有加入时序信息。最初始的GAN就是一张图对应一张图,没有引入相邻图片之间的信息。

    其次通过图片可以看出,字幕的颜色也发生了改变,可以先检测出字幕位置,抠掉字幕,不让其进入项目的计算矫正。这些都可以进行优化。

    GAN的潜力巨大,因为它可以学习模仿任何数据分布。因此,GAN能被教导在任何领域创造类似于我们的世界,比如图像、音乐、演讲、散文。在某种意义上,他们是“艺术家”。如果想要深入了解GAN或者对文章中项目的源码感兴趣,欢迎联系我们。

    相关文章

      网友评论

          本文标题:神奇的“GAN”

          本文链接:https://www.haomeiwen.com/subject/pleakrtx.html