AIGC-风格迁移-style Injection in Diffusion-CVPR2024HighLight-论文精度

本文主要是介绍AIGC-风格迁移-style Injection in Diffusion-CVPR2024HighLight-论文精度,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

Style Injection in Diffusion: A Training-free Approach for Adapting Large-scale Diffusion Models for Style Transfer-CVPR2024HighLight

代码:https://github.com/jiwoogit/StyleID
论文:https://jiwoogit.github.io/StyleID_site/

在这里插入图片描述
为了解决风格迁移时在推理阶段微调非常耗时的问题,提出操纵自注意力层的特征作为交叉注意力机制的工作方式,目标是通过利用预训练的大规模文本到图像扩散模型的生成能力来解决艺术风格迁移.在生成过程中,用风格形象的key和value来替代内容的key和value。 此外,引入查询保存和注意力温度缩放来减轻原始内容中断的问题,并引入初始潜在自适应实例归一化(AdaIN)来处理不和谐的颜色(未能传输样式颜色)。 实验结果表明,所提出的方法在传统和基于扩散的风格转移基线方面都超越了最先进的方法。

MOTIVATION

  • 基于扩散模型(Diffusion Models, DM)的风格迁移的一般方法及其局限性:

    • 一般方法利用预训练的扩散模型的生成能力来进行风格迁移。一些研究专注于显式解耦风格和内容,以实现可解释和可控的风格迁移。其他一些研究专注于将风格图像反转(invert)到大规模文本到图像扩散模型的文本潜在空间中。
    • 这些方法通常需要对每个风格图像进行基于梯度的优化(fine-tuning)和文本反转(在推理阶段(inference-stage),这是一个耗时的过程。
    • DiffStyle是一种无需训练的风格迁移方法,它避免了耗时的优化步骤。然而DiffStyle被认为难以应用于潜在扩散模型(Latent Diffusion Model, LDM),这限制了用户利用大规模模型的显著生成能力,因为DiffStyle无法很好地与这些模型集成。
  • 将免训练风格迁移扩展到大规模预训练 DM 上的应用

    • Plug-and-play表明,残差块和自注意力(SA)的attention map决定了生成图像的空间布局
    • Prompt-to-Prompt通过替换从文本提示中获得的交叉注意(CA)的键和值来本地编辑图像,同时保留其原始注意图。这说明了交叉注意力的键和值可以调整填充图像内容的方式。
    • 所有这些工作都表明:1)attention maps决定空间布局,2)CA(交叉注意力) 的键和值调整要填充的内容。
  • 相应启发:认为 SA 层是转移风格的有效方法。

    • 与 CA 类似,替换 SA 的key和value(用style图像的value和value替contern 图像的key和value),将特定图像的风格(textures)与不同图像的内容(semantics and spatial layout)结合起来。
      在这里插入图片描述
  • 此外,强调 SA 层在有风格迁移的特性:

    • 语义相似性的保持:在基于SA的风格迁移中,内容图像的patches(查询,query)如果具有语义上的相似性,它们会与相似的风格(键,key)相互作用。这意味着,即使在风格迁移之后,这些内容图像区域之间的关系仍然得以保持。这有助于保持图像内容的完整性和语义连贯性。也就是说,采用 SA 的风格迁移可以保留原始内容,因为具有相似性的内容块往往会从相应的风格图像块接收相似的注意力分数。
      在这里插入图片描述

    • 强大的特征表示能力:由于大规模扩散模型(Diffusion Model, DM)具有强大的特征表示能力,content image对应的每个查询区域(each patch of the query)都能与具有相似纹理和语义的键(key)建立更高的相似性。换句话说,内容图像中的每个小区域都能够在风格图像中找到具有相似纹理和语义的对应区域,这种相似性有助于模型在进行风格迁移时更好地保留内容图像的语义信息,并根据风格图像的纹理特征进行调整。这种特性允许模型更精确地识别和迁移与内容图像区域相匹配的风格特征。这种相似性鼓励模型基于内容和风格图像之间局部纹理(例如边缘)的相似性来进行风格迁移。
      在这里插入图片描述

