基于深度学习的图像风格迁移算法的基本介绍。

基于神经网络的图像风格迁移算法

这个算法还是蛮有趣的,之前就有宣传说让电脑来学习梵高作画,虽然有些夸张,但是实际效果出来还是挺不错的。

 

接下来,我们要按照以下三个部分来进行介绍,提出,方法以及结论。

 

首先,什么是图像风格迁移呢?图像风格迁移,就是将一张图片的风格转移到另一张图片上去。就像图中所显示的内容,将一座吊桥显示为不同的风格。这个就是图像风格转移,直观来看,就是将一副图片的“风格”转移到另一幅图片,而保持它的内容不变。一般我们将内容保持不变的图称为内容图,content image,把含有我们想要的风格的图片,如梵高的星空,称为风格图,style image。

 

想要搞清楚此算法,我们必须弄明白两个问题:第一,什么是图像风格?第二,为什么要进行风格迁移?

第一个问题,抱歉,目前还没有定论。我们可以直观的看到什么是风格,却很难定量描述它,印象派还是抽象派,达利还是梵高,即使没有经过专门的美术训练,一般人也能大概能搞清楚“这张和这张是一个风格的,这张和那张不是一个风格的”。第二个问题,为什么要进行风格迁移?我们知道画家作一幅画是非常耗时耗力的,如果我想要工大的抽象画,需要花费大量的金钱和精力来完成这项工作,但如果计算机可以帮助人类作出指定风格的画,则是一件非常好的事情。

本算法提出了一种基于深度神经网络的图像风格迁移方法,通过神经网络来分离和重新组合任意图像的风格和内容。我们可以使用不同的图像将某一图像进行风格化。

接下来我们对此算法用到的VGG网络进行简单的介绍。VGG 最大的特点就是它在之前的网络模型上,通过比较彻底地采用 3x3 尺寸的小卷积核来堆叠神经网络,从而加深整个神经网络的层级。VGG16包含16层,VGG19包含19层。一系列的VGG在最后三层的全连接层上完全一样,整体结构上都包含5组卷积层,卷积层之后跟一个MaxPool。所不同的是5组卷积层中包含的级联的卷积层越来越多。这样的作法一方面可以减少参数,另一方面相当于进行了更多的非线性映射,增加了网络的拟合表达能力,以及提取深度特征的能力。

此算法可以分为两个部分:第一部分风格重构,用深度神经网络来提取图像的风格特征,从一开始卷积到多次卷积,图像的风格逐渐清晰。第二部分则为内容重构,同样用深度神经网络提取深度的图像特征,于此同时会丢掉一些细节信息。最后再将我们提取的风格和内容进行融合,得到我们风格迁移的结果。

那在我们此算法中又采用什么样的损失函数呢,同上述内容相同,损失函数也分为两个部分,首先是内容损失,具体到图像风格转移,我们的假设是,如果两张图片有相同的representation,则它们是相似的,两张图片representation的相似性就是我们关于图像内容的衡量指标。两张图片的内容损失就是两张图片在某一层输出的二范数。对于风格损失来说,我们用各个特征图之间的互相关系作为图像的风格,同时我们用某一层输出的Gram矩阵来进行表达。Gram矩阵则是用来表示不同特征图也就是我们所说的representation之间的相互关系。最后,我们将两个损失函数赋予不同权重,来计算总的损失函数。

蓝色箭头为前向运算,红色箭头为反向运算。连接内容图像和风格图像的网络只需要运行一次前向运算获得representation。我们从一张噪声图片开始,以它作为待优化图片。待优化图片通过网络的前向运算获得特定层的representation,然后通过计算representation与风格和内容的损失,获得反传梯度,并修改原图。这就是整个算法的思路。

最后,就是此算法的结论了,此方法能够快速的进行风格转换,并且实现非常不错的效果,于此同时节省了大量的时间,金钱和人力资源。于此同时,此方法为理解人类如创造和感知艺术形象的这样的一个非定性问题算法提供了不错的思路。

谢谢。有问题请指出。

 

参考:

A Neural Algorithm of Artistic Style.

图像风格迁移

https://zhuanlan.zhihu.com/p/44165451

https://zhuanlan.zhihu.com/p/23479658

 

  • 1
    点赞
  • 44
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
基于深度学习图像风格迁移是一种能够将一幅图像风格转移到另外一幅图像上的技术。它使用了深度神经网络来实现图像风格化。Python作为一种流行的编程语言,也提供了许多库和框架来实现图像风格迁移。 实现图像风格迁移的一种常用方法是使用卷积神经网络(CNN)。CNN可以从图像中提取各种特征,包括颜色、纹理和形状等。通过训练一个CNN模型,我们可以用于捕捉图像风格的特征,比如一幅画作的风格。 在Python中,有许多流行的深度学习框架可以使用,比如TensorFlow、PyTorch和Keras等。这些框架提供了许多预训练的模型,包括一些用于图像风格迁移的模型,如VGG19、ResNet等。这些模型可以很方便地用来提取图像的特征,并用于图像风格化。 图像风格迁移的核心思想是将输入图像的内容和风格分离开来,然后将风格迁移到目标图像上。为了实现这个过程,我们需要定义一个损失函数来衡量输入图像和目标图像之间的差异,并使用梯度下降算法来最小化这个损失,从而产生一个风格化的图像。 在Python中,我们可以使用CNN模型来提取输入图像和目标图像的特征,并通过梯度下降算法调整输入图像,使其与目标图像的特征尽可能地接近。通过迭代多次训练,我们可以得到一个具有目标图像风格风格图像。 总之,Python提供了许多工具和库来实现基于深度学习图像风格迁移。通过使用CNN模型和梯度下降算法,我们可以将一幅图像风格迁移到另外一幅图像上,从而实现图像风格化。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值