这一章来总结一下图像风格迁移相关的内容,风格迁移的任务是将一幅图作为内容图,从另外一幅画中抽取艺术风格,两者一起合成新的艺术画,要求合成的作品即保持内容图的主要结构和主体,又能够具有风格图的风格,如下图:
风格迁移的思想基础
生物学家证明了人脑处理信息具有不同的抽象层次,人的眼睛看事物可以根据尺度调节抽象层次,当仔细在近处观察一幅图时,抽象层次越低,我们看到的是清晰的纹理,而在远处观察时则看到的是大致的轮廓。实际上卷积神经网络就是实现和证明了这样的分层机制的合理性。将各个神经元看做是一个图像滤波器,输出层就是由输入图像的不同滤波器的组合,网络由浅到深,内容越来越抽象。
研究者基于此特点提出图片可以由内容层(content)与风格层(style)两个图层描述,内容层描述图像的整体信息,风格层描述图像的细节信息。
所谓内容,指得是图像的语义信息,即图里包含的目标及其位置,它属于图像中较为底层的信息,可以使用灰度值,目标轮廓等进行描述。
而风格,则指代笔触,颜色等信息,是更加抽象和高层的信息。
格拉姆矩阵(Gram matrix)
提到风格迁移,必须要先讲一下格拉姆矩阵,我们知道向量的内积也叫向量的点乘,就是对这两个向量对应位一一相乘之后求和的操作,内积的结果是一个标量,他可以用来判断向量a和向量b之间的夹角和方向关系。
Gram矩阵是两两向量的内积组成,所以Gram矩阵可以反映出该组向量中各个向量之间的某种关系。n维欧式空间中任意k个向量之间两两的内积所组成的矩阵,称为这k个向量的格拉姆矩阵(Gram matrix),很明显,这是一个对称矩阵。如下图:
在深度学习的图像特征中,格拉姆矩阵可以看做feature之间的偏心协方差矩阵(即没有减去均值的协方差矩阵),在feature map中,每个数字都来自于一个特定滤波器在特定位置的卷积,因此每个数字代表一个特征的强度,而Gram计算的实际上是两两特征之间的相关性,哪两个特征是同时出现的,哪两个是此消彼长的等等。因此可以用于度量各个维度自己的特性以及各个维度之间的关系。内积之后得到的多尺度矩阵中,对角线元素提供了不同特征图各自的信息,其余元素提供了不同特征图之间的相关信息。这样一个矩阵,既能体现出有哪些特征,又能体现出不同特征间的紧密程度。
基于在线图像优化的慢速图像重建方法(Slow Image Reconstruction based on Online Image Optimisation)
基于图像优化的方法是在图像像素空间做梯度下降来最小化目标函数,以Gary等人提出的经典算法为例,原理图如下:
简单说便是输入一张随机噪声构成的底图,通过计算Style Loss和Content Loss,迭代update底图,使其风格纹理上与Style Image相似,内容上与原照片相似。论文用 Gram 矩阵来对图像中的风格进行建模和提取,再利用慢速图像重建方法,让重建后的图像以梯度下降的方式更新像素值,使其 Gram 矩阵接近风格图的 Gram 矩阵(即风格相似),然后,用VGG网络提取的高层feature map来表征图像的内容信息,通过使 VGG 网络对底图的提取的高层feature map接近目标图高层的feature map来达到内容相似。
改方案迁移的图像效果还算不错,缺点就是慢。
基于离线模型优化的快速图像风格化迁移算法(Fast Neural Method Based On Offline Model Optimisation)
该方案为了解决上面慢的问题,它的特点是首先使用数据集对某一种风格的图进行训练得到一个风格化模型,然后在使用的时候只需要将输入图经过一次前向传播就可以得到结果图。根据一个训练好的前向网络能够学习到多少个风格作为分类依据,这里可以将这一类算法再细分为单模型单风格(PSPM)、单模型多风格(MSPM)和单模型任意风格(ASPM)的快速风格化迁移算法。
PSPM的快速风格迁移(Per-Style-Per-Model Fast Neural Method)
这个模型可以分为两部分,Image Transform Net是图像转换网络,VGG16是损失网络。图像转换网络输入x,输出y,它和风格图ys,内容图yc经过同样的网络,分别计算风格损失和内容损失,注意这里的yc实际上就是输入图x。内容损失采用的是感知损失,风格损失与基于图像优化的方法一样采用Gram矩阵来定义
值得一提的是,在最开始的风格迁移研究中都是采用 BN,但后来发现把 BN 替换成 IN (Instance Normalization) 的效果更好。IN 和 BN 的区别在于,IN 是针对每个样本标准化。
MSPM 的快速风格转移(Mutil-Style-Per-Model Fast Neural Method)
上面的方案对于每一个风格都要训练一个模型,因此研究人员很快便开始研究单模型多风格框架。这个思路的解决方案就是发掘不同风格网络之间的共享部分,然后对新的风格只去改变其有差别的部分,并保持共享部分不变。
这就是 Google Brain 的众大佬们研究出来的一个 MSPM 算法的基本思路 A Learned Representation for Artistic Style。他们发现在训练好的一个风格化网络基础上,只通过在 Instance Norlization 层上做一个仿射变换(他们起了个名字叫 Conditional Instance Normalization,简称 CIN),就可以得到一个具有完全不同风格的结果。因此把风格化网络中间的几层单独拎出来(文章中起了个名字叫 StyleBank 层),与每个风格进行绑定,对于每个新风格只去训练中间那几层,其余部分保持不变。就得到了MSPM方案。
单模型任意风格(ASPM)
上面提到IN起到了一种风格标准化的作用,通过改变 IN 公式中的 γ 和 β 值可以实现不同风格的标准化,从而转换到特定风格。基于此作者提出了 AdaIN (Adaptive Instance Normalization),这也是论文最重要的内容。通过 AdaIN 可以实现任意风格迁移,例如给定内容图的特征 x 和风格图的特征 y,AdaIN 可以将 y 的风格迁移到 x 上,公式如下。
公式中的 μ(y) 表示风格图的均值,σ(y) 表示风格图的方差,和 IN 公式中的 γ 和 β 对应,能够把内容图 x 转换成 y 的风格。模型结构如下:
损失包括内容损失和风格损失两部分。内容损失的计算是比较AdaIN层的输出与最终的输出图之间的L2损失,风格损失则使用了VGG不同特征层的均值和方差的L2损失而不是使用基于Gram矩阵的损失,形式更加简单。
基于对抗生成网络的风格迁移
这里主要讲一下StarGAN: Unified Generative Adversarial Networks for Multi-Domain Image-to-Image Translation,在 starGAN 之前,也有很多 GAN模型 可以用于 image-to-image,比如 pix2pix(训练需要成对的图像输入),UNIT(本质上是coGAN),cycleGAN(单域迁移)和 DiscoGAN。而 starGAN 使用 一个模型 实现 多个域 的迁移,这在其他模型中是没有的,这提高了图像域迁移的可拓展性和鲁棒性。下图展示了在域迁移中 传统GAN 的做法和 starGAN 的做法的区别:
左边是 传统的GAN,右边是 starGAN。传统的域迁移 需要在不同的两个域之间相互进行特征提取,这就导致在有 k 个域的情况下需要 k(k-1) 个生成器。而 starGAN 则解决了这个问题,自始至终只需要一个生成器。网络结构如下:
对于判别器,它的输入是一张图片,它需要去鉴别出这张图片是真实图片还是生成器产生的图片,同时它还需要分辨出这张输入的图片来自哪种风格的。损失由两部分loss组成:对抗损失和域分类损失;
对于生成器,它有两个输入,分别是目标风格和输入图片,它的输出是一张符合目标风格的图片。生成器损失由三部分构成:对抗损失和域分类损失和重构损失。域分类损失的权重系数设置为1,重构损失的权重系数设置为10
参考资料:
图像风格迁移_Arwin(Haowen Yu)的博客-CSDN博客_图像风格迁移
【计算摄影】浅析图像风格迁移背后的核心技术 - 知乎
格拉姆矩阵(Gram matrix)详细解读_张博208的博客-CSDN博客_格拉姆矩阵
【生成对抗网络】starGAN 详细解读___阿健__的博客-CSDN博客_stargan