CONTRIBUTION

  • 提出了一种风格迁移方法,通过对自注意力特征的简单操作来利用大规模预训练的 DM; 用样式替换内容的键和值,无需任何优化或监督(例如文本)。
  • 通过提出三个组件进一步改进风格迁移的朴素方法,以正确适应风格; 查询保存(query preservation)、注意力温度缩放(attention temperature scaling)和初始潜在 AdaIN(initial latent AdaIN)。
  • 对风格迁移数据集的大量实验验证了所提出的方法显着优于以前的方法并实现了最先进的性能。

RELATED WORKS

Diffusion Model-based Neural Style Transfer

  • InST 引入了一种基于文本反转的方法,旨在将给定的风格映射到相应的文本嵌入。
  • StyleDiffusion旨在通过引入基于CLIP的风格分离损失来解耦风格和内容,并微调DM以进行风格迁移。
  • DiffStyle 提出了一种免训练的风格转移方法,该方法利用 h-space并调整跳跃连接(skip connections),分别有效地传达风格和内容信息。 然而,当 DiffStyle 应用于稳定扩散SD时,它们的行为与典型的风格转移方法有很大不同; 不仅纹理也发生了变化,空间布局等语义也发生了变化。

Attention-based Image Editing in DM

预训练的文本到图像扩散模型在图像编辑方面取得了显著进展,这些模型被广泛用于各种图像编辑任务。

  • Prompt-to-Prompt方法:
    • 提出了一种基于文本的局部图像编辑方法,通过操纵交叉注意力(cross-attention)图来实现。
    • 该方法观察到交叉注意力在建立图像空间布局与文本提示中每个词之间的关系方面起着重要作用。
    • Prompt-to-Prompt在保持注意力图的同时改变交叉注意力(CA)的文本条件。 由于注意力图影响输出的空间布局,替换的文本条件决定了在生成的图像中绘制什么,这些条件实际上是 CA 中的键和值。通过替换原始文本和交叉注意力图为期望的版本,可以获得与文本条件匹配的编辑图像。
  • Plug-and-play方法:
    • “Plug-and-play”引入了一种文本引导的图像到图像翻译方法。
    • 发现空间特征(即来自残差块的特征)和自注意力图决定了合成图像的空间布局。
    • 在给定文本条件下生成新图像时,使用原始图像的特征和注意力图引导扩散模型,以保留原始的空间布局。
  • MasaCtrl方法:
    • “MasaCtrl”提出了一种使用文本提示进行一致性图像编辑的相互自注意力控制方法。
    • 该方法保留了源图像自注意力层的键和值,同时用期望的文本提示对模型进行条件化。

LDM(Latent Diffusion Model)

潜在扩散模型(LDM)是一种在低维潜在空间中训练的扩散模型,目的是聚焦于数据的语义比特,降低计算成本。其利用预先训练的编码器encoder,将数据集中的全部图像编码为潜在空间 z中的表示。并在潜在空间 z上训练扩散模型,训练时需要预测在时间步t时潜在表示 z t z_t zt对应的噪声 ϵ \epsilon ϵ。文本利用stable diffusion:
L L D M = E z , ϵ , t [ ∥ ϵ − ϵ θ ( z t , t , y ) ∥ 2 2 ] , L_{\mathrm{LDM}}=\mathbb{E}_{z,\epsilon,t}[\|\epsilon-\epsilon_\theta(z_t,t,y)\|_2^2], LLDM=Ez,ϵ,t[ϵϵθ(zt,t,y)22],

  • ϵ∈N(0,1)是噪声
  • 在给定图像 x ∈ R x∈R%{h×W×3} xR的情况下,编码器E将x编码为潜在表示 z ∈ R h × w × c z∈R^{h×w×c} zRh×w×c,并且解码器从潜在表示重建图像。
  • t是从{1,…,T}均匀采样的时间步数
  • y是条件,即文本
  • ϵ θ ϵ_θ ϵθ是预测加到上的噪声的unet神经网络,每个block for each resolution依次包括残差块、自我注意块(SA)和交叉注意块(CA)

自注意力快

