神经网络纹理合成和损失函数风格转移

稳定可控的神经网络纹理合成和采用直方图损失函数的风格转移

Stable and Controllable Neural Texture Synthesis and Style Transfer Using Histogram Losses

Taylor Guo, 2017年6月7日 星期三

摘要

最近,出现了用卷积神经网络做纹理合成和风格转移的方法。这些方法令人激动,它们可以生成最新最好的质量。然而,我们发现这些方法在纹理质量,稳定性,参数调整,无需用户控制上面都有一些限制。本文提供了卷积神经网络的多尺度合成方法可以改善这些问题。我们对之前很多方法的不稳定的来源做了数学解释。我们使用直方图损失函数合成纹理改善这些不稳定性,更好地统计概率上匹配这些实例。我们还展示了如何在我们的多尺度框架中整合定位后的风格损失。这些损失函数可改善大特征的质量,增强内容和风格的分离,提供了艺术性控制,比如绘画。我们还展示了我们的方法对质量进行改进,在很少迭代中收敛,优化过程中更稳定。

1. 简介

最近几年,深度卷积神经网络在计算机视觉任务中展示了巨大的性能改进,比如物体分类,检测和分割。因为这些模型的成功,在图和计算图形处理中采用这些架构用于纹理合成任务。比如,在计算图像学中,深度学习架构可以用于多种任务,包括图像编辑,物体编辑,图像风格转移,纹理合成,新图像合成和图像修复。

本文主要关注卷积神经网络在风格转移和纹理合成中的应用。最近,Gatys提出了参数化合成模型,使用了卷积神经网络。对某些输入,尤其对于风格转移,这些模型可以生成相当成功,最新的结果(如图9-12)。然而,这些方法在深度上有限制。这些限制包括稳定性,克隆人工,需要每个图像调参,复制大尺度特征遇到挑战。还有,这些方法不能整合艺术控制,比如绘画的数量。
这里写图片描述
图9. 我们的风格转移方法的结果。
这里写图片描述
图10. 我们的风格转移方法的结果。图像来自于Flickr。
这里写图片描述
图11. 我们的风格转移方法的结果。
这里写图片描述
图12. 我们的风格转移方法的结果。图像来源于NASA。

本文第一个贡献是演示了神经网络纹理合成中不稳定性是如何和为什么发生的?(如4.2节)。不稳定的案例如图2所示。在神经网络纹理合成方法中,我们发现每个图像都仔细调参可以获得高质量的结果,迭代优化通常都不稳定,随着输出图像尺寸的增大合成过程就变得更不稳定。

这里写图片描述
图2. Gatys方法中纹理合成的不稳定性。输入纹理为(a)。(b)是合成的较大的纹理,显示出大量的不稳定性,亮度和对比度变化剧烈。艰难调参后,参数的设置可以生成比较满意的结果(c)。然而,我们仍然可以观察到人为处理的痕迹,主要是因为小程度的不稳定性。

4.3节演示了用直方图损失函数表达这种不稳定性。这些损失项不仅匹配均值还匹配卷积神经网络中激活函数的统计分布。并有效地最小化这种直方图损失项。直方图损失项可以增强质量,减少克隆痕迹,减速收敛。先对纹理合成的直方图损失进行建模,然后在4.4节中讨论如何在风格转移中扩展它们。

接着在第5章中演示在多尺度纹理合成框架中用局部损失如何改进质量和控制。5.2节,演示了局部风格损失如何整合进艺术风格控制,比如按序号的绘画,同时增强对内容和风格的分离,更好的复制大特征。第6章中,解释如何自动选择参数,使人不需要再手动调参。

这些贡献使得我们可以获得神经网络风格转移和参数化纹理合成的最新质量进展。

2. 相关工作

参数化纹理合成。早期的纹理合成方法使用的是参数化方法。1995年Heeger和Bergen用带有拉普拉斯和方向金字塔的直方图匹配合成纹理。我们收到启发采用了直方图匹配。2000年Portilla和Simoncelli在不同的位置,方向和尺度上将很多小波统计整合到一个复杂的参数化纹理合成方法中。包括滤波器响应之间的互相关性。

