14、神经风格迁移 (Neural style transfer)

1 什么是神经风格迁移

对于一个实物图象和美术作品,神经网络会将美术作品的风格融合到实物图象中,从而生成一张新的艺术作品。这就是所谓的神经风格迁移。
在这里插入图片描述


2 卷积神经网络在学习什么

在这里插入图片描述
在这里插入图片描述
对第 1 层的训练通常是在寻找相对简单的特征,比如边或特别的颜色。
通过第 2 层是在检测更复杂的形状和模式,例如寻找拥有垂直线条的纹理。在这里插入图片描述
从第3层到第5层,隐层会检测到的东西会越来越复杂 。


3 代价函数

代价函数由两部分组成:内容代价和风格代价。
在这里插入图片描述
实现:
在这里插入图片描述


4 内容代价函数

在这里插入图片描述
最小化内容代价函数的意义:

  • 若选择前期的隐藏层来计算内容代价函数,那么会让你得到 一个在像素值上与你的内容图像非常接近的图像。
  • 若选择非常深的隐藏层来计算内容代价函数, 那么它会确保生成的图像里包含内容图像里的目标物体。比如内容图像里面是否有一只狗,然后确保你生成的图像的某处也有一只狗。

所以在实践中,隐藏层的数目最好选择两者之间。


5 风格代价函数


5.1 风格 (Style) 的定义

如何量化风格呢?论文原文中,作者将 风格(Style) 定义为不同激活通道之间的相关系数。
在这里插入图片描述
为什么这能表示风格呢?
在这里插入图片描述
为了方便解释,我们假设红色的通道对应于红色笔迹圈出来的那些图块,它用于分辨在图像中某些位置是否有竖条纹。再假设黄色的通道对应于黄色笔迹圈出来的那些图块,它用于分辨图像中的橙色色块。如果这两个通道高度相关,那么这意味着图像中任何有竖条纹的部分,也很有可能有橙色色调。它们不相关呢? 则意味着任何有竖条纹的部分很有可能不会有橙色色调。所以相关性可以告诉你,哪一些高层特征倾向于同时或不同时出现在图像中的某个部分,相关程度则表示这些特征是否经常出现。

所以,我们使用通道间的相关性作为量化风格的方式。在生成的图像中测量第一个通道与第二个通道的相关程度,这可以告诉你在生成的图像中,竖条纹和橙色调是否经常同时出现,然后这会告诉你生成的图像的风格和输入图像的风格有多相似。

5.2 风格代价函数表达式

风格矩阵又被称为格拉姆 (Gram) 矩阵,所以用 G 来表示风格矩阵。若第 l l l 层的激活值共有 n c [ l ] n_c^{^{[l]}} nc[l] 个通道,那么第 l l l 层的风格矩阵 G 的形状为 n c [ l ] ∗ n c [ l ] n_c^{^{[l]}} * n_c^{^{[l]}} nc[l]nc[l]
在这里插入图片描述
如果某两个通道不相关,那么风格矩阵 G k k ′ G_{kk'} Gkk 可能会较小。

实际上,对于风格图像 S 和生成图像 G,都需要计算其对应的风格矩阵,以示区分,用 G ( S ) G^{(S)} G(S) G ( G ) G^{(G)} G(G) 表示。最后,再用 G [ l ] ( S ) G^{[l](S)} G[l](S) G [ l ] ( G ) G^{[l](G)} G[l](G) 来定义第 l l l 层的风格代价函数。
在这里插入图片描述
若用几个不同的层来计算风格代价矩阵,会得到看上去更好的结果。所以,总的风格代价函数可以被定义为所有不同层的风格代价函数的总和。我们需要使用一组额外的超参数 λ \lambda λ 给上述公式加入权重,这样就允许你控制一个神经网络中不同的层的风格代价函数。

这些层包括早期的层,用来捕捉相对简单的低层特征 比如边界的,以及一些后期的层,用来捕捉高层特征,这样可以使得在计算风格的时候,将神经网络中低层和高层的相关性都考虑到。


  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值