重点关注利用 SA 块(自注意力机制块)来传输style:
Q = W Q ( ϕ ) , K = W K ( ϕ ) , V = W V ( ϕ ) , ϕ o u t = A t t n ( Q , K , V ) = s o f t m a x ( Q K T d ) ⋅ V , Q=W_{Q}(\phi),K=W_{K}(\phi),V=W_{V}(\phi),\\\phi_{\mathrm{out}}=\mathrm{Attn}(Q,K,V)=\mathrm{softmax}(\frac{QK^{T}}{\sqrt{d}})\cdot V, Q=WQ(ϕ),K=WK(ϕ),V=WV(ϕ),ϕout=Attn(Q,K,V)=softmax(d QKT)V,

  • ϕ {\phi} ϕ:残差快residual后面的特征
  • d:投影query的维度
  • W(.):投影层
  • y:我们不使用任何文本提示,y始终是空文本提示" "
  • ϕ o u t {\phi}_{out} ϕout:每个位置的注意力权重

METHODS

在这里插入图片描述

Attention-based Style Injection

输入风格

启发与方法

  • 从“Prompt-to-Prompt”获得启发,文章提出一种操作自注意力层(SA)的方法,类似于交叉注意力(CA)。
  • 将风格图像 I s I_s Is 的特征作为条件,通过在生成过程中替换内容图像的键和值,实现风格图像纹理向内容图像的迁移。

潜在特征获取

  • 使用DDIM(Denoising Diffusion Implicit Models)反演技术来获取内容和风格图像的潜在特征,在反演过程中,收集风格图像的自注意力层特征。
  • 定义从 t = 0 t=0 t=0 t = T t=T t=T 的时间步长集合,用于描述图像从清晰状态 z c 0 z_c^0 zc0 z s 0 z_s^0 zs0(内容图像和风格图像)逐步转化为 t = T t=T t=T时的高斯噪声的扩散过程特征收集.在正向过程的每个时间步 t t t收集内容图像的查询特征 Q c t Q_c^t Qct和风格图像的键和值特征 K s t , V s t K_s^t, V_s^t Kst,Vst

风格注入

  • 通过复制内容潜在噪声 z T c z_T^c zTc 来将风格化处理后的潜在噪声 (stylized latent noise) z T c s z_T^{cs} zTcs初始化.
  • z t c s z_t^{cs} ztcs逆扩散过程,将风格图像的键 K s t K_s^t Kst和值 V s t V_s^t Vst 注入到自注意力层,替代原有的键 K c s t K_{cs}^t Kcst和值 V c s t V_{cs}^t Vcst

内容干扰问题以及查询保留

原因:仅替换键和值可能导致内容干扰( content disruption).因为随着逆扩散过程的进行,注意力值的变化会逐步改变风格化潜在表示的内容,由于注意力值的变化,原始内容的关键信息可能会逐渐丢失,导致生成的图像内容与原始图像内容有所不同。
在这里插入图片描述

实现:混合风格后化的潜在表示的query和内容图像的query

Q ~ t c s = γ × Q t c + ( 1 − γ ) × Q t c s , ϕ o u t c s = A t t n ( Q ~ t c s , K t s , V t s ) , \tilde{Q}_{t}^{cs}=\gamma\times Q_{t}^{c}+(1-\gamma)\times Q_{t}^{cs},\\ \phi_{\mathrm{out}}^{\mathrm{cs}}=\mathrm{Attn}(\tilde{Q}_{t}^{cs},K_{t}^{s},V_{t}^{s}), Q~tcs=γ×Qtc+(1γ)×Qtcs,ϕoutcs=Attn(Q~tcs,Kts,Vts),

  • Q c s t Q_{cs}^t Qcst:风格化处理后的的潜在表示的query
  • Q c t Q_c^t Qct: 内容图像的query
  • γ \gamma γ :一个介于 0 到 1 之间的混合比例参数,通过调整 γ \gamma γ的值,可以控制风格迁移的程度。较高的 γ \gamma γ值会保留更多的原始内容信息,而较低的 γ \gamma γ值会加强风格迁移的效果
  • ϕ o u t \phi_{\mathrm{out}} ϕout:自注意力计算的输出
  • 将这些操作应用于与局部纹理相关的解码器的后面层(SD 中的第 7-2 个解码器层)。

Attention Temperature Scaling

注意力图是通过查询(query)和键(key)特征之间的缩放点积来计算的。

  • 在训练期间,SA层中的查询和键特征来自同一图像,因此它们之间的相似性很高。
  • 在风格迁移中,如果用风格图像的键特征替换内容图像的键特征,由于风格和内容很可能是不相关的,整体相似性会降低。这会导致计算出的注意力图变得模糊或平滑,从而使输出图像变得不清晰,这对于同时捕捉内容和风格信息是不利的。

为了解决这个问题,作者测量了注意力图的标准差,同时消除了基于注意力的风格注入。

  • 计算在应用 softmax 之前的attention map,即计算查询和键之间的缩放点积,以得到注意力图,实验验证了这种风格注入往往会降低整个时间步上注意力图的标准差
    在这里插入图片描述

  • 为了更清晰地校正注意力图,我们引入了注意力温度缩放参数。 具体来说,我们将进行softmax之前的注意力图(attention map)乘以大于1的恒定温度缩放参数τ:

    • A t t n τ ( Q t c s ~ , K t s , V t s ) = s o f t m a x ( τ Q t c s ~ ( K t s ) T d ) ⋅ V t s , τ > 1 \mathrm{Attn}_{\tau}(\tilde{Q_{t}^{cs}},K_{t}^{s},V_{t}^{s})=\mathrm{softmax}(\frac{\tau \tilde{Q_{t}^{cs}}(K_{t}^{s})^{T}}{\sqrt{d}})\cdot V_{t}^{s},\tau>1 Attnτ(Qtcs~,Kts,Vts)=softmax(d τQtcs~(Kts)T)Vts,τ>1

    • 使用 τ = 1.5 作为默认设置,这是整个时间步长的平均比率。 如图 (b) 所示,确认它有效地校准了注意力图的标准差,使其与其原始值相似.softmax之后的注意力图将比其原始值更清晰

Initial Latent AdaIN

仅使用基于注意力的样式注入进行的样式迁移通常无法捕获给定样式的色调。

  • 图5(a)表示:纹理和局部图案成功转移到内容图像,同时内容图像的色调仍然保留。
    在这里插入图片描述
  • 图5(b)表示即使注入样式的查询、键和值,生成的图像仍然保留内容的色调。(为了确定 SA 中每个特征对色调的影响,还在样式注入过程中添加了query。 然而,色调仍然与内容相似,因此自注意力特征对色调的影响较小)
    在这里插入图片描述

分析了 DM 的另一个重要部分:initial latent noise

  • 扩散模型在合成纯白色或黑色图像时存在困难,倾向于生成具有中等颜色的图像,因为初始噪声是从均值为零、方差为单位的正态分布中采样的。
  • 因此假设初始噪声的统计数据对生成图像的颜色和亮度有很大影响。

为了利用两种初始潜在(initial latents)中的有价值信息,作者采用AdaIN(自适应实例归一化)来调节初始潜在,以有效传递色调信息。

z T c s = σ ( z T s ) ( z T c − μ ( z T c ) σ ( z T c ) ) + μ ( z T s ) , z_T^{cs}=\sigma(z_T^s)\left(\frac{z_T^c-\mu(z_T^c)}{\sigma(z_T^c)}\right)+\mu(z_T^s), zTcs=σ(zTs)(σ(zTc)zTcμ(zTc))+μ(zTs),

  • AdaIN通过调整初始潜在的通道均值和标准差来实现颜色风格的迁移
  • 若尝试直接从 Z s T Z_s^T ZsT生成图像,合成结果的结构信息也会跟随风格图像,丢失内容的结构。
  • μ(⋅) 和 σ(⋅) :分别表示通道级别的均值(channel-wise mean)和标准差
  • 通过AdaIN处理后的初始潜在 z c s T z_{cs}^T zcsT 保留了内容信息 z c T z_c^T zcT,同时使通道均值和标准差与风格图像 z s T z_s^T zsT对齐。

Experiment

实验设置

作者在LAION数据集上使用了Stable Diffusion 1.4预训练模型,并采用了DDIM采样方法,总共进行了50个时间步(t = {1, …, 50})的迭代。于超参数的默认设置,作者使用了γ = 0.75和τ = 1.5。

评估协议

AIGC常见图像质量评估可以跳转到这篇博客~
AIGC-常见图像质量评估MSE、PSNR、SSIM、LPIPS、FID、CSFD,余弦相似度

ArtFID

