StyleBank: An Explicit Representation for Neural Image Style Transfer 论文理解
StyleBank: An Explicit Representation for Neural Image Style Transfer论文理解
与现有的神经风格转换网络区别:
(1)给风格提供了一个明显的表示。网络在训练好之后可以从内容中完全分离出样式。
(2)能够基于区域的风格转换。
(3)不仅可以同时训练多个共享自编码的风格,还可以在不改变自编码的情况下,增量学习一个新的风格。
网络结构
网络实现content和style分离开来。构建一个基于自编码的前向网络,首先通过编码子网络将输入图像转换成特征空间;使用styleBank来分类表示输入风格;每个filter bank代表一个风格。styleBank通过与自编码生成的内容特征进行卷积,可以对应相应的content产生不同的风格化结果。
上图显示了具体的网络结构,主要包括3个模块:图像编码,StyleBank 层,图像解码。构成了2个分支:自编码(图像编码->图像解码),风格化(图像编码->StyleBank层->图像解码),两个分支共享Encoder和Decoder模块。
自编码分支(Encoder->Decoder):训练自编码使生成的图像尽可能的和输入图像相近。
风格化分支(Encoder->StyleBank Layer->Decoder):在Encoder和Decoder中间加入一个中间的StyleBank Layer。在这个layer层中,StyleBank会分别和输入图像经过Encoder得到的特征maps进行卷积生成风格变换后的特征,最后再输入到Decoder中得到风格化结果。
在这个网络结构中,内容信息可以尽可能多地编码到Autoencoder和Decoder中;风格信息被编码到StyleBank中,因此,内容和风格通过这个网路可以被尽可能的分离开。
Encoder 和 Decoder
Encoder由一个步长为1的卷积层和两个步长为2的卷积层组成,Decoder和Encoder是对称的结构,由两个1/2步长的分步卷积和一个步长为1的卷积层。所有的卷积层除了最后一个输出层之后都有instance normalization和relu ;第一个和最后一层是用9*9的卷积核,其余卷积层都是用3*3的卷积核。由于只用了这些层,提出的网络可以进一步减小的模型大小以及计算耗费。
StyleBank Layer
网络支持多个风格同时训练。n个风格,就要训练n个卷积滤镜库。在训练时,若是第i个风格输入时,需要使用相对应的filter bank来前向计算和梯度的反向传播。通过与对应的filter bank进行卷积后就可以将输入图像的特征转换成风格变换后的特征。需要训练新的风格时,只需要重新训练新的filter bank layer。
损耗函数
这个网络包含两个分支,且交替训练的,因此需要定义两个损耗函数。
自编码分支:使用MSE(均方误差),计算输入图像和输出图像的像素均方误差。
风格化分支:使用感知损耗,由内容损耗、风格损耗和总变差正则项组成。
训练策略
为了平衡两个分支(自编码和风格化),采用T+1步交替训练的策略。在训练时,每T+1次迭代,先训练风格化分支T次迭代,然后训练自编码分支一次。
StyleBank 和 Auto-encoder理解
1)StyleBank 如何表示风格?
采用了两种类型的块(stroke patch 和texture patch)来研究,具体方法是选择了两种类型块,将选择的块对应的feature map保留,其余都清0,可以看到(g)的结果是恢复出的风格元素,和选中的原来风格块(i)以及风格化结果块(j)都很接近。
风格元素大小:滤镜核大小有关
如果风格元素较小,不太看出滤镜核的影响。
风格元素较大,滤镜核越大得出的风格元素越大。
下图显示了使用3*3和7*7滤镜核的风格化块结果。明显看到7*7的滤镜核可以学习到更大的风格元素信息。譬如图片中的底下一行,大的浪花在7*7滤镜核的风格化结果中,这个网络支持通过调整滤镜核大小的参数来进行风格元素大小的控制。风格元素大小即得到的纹理图案大小。
2)content image 编码
a.content image 编码后的feautres可以在空间上进行分簇(颜色、边缘、纹理),如可以采用K-mean的无监督算法进行分簇,获得如下图中的左边结果,这里可以看到实现了图像的分割效果,因此这里的自编码可以实现特定区域的风格转换。
b.这些特征在通道上稀疏分布。有价值的响应始终存在于某些特定通道。很可能是这些通道刚好对应于区域特定转移中的特定风格元素。
c.尽管上面提到了最后通道上特征的系数性,通道的选择也不是越小越好,128通道网络收敛的最好且生成的结果也是最好的。
3)content 和 style 分离
下图显示了两个分支的影响,左边是输入图像;中间的是训练时没有auto-encoder分支重建出的图像;右边的是训练时有auto-encoder分支,两个分支,这个右边的结果是直接从auto-encoder分支中重建出来的图像。可以看出没有auto-encoder分支时无法重建出原来的输入图像,而有auto-encoder分支时能够重建出和输入图像很接近的结果,因此内容信息很明显是编码到auto-encoder中了,独立于style,所以这个网络实现了内容和style的分离。
4)content image 如何控制风格转换
a)输入是不同颜色的时候,没有纹理,结果是仅仅颜色转换了,如(b)(f)。
b) 输入是同样的颜色,纹理不同时,转换的结果是:颜色转换+根据输入纹理转换了不同的纹理。
c)输入是不同的颜色,相同的纹理时,结果有相同的转换纹理但是不同的颜色。
网络的能力
1.支持增量训练。
2.风格融合
风格线性融合:多个风格线性融合
特定区域风格融合:不同的图像区域可以被渲染成不同的风格。可以在图像自编码后的特征空间中对特征进行分簇实现不同区域划分。
实验结果:
论文的网络表现更好的基于区域的风格转换,如人肖像。
参考资料:
http://home.ustc.edu.cn/%7Ecd722522/pubs/StyleBank_supplmentary.pdf
http://home.ustc.edu.cn/%7Ecd722522/videos/building.mp4
http://www.tuicool.com/articles/UbyemyJ
http://www.bubuko.com/infodetail-2065280.html
http://www.msra.cn/zh-cn/news/blogs/2017/05/style-transfer-20170524.aspx
论文地址:
https://arxiv.org/pdf/1703.09210.pdf
代码: