风格迁移:Style Difussion

您所在的位置:网站首页 粘土样式 风格迁移:Style Difussion

风格迁移:Style Difussion

2024-06-27 13:09| 来源: 网络整理| 查看: 265

这次分享下之前读的扩散模型做风格迁移的论文,论文自称第一篇将扩散模型用于生成任务。

水平有限,有错误欢迎指正交流。

        论文的题目叫做“基于扩散的可控解纠缠风格迁移”是由浙江大学发表在ICCV2023的论文,也是第一篇将扩散模型用在风格迁移的论文(论文自称)。

        风格迁移工作无非就是要解决两个问题,一是怎么从风格/内容图像中怎么把风格分离出来,或者说怎么分别表示风格和内容;二是怎么把分离出来的内容迁移到内容图像上。

        先看看前辈是怎么做的。

        GAT等人提出的方案表示在下方的图中,这也算是最早的风格迁移的解决方案了:可以看到,内容图像和风格图像都使用卷积网络提取特征。之后作者人为定义风格的表示为卷积网络每一层的特征的GRAM矩阵;定义风格的表示为卷积网络最高层的特征。这样通过人为定义风格/特征的表示方法的解决方案成为显式表示。之后就是通过损失函数约束生成器生成的图片风格内容向各自的方向靠近。显式定义的方式可解释性是很强的,但是从这个框架的迁移结果来看,效果是不尽如人意的。

        Kotovenko等人提出的解决方案是使用神经网络,也就是GAN来学习分离风格和内容的方法。也就是下面这幅图,将2对的风格/内容图片输入编码器,得到各自在编码器空间中的特征,之后生成器D生成所有风格和特征排列组合的生成图片,再将所有图片送入判别器,也就是粉红色的这个花体的D,输入编码器来计算损失,激励图像的风格和内容向各自的方向靠拢。在这个过程中作者没有定义风格和内容的表示方式,而是由GAN来学习风格和内容的表示方法,这样的解决方案的模式称为隐式学习。不难理解,这样的方式是可解释性很差的,但是偏偏效果又比上面的显式表示的方法效果好。

       刚刚我们浅浅的了解了两种风格迁移的解决方案,分别是显示定义和隐式学习。论文总结了两种方案的缺陷:

       对于显式表示,缺点有:1.由于人为定义表示方式,所以风格和内容的分离是不彻底的,具体来说,CNN的高级特征中也含有风格的信息,GRAM矩阵中也会含有内容信息。2.损失计算时分开考虑内容损失和风格损失的单独优化,忽略了两者之间的关系;

       对于隐式学习,缺点有1.基于GAN的方法多样性差,结果会偏向于训练数据的分布;2.也是最重要的一点,隐式学习的方法可解释性差,因为GAN网络本身就是一个黑盒子,GAN网络还存在损失不收敛,难以训练的问题。

        论文的观点是:风格的定义比内容的定义复杂的多得多得多,于是想把风格表示的任务交给神经网络来做,也就是通过隐式学习来提取风格特征,通过显式表示来提取内容特征,具体地说,作者定义风格和内容是“纠缠”在一起的,将风格从图片中分离的过程就是对内容的提取,分离风格也就涉及到怎么表示风格,所以这个工作交给神经网络来做。论文中将这个过程称之为命名为CS解纠缠。

       那么下面我们就看论文提出的模型框架。

       嘿嘿,忘了,在看模型框架之前,先看一个先验知识:扩散模型;

       扩散的流程很简单,就是一张图片经过n次加噪,加标准正态分布的噪声,再经过去噪得到没有噪声的图片,去噪的噪声就使用神经网络来学习。

       具体就是上图中的公式,第一个公式表示加噪过程,xt是经过第t次加噪的图片,他和上一次加噪的图片xt-1和正态分布的噪声z有关,αt是权重,每次加噪的权重不一样,所以用αt表示,这是一个递归公式,也就是说可以从无噪声图片x0表示出任意状态xt的图片。

       第二个公式表示去噪的过程,这个公式来自于贝叶斯公式,就不具体展开他的推导了,展开讨论耗时太久。总而言之我们得到了用xt表示前一个状态xt-1的公式,其中的是加噪过程中xt-1到xt加的噪声,由于是一个概率,所以人为计算基本不可能,所以交给神经网络U-net来学习,损失函数就是预测噪声和加噪过程中加的真实噪声的L2损失。

       论文中使用的扩散模型是基础扩散模型的改进DDIM,他将xt-1的表达方式改为下面的式子,并将方差置为零,噪声还是用U-net学习。

       接下来就可以正式看框架了。

       这就是Style Diffusion的框架,总体分为3个模块:基于扩散的风格去除模块、基于扩散的风格转移模块、基于CLIP的风格解纠缠损失。接下来我将逐个解释这三个模块。

       最左边的两个黄色框内都是基于扩散的风格去除模块:风格图像Is和内容图像Ic先使用亮度变换将其变为灰度图,因为颜色也是风格信息,之后利用预训练的扩散模型ε_θ去除风格,这里可以通过控制加噪和去噪的步骤来控制风格的去除程度,这也就是之前说的可控风格迁移的可控。说下为什么这个预训练的扩散模型能去掉图像的风格:因为预训练的扩散模型没有学习过风格,所以它生成的图像是没有风格图像的风格的。就得到去风格的风格图片Isc和去风格的内容图片Icc。

       之后将去风格的内容图片送入基于扩散的风格转移模块,其实也是一个扩散模型,通过加噪去噪的过程使去风格的内容图片被迁移上风格图片的风格,这里扩散模型反向过程的噪声学习受到来自四幅图片计算的风格解纠缠损失的约束,这也是模型隐式学习风格表示的体现。

       我们来看损失函数是怎么设计的:

       我们先来说最简单的获取风格Dspx的方法(Ds表示由扩散模型得到解纠缠的风格图片的风格,px表示像素),就是用风格图片Is减掉去风格的风格图片Isc。但是简单的像素差异不包含语义信息,所以需要其他的空间映射来表示上面的式子。由于CLIP大模型不仅封装了语义信息,还封装了艺术风格信息,于是使用CLIP的图像编码器做为一个映射函数E()来映射上面的式子,得到了最终的风格图片的风格表示Ds,式子的意义是,衡量有风格的风格图片和去风格的风格图片在CLIP空间的距离,也叫“风格距离”。

       那么,怎么将Ds迁移去风格的内容图片上呢?

       同样的,定义Dcs是生成图片的风格,是CLIP空间中生成图片到去风格的内容图片的“风格距离”,作者先尝试使用L1损失约束生成图像的风格靠近风格图像的风格,做实验发现效果不好,因为L1损失使绝对特征差差最小,于是作者又提出了风格接纠缠损失,也就是第三个公式,形式上看他是一个余弦相似度,公式中的1可以看作CLIP空间中风格图片的风格跟自己的余弦相似度,这种方向损失使生成图片的风格到风格图片的风格的夹角与风格图片的风格到自己的夹角保持一致。

       作者还加入了循环一致损失:如果内容图片替换为风格图片输入,那么网络应该输出风格图片本身,公式中的Iss就是输入风格图片的输出,Is就是风格图片。

       总损失就是以上三个损失的权加。

       这是Style Diffusion 和其他方法的比较:我挑两个来说。Gatys和EFDM的效果,内容扭曲(如1-3行),纹理混乱(如4-8行)。AdaAttN执行逐点关注规范化以更好地保留内容结构,但在某些情况下(例如,第1、2、4和5行),风格化效果可能会下降。

       最后为了展示模型的可控性,展示了去风格模块不同去噪程度的对比,风格迁移模块不同扩散步数的对比。带有*号的表示默认设置。可以看到随着去风格模块扩散的加噪去噪步数增加,风格图片逐渐模糊、边界逐渐消失。迁移结果逐渐加入更多风格图片的图形和色彩。而随着风格迁移模块扩散步数的增加,风格逐渐被迁移到去风格的内容图片上,超过一定步数后,图片出现有逐渐噪声化。

       



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3