为了避免传统风格迁移方法可能过度拟合 Style Loss 的问题,作者采用了 ArtFID 作为评估指标,它综合考虑了内容和风格的保持,并与人类判断高度一致。

A r t F I D = ( 1 + L P I P S ) ⋅ ( 1 + F I D ) ArtFID = (1 + LPIPS) · (1 + FID) ArtFID=(1+LPIPS)(1+FID)

  • LPIPS 测量风格化图像和相应内容图像之间的内容保真度

    • Learned Perceptual Image Patch Similarity 学习感知图像块相似度,LPIPS是一种衡量图像感知相似性的指标,它通过比较图像块的深层特征来工作,这些特征能够捕捉到人类视觉系统中对图像质量的感知。
    • LPIPS的值越低表示两张图像越相似,反之,则差异越大
    • d ( x , x 0 ) = ∑ l 1 H l W l ∑ h , w ∣ ∣ w l ⊙ ( y ^ h w l − y ^ 0 h w l ) ∣ ∣ 2 2 d(x,x_0)=\sum_l\frac1{H_lW_l}\sum_{h,w}||w_l\odot(\hat{y}_{hw}^l-\hat{y}_{0hw}^l)||_2^2 d(x,x0)=lHlWl1h,w∣∣wl(y^hwly^0hwl)22
      • d d d: x , x 0 x,x_0 x,x0之间的距离
      • l l l层提取特征堆(feature stack)并在通道维度中进行单位规格化(unit-normalize)。
      • 利用向量 W l W_l Wl来放缩激活通道数,最终计算 L 2 L_2 L2距离。
      • 最后在空间上平均,在通道上求和。
  • FID 评估风格化图像和相应风格图像之间的风格保真度

    • F I D = ∥ μ r − μ g ∥ 2 2 + T r ( Σ r + Σ g − 2 ( Σ r Σ g ) 1 / 2 ) \mathrm{FID}=\|\mu_r-\mu_g\|_2^2+\mathrm{Tr}(\Sigma_r+\Sigma_g-2(\Sigma_r\Sigma_g)^{1/2}) FID=μrμg22+Tr(Σr+Σg2(ΣrΣg)1/2)
    • FID得分越低,表示生成图像的特征分布与真实图像的特征分布越接近,即生成模型的性能越好。
    • FID能够捕捉到图像的全局风格和分布特性

dataset

使用 MSCOCO 数据集的内容图像和 WikiArt 数据集的风格图像进行评估。 所有输入图像均经过中心裁剪,分辨率为 512 × 512。 此外,为了进行定量比较,从每个数据集中随机选择 20 个内容图像和 40 个风格图像,产生 800 个风格化图像,如 StyTR2所做的那样。

Content Feature Structural Distance-CFSD内容特征结构距离

在风格迁移评估中,内容保真度通常依赖于LPIPS距离,该指标使用了在ImageNet数据集上预训练的AlexNet模型的特征空间,这使得LPIPS对纹理有偏见。图像的风格信息可能会影响LPIPS分数,因为它偏向于纹理特征。为了减少风格信息对评估的影响,作者引入了CFSD,这是一种只考虑图像块之间空间相关性的新距离度量。

CFSD的计算步骤

  • 获取特征图:对于给定图像 I I I,首先获取特征图 F ∈ R h × w × c F \in \mathbb{R}^{h \times w \times c} FRh×w×c,这是VGG19网络中conv3层的输出特征。
  • 计算相似性矩阵:计算特征图 F F F中每对特征之间的相似性,得到相似性矩阵 M = F × F T M = F \times F^T M=F×FT,其中 M ∈ R h × w × h × w M \in \mathbb{R}^{h \times w \times h \times w} MRh×w×h×w
  • 应用softmax操作:对相似性矩阵 M M M 的每个元素应用softmax操作,将其建模为概率分布,得到相关性矩阵 S = [ softmax ( M i ) ] h × w i = 1 S = [\text{softmax}(M_i)]_{h \times w}^{i=1} S=[softmax(Mi)]h×wi=1,其中 M i ∈ R 1 × h × w M_i \in \mathbb{R}^{1 \times h \times w} MiR1×h×w 是第 i i i 个图像块与其他块的相似性。
  • 计算KL散度:CFSD定义为两个相关性矩阵之间的Kullback-Leibler散度(KL-divergence)。

