风格迁移系列-Image Style Transfer Using Convolutional Neural Networks
论文Image Style Transfer Using Convolutional Neural Networks
概述及相关工作
图像风格迁移任务,可以概括为把一张图像的纹理信息加到另一种图像上,而保持该图像的语义内容(比如,图像是一张狗的照片)不变。变换的难点在于如何明确的表征图像的语义信息,从而允许把图像的‘content’与‘style’二者分割开来。
风格迁移有时可以认为是纹理迁移。而纹理迁移的目的是在目标图像上合成源图像中存在的纹理,同时保持目标图像的语义信息。该领域存在很多非参(non-parametric)的方法,通过采样(sampling)源图像的纹理像素来实现。
但是,非参的采样方法只利用了图像的低层(low-level)特征,这造成了该类方法的局限。理想状态,风格迁移算法应该能够抽取图像的语义内容,再进行纹理合成。如此,那么搜要的任务就是如何独立的为图像的语义内容和纹理风格建模。这时CNN就派上用场了。
基于CNN的方法
CNN中由低到高的各个层其实是能表示图像不同层级的信息的,如

将输入图像馈入到卷积神经网络(CNN)中,在这个过程中,默认情况下各层级网络分别具有独特的特征图(feature maps)。在此过程中进行实验时需要通过提取不同层级的特征来进行图像重构(reconstruction)。具体来说,在这个过程中需要采用梯度下降法(gradient descent),并最小化初始白噪声与目标输入或目标风格在各层中的距离以实现重构效果。在此基础上,在'Content Reconstructions'部分可以看到较高层次的特征图重构出的图像丢失了大量细节信息(pixel-level information),但仍然保留了整体内容信息(content information)。基于此,在这个研究背景下作者提出了'A Neural Algorithm of Artistic Style'这一概念框架,并通过提取CNN各层中的特征来进行艺术风格处理与表现(artistic style processing and representation)。
Content representation
首先,如何表征图像的内容?假设CNN第 l 层的通道数为Nl ,每通道的特征数为Ml ,其中Ml=HxW(feature map的高与宽)。那么用给一个矩阵Fl就可以表示图像在这层的特征,Fli,j表示第l层i通道第j个特征点。
用p表示真实图像,x表示生成的图像,定义loss为:

梯度反向传播可以依据:

在使用CNN时,请问您具体想关注哪一层?选择策略是,在高层特征能够捕获图像中更为复杂的语义信息的同时,并不会对图像在像素级别上的具体数值施加限制。通过查看图1可以看出不同层级之间的主要区别在于
Style representation
然后,在表征图像风格特征方面有何方法?此处与内容表征不同之处在于,并非直接使用特征图(feature map)中的数值...而是经过特定变换得到的Gram矩阵G:
风格的表征通常需要在多个层级上综合其特性以实现稳定的图像表征。风格损失定义为: styleLoss = \sum_{i} \sum_{j} loss_i^j


w l为不同层的权重参数。
梯度的反向传播计算为:

style transfer算法
实现风格迁移时,联合最小化内容与风格两种损失。

算法流程可以看图:

对于每个步骤s1至s5进行操作:
- 分别提取并存储了特征图中的style信息以及内容部分。
- 生成了一个随机初始化的小噪声信号,并基于相同的深度神经网络架构进行计算。
- 评估了这两种不同表征之间的差异程度。
- 对损失函数进行反向传播以优化输入信号。值得注意的是,在此次迭代中所更新的对象是初始生成的小噪声信号。
- 通过反复迭代上述步骤直至损失函数达到稳定状态。
结果
展示一下效果图:

可调参数
模型中存在一些可调节的参数,在需要时适当调整可以获得不同的效果。
内容损失与风格损失的比例α/β具有直观易懂的理解。
观察效果即可了解其表现

在CNN中, 随着层级的发展, 特征的抽象程度不断提升。低层特征主要反映了像素级别的细节; 高层特征则在更高层次上概括了整体图像的结构, 仅保留了高级别的语义信息。

- 初始值
初始值可以选择为白噪声;另外还可以采用原风格图或内容图作为初始值来源。基于算法需要进行迭代优化这一特性,在实际应用中所获得的结果差异较小。需要注意的是,在本方法中仅当初始值采用随机噪声时方能获得多样性的结果。

4.照片风格迁移
该算法可以实现真实照片间的风格迁移,并不限于艺术画。

不足与讨论
首先,在算法运行过程中存在较长的时间延迟,在生成每张图像的过程中都需要经历正向和反向传播两个阶段的操作步骤,并且需要经过多次迭代才能完成最终结果的呈现。其次,在处理高分辨率图像时会带来显著的计算复杂度上升,在这种情况下耗时也会相应增加更多。此外,请注意有人指出将图像的内容特征与其风格特征区分开来仍是一个待解决的问题。目前缺乏统一的质量评估标准来衡量合成图像的质量水平;因此人们常说'看上去'即可满足需求
