今天介绍一个好玩的东西--图像风格迁移,来自2015年图像风格迁移开山论文《A Neural Algorithm of Artistic Style》。
关于风格迁移
绘画领域大师们的作品通常都有很好的辨识性,相同的描绘对象在不同的大师笔下都有着不同的表达,并且人通过直觉就能够感受到风格的异同。这说明虽然无法给出绘画风格的准确定义,风格也是一种可以辨识的信息。如果风格是与内容无关的,那么我们如果能通过一种方式,将某种风格赋予一张图片,将会是一件非常有趣的事情。本文介绍的一种基于神经网络的风格迁移算法就是这个方向的一个尝试。
内容(content)与风格(style)的分离
本文的核心思想就是图片的内容和风格是可以分离的,我们可以通过神经网络的方式,将图片的风格进行自由交换。
如果内容和风格是可以分离的,那么风格的迁移即可转化成这样一个问题:让生成图片的内容与内容来源图片尽可能相似,让图片的风格与风格来源图片尽可能相似。
内容损失
在卷积网络中,不同的层会形成对应filter数量的feature map,在内容这个维度上,我们希望生成图片的每一个feature与内容来源图片尽可能接近,定义内容损失:其中,p为内容来源图片,x为生成图片(最初输入为白噪声图片),
F和P分别是两张图片在l层上i,j位置的特征值。
风格损失
本位采用了的gram matrix(格拉姆矩阵)来表示图像的风格,gram matrix定义为:
gram矩阵可以看作体现了不同filter特征的相互关系,同时忽略了内容上的信息。
定义l层的风格损失为:
G和A代表了生成图片和风格提供图片在不同层的格拉姆矩阵。
整体风格损失为预设权值的每一层风格损失加权:
其中,a代表风格提供图片,x代表生成图片,w为每层所对应的权值。
在定义好了两个损失之后,给定内容损失系数和风格损失系数来定义总损失:
通过反向传播调整x的值,最后的到我们需要的图像。
作者在文章中的实验中,也给出了采用不同的层和权值比做参考时所得到的不同结果。
代码施工中;)