CFSD公式

C F S D = 1 h w ∑ i = 1 h w D K L ( S i c ∣ ∣ S i c s ) , \mathrm{CFSD}=\frac{1}{hw}\sum_{i=1}^{hw}D_{\mathrm{KL}}(S_{i}^{c}||S_{i}^{cs}), CFSD=hw1i=1hwDKL(Sic∣∣Sics),

  • S i c S_{i}^{c} Sic:内容图像对应的相关性矩阵的第i个元素,这些矩阵是通过计算图像特征图(例如,VGG19网络的conv3层输出)中每对特征之间的相似性得到的。
  • S i c s S_{i}^{cs} Sics:风格图像对应的相关性矩阵的第i个元素
  • D K L D_{KL} DKL:KL散度
#F:\AIGCprojects\StyleID\evaluation\eval_artfid.py
def compute_patch_simi(path_to_stylized, path_to_content, batch_size, device, num_workers=1):"""Computes the distance for the given paths.Args:path_to_stylized (str): Path to the stylized images.path_to_style (str): Path to the style images. [注:这里应该为 path_to_content,修正为 path_to_content]batch_size (int): Batch size for computing activations.content_metric (str): Metric to use for content distance. Choices: 'lpips', 'vgg', 'alexnet' [注:缺少 content_metric 参数]device (str): Device for computing activations.num_workers (int): Number of threads for data loading.Returns:(float) FID value. [注:文档中写的是 FID value,但函数名为 compute_patch_simi,可能存在混淆,需要核对和确认]"""device = torch.device('cuda') if device == 'cuda' and torch.cuda.is_available() else torch.device('cpu')# 根据路径获取图像路径并排序以匹配样式化图像与对应的内容图像stylized_image_paths = get_image_paths(path_to_stylized, sort=True)content_image_paths = get_image_paths(path_to_content, sort=True)# 确保样式化图像和内容图像数量相等assert len(stylized_image_paths) == len(content_image_paths), 'Number of stylized images and number of content images must be equal.'# 定义图像转换方法style_transforms = ToTensor()# 创建样式化图像的数据集和数据加载器dataset_stylized = ImagePathDataset(stylized_image_paths, transforms=style_transforms)dataloader_stylized = torch.utils.data.DataLoader(dataset_stylized,batch_size=batch_size,shuffle=False,drop_last=False,num_workers=num_workers)# 创建内容图像的数据集和数据加载器dataset_content = ImagePathDataset(content_image_paths, transforms=style_transforms)dataloader_content = torch.utils.data.DataLoader(dataset_content,batch_size=batch_size,shuffle=False,drop_last=False,num_workers=num_workers)# 初始化用于计算距离的度量类metric = image_metrics.PatchSimi(device=device).to(device)dist_sum = 0.0N = 0pbar = tqdm(total=len(stylized_image_paths))# 遍历样式化图像和内容图像的批次for batch_stylized, batch_content in zip(dataloader_stylized, dataloader_content):# 在不计算梯度的上下文中进行操作,节省内存和计算资源with torch.no_grad():# 计算当前批次的距离batch_dist = metric(batch_stylized.to(device), batch_content.to(device))N += batch_stylized.shape[0]dist_sum += torch.sum(batch_dist)pbar.update(batch_stylized.shape[0])pbar.close()return dist_sum / Ndef compute_cfsd(path_to_stylized, path_to_content, batch_size, device, num_workers=1):"""Computes CFSD for the given paths.Args:path_to_stylized (str): Path to the stylized images.path_to_content (str): Path to the content images.batch_size (int): Batch size for computing activations.device (str): Device for computing activations.num_workers (int): Number of threads for data loading.Returns:(float) CFSD value."""print('Compute CFSD value...')# 计算 Patch Similarity,该函数返回样式化图像和内容图像的距离值simi_val = compute_patch_simi(path_to_stylized, path_to_content, 1, device, num_workers)# 将距离值保留四位小数simi_dist = f'{simi_val.item():.4f}'return simi_dist
#evaluation\image_metrics.py
class PatchSimi(nn.Module):def __init__(self, device=None):# 初始化函数super(PatchSimi, self).__init__()# 加载预训练的 VGG19 模型,并移到指定设备上进行评估self.model = models.vgg19(pretrained=True).features.to(device).eval()# 指定层名称和替换名称的映射self.layers = {"11": "conv3"}# 图像归一化的均值和标准差self.norm_mean = (0.485, 0.456, 0.406)self.norm_std = (0.229, 0.224, 0.225)# KL 散度损失函数self.kld = torch.nn.KLDivLoss(reduction='batchmean')self.device = devicedef get_feats(self, img):features = []# 遍历 VGG19 模型的各层并提取特征for name, layer in self.model._modules.items():img = layer(img)if name in self.layers:features.append(img)return featuresdef normalize(self, input):# 图像归一化处理return transforms.functional.normalize(input, self.norm_mean, self.norm_std)def patch_simi_cnt(self, input):b, c, h, w = input.size()# 转置和重塑特征input = torch.transpose(input, 1, 3)features = input.reshape(b, h*w, c).div(c)feature_t = torch.transpose(features, 1, 2)# 计算内容图像的特征相似度patch_simi = F.log_softmax(torch.bmm(features, feature_t), dim=-1)return patch_simi.reshape(b, -1)def patch_simi_out(self, input):b, c, h, w = input.size()# 转置和重塑特征input = torch.transpose(input, 1, 3)features = input.reshape(b, h*w, c).div(c)feature_t = torch.transpose(features, 1, 2)# 计算样式化图像的特征相似度patch_simi = F.softmax(torch.bmm(features, feature_t), dim=-1)return patch_simi.reshape(b, -1)def forward(self, input, target):src_feats = self.get_feats(self.normalize(input))target_feats = self.get_feats(self.normalize(target))init_loss = 0.# 计算各层的 KL 散度并求和作为初始损失值for idx in range(len(src_feats)):init_loss += F.kl_div(self.patch_simi_cnt(src_feats[idx]), self.patch_simi_out(target_feats[idx]), reduction='batchmean')

