hnyzyty 2019-05-20
深度学习能够捕获到一个图像的内容并将其与另一张图像的风格融合起来。这种技术称为神经风格迁移。然而,神经风格迁移是如何运作的呢?如何将一副名不见经传的图像变成大师级的作品?在这篇文章中,我们将研究神经风格转移(NST)的基本机制。
神经风格迁移概述
可以看到,生成的图像具有内容图像的内容和风格图像的风格。并且,仅通过重叠图像不能获得上述结果。
现在,最有价值的问题在于,如何确保生成的图像具有内容图像的内容和风格图像的风格?还有如何捕获各个图像的内容和风格?为了回答上述问题,先来看看卷积神经网络(CNN)究竟在学习什么。
请看下面的图片。
卷积神经网络的不同层次
现在,网络在第1层使用32个卷积核来捕获简单的图样,比如直线或水平线,这对我们来说可能没有意义,但对网络来说非常重要,而且随着向下移动到第2层的64个卷积核,网络开始捕获越来越复杂的功能,它可能是一只狗的脸或是一辆汽车的轮子。这种捕获不同的简单和复杂的特征称为特征表示。
重要的是CNN不知道图像是什么,但它们学会编码特定图像代表的内容。卷积神经网络的这种编码机制可以帮助我们进行神经风格迁移。下面让我们更深入地了解一下。
VGG-19网络将用于神经风格迁移。VGG-19是一个卷积神经网络,可以使用ImageNet数据库中的一百多万个图像进行预训练。该网络深度为19层,并在数百万张图像上进行了训练。因此,它能够检测图像中的高级特征。
现在,CNN的这种“编码性质”是神经风格迁移的关键。首先,将一个噪声图像初始化,它即将成为我们的输出图像(G)。然后,计算该图像与内容和风格图像在网络(VGG网络)中特定层的特征图的相似程度。由于我们希望输出图像(G)应该具有内容图像(C)的内容和风格图像(S)的风格,因此需要计算生成的图像(G)到相应的内容(C)和风格(S)图像的损失。
有了上述感知,让我们定义内容的损失和风格的损失来随机生成的噪声图像。
NST模型的工作
计算内容损失即估计随机生成的噪声图像(G)与内容图像(C)的相似程度。为了计算内容损失:
假设在预训练网络(VGG网络)中选择隐藏层(L)来计算损失。因此,让P和F为原始图像和生成的图像。并且,F[l]和P [l]是层L中各个图像的特征表示。现在,内容损失定义如下:
内容代价方程
内容损失函数的介绍到此结束。
在计算风格损失之前,来看看“图像风格”的含义或如何捕获图像风格。
如何捕捉图像的风格?
层l中的不同通道或特征映射
此图像显示被选定的l层的不同通道或特征图或核。现在,为了捕捉图像的样式,我们将计算这些核彼此之间的“相关性”,这意味着这些特征图的相似程度。但是相关性又意味着什么?
借助一个例子来理解它:
令上图中的前两个通道为红色和黄色。假设红色通道捕获一些简单的特征(例如,垂直线),如果这两个通道相关,那么无论何时当图像中有红色通道检测到的垂直线时,第二个通道就会出现黄色效果。
现在,来看看如何计算这些相关性(数学上)。
为了计算不同核或通道之间的相关性,我们计算两个核的激活矩阵之间的点积。由此获得的矩阵称为Gram矩阵。
但我们怎么知道它们是否相关?
如果两个核的激活矩阵点积大,那么两个通道被认为是相关的,如果它很小,那么图像是不相关的。用数学方程表示:
风格图像的Gram矩阵(S):
这里k和k'代表层L的不同滤波器或通道。我们称之为Gkk'[l] [S]。
风格图像的Gram矩阵
生成图像的Gram矩阵(G):
这里k和k'代表层L的不同滤波器或通道。我们称之为Gkk'[l] [G]。
生成图像的Gram矩阵
现在,定义风格损失:
风格图像和生成图像之间的代价函数是风格图像的Gram矩阵与生成图像的Gram矩阵之间差异的平方。
风格代价函数
现在,定义神经风格迁移的总损失。
总损失函数:
总损失函数是内容图像的代价和风格图像代价的总和。在数学上,它可以表示为:
神经风格迁移的总损失函数
你可能已经注意到上述等式中的α和β。它们分别用于衡量内容和风格的代价。通常,它们被定义为生成的输出图像各个代价的权重。
一旦计算出损失,就可以使用反向传播使损失最小化,反向传播又将我们随机生成的图像优化为有价值的艺术品。
以上总结了神经风格迁移的工作。
留言 点赞 关注
我们一起分享AI学习与发展的干货
欢迎关注全平台AI垂类自媒体 “读芯术”