频道栏目
首页 > 资讯 > 其他 > 正文

卷积神经网络图像风格转移

17-05-02        来源:[db:作者]  
收藏   我要投稿

卷积神经网络图像风格转移

用不同的风格渲染图像的语义内容是一种比较难的图像处理任务。可以说,之前方法的一个主要局限因素是缺乏明确表示语义信息的图像表示,用于将图像内容从风格中分离。这里用卷积神经网络的图像表示用于物体识别的优化,可以使图像信息更明显。我们介绍了一种艺术风格的神经网络算法可以将图像的内容和图像的自然风格分离和再合并。算法可以提供给人们可以感知到的高质量的新图像,可以将大量众所周知的艺术作品和任意图像结合起来。实验结果提供了卷积神经网络学习的深度学习图像表示,展示了高层图像语义合成和操作的能力。

1 简介

将一幅图像的风格转移到另外一幅图像上被认为是一个图像纹理转移问题。在图像纹理转移中,目标是从一幅源图像中合成纹理,源图像提供了要合成的问题但需要保留目标图像的语义内容。对于纹理合成,有大量强有力的非参数方法,可以通过重新采样给定源纹理图像的像素来合成图像写实自然纹理。之前的大多数纹理转移算法都是采用非参数方法用于纹理合成,没有用其他不同方法保留目标图像的结构。例如,Efros和Freeman引入了一个对应地图,包括了目标图像的特征,比如图像亮度,来约束纹理合成过程。Hertzman用图像模拟从风格图像中将纹理转移到目标图像中。Ashikhmin专注转移高频纹理信息,只保留目标图像的粗糙尺度。Lee在纹理转移过程中添加边缘方向信息来增强算法。

尽管这些算法取得了显著的效果,但都受限于同一个基本问题:它们只使用了目标图像的低层图像特征在纹理转移中。理想情况下,一个风格转移算法应该能够从目标图像中提取图像语义内容(比如,目标和一般场景),通知纹理转移流程根据源图像风格渲染目标图像的语义内容。因此,一个先决条件是要找到图像表示,可以独立对图像语义内容和风格构建模型变量。这样处理的表示方法之前只能是采用自然图像的控制子集来达到,比如不同光照条件的人脸,和不同字体的特征,或者手写数字和门牌号。

但一个通用性的方法将图像的内容从风格中分离开仍然是一个非常困难的问题。然而,最近出现的深度卷积神经网络可以产生强大的计算机视觉系统,可以从图像中学习提取高层语义信息。采用充足标注的数据训练的卷积神经网络在特定任务中,比如物体识别,在一般的特征表示中学习提取高层图像内容,可以在数据集上泛化,甚至也可以应用于其他视觉信息处理任务,包括纹理识别和艺术风格分类。

在这个工作中,我们展示了高性能卷积神经网络如何学习一般的特征表示,用于独立处理和操作图像的内容和风格。我们介绍了艺术风格神经网络算法,一种执行图像风格转移的新算法。思路上,它就是最新的卷积神经网络的特征表示的纹理合成约束下的纹理转移算法。纹理模型基于深度学习图像表示,风格转移方法巧妙地将优化问题减少到一个神经网络中。通过执行图像搜索匹配样本图像的特征表示来生成新图像。再纹理合成之前执行这个方法,增强对深度学习图像表示的理解。事实上,风格转移算法合并了基于图像表示翻转的卷积神经网络的参数纹理模型。

2 深度学习图像表示

以下展示的结果是基于论文28的VGG网络生成的,用于训练执行物体识别和定位,更多细节如论文所示。使用标准的19层VGG网络包含16个卷积层和5个池化层提供的特征空间。按比例改变权重规范化网络,这样每层卷积滤波器在图像和位置上平均激活值就等于1。这种针对VGG网络的按比例缩放不会改变它的输出,因为它只包含修正线性激活函数,在特征地图上没有归一化层和池化层。我们也不使用任何全连接层。模型是公开的,可以在caffe架构中找到。对于图像合成,我们发现用平均池化取代最大池化操作,生成的结果更好,这就是图像使用平均池化层来生成。

2.1 内容表示

通常网络中每层定义了一个非线性滤波,它的复杂度随着每层在网络中的位置而增加。给定一个图像

,卷积神经网络每层使用滤波对图像进行编码。Nl宽的滤波器的一个层大小为Ml的每个有Nl个特征地图,其中Ml是特征地图的高乘以宽。所以,l层的响应可以存储在一个矩阵中

,其中

是l层的位置j上的第i个滤波器的激活值。

为了将图像信息可视化在层级结构的不同层上进行编码,可以在一个带有白噪声的图像上执行梯度下降算法寻找可以匹配原始图像特征响应的另外一个图像(参考图1的内容重建),如论文24所述。令

分别为原始图像和生成的图像,

分别是l层的特征表示。那么,就可以定义两类特征表示之间的误差平方损失函数为:

损失函数的偏导数对应的l层的激活函数为:

图像

的梯度可以用标准误差反馈传播计算(如图2右侧)。因此,我们可以改变初始随机图像

直到卷积神经网络的某一层可以生成与原始图像

相同的响应。

