15
随着计算能力的增强和神经网络算法的改进使得机器开始模仿人类行为。最近GAN创作出了一系列艺术风格作品,使得研究人员开始努力开发机器创意作品的算法。所以今天给大家介绍一个神经网络算法—NAAS。
NAAS是一种艺术风格的神经算法,由Leon A. Gatys发明,是迄今为止我见过的人造艺术品中最有趣,最简洁的一个。NAAS是一种监督学习算法,其核心思想是使用两个图像来创建输出片段:内容图像和风格图像。正如其标签所表示的那样,风格图像的风格被编织到内容图像的内容中。这一过程通过使用卷积神经网络(CNN)来区分图片的内容和风格。输出图像(最初是一组随机像素)与指定的内容和样式进行比较,并逐步调整,定义该算法的损失函数来衡量拟合结果。通过改变优化图像的像素信息来最小化该函数。直到模型拟合精度达到我们满意的目标。
内容表示和丢失
Gatys提出的研究论文的第一部分描述了一种将内容图像的内容转移到优化图像的方法。这是通过在数学上表示两个图像的内容之间的差异并最小化来完成的。
当我们将图像传递到转换网络时,其内容由整个网络中的神经元表示。请注意我说的是内容,而不是像素值。猫脸照片的内容与所有其他猫脸图像的内容非常相似。尽管猫的颜色或面部结构略有变化,但仍然可以理解它正在看猫。这是一个重要的细节,因为它允许内容在数字上保留,尽管图像的样式被改变。话虽如此,为了表示优化图像的所需内容,我们在将内容图像传递给VGG图层之后使用来自VGG图层的值(特别是在执行ReLU之后的图层conv4_2)。其均方误差计算公式为:
其中F表示在卷积网络层处的优化图像的表示。F(i,j)是来自层I的F的单个神经元。P和P(i,j)表示层1处的内容图像表示及其激活。因此,对于i和j的每个值对,将激活F(i,j)和P(i,j)之间的平方差加到运行总和上。完成此过程后,将总和除以求和中的总迭代次数(等于F或P中的神经元数),最后乘以2分之一。
风格表示与损失
上一部分我们介绍图像内容表示与损失衡量,接下来我们了解一下NAAS更具创造性的一半:风格表示。算法中所提出的将样式与内容区分开的方法是使用语法矩阵来计算特征之间的相关性。
为了计算一个格拉姆矩阵,我们将内容表示放在一层并将数据转换成一个二维矩阵。矩阵的每一行是过滤器的整个输出。人们也可以说矩阵中的每一行都是输入图像上不同位置的给定特征的表示。等式计算矩阵如下:
该等式明确指出格拉姆矩阵的元素(i,j)等于内容矩阵中来自两个不同行的元素的乘积之和。为了将其分解,行i的元素与行j对应的元素相乘。最后将这些乘积相加以产生格拉姆矩阵的单个元素。
因此,为了完整地计算格拉姆矩阵,对矩阵中的每个行组合执行计算。注意矩阵的每一行都是展开的要素图,包含有关要素存在的空间信息。通过将元素相乘,我们检查这些元素是否在图像中的位置重叠。这是针对图像中的每个位置以及每个可能的特征配对完成的。然后执行求和,丢弃所有空间相关的信息。
这些元素之间的重叠或相关性,无论其位置如何,都是风格。蓝色圆圈与水平阴影重叠的频率如何?在整个图像中,小点是否与螺旋交叉?这些以复杂,不引人注意的方式编织在一起的特征最终是图像的风格。所以我们定义MSE Loss来衡量风格损失。
这里G为迭代优化图像的格拉姆矩阵和A为样式图像的格拉姆矩阵。我们总结这两个矩阵的所有元素之间的平方差。N表示层中的特征映射的数量,M表示这些N个特征映射中的元素的数量。然后将总和按比例缩放4倍N²*M²,以获得第1层的最终样式损失。Gatys的论文指出,在比较多层图像的风格时,可以获得最佳效果。因此总的风格损失是:
其中w表示第1层损失的权重,E是第1层的损失。
内容与风格的Trade-off
整个算法思路就是指定样式图像和内容图像。为计算机提供了这些图像的路径。然后创建具有与内容图像相同大小的张量的随机值。这是优化图像。其中的随机值是该算法的参数。它们将随着时间的推移而被计算机更改为输出图像。
使用来自VGG层conv4_2的表示风格损失加上conv1_1,conv2_1,conv3_1,conv4_1和conv5_1的表示的内容损失,将损失函数或优化目标设置为内容损失和风格损失的平衡。优化图像通过VGG网络反向传播,使用最小化算法(在这种情况下为L-BFGS),改变随机噪声张量的值以降低损失函数的输出。完整的NAAS损失函数为:
然后使用Gatys提出的另一种技术将结果放大到更高的分辨率。尽管简单,但这个概念超出了本文的范围。
领取专属 10元无门槛券
私享最新 技术干货