论文地址:https://arxiv.org/pdf/1603.01768.pdf
ժҪ
获取image的semantic annotation 的两种方式,人为自行标注以及用semantic segmentation 的算法;思想是用网络中的深层卷积得到的特征进行生成。
Introduction
尽管风格迁移做的很好,用户都需要尤其注意图片的构造以及风格图片的选择。
现有风格迁移存在的问题,造成的原因主要是以下两点:
- CNN主要的用途在于对风格特征进行提取,比如纹理等;但是其结构对于合成方面并没有很大的贡献;
- 更深层的layer具有更有意义的信息,但是在生成模型中用处不大。
因此作者的目标就是缩小生成模型和像素级分类神经网络之间的差距。此时用的网络结构一般是用可以在生成阶段中运用的语义信息提升之后的图片合成网络结构(Simonyan and Zisseman 2014)。
Related Work
以前的算法主要氛围Gram-based和Patch-based两种。在前一种算法中,像素的局部信息都被扔掉了,保留下来的是不同通道的激活值之间的相关性。glitches的产生大多是由于整体的统计量只专注于向着目标图片进行优化,而忽略了其自身的分布,并且丝毫不理解局部像素的context。而在第二种算法中,作者在style和content图片之间用近邻的思想进行3x3大小patch的匹配。这样就通过整体分布进行限制,从而提升了整体的准确性。
近期的CNN模型结构都能够提供算法更优所需要的语义背景信息,主要是通过像素级别的分类和分割实现的。这些模型主要通过卷积层来提取高层的pattern,然后通过反卷积来对单个像素进行分类。但是这种算法还未用到图片合成上来。
Model
Patch-based方法,用某种优化方法(L-BFGS)来实现内容重构以及风格映射。
1.Architecture
最常用的图片合成网络是VGG,运用卷积层和池化层提取图片特征,同时进行分类。而除此之外的其他网络结构则会忽略一些像素,压缩数据来优化分类,因此图片合成的质量就很低。
作者的提升网络横向连接了一个往外的语义通道,它是通过对一个输入的静态语义图进行下采样计算得到的。
在将语义通道同卷积通道进行连接之前,会将语义通道进行加权然后在进行连接,此时这里又有了一个可以调节的参数。
2.Representation
输入的语义图可以包含任意多个通道数M。但是有两个条件是必须的:
- 每张图片同它自己的semantic map需要保持同样大小的长宽比
- style和content的semantic map的通道数必须保持一致。
3.Algorithm
对于第l层的每张图片的第i个patch而言,将他的最近邻定义为NN(i),计算方法是用normalized cross-correlation,并且考虑加权的语义图:
第l层的所有patches同它最近邻的patch之间对应的风格损失则定义如下:
我们对语义图中的信息加以利用来计算最匹配的patches以及对损失值作出贡献,但它并不用语计算当前像素损失的导数。这一点主要是由于L-BFGS算法。
Experiments
Precise control via Annotations
对人脸进行风格迁移是目前难度最大的挑战,尤其是当对应不同分割的颜色正好相反时更是这样。
在实验中,通过运用semantic map我们可以缓解gram-based和patch-based中遇到的问题。容易发现,当patches发生重复时,style的权重一般太大。
Parameter Ranges
当将/gamma的值从其默认值逐渐降低时,在语义边界上风格将会被重复使用。这种结果可能对特定用途有很重要的意义。
Analysis
Semantic Map Values
它对正规化交叉相关系数的计算有影响。当它的通道数很大时,图上不同位置对应的卷积值将要进行很多不同程度的scale。
Authored Representations
人工画的annotation不用太过精细,比如胡子和脸,或者衣服和项链。
Content Accuracy & Style Quality
当使用semantic map时,只有那些恰当的分割对应的风格patch来用于生成目标图片。当这些source patches数量很少时,就会导致patterns的重复。这种现象可以通过放松style的限制和降低/gamma来解决,但同时可能会降低准确性。
Blending Segments
对semantic map进行平滑能够缓解原始算法在边界上存在的问题,但有的时候crisp的边界也会有不一样的结果。
Weight Sensitivity
Semantic map的引入使得参数能够再更大的范围内进行调整。