图片创作:普通GAN, pix2pix, CycleGAN和pix2pixHD的演变过程

第1章 传统计算机视觉基本原理(图像的建模)

1.1 传统的计算机视觉

在2012年之前,CV的主要研究方法是使用人工设计(hand-designed)的图像特征来完成各种任务(见下图)。

1.2 不足

这些特征都是人为预设的,图像的处理基于这些预设的特征,如颜色特征、外形特征等等。人为特征的最大缺陷是:不同场合的特征不一样,不同场景,需要建立不同的模型,适应性差。

传统的图形学管线(pipeline)中,输出图像需要经过建模、材质贴图、光照、渲染等一系列繁琐的步骤。

第2章 基于深度学习DNN的计算机视觉的基本原理(图像的判定)

2.1 基于深度学习的计算机视觉DNN

2012年,随着使用深度神经 络(Deep Neural Network, DNN) 在ImageNet的分类任务上取得了巨大成功,图像处理的任务由认为构建图像特征发展成,机器自己发现图像的特征。

如下图所示,DeepNet能够自动发现输入图像(RGB通道的像素),并根据发现的特征,完成某种任务。这些DNN包括:全连接 络、卷积 络CNN、时序 络RNN/LSTM.

基于 络自动发现的图像特征, 可以完成的任务包括(不限于)

(1)物体识别(Object detection) [Redmon etal., 2018]

(2)对人体肢体的理解(Human understanding) [Guler et al., 2018]

(3)自动驾驶(Autonomous driving) [Zhao et al., 2017]

2.2 DNN的不足

之前的DNN可能是输入一幅图像,输出一个标签(比如说猫),那我们能不能输入“猫”这个字,输出一张猫的照片呢?

很遗憾,答案是No!

因为这种任务实在太复杂啦!

我们很难让DNN凭空输出图像这样的高维数据(High dimensional data)(这里的“高维”可以理解成数据量大)。

实际上,在很长一段时间里,DNN只能输出数字这种简单的、低分别率的小图像,就像下面这样:

而想要生成想游戏场景这类的图片,DNN这种方法根本没用。

第3章 常规生成对抗 络GAN的基本原理(不受控的图像的生成)

3.1 常规生成对抗 络GAN

至此,GAN 络可以自己输出多维度的图片数据了。

图像数据具备了真实图片集的公共特征。

生成的高纬度的图像数据会骗过 络的判决器,被判定为真实的图片。

3.2 生成对抗 络的创作本质

GAN 络输出的创作图片,与输入图片无关

输入:可以是任意的随机数。

输出:与训练集上的真实图片具备相同的特征,但具体是什么样子的,什么尺寸,不受控制。

3.3 生成对抗 络的不足

生成对抗 络虽然能生成高维的图像,该图片与参与 络训练的高纬度的真实图片,具备相同的特征。比如,自动生成人像图像或其它相关的图像。

但图像的生成或输出,与输入之间实际上并没有明显的语义上的对应关系。

(1)输出的图片没有用户控制(user control)能力

在传统的GAN里,输入一个随机噪声,就会输出一幅随机图像。随机图像能够骗过判决 络,具备与真实图片相同的特征。

但用户是有想法滴,如果我们想输出的图像是我们想要的那种图像,和我们的输入是对应的、有关联的。比如输入一只喵的草图,输出同一形态的喵的真实图片(这里对形态的要求就是一种用户控制)。

GAN 络是做不到的,GAN 络无法根据指定的图片,输出与输入有结构上关联的图片。

(2)低分辨率(Low resolution)和低质量(Low quality)问题

尽管生成的图片看起来很不错,但如果你放大看,就会发现细节相当模糊。

3.4 GAN 络的改善的目标