神经网络纹理合成和风格转移。本文用神经网络指卷积神经网络。2015年Gaty演示了用ImageNet-pretrained预训练的卷积神经网络做纹理合成,比如VGG。具体来说,对一对特征,2015年Gatys将损失函数强制加到共现的特征统计分布上。这些分布用格莱姆矩阵计算,计算的是卷积神经网络中相同层内的所有成对特征地图的內积。2015年Gatys的纹理合成结果在2000年Portilla和Simoncelli的工作上有明显改进。2016年Gatys将这一方法扩展到风格转移中,在卷积神经网络层内将Frobenius范数的内容损失整合进内容实例图像中,将格莱姆矩阵的风格损失整合进风格实例图像中。我们基于这个框架进行构建,在下一章中对它如何工作进行了概述。与我们的研究相同,2016年Berger也观察到Gatys的纹理规则化可能会在合成过程中丢失,提出了基于特征图像平移之间的共现特征统计分布增强规则化的损失函数。Aittala用神经网络从单一图像的纹理中提取了SVBRDF原料模型。他们的方法主要专注在一个非常特定的问题中,从闪光灯图像中恢复SVBRDF模型。但他们也观察到一些不稳定,比如如果没有使用足够的统计信息,就很容易会生成非静态的纹理。我们发现了这种联系,观察到不稳定性并修复它们。

前馈神经网络纹理合成。最近的几个工作,Ulyanov2016a,b和Johnson,研究了前馈网络的纹理合成的训练,可以在给定的实例纹理或风格上进行预训练,用固定网络权重快速合成结果。前馈网络运行更快,需要更少内存。然而,前馈方法需要在给定的风格或纹理上进行训练,这使得这个方法变得不切实际,预训练需要花费很长时间(预训练需要花2到4个小时)。

非参数纹理合成。非参数纹理合成方法需要根据局部相似度从样例纹理拷贝近邻或区块到一个需要合成的图像上。这一方法也可以用于风格转移。有些方法最近用非参数区块模型融合了参数神经网络模型。

3. 神经网络纹理合成和风格转移简介

本章简要介绍Gatys的纹理合成和风格转移方法。如果需要更详细地了解这些方法,可以阅读论文。本文展示了这些方法的一些结果:图8的神经网络纹理合成,图9-12的风格转移。
这里写图片描述
图8:纹理合成的结果。Gatys结果来自于Johnson的代码生成的。

纹理合成是给定输入源图像纹理S,希望合成得到一个输出图像纹理O。把S和O传入卷积神经网络中,比如VGG。对前L个卷积层激活值,这会生成特征地图,记为S1 … SL和O1 … OL。然后,最小化层间的损失函数Lgram,用格莱姆矩阵保留了输入图像纹理的一些特性:
这里写图片描述
其中αl是用户参数,损失函数中的权重项,| . |是元素张量,|| . ||F是Frobenius范数,格莱姆矩阵定义为特征地图F是一个一对特征间的內积得到Nl×Nl的矩阵:
这里写图片描述
这里Fij是特征地图内特征i的像素j。要合成的输出图像O用白噪声初始化,然后对等式(1)作梯度下降进行优化。具体来说,等式(1)对输出图像O的梯度用反向传播网络进行优化。
风格转移的工作原理是类似的,但是是给定一个内容图像C,风格图像S,需要合成一个风格化的输出图像O。将3个图像传入卷积神经网络,比如VGG,给出前L个卷积层的激活值C1 … CL, S1 … SL,O1 … OL。然后,总风格转移损失函数包含了风格图像的损失函数Lgram和内容图像的损失函数:
Ltransfer=Lgram+Lcontent (3)
内容损失函数是内容图像和输出图像之间的特征间的距离,是要让输出图像和内容图像看起来更相似:
这里写图片描述
其中,βl是用户权重参数,输出图像O用白噪声初始化,用梯度下降优化。