图1. 卷积神经网络中的图像表示。在卷积神经网络的每个处理阶段,一个给定的输入图像表示为滤波过的图像。滤波器的数量沿着处理的层级增加,滤波后的图像用某种降采样机制减少(比如,最大池化),可以减少网络中每层的总数量。内容表示:可以从特定的一个网络层上,在只知道网络响应的情况下重建输入图像,就能够在卷积神经网络的不同处理阶段将信息可视化。在原来的VGG网络中的‘conv1 2’ (a), ‘conv2 2’ (b), ‘conv32’ (c), ‘conv4 2’ (d) ‘conv5 2’ (e) 重建输入图像。可以发现从网络中的低层重建接近完美(a-c)。在网络的高层,细节像素信息会丢失,但高层的图像内容会被保留下来(d,e)。风格表示:在卷积神经网络顶层激活时,使用一个特征空间获取输入图像的纹理信息。风格表示计算了卷积神经网络不同层不同特征间的关系。从卷积神经网络层(‘conv1 1’ (a), ‘conv1 1’ 和‘conv2 1’(b),‘conv1 1’, ‘conv2 1’ and ‘conv3 1’ (c), ‘conv1 1’, ‘conv2 1’, ‘conv3 1’ and‘conv4 1’ (d), ‘conv1 1’, ‘conv2 1’, ‘conv3 1’, ‘conv4 1’and ‘conv5 1’ (e))的不同子集上构建的风格表示重建输入图像的风格。这样创建的图像在一个逐步增加的规模上会匹配给定图像的风格,同时会丢掉场景全局结构信息。

卷积神经网络在物体识别上训练,它们可以生成一个对图像的表示,在网络层级的处理过程中使得物体信息越来越明显,如论文10所示。因此,沿着网络层级处理过程,输入图像会发生转变,对图像的真正内容越来越敏感,但会对精细的外观变得相对不变。网络的高层会捕捉输入图像的高阶内容,比如物体和结构,但不会限制重构过程中的确切像素值(如图1中,内容重建 d,e)。相反,低层重建只是简单地复制原始图像中的确定的像素值(如图1,内容重建 a-c)。我们将网络中高层的特征响应结果作为内容表示。

2.2 风格表示

为了获得输入图像的风格表示,用特征空间获得纹理信息,如论文10所示。这个特征空间可以从网络的任意层中的滤波器响应结果上构建。它由不同滤波器响应结果的相关关系组成,其中期望值从特征地图空间上取值。特征关系用克莱姆矩阵

表示,其中

是l层的向量化特征地图i和j之间的內积:

包含了多个网络层的特征相关关系,可以得到一个确定的,多尺度的输入图像的表示,可以获得纹理信息,但没有全局结构信息。同样的,可以匹配给定输入图像的风格表示构建一个图像,可视化在网络不同层构建风格的特征空间上捕捉的信息,(如图1,风格重建)。在白噪声图像上使用梯度下降算法最小化原始图像的克莱姆矩阵和生成图像的克莱姆矩阵的平均平方距离来实现。

分别表示原始图像和生成图像,

分别表示l层的风格表示。l层相对于总损失的贡献是:

总的风格损失函数:

其中wl是每层对总损失函数的贡献权重因子(如下面结果中特定wl的值)。l层的激活函数对应的El的偏导数计算如下:

El对像素值

的梯度可以用标准误差反向传播快速计算出来,(如图2 左边所示)。

2.3 风格转移

为了将艺术照

的风格转移到照片

上,我们同步匹配

的内容表示和

的风格表示,合成一个新图像,如图2所示。因此,可以联立从卷积神经网络的一层的图像内容表示和大量层上定义的绘画风格表示的白噪声图像的特征表示求解最小化距离。需要最小化的损失函数是:

其中α和β分别是内容和风格重建的权重因子。对像素值的梯度

可以作为某些优化策略的输入值。这里使用论文32中的L-BFGS,可以非常好的应用于图像合成中。为了提取图像信息,在计算特征表示之前,需要经常改变风格图像大小与内容图像大小一样。最后,注意与论文24不同,我们并不用图像信息来规范化合成结果。可以讨论一下,从网络中低层提取的纹理特征可以作为风格图像的特定图像先验信息。另外,使用不同的网络架构和优化算法,在图像合成上也会有不同结果。

3 结果

本文主要的发现是卷积神经网络中的内容表示和风格表示可以很好地分离。也就是说,可以独立地操作两种表示生产有意义的新图像。为了演示这个发现,我们从两个不同的源图像中生成混合内容表示和风格表示的图像。具体来说,我们匹配了德国图宾根内卡河的照片的内容表示和几种出名的不同时期的艺术画的风格表示,如图3所示。图3所示的图像通过匹配网络层‘conv42’的内容表示和网络层 ‘conv1 1’, ‘conv2 1’, ‘conv3 1’, ‘conv4 1’and ‘conv5 1’(这些层中wl = 1/5, 其他层中 wl = 0 )的风格表示合成图像。α/β的比值分别是1 × 10?3 (Fig 3 B), 8 × 10?4 (Fig 3 C), 5 × 10?3(Fig 3 D), 或者 5 × 10?4 (Fig 3 E, F)。

相关TAG标签
上一篇:Mybatis——Invalid bound statement (not found)-Could not find result map java.lang.Integer
下一篇:web项目引入这个框架就不用再写接口文档了!
相关文章
图文推荐

关于我们 | 联系我们 | 广告服务 | 投资合作 | 版权申明 | 在线帮助 | 网站地图 | 作品发布 | Vip技术培训 | 举报中心

版权所有: 红黑联盟--致力于做实用的IT技术学习网站