前面说过传统的GAN的种种局限,那么现在,我们相应的目标就是:

  • 提高GAN的用户控制能力
  • 提高GAN生成图片的分辨率和质量
  • 为了达到这样的目标,和把大象装到冰箱里一样,总共分三步:

    (0)GAN: 给定一个随机数,可以输出一个具备真实图片(训练数据集)特征的图片。

    (1)pix2pix:有条件地使用用户输入,它使用成对的数据(paired data)进行训练。

    (2)CycleGAN:使用不成对的数据(unpaired data)的就能训练。

    (3)pix2pixHD:生成高分辨率、高质量的图像。

    第4章 pix2pix 络的基本原理(“形似”受控的图像生成、创作)

    4.1 pix2pix 络的目标

    这种方法,就是在训练的时候,就告诉 络,输入图片与输出图片具备某种对应关系,对GAN 络进行限制,而不是像GAN 络进行任意的输出符合真实图片特征的图片。

    pix2pix对传统的GAN做了个小改动,它不再输入随机噪声,而是输入用户给定图片,输出与输入有结构对应关系的图片。

    4.2 pix2pix的问题

    (1)情形1:

    如果G 络的输出是下面这样的,D 络拿来一看,也会认为是真的图片。

    这种输出它的图片满足GAN 络的要求。

    (2) 情形2:

    如果G 络的输出如果是下面这样,D 络会判断是真图:

    这种输出它的图片也满足GAN 络的要求。

    如何确保,输入图片X, 只输出情形2的图片呢?而不是情形1的图片呢?

    4.3 怎样建立输入和输出的对应关系呢?

    为了体现这种对应关系,解决方案也很简单:

    我们把G 络的输入和输出一起作为D的输入,D 络的判决时,不仅仅根据G 络的输出进行决,还根据G 络的输出进行判决,只有G 络的输出与G 络的输出具备对应关系,D 络才认为G 络输出的图片是期望的图片,如下图所示:

    (1)情形1:输出与输入一致的情形

    下列条件只有同时得到满足,输出图片才会被判为真:

  • 满足GAN 络的判决条件,即输出满足真实图片的特征。
  • 输出图片与输入图片相似,即实现了输入对输出的控制
  • (2)情形2:输出与输入不一致的情形

    下列条件只要有一个不满足,输出图片就被判为假:

  • 满足GAN 络的判决条件,即输出满足真实图片的特征;否则,输出图片不满足期望的真实图片的特征。
  • 输出图片与输入图片相似,即实现了输入对输出的控制;否则,输出图片与输入图片没有关系,不是由输入图片产生的,而是随机产生的。
  • 4.4 pix2pix名称的由来

    pix2pix通过增加判决 络对输出与输入图片的相似性检查,确保输出的图片,与输入图片有明确的对应关系来达到输入对输出的控制。

    现在的问题来了:如何检查输出与输入图片的相似性呢?

    (1)pix2pix的做法

    pix2pix通过把输出图片与输入图片的每个像素点的距离和作为loss,来判断两个图片的相似性的,

    loss越小,相识度越高。

    pix2pix并没有通过增加什么新的 络,来确保输出与输入的相似性关系。

    这就是pix2pix的由来!

    由于pix2pix对相似性检查和保证,是直接通过像素到像素进行检查的完成的,因此pix2pix的输出与输入是显性的、表象的、强关联关系,属于“形似”。

    4.5 pix2pix创作的本质

    pix2pix能够确保输出图片与输入图片有一定的关联。或者说,给定一个输入图片,输出的图片,除了满足真实图片的特征,还能体现、保留输入图片原有的信息。

    pix2pix是通过数据集,而不是神经 络结构,来保证输出与输入关系的!

    因此pix2pix 络,需要成对的数据集(paired数据集)。

    4.5 pix2pix的应用

    pix2pix的这项研究还是挺成功的,大家可以去????这里线体验一下demo,它能把草图(sketch)变成图片。

    ??????这里:
    https://affinelayer.com/pixsrv/

    (1)草图变图片[Isola, Zhu, Zhou, Efros, 2016]:

    (2) 灰度图变彩色图[Isola, Zhu, Zhou, Efros, 2016]:

    (3)自动着色 Data from [Russakovsky et al. 2015]:

    (4)交互式着色[Zhang*, Zhu*, Isola, Geng, Lin, Yu, Efros, 2017]:

    4.7 pix2pix创作的限制或不足

    (1)对数据集的要求较高

    在训练时,需要人为的指定参照图片与真实的输出图片的成对的对应关系(paired)。

    只有这样,pix2pix 络才能按照期望的方式,对输入图片进行创作,而不是对输入普通进行任意的创作(GAN 络就是属于任意创作)!!!

    (2)输出的创作图片的内容受限

    输出的创作图片,完全受限于输入图片,输出内容(轮廓)与输入图片完全一样,不同的仅仅是输出图片的填充信息。

    第5章 CycleGAN的原理(“神似”受控的图像生成、创作)

    5.1 CycleGAN 络的动机与要解决的问题

    pix2pix必须使用成对的数据进行训练,很多情况下成对数据是很难获取到的,比如说,我们想把马变成斑马,现实生活中是不存在对应的真实照片的。

    Cycle-constraint Adversarial Network也就是CycleGAN解决这个问题。

    这种 络不需要成对的数据(称为unpaired数据集),只需要输入数据的一个集合(比如一堆马的照片)和输出数据的一个集合(比如一堆斑马的照片)就可以了。如下图所示:

    CycleGAN 络在不使用paired的数据的情况下,如何亦然能够确保输出与输入有内在的关联,而不是GAN 络的随意创作呢?

    5.2 CycleGAN的本质

    如果说,pix2pix是通过优化数据集,来保证输出与输入关系的!

    那么说,CycleGAN通过优化神经 络的结构,来保证输出与输入关系的!

    CycleGAN在GAN的 络结构的基础之上,增加了一个还原 络,用于把输出还原,用还原后的图片的像素与原始的输入像素进行比较,来确保输出与输入的对应关系,生成与还原都是特征提取后的还原,因此输出与输入在形式上不一定完全一致,而是在深层次的特征章保持一致。

    5.3 来自于语言翻译的思想启示

    (1)语言翻译

    如果一把一段话从英文A翻译成中文C,再从中文C翻译回英文B,那么你应该得到跟之前原始输入的英文A一样的内容B。

  • 转换后的中文C与原始的英文A或B在“形式”是不一样的,这与pix2pix不一样
  • 转换后的中文C与原始的英文A或B在“语义”是一样的,这与pix2pix一样
  • 原始的英文A与还原后的英文B在“形式”是一样的,这与pix2pix一样,A和B的相似度越高,说明输出与输入的转换越准确,此时A与C的差异性越大,说明创作性越强。
  • (2)图片转换

    CycleGAN的原理与上述语言翻译基本相似。

    先原始输入图片马A变成斑马C,然后再变回马B,那么最后的马B和开始输入的马A应该是一样的。

  • 转换后的图片C与原始的图片A或B在“形式”是不一样的,这与pix2pix不一样
  • 转换后的图片C与原始的图片A或B在“语义”特征是一样的,这与pix2pix一样
  • 原始的图片A与还原后的图片B在“形式”是一样的,这与pix2pix一样,A和B的相似度越高,说明输出与输入的转换越准确,此时A与C的差异性越大,说明创作性越强。
  • 5.4 CycleGAN名称的由来

    对输出与输入图片的相似性检查,是确保输出的图片与输入图片有明确的对应关系的重要手段。

    现在的问题来了:如何检查输出与输入图片的相似性呢?

    (1)pix2pix的做法

    pix2pix是直接通过像素到像素进行检查的完成的,因此pix2pix的输出与输入是显性的、表象的、强关联关系,属于“形似”。

    (2)CycleGAN的做法

    CycleGAN通过增加还原 络,首先把输出图片重新还原成输入图片,然后对输入图片与还原后的图片进行像素到像素的检查,确保输出图片与输入图片的相似性。这个还原的过程就是形成了一个闭环,这 就是“CycleGAN”的由来。

    虽然,还远后的图片与输入图片,具备像素到像素的显性的、表象的、强关联关系,属于“形似”。

    但输出图片与输入图片以及还原后的图片并非这种“形似”,而是内在特征的关系。

    因此,CycleGAN的输出图片与输入图片之间是隐性、内在的、语义关系。

    CycleGAN同时具备如下特征:

  • 具备GAN 络自由创作的优点
  • 具备pix2pix 络,输入对输出进行控制的优点
  • 克服pix2pix 络,输出与输入只是“形似”的缺点与不足。
  • 具备了输出与输入具备内在特征的相似,得到了“神似”的效果。
  • 5.5 CycleGAN的 络实现

    通过对还原图片与原始图片的比较,可以确保生成图片的准确性以及与输入图片的关联性。

    5.6 CycleGAN的 络的优化

    基本的CycleGAN 络,虽然能够还原成原始图片,但由于输出图片与输入图片之间仅仅是内在特征有一定的相似性,在形态是差异可能很大。如下图所示:

    如何保证生成与还原这两个转换不是天马行空,进一步限定输出的准确性。

    还需要对训练进行进一步的限制。斑马作为输入,得到普通的马,进一步还原成斑马。

    因此,整个CycleGAN经过两次翻译,两次还原:

    (1)普通马 =》 斑马 =》 普通马

    (2)斑马 =》 普通马 =》 斑马

    如果经过上次两次翻译与还原,就能够进一步确保了输出与输入之间的关联性。

    类似:

    英文 =》 中文 =》 英文

    中文 =》 英文 =》 中文

    如果两个方向的转换都满足要求的,则证明 络在进行风格转换时,具备了相当强的精确性和创造性 。

    CycleGAN成功的原因在于:它分离了风格(Style)和内容(content)。

    人工设计这种分离的算法是很难的,但有了神经 络,我们很容易让它学习者去自动保持内容而改变风格。

    5.7 CycleGAN 络的应用

    (1)马变斑马

    (2)橘子变苹果

    (3)图像风格的迁移:

    (4)游戏场景替换

    它以一些德国城市的照片作为输入,成功替换了游戏GTA5中的场景!

    (5)其他应用

    第6章 pix2pixHD

    6.1 pix2pixHD要解决的问题

    我们还剩一个悬而未决的问题:分辨率和图像质量。pix2pix的输出图片,其图片的分辨率都不该高,过高分辨率导致训练时间的指数增长,同时也会出现转换不准确。

    pix2pixHD就是用来解决这个问题的!

    6.2 问题案例

    假设我们输入一张高分辨率的草图:

    使用pix2pix,结果很差(之前说过,让 络产生高维数据输出很难):

    6.3 pix2pixHD的解决方法

    pix2pixHD采取了金字塔式的方法(逐渐加强)

    (1)先使用GAN或pix2pix输出低分辨率的图片。

    (2)将之前输出的低分辨率图片作为另一个新增 络的输入,然后生成分辨率更高的图片。该新增的 络对输出图片进行高分辨率增强,这种方法不影响现有的 络架构,同时增加了新的增强功能。

    6.4 效果

    给定下面的高分辨率草图:

    产生高分辨率的输出:

    6.5 主要应用

    (1) 比如用草图生成高分辨率人脸:

    声明:本站部分文章内容及图片转载于互联 、内容不代表本站观点,如有内容涉及侵权,请您立即联系本站处理,非常感谢!

    (0)
    上一篇 2021年12月15日
    下一篇 2021年12月15日

    相关推荐