介绍:这几篇论文着重点不在于风格迁移的方法,而是关注迁移过程中对合成图像中内容结构的控制。通过论文中提出的不同方实现在风格转换过程中将输出图片的多样性(比如变换内容,空间控制等)。
1)Controlling Perceptual Factor in Neural Style Transfer(cvpr2017)
2)Image Neural Style Transfer With Preserving the Salient Regions(IEEE Access 2019)
3)High-Resolution Image Synthesis and Semantic Manipulation with Conditional GANs
3.1)Toward Multimodal Image-to-Image Translation
4)The Contextual Loss for Image Transformation with Non-Aligned Data
1、Controlling Perceptual Factor in Neural Style Transfer(cvpr2017)
这个方向最开端应该是从Gatys的Controlling Perceptual Factor in Neural Style Transfer
在该论文中作者提到了三点发现:
1)不同区域的不同风格是可以被分离开表示的。
2)颜色信息与基础的场景是有联系的,而与图像的组成和笔刷的风格是独立的。
3)精细的结构(例如画笔的形状和纹路)与粗糙的结构(笔画的排列和绘画天空中的旋涡结构)是独立的。
论文中的第一个方法是Spatial Control;该方法效果如下图a)是内容图,b)是风格Ⅰ,c)是风格Ⅱ,f)是用b)的房屋和c)的天空合成的图:
该方法主要用空间引导通道Tr(右上角的小图,在AdaIn论文中被称为mask)来引导不同区域风格与内容的合成。其实就是把内容图片划分为了R个区域,因此应该有对应的R个mask。这个Tr也会跟随CNN进行传播,每一层也会得到与feature map相应的尺寸参与计算,具体怎么利用这个Tr,作者提出了两种方法。
相比于neural style只增加了公式(5)的操作,其实可以理解为根据Tr为feature map增加了一个权重信息,类似于深度学习中常用到的Attention机制。
假设有天空和草坪两块区域,那么当feature map与Tr1相乘时,天空区域的风格特征就会放大,网络在优化风格损失时也会主要更新控制该区域风格的参数,同理与Tr2相乘时会放大草坪区域的风格特征。通过这样的设计,把风格损失的计算和优化过程分到了不同的区域内,从而实现了空间的控制。
2、Image Neural Style Transfer With Preserving the Salient Regions(IEEE Access 2019)
上一篇是通过Guidance Channel来对不同区域进行特定风格转换。那这篇论文是在风格化图片中保持显著性区域与内容图中的相同。通过在定位损失中添加区域损失来对保持Salient regions一致。
Salient Region
显著性区域,想法来自论文Learning Deep Feature for Discriminative Localization
图1. 简单修改的global average pooling层结合我们的class activation mapping(CAM)技术使训练过的分类CNN既能分类又能定位每类图具体的分类区域,比如brushing
teeth中的toothbrush和cutting trees中的chainsaw
利用全局池化层(GAP)能鼓励网络识别完整的结构区域(
encourages the network to identify the complete extent of the object
)。下图为GAP在网络中的位置以及CAM在这个结构中的作用:
The CAM is simply a weighted linear sum of the presence of these visual patterns at different spatial locations
(CAM仅仅是这些视觉模式在不同空间位置的加权线性和)。
利用显著性区域风格转换
通过上面的方法就可以锁定CAM得分最高的区域,对该区域进行风转时用CAM loss和Category loss进行风转。效果图如下:
该论文用的是前馈式风格转化结构,该论文网络结构如下,采用前馈式网络结构,改进点为位置损失(Location loss):
3、High-Resolution Image Synthesis and Semantic Manipulation with Conditional GANs
一个理想的合成网络应该能用一张语义标签图(semantic label map)生成多样的、真实的图片;
与以往论文pix2pix不同,该论文用instance-instance提出:将额外的低维特征通道输入到生成器中。低维特征用下面的网络E生成,其中Instance-wise 平均池化层(在E的输出位置添加)可以将平均特征广播到实例的所有像素位置中(The average feature is then broadcast to all the pixel locations of the instance):
E是标准的encoder-decoder网络
论文中该方法的实现:
1)作者训练一个生成器网络E去找图片中每个实例对应的低维特征(instance-level),E是一个encoder-decoder标准结构网络。
2)作者添加了instance-wise 平均池化层来保证每个实例的特征是一致的。
3)添加了用G(s,E(x))代替了GAN损失函数中的G(s),并且E(用于改实例)与生成器,判别器一起训练。
4)在训练后,在训练图片上运行所有实例并获得特征。在这些特征上对每个语义类别运行K-mean集群(应该是用k-mean集群的方法对特征进行归类)
3.1、Toward Multimodal Image-to-Image Translation
上面论文的生成网络E灵感来自于:Toward Multimodal Image-to-Image Translation
该论文讨论如何从一张图像同时转换为多张风格不一成对的图像。训练一个生成器将输入结合潜在代码映射到输出图片中,在训练过程中类似CycleGAN,只不过是输出与潜在代码之间的双向映射。生成效果如下图:
论文中提出的BicycleGAN结合了cVAEGAN和cLRGAN的方法。
混合模型bicycleGAN:
式中G为生成器,D为判别器,E为编码器。这里的主要贡献是利用两个cycles进行性能的提升(B->z->B–cVAEGAN和z->B->z^–cLRGAN)。这两个cycles主要通过后面两项实现:
下图A是输入,B^是输出img,B是标签img,z是latent code
所谓的BicycleGAN的循环是像cLRGAN中循环对比潜在代码z:先让A和N(z)生成B,再从B中得到z与N(z)做比较,此处的N是正态分布。
4、The Contextual Loss for Image Transformation with Non-Aligned Data
1、该论文借助提出的新损失使风格转换从常用的pixel2pixel改为region2region,提高了局部的匹配程度。文章提出了一个新的基于余弦距离损失函数Contextual Loss,这个loss一开始是针对Non-Align Data提出的损失函数。***主要通过计算图像特征的相似度来衡量两张图片的相似性。***应用该损失函数做图像风格转换任务,能够实现眼睛->眼睛、嘴巴->嘴巴等对应区域的风格转换。从上面的结果对比中可以看出来,本文提出的方法学习的是局部的特征,而不是全局的特征。
目前已有的loss主要有一下几种:
1.针对图像的pixe2pixe的loss:L1 , L2,SSIM
2.针对图像特征的loss:perceptual loss,Gram loss
3.针对生成图像和目标图像的loss:GAN loss
2、余弦距离dij的描述为下图(CXij的表示相似就连红箭头):
橙色圆圈为输入图x的特征,蓝色三角形为目标图y的特征
3、contextual loss如下图:
CX(X,Y)的目标是:当X与Y的分布距离小时CX(X,Y)的值最大,并且当距离变大时能快速降低;
上图中的dik是用来平衡余弦距离的,原文描述:We consider features xi and yj as similar when dij<<dik,∀k!=j.
像下面(c)图中那样虽然相似但是橙圆与蓝三角距离太远,用dik可以让(c)变的像(b)图那样(其实就是标准化normalizing the distance);
补充:这结论中作者提及这个contextual loss 与KL-divergence在***理论上是有联系的***.
4、KL散度:又称相对嫡,是用来度量使用基于Q的编码来编码来自P的样本平均所需的额外的比特个数。 典型情况下,P表示数据的真实分布,Q表示数据的理论分布,模型分布,或P的近似分布。KL散度公式如下:
在理论拟合出来的事件概率分布跟真实的一模一样的时候,相对熵等于0。而拟合出来不太一样的时候,相对熵大于0。这也是为什么KL散度可以作为损失函数的原因,既可以使生成样本的分布与目标样本分布一致。