博客摘要

  本篇blog我们将复现一篇关于多模态风格迁移技术的论文“Multimodal UnsupervisedImage-to-Image Translation”。风格迁移指的是输入一张图片,在保证图片主体内容不变的前提下,给图片换一种风格模式。本篇paper作者使用自研的MUNIT模型实现了多模态风格迁移技术,主要步骤如下:1、将数据集的图像降维成两类低维code:内容code和风格code,这里涉及到了Auto-encoder等降维思想;2、将内容code与另一个图像域的风格code结合,产生风格迁移,对新结合的code作decoder生成结果图像;3、将风格code重建,使得同一个风格域中存在多种不同风格code,提升生成图像的多样性;4、使用GAN中的鉴别器将结果图像与目标域的图片进行对比和误差反传,这里涉及到了GAN模型的知识。

  接下来我会先介绍几种经典降维算法PCA和auto-encoder,再介绍用于图像生成鉴别对抗的GAN网络,最后根据上述知识来复现论文的全部步骤。

Part1 降维思想

  在说encoder之前,先复习一下无监督学习的相关知识。无监督学习是一种不需要提前对数据集打标签的机器学习方法,它主要有两类功能:聚类降维,事实证明纯纯的聚类算法有些以偏概全,因此很多时候我们会采取降维的算法来全面对数据进行描述。降维算法主要有两大步骤:化繁为简无中生有,如图所示:

  左侧将图片中同类的内容抽象成了一个简单的图像,即化繁为简;右侧将一段抽象的代码扩展成了有意义的图片,即无中生有。而本篇blog就是围绕着如何将数据集的图片简化为低维数据,再将低维数据无中生有为可视图片的操作。

  接下来举一个最简单的降维算法的例子:

在这里插入图片描述

  这里左图是一些高维(三维)数据,每个数据都带有一些有意义的属性,比如颜色。我们可以分析它们的分布特点,通过一个函数function将这些数据降低成二维,即映射到二维空间中,且保证它们能够很好地根据颜色属性分离到不同的位置上,从而完成聚类的目的。因此,降维本质上是一种简化问题的操作。换言之,降维的目的是为了探索如何用最少的维度信息将一类事物特征描述得更清晰。

Part2 PCA降维算法

  那么具体如何实现降维算法呢?这里首先提出的是PCA算法,全称是Principle component analysis,即主成分分析算法。它的思想是将高维数据乘一个降维矩阵,从而得到一个低维数据。例如输入一个100×1的向量,矩阵是一个10×100的矩阵,那么乘完以后得到的就是一个10×1的向量了。假设高维数据是x,降维矩阵是w,输出的降维结果是一维的z,那么我们可以这样降维:

在这里插入图片描述