200字范文,内容丰富有趣,生活中的好帮手!
200字范文 > 图像风格迁移与快速风格迁移的对比(感知损失)

图像风格迁移与快速风格迁移的对比(感知损失)

时间:2021-05-30 18:41:21

相关推荐

图像风格迁移与快速风格迁移的对比(感知损失)

最近一段时间要写数字图像处理的文献综述,《深度学习在图像风格迁移中的原理与应用综述》。只能感慨自己一时选题不审,导致期末火葬场啊……

这个问题我纠结了一天,看了N多篇文献(全是英文的…),结果还是没想明白最关键的点。就在我刚才洗澡的时候,突然被淋浴头集中了百会穴,然后一下子醍醐灌顶。(其实没那么玄,不过确实是在澡堂想明白的)

今年是圣诞节前夕,然后我的期末考试完美的覆盖了它,哭泣…在这里先给大家说一声圣诞快乐呀!

鉴于本人沉重的期末压力,今天先只写要点,等到考完试再补充…

欢迎大家转载,倡导学术自由,但要注明出处哦~

对了,同时强推大家先去看一下A神(这是我自己对吴恩达的昵称 哈哈哈 因为他叫Andrew Ng)在网易云课堂的deep learning,里面第四章就是讲CNN的,也基本讲了一下传统风格迁移算法,我觉得讲的很清楚!哈哈哈

下面进入正题~~~

风格迁移算法(传统)

我更愿意把这种算法叫做基于生成图像迭代的风格迁移算法

这是Gatys在A Neural Algorithm of Artistic Style这篇论文中首次提出的。很重要的一点是:这个算法中只有VGG一个网络

这篇论文的优秀之处在于它首次将内容特征C(content)和风格特征S(style)独立的分开。

1.内容特征C:就是某一卷积层(Gatys做实验证明了在中间层)的feature map。(特征图谱,就是大家常常在各种博客或者文献中看到的很多个立方体,一般是nH×nW×nC。nC被称为特征图谱中的通道数,也就是上一层的filter个数。因为每一个filter都能提取一种特征,所以nC代表这一层从上一层提取到的特征数)【要是这里不懂的话,大家去看A神的视频就好啦】

2.风格特征S:衡量不同特征之间的相关性。也就是某一层feature map的两个特征(两个nC通道对应的矩阵)之间的相关系数。举个例子,比如特征A出现的时候,特征B也大概率出现,就说明这两个特征的相关系数很高。反之则相关系数较低。而图像的风格实际上就是看图像中特征的相关性,也就是某个特征出现的时候,另一个特征大概率出现还是不出现。(大家仔细想一下)【当然也可以去看A神的视频 哈哈哈】

需要注意的是,风格特征S的计算一定是对所有卷积层(而内容特征是对某一卷积层)进行运算。每一个卷积层都会算出来一个相关系数矩阵【Gram矩阵】,比如VGG有5个卷积层,那它就有5个Gram矩阵。然后把这些Gram矩阵加起来,就是一张图像的风格特征。风格特征S是一个矩阵哦

重点来了,感知损失的定义

其实Gatys等人对于内容损失JC和风格损失JS的定义从本质上就是感知损失。但是他们只用了一个VGG网络作为image transfrom network(其实你可以理解为将提取内容特征的C和风格特征S的网络合在了一起)

先讲一下什么是感知损失。如果有两张图片,他们只有一个像素点是不一样的,你会认为他们是不同的图片吗?显然不会,可能有几个像素点不一样,你也依旧会觉得没什么区别。所以两张图像相不相似,是根据你的感官,而不是根据像素点。那么问题来了,怎样衡量两张图片在感知上是否相似呢?就通过我们刚才提取到的内容特征C和风格特征S。

这是时候,感知损失的概念就出来了。(鉴于本人不会latex,所以公式得大家到别处找 呜)假设有两张图片A,B

1.对于内容的感知损失就是:A的内容特征AC和B的内容特征BC相减,求平方,再乘1/2。

2.对于风格的感知损失就是:A的风格特征AS和B的风格特征BS相减【矩阵相减】,求平方,再乘一个系数(不重要)。

.12.25 第二次更新

因此Gatys等人设计的损失函数就是J=JC+JS。而这是感知损失,其实Gatys本身的做法就是基于感知损失的(大家要注意很多blog说快速风格迁移的本质是引入了感知损失,这句话是错误的。因为传统风格迁移里面的损失函数就是感知损失,只不过Gatys等人当时没有这种说法),而用这个损失优化的目标是:不断迭代合成图像G。

首先随机产生一张白噪声图G,然后G与内容图片C在内容特征上的差别,记为J(C,G);计算G与风格图片S在风格特征上的差别,记为J(S,G)。通过计算这两种损失,然后用梯度下降法修正G的像素值,使得它越来越接近最后的风格迁移图像G。

核心在于:逐步修正合成图像G的像素值,使之损失变到最小,得到的就是风格迁移后的图像。

到这里传统风格迁移的全过程就结束了。总结一下要点:

1.VGG网络是用来特征提取的,提取出来的这些特征可以算出图片之间的感知损失。(包括内容和风格损失)因此VGG本身是训练好的,中间不需要进行参数的更新。【VGG本身的任务就是特征提取,损失函数依据VGG计算出来的结果设计,这和我们说的感知损失是不一样的,大家不要混淆了】

2.那么损失函数梯度下降修正的东西,是合成图像G(初始的白噪声图)中的像素,使这张图片在风格和内容上的感知损失最小。(所以有些文献会说这是基于逐点像素修正的方法,但我觉得这样的说法不好。因为它本质上是由感知函数修正的)

3.传统风格迁移里面就有感知函数!!!千万不要觉得它是快速风格迁移里面提出来的。

问题

主要集中在两个方面:

1.迭代速度慢。你想想由一张白噪声图生成合成图片G,本身就不是一件太快的事情。同时每次迭代都要把内容图片C、风格图片S和合成图片G(经过迭代的)再重新送进网络中计算感知损失,然后再修正G。听起来就很慢…

2.不能实时处理:这也是Gatys等人在文章中提到的问题。比如你有一张风格图像S,两张内容图像C1,C2,要获得两张合成图像G1,G2。你用S和C1生成G1以后,当你想让C2也获得S风格的时候,你依旧需要从一张白噪声图不断迭代得到G2。也就是说不能只经过一次前向传播就能把任何一张内容图C变成合成图G【这就是快速风格迁移算法的核心目标】

终于讲完了传统风迁移算法,下面进入快速风格迁移

快速风格迁移算法

我更愿意把这种算法称为基于生成模型迭代的风格迁移算法

Johoson等人在Perceptual Losses for Real-Time Style Transfer and Super-Resolution一文中提出的。他的目的是解决Gatys的两个问题。

之所以能变快:他用了两个网络:一个是VGG(也称损失网络),另一个是图像生成网络。这是让无数小伙伴最为头疼的地方,也是我当时一直想不明白的地方。先上一张神图

这是Johoson等人原论文里给出的网络模型。

首先看后面的损失网络(VGG),其实就是特征提取网络,也就是Gatys等人用的网络。这个网络的目的就是计算感知损失,步骤就是:先提取感知特征,然后再计算感知损失。然后用感知损失作为优化的目标。这个Gatys等人是一模一样的。

高能预警,这是本文的核心核心核心!!!

而最大的不同就是Gatys和Johoson拿了这个感知损失做了不同的事情。

1 Gatys用这个感知损失去迭代一张白噪声图,然后让它变成风格迁移以后的图像。所以这种方法叫基于生成图片迭代的风格迁移算法

2 而Johoson用这个感知损失去又重新训练了一个神经网络(这个网络是一个深度残差网络,由何凯明提出来的【这哥们是CVPR best paper常驻嘉宾】),这个神经网络就是上图左侧的Image Transform Net。而这个网络的任务就是,对于一个给定的风格S,你来任何一张内容图像,我都能给你训练出带有S风格的合成图像。所以说这是由一个白网络开始训练,结果是成为一个完成上述任务的特定网络,也就是这个网络的参数是需要迭代的。

因此在训练这个网络的时候,你需要大量的内容图片集C,和一张风格图片,然后训练出能把任何图片变成这种风格(某一种单一的风格,要想要别的还需要重新训练)的网络。这其实体现了网络的推广能力 类似于训练集和测试集。举个例子就是你要训练一个人脸识别器,你就要先给神经网络很多人脸图片(样本集),告诉它这是人脸,然后你再输入一些样本集之外的图片,它也能识别出来。只不过在这里,网络的任务变成了把图片迁移成固定的风格。

所以等到这个网络训练好以后,所有的图片进入image transform net只需要经过一次前传,就可以得到最终的合成结果。相比于Gatys的反复迭代,当然快了不只一点。

总结:

快速风格迁移由两个网络构成,一个是图像转换网络,一个是损失网络。

1 损失网络的作用是为了计算损失,为前面图像转换网络的更新参数提供梯度。这个网络一般是训练好的特征提取网络(VGG等)

2 图像转换网络是一个需要自己训练的白网络,它可以将某一种固定风格迁移到任何一张图像上(当然也可以下载别人训练好的,不是谁的电脑都能跑模型的……小声哭泣)

改进

当然这个基于感知损失函数的图像转换网络不一定是最好的,现在也有在感知损失的基础上,加入GAN(生成对抗网络)来生成更加效果更好的图像。

令:这篇论文也有用这个模型进行超分辨率重建,效果挺不错的,大家可以下来看看。

两种方法的对比

1 核心在于:快速风格迁移比传统风格迁移多了一个图像转换网络,使之能够快速实时的对任意图片进行风格迁移。

2 传统方法是从一张白噪声图开始迭代,快速方法是从内容图像开始迭代(可以理解为对内容图像C进行像素值的修正,使之逐渐接近合成图像G)

大概就是这么多吧,如果还有什么新的体会,我会及时来更新的~留下一条分割线!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。