### 回答1: 将图片输入到神经网络中进行提取和降维通常有两种主要方法:使用预训练的卷积神经网络(Convolutional Neural Network,CNN)和使用自己的神经网络。 使用预训练的CNN是一种常见的方法。可以使用已经在大型数据集上进行训练的CNN模型,例如VGG、ResNet或Inception等模型,以提取图像中的特征。这些预训练模型的权重已经在大量数据集上进行训练,可以在一定程度上保证特征的鲁棒性。可以使用模型中间的某一层来获取提取的特征,这些特征可以被用于后续的任务,如分类、聚类、目标检测等。 另一种方法是自己建立神经网络。可以使用卷积层来提取图像中的特征,使用池化层来进行降维,以及使用全连接层来进行分类或回归等任务。在自己建立神经网络时,需要注意选择合适的神经网络结构和参数设置,以提高提取和降维的效果。 在将图片输入到神经网络中进行提取和降维时,需要注意图片的预处理。一般来说,需要将图片进行缩放、裁剪和归一化等操作,以保证输入数据的一致性和稳定性。同时,需要根据具体任务选择合适的损失函数和优化算法,以进一步提高神经网络的性能。 ### 回答2: 将图片输入到神经网络中进行提取和降维可以通过以下步骤实施: 1. 数据准备:首先需要将图片数据转换为神经网络可以处理的格式。常见的方法是将图片转换为数字矩阵,每个元素代表像素的灰度值或颜色值。可以使用图像处理库(如OpenCV)来读取和处理图片,将其转换为适合神经网络输入的格式。 2. 搭建神经网络:根据任务需求选择合适的神经网络结构。对于图像处理任务,常用的神经网络包括卷积神经网络(Convolutional Neural Network,CNN)。CNN结构可以有效地提取图片中的特征。 3. 图像特征提取:将图片数据输入神经网络进行前向传播,经过多层卷积和池化操作,提取出图片中的特征。这些特征包括边缘、纹理、形状等。在CNN中,通常会使用卷积层和池化层来提取特征。 4. 降维处理:为了减少特征的维度,可以使用降维技术对提取到的特征进行处理。常见的降维方法有主成分分析(Principal Component Analysis,PCA)、线性判别分析(Linear Discriminant Analysis,LDA)等。这些方法可以将高维的特征映射到低维空间,保留重要的信息。 5. 特征输入到后续任务中:将降维后的特征作为输入,可以进行后续的分类、识别或其他图像处理任务。根据任务需求,可使用不同的分类器或回归模型对特征进行训练和预测。 在整个过程中,合理选择神经网络结构、数据处理方法和降维技术对提取和降维的效果有重要影响。因此,需要根据具体任务进行实验和调优,以得到更好地效果。 ### 回答3: 将图片输入到神经网络中进行提取和降维的一种常见方法是使用卷积神经网络(Convolutional Neural Network,CNN)。 首先,需要将图片预处理成适合网络输入的形式。通常,图片会被转换为数值矩阵,每个像素点的RGB值被映射为对应的数值。还可以对图片进行标准化处理,将像素值缩放到一个较小的范围内,例如0到1之间。 接下来,需要构建一个CNN模型来提取和降维图片特征。CNN由多个卷积层和池化层组成,其中卷积层用于提取图片中的特征,而池化层用于降低特征的维度。 在卷积层中,通过滑动一个小的卷积核(例如3x3或5x5)在图片上提取特征。卷积操作逐渐将图片的局部特征合成为全局特征,可以提取出边缘、纹理等低级特征。 之后,通过池化层对提取的特征进行降维。常见的池化操作包括最大池化和平均池化,它们通过对特定区域内的特征进行最大或平均值的提取,将特征维度减小。 在CNN的最后一层,将降维后的特征连接到一个全连接层或输出层。这一层可以将特征映射到最终的输出空间,例如分类、回归或生成等任务。 在训练过程中,可以使用大量的带有标签的图片数据进行监督学习,通过反向传播算法来优化模型参数,使其能够更好地提取和降维图片特征。 总而言之,通过使用卷积神经网络,可以将图片输入到网络中进行特征提取和降维,减少了特征的维度并且保留了重要的信息。这一过程可以帮助我们在图像任务中获得更好的表现。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值