效果

与传统风格迁移方法的比较:时间快,效果好
在这里插入图片描述

  • 在ArtFID(艺术风格迁移评价指标)方面,作者的方法大大超越了传统方法,ArtFID与人类偏好一致。
  • 在FID(Fréchet Inception Distance)方面,作者的方法记录了最低的分数,表明风格化图像与目标风格高度相似。
  • 在内容保真度指标CFSD(Content Feature Structural Distance)和LPIPS(Learned Perceptual Image Patch Similarity)方面,作者的方法也展现出了优越的得分。
  • 他们的方法可以通过调整参数γ来任意调整风格迁移的程度,并且在匹配LPIPS(内容)的值时,在FID(风格)方面显著超越了其他所有方法。
  • 作者的方法比其他方法显著更快,即使使用了大规模的扩散模型。这种更快的速度来自于作者的方法可以使用更少的DDIM反演步骤,因为在反演步骤中额外利用了收集到的特征,大大降低了对内容和风格完美反演的必要性

作者的方法在保持内容图像的结构信息方面表现更好,同时能够有效地迁移风格:
在这里插入图片描述

  • 以图6为例,作者展示了他们的方法在保留桥梁结构方面的优势,而其他baseline在保持结构或迁移风格方面存在挑战。
  • 相比之下,其他基线在给定任意内容风格对时,往往会丢失内容的结构或未能成功迁移风格。例如,DiffuseIT和DiffStyle在生成形状合理且视觉上可信的图像或保留原始内容方面存在问题。另一方面,InST虽然能够合成逼真的图像,但在风格迁移或改变图像内容方面存在挑战。

在这里插入图片描述

这篇关于AIGC-风格迁移-style Injection in Diffusion-CVPR2024HighLight-论文精度的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1003118

相关文章

Jitter Injection详解

一、定义与作用 Jitter Injection,即抖动注入,是一种在通信系统中人为地添加抖动的技术。该技术通过在发送端对数据包进行延迟和抖动调整,以实现对整个通信系统的时延和抖动的控制。其主要作用包括: 改善传输质量:通过调整数据包的时延和抖动,可以有效地降低误码率,提高数据传输的可靠性。均衡网络负载:通过对不同的数据流进行不同程度的抖动注入,可以实现网络资源的合理分配,提高整体传输效率。增

CSS列表属性:list-style系列属性详解

