风格迁移理论

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/a19990412/article/details/83990236

算法论述

  • 风格迁移,就是将两幅画给融合在一起。

如果说是把两幅画融合在一起呢?

现在假设三幅画:

  • 一幅画表示的是风格画,设为A
  • 一幅画表示的是内容画,设为B
  • 一幅画表示的是输出画,设为C

我们要做的其实很简单。
两件事:

  • 让C和A的内容很相近。
  • 让C和B的风格很相近。

所以说,只需要给出内容差异度风格差异度两个度量值之后,我们再降低这两个值就好了。

现在难点来了。如何度量呢?

关于内容的差异度:

  • 两幅画的每个像素点的数值距离。 (常见的有绝对值,差的平方)

关于风格的差异度:
(这是一个难点,有个大神提出了使用Gram矩阵来解决这个问题。[^1])

  • 一张图片在经过卷积网络之后,就可以得到一个特征图,Gram就是在这个图上定义出来的。[^1]

Gram定义:
图片的shape一般是:[C, M, N]

  • C:通道数(也有人喜欢称这个为高)
  • M, N表示是图片的长宽

Gram矩阵计算

  • Gram矩阵规模: [C, C]
  • 其实就是每一个色层的图像之间的关系。这是合理的,因为,我们认知的风格这里很大程度上是考虑的是颜色变化的风格。 (要是不想要有特征的方式,那就用别的风格距离的定义呗。)
  • Gram(i,j) 就是把这两层的矩阵提出来,即有两个[M, N]的矩阵。然后,让这两个矩阵对应的位置做乘法之后,再做加法。(卷积的过程

其实就是不同色层的卷积来构成的矩阵。

之后,用上面的内容的矩阵的变化方式来计算就好了。

代码

(本来打算也放代码的。但是发现网上的这些代码只用CPU的话实在是太慢了。。)
https://blog.csdn.net/q295684174/article/details/79065032
这个链接上的代码是可以跑的,就是特别慢。

https://www.jianshu.com/p/8f8fc2aa80b3

猜你喜欢

转载自blog.csdn.net/a19990412/article/details/83990236