论文Image Style Transfer Using Convolutional Neural Networks
概述及相关工作
图像风格迁移任务,可以概括为把一张图像的纹理信息加到另一种图像上,而保持该图像的语义内容(比如,图像是一张狗的照片)不变。变换的难点在于如何明确的表征图像的语义信息,从而允许把图像的‘content’与‘style’二者分割开来。
风格迁移有时可以认为是纹理迁移。而纹理迁移的目的是在目标图像上合成源图像中存在的纹理,同时保持目标图像的语义信息。该领域存在很多非参(non-parametric)的方法,通过采样(sampling)源图像的纹理像素来实现。
但是,非参的采样方法只利用了图像的低层(low-level)特征,这造成了该类方法的局限。理想状态,风格迁移算法应该能够抽取图像的语义内容,再进行纹理合成。如此,那么搜要的任务就是如何独立的为图像的语义内容和纹理风格建模。这时CNN就派上用场了。
基于CNN的方法
CNN中由低到高的各个层其实是能表示图像不同层级的信息的,如
输入图像给CNN,网络不同的层有不同的feature map,实验用不同层的特征重建图像。(重建过程:使用梯度下降,最小化初始白噪声与输入图像/风格在CNN层中特征的距离)对于‘Content Reconstructions’,可以看到,用高层feature map重建的图像,失去了很多像具体的像素级信息,但依然保存了内容信息。
基于此,作者提出了’A Neural Algorithm of Artistic Style‘,利用CNN计算的特征来处理和操纵自然图像的内容和风格。
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: