风格迁移-StyTr 2 : Image Style Transfer with Transformers

风格迁移-StyTr 2 : Image Style Transfer with Transformers

论文链接:Image Style Transfer with Transformers

源码链接:StyTR-2

StyTr的核心创新在于将Transformer应用到图像风格迁移任务中。传统的风格迁移方法多基于卷积神经网络(CNN),而StyTr引入了Transformer的注意力机制,能够捕捉图像的全局依赖关系,并在迁移过程中实现更细腻的风格融合。

StyTR架构图

主要由四部分组成:图像内容编码器(b图中黄色区域),风格图像编码器(上面Style value区域),图像和风格融合解码器(Transformer decoder),图像解码器(最后decoder)。下面将从这四个部分介绍这个模型,并且每一部分有什么创新点。

在这里插入图片描述

图像内容编码器

主要黄色区域,这一部分直接使用transformer的注意力机制,但是有些不同的是,这里位置编码的嵌入与传统的位置编码不同,传统的位置编码多使用正余弦函数只考虑像素之间的相对距离,本篇论文中则采用内容感知位置编码(CAPE,Content-Aware Positional Encoding)来实现的位置编码的嵌入。

内容感知位置编码(CAPE,Content-Aware Positional Encoding)

内容感知位置编码(CAPE,Content-Aware Positional Encoding)的核心思想是,为图像风格迁移任务引入一种更加灵活和适应性的位置信息编码方式。相比于传统的正弦位置编码(sinusoidal PE)只考虑像素之间的相对距离,CAPE还基于图像的语义内容来调整位置编码。这样可以确保在风格迁移任务中,不同尺度的图像仍然能保持一致的空间关系。

CAPE的工作原理

  1. 内容感知:CAPE根据图像的语义内容生成位置信息。它不仅考虑每个块的相对位置,还考虑了图像的内容信息(例如颜色、纹理、物体的形状等),这样能让模型更好地保持图像的结构,并在风格迁移过程中得到更自然的结果。

  2. 尺度不变性:风格迁移涉及不同尺度的图像,而传统的位置编码在处理不同大小的图像时会有一定局限。CAPE通过重新调整位置编码的大小(使用一个固定大小的编码矩阵,比如18×18,然后根据图像的大小进行缩放),确保无论图像大小如何,其空间关系不会改变。这种做法解决了不同尺度图像之间的空间不一致性问题。

CAPE的原理是让位置编码不再只依赖于像素之间的距离,而是通过引入图像的语义内容来使编码更加智能和灵活。这种方法可以在风格迁移中保持图像的空间结构一致性,同时适应不同大小的图像,从而得到更好的风格迁移效果。

风格图像编码器

在风格迁移任务中,风格编码器的主要作用是将输入的风格图像转化为一个特征表示序列,从而能够与内容图像的特征进行融合,完成风格迁移。风格编码器的处理方式与内容编码器类似,但有一个重要的不同点:风格编码器不考虑位置编码

**原因:**与内容图像不同,风格图像的空间结构在风格迁移任务中并不需要严格保持。也就是说,风格图像的每个部分(比如颜色、纹理等)的具体位置并不重要,重要的是这些特征本身。因此,风格编码器不需要为风格图像加入位置编码。这样做的目的是为了让模型更加自由地将风格特征应用到内容图像的不同部分,而不必受到空间位置的限制。

图像和风格融合解码器

主要是将图像特征与风格特征相融合。

  1. 输入Transformer解码器:内容序列 (Yc)+风格序列 (Ys)

  2. 生成查询、键和值

    • 在Transformer中,解码器使用内容序列和风格序列生成三组关键数据:

    • 查询 (Q):用内容序列 Yc 生成,具体为 YcWq,其中 Wq是一个学习到的权重矩阵。

    • 键 (K)值 (V):用风格序列 Ys 生成,分别为 YsWk和 YsWv,其中 Wk和 Wv是另外两个学习到的权重矩阵。

  3. 计算Transformer解码器的输出

    在这里插入图片描述

图像解码器

整个CNN解码器的流程是为了从Transformer解码器输出的低分辨率特征序列中生成高质量的风格迁移图像。通过三层卷积层的逐步上采样和细化处理,模型能够更好地恢复图像中的细节,并最终输出一个符合期望风格和内容的高分辨率图像。

虽然可以直接将这个特征序列上采样回到原始图像的分辨率,但为了得到更精细的结果,作者选择使用一个三层的CNN解码器来进一步优化和细化特征。直接上采样可能导致结果粗糙,细节不足,因此需要卷积操作来增强局部信息和细节。

三层CNN解码器的结构

这个三层的CNN解码器用于逐步扩展图像的尺寸,并将特征转换为最终的RGB图像。具体的操作包括:

  • 3x3卷积 (Conv):每一层首先进行3x3卷积操作。3x3卷积核能够很好地提取局部特征,帮助增强细节。
  • ReLU激活函数:每层卷积后使用ReLU(修正线性单元)激活函数。ReLU通过引入非线性,有助于网络捕捉更复杂的特征。
  • 2倍上采样 (Upsample):在每一层中,通过上采样操作将特征图的尺寸扩展一倍。这种逐步上采样的方法有助于逐渐恢复图像的高分辨率结构,同时保持细节。
损失函数

损失函数主要由四个组成:内容感知损失(Content Perceptual Loss, Lc)、风格感知损失(Style Perceptual Loss, Ls)、身份损失 1(Identity Loss 1, Lid1)、身份损失 2(Identity Loss 2, Lid2)构成总损失函数。说明Io表示输出图像,Ic表示内容图像,Is表示风格图像。

内容感知损失(Content Perceptual Loss, Lc)

在这里插入图片描述

风格感知损失(Style Perceptual Loss, Ls)

在这里插入图片描述

身份损失 1(Identity Loss 1, Lid1)

在这里插入图片描述

身份损失 2(Identity Loss 2, Lid2)

在这里插入图片描述

总损失函数(Total Loss, L)

在这里插入图片描述

需要源码讲解可以联系我

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值