CSS(层叠样式表)是用于控制网页样式的一种语言,它允许开发者以一种非常灵活的方式来设置网页元素的外观。在CSS中,list-style属性族是专门用来设置列表样式的。列表是网页设计中常见的元素,它们可以是有序列表(<ol>)或无序列表(<ul>)。list-style系列属性允许你自定义列表项前的标记,包括类型、位置和图像。 1. list-style-type list-style-typ

康奈尔大学之论文审稿模型Reviewer2及我司七月对其的实现(含PeerRead)

前言 自从我司于23年7月开始涉足论文审稿领域之后「截止到24年6月份,我司的七月论文审稿GPT已经迭代到了第五版,详见此文的8.1 七月论文审稿GPT(从第1版到第5版)」,在业界的影响力越来越大,所以身边朋友如发现业界有相似的工作,一般都会第一时间发给我,比如本部分要介绍的康奈尔大学的reviewer2 当然,我自己也会各种看类似工作的论文,毕竟同行之间的工作一定会互相借鉴的,我们会学他们

【论文精读】分类扩散模型:重振密度比估计(Revitalizing Density Ratio Estimation)

文章目录 一、文章概览(一)问题的提出(二)文章工作 二、理论背景(一)密度比估计DRE(二)去噪扩散模型 三、方法(一)推导分类和去噪之间的关系(二)组合训练方法(三)一步精确的似然计算 四、实验(一)使用两种损失对于实现最佳分类器的重要性(二)去噪结果、图像质量和负对数似然 论文:Classification Diffusion Models: Revitalizing

【python】python葡萄酒国家分布情况数据分析pyecharts可视化(源码+数据集+论文)【独一无二】

👉博__主👈:米码收割机 👉技__能👈:C++/Python语言 👉公众号👈:测试开发自动化【获取源码+商业合作】 👉荣__誉👈:阿里云博客专家博主、51CTO技术博主 👉专__注👈:专注主流机器人、人工智能等相关领域的开发、测试技术。 python葡萄酒国家分布情况数据分析pyecharts可视化(源码+数据集+论文)【独一无二】 目录 python葡

论文阅读--Efficient Hybrid Zoom using Camera Fusion on Mobile Phones

这是谷歌影像团队 2023 年发表在 Siggraph Asia 上的一篇文章,主要介绍的是利用多摄融合的思路进行变焦。 单反相机因为卓越的硬件性能,可以非常方便的实现光学变焦。不过目前的智能手机,受制于物理空间的限制,还不能做到像单反一样的光学变焦。目前主流的智能手机,都是采用多摄的设计,一般来说一个主摄搭配一个长焦,为了实现主摄与长焦之间的变焦,目前都是采用数字变焦的方式,数字变焦相比于光学

[AIGC] Guava Library 中常用的一些工具类详解

Google Guava 是一个功能强大的 Java 库,它提供了大量用于优化代码和提高代码质量的工具。该库提供了许多常用的实用类,下面我们来详细介绍一些在编程应用开发中经常需要的。 文章目录 1. 集合类2. I/O 类1. ByteStreams(字节流)2. CharStreams(字符流)3. Files(文件)4. MoreFiles(文件)5. Resources(资

【LLM之KG】CoK论文阅读笔记

研究背景 大规模语言模型(LLMs)在许多自然语言处理(NLP)任务中取得了显著进展,特别是在零样本/少样本学习(In-Context Learning, ICL)方面。ICL不需要更新模型参数,只需利用几个标注示例就可以生成预测。然而,现有的ICL和链式思维(Chain-of-Thought, CoT)方法在复杂推理任务上仍存在生成的推理链常常伴随错误的问题,导致不真实和不可靠的推理结果。

【python】python基于akshare企业财务数据对比分析可视化(源码+数据集+论文)【独一无二】

👉博__主👈:米码收割机 👉技__能👈:C++/Python语言 👉公众号👈:测试开发自动化【获取源码+商业合作】 👉荣__誉👈:阿里云博客专家博主、51CTO技术博主 👉专__注👈:专注主流机器人、人工智能等相关领域的开发、测试技术。 系列文章目录 目录 系列文章目录一、设计要求二、设计思路三、可视化分析 一、设计要求 选取中铁和贵州茅