(笔记杂谈一)图像风格迁移中的Gram矩阵风格监督

前言

我不是做风格迁移的,但是我觉得这个很有意思,所以在matconvnet上简单实践了一把,唉,matconvnet毕竟小众,啥都要自己写

  1. Gram矩阵的计算、风格损失及反传求导公式

定义n 维特征空间中有k 个特征向量  ,则它们的Gram矩阵就是由这些特征计算得来的偏心协方差矩阵(因为没有减均值),对角线元素的值则表征这些特征的强度(也就是幅值),其他元素则是特征之间的相关系数,图像的纹理特征可以看作不同底层特征之间的组合关系,所以用Gram 矩阵来衡量作为损失函数,便可以监督图像风格的迁移。下面三个论文便是用Gram矩阵来监督的。

[1]. Ghiasi G, Lee H, Kudlur M, et al. Exploring the structure of a real-time, arbitrary neural artistic stylization network[J]. arXiv preprint arXiv:1705.06830, 2017.

[2]. Yang S, Wang Z, Wang Z, et al. Controllable artistic text style transfer via shape-matching gan[C]//Proceedings of the IEEE International Conference on Computer Vision. 2019: 4442-4451.

[3].ADJUSTABLE REAL-TIME STYLE TRANSFER,ICLR2020

(笔记杂谈一)图像风格迁移中的Gram矩阵风格监督

Gram矩阵就是一个偏心协方差矩阵,这里的k为特征向量的个数(对应的是Channel的数目),每个特征向量为n维(n=h*w,即特征图长乘宽)。在神经网络中每一个Channel都代表的某一类特征,而对应输出的featuremap则为该特征的响应。 

风格迁移中的Gram矩阵衡量的是不同特征之间的相关关系,计算流程如下:

(笔记杂谈一)图像风格迁移中的Gram矩阵风格监督

 

定义风格图片在网络第n层的Gram矩阵为Sn,内容图片(即待迁移图片)的Gram矩阵为Cn,则风格损失可以定义为:

(笔记杂谈一)图像风格迁移中的Gram矩阵风格监督

对于需要手写反传算法情况(比如我当初用的matconvnet~~,没有自动求导也没有矩阵乘法的反传),则面临着对一个矩阵乘法求反传公式的问题,我自己简单推导了一下,大致可以表述如下:

(笔记杂谈一)图像风格迁移中的Gram矩阵风格监督

2. 一个简单的网络实现框架

风格迁移的损失函数除了上面提到的风格迁移损失外,还有一个内容损失函数,其目的是保证在风格迁移的过程中图像的内容不至于丢失,一般都是用CNN提取到的高层特征来监督内容损失,风格损失用底层特征的Gram loss来监督。

 

(笔记杂谈一)图像风格迁移中的Gram矩阵风格监督

(笔记杂谈一)图像风格迁移中的Gram矩阵风格监督

 图中Content Im 和Style Im分别为内容图片和风格图片,输入X可以是随机噪声,最终利用反传梯度更新X即可,这种方式无法做到实时的生成,只是一个基本理论的学习demo,实时的风格迁移可以参考《Arbitrary Style Transfer in Real-time with Adaptive Instance Normalization》(https: //github.com/xunhuang1995/AdaIN-style)和《ADJUSTABLE REAL-TIME STYLE TRANSFER》(code:https://goo.gl/PVWQ9K)两篇论文的工作。

(笔记杂谈一)图像风格迁移中的Gram矩阵风格监督

                                                                            一个简单的实现效果