Gram Matrices理解
Gram Matrices理解
首先我们理一下Gram Matrices的计算过程:
假设输入图像经过卷积后,得到的feature map为[b, ch, h, w]。我们经过flatten和矩阵转置操作,可以变形为[b, ch, h*w]和[b, h*w, ch]的矩阵。再对1,2维作矩阵内积得到[b, ch, ch]大小的矩阵,这就是我们所说的Gram Matrices。 (蓝色条表示每个通道flatten后特征点)
Gram Matrices为什么能捕获风格信息呢?风格信息又是什么呢?这里我们首先对矩阵中单个元素作分析。
比如我们假设输入图像经过卷积后得到的[b, ch, h*w]的feature map,其中我们用
可以看到,
我们对每一通道对应特征点乘完之后,再相加。这一步就去掉了特征的空间信息。因为我们可以猜测,一张图片的风格信息应该是独立于空间信息的,在表征风格的时候我们需要去掉每个特征(一个通道表示一个特征)的空间信息。虽然我们在同一通道下消除了空间信息,但是在两两组合过程中我们却有考虑同位置相乘来保留特征间(不同通道下)的位置信息。所以我们得到的Gram Matrices就是用不同信息敏感的滤波器,在相同位置抽取到的不同特征之间的两两组合。或者引用这篇博客的话:Gram矩阵的每个值可以说是代表m通道的特征与n通道的特征的互相关程度。
那滤波器到底抽取到了什么东西呢?
由于滤波器的性质,它可以是高通可以是低通,或多或少会对诸如高光,阴影,饱和度等特征敏感,这样在滤波后就会在诸如高光,阴影,饱和度高的地区产生更高的响应幅值。这样通过在特征图的同一个位置下两两融合该位置的不同特性滤波器得到的特征响应,诸如高光响应幅值和高饱和度响应幅值的融合响应幅值,即得到了Gram Matrices的元素
就以上分析,我们可以解释Gram Matrices抽取到的是:在图片的同一位置下,不同特征之间的组合。
而有人证明了Gram Matrices是MMD的二次多项式核变种,那MMD表征的是什么信息呢?
MMD的理解可以参考我的上一篇博客,或者这篇博客,这里不多作介绍。我们可以根据MMD和Gram Matrices的证明过程来判断:
由图可知,
黄色和蓝色分别代表两个特征位置下各个通道的特征点集合,相乘后得到右边结果。解释类似上面Gram Matrices。 因为滤波器滤波后得到的每个特征点表征的是输入图片的语义信息,所以
这里我们可以解释MMD抽取到的是:在图片的同一特征下,不同语义信息之间的组合。
综上,个人理解CNN下的风格为:图片的语义信息的组合和特征信息的组合。
reference
【1】Gatys L A, Ecker A S, Bethge M. Image Style Transfer Using Convolutional Neural Networks[C]// Computer Vision and Pattern Recognition. IEEE, 2016:2414-2423.
【2】http://blog.****.net/hungryof/article/details/60466513
【3】https://zhuanlan.zhihu.com/p/28478034
【4】Li Y, Wang N, Liu J, et al. Demystifying Neural Style Transfer[J]. 2017:2230-2236.