目录
- 0 前言
 - 1 文章摘要
 - 2 引言
 - 3 相关工作
 - 3.1 需要训练的扩散方法
 - 3.2 无需训练的扩散方法
 
- 4 预备知识
 - 4.1基于分数的扩散模型
 - 4.2 条件分数函数
 - 4.3 能量扩散引导
 
- 5 提出方法
 - 5.1 近似时间相关能量
 - 5.2 有效的时间旅行策略
 - 5.3 能量函数构造
 - 5.3.1 单一条件引导
 - 5.3.2 多条件引导
 - 5.3.3 潜在扩散的引导
 
- 5.4 具体例子
 - 5.4.1 文本
 - 5.4.2 分割图
 - 5.4.3 素描
 - 5.4.4 关键点检测
 - 5.4.5 Face IDs
 - 5.4.6 风格图像
 - 5.4.7 低通滤波器
 
- 6 实验
 - 6.1 实施细节
 
- 7 性能表现
 - 7.1 单一条件
 - 7.2 多条件
 - 7.3 潜在域免训引导
 
0 前言
  前面在讲解论文《Guidance with Spherical Gaussian Constraint for Conditional Diffusion》的时候作者反复提到了FreeDoM这个扩散模型,今天我们就来解读下这篇论文到低干了什么事情,做了哪些贡献。
   该论文发表在2023年计算机视觉顶会ICCV上,主要提出了一种免训练的条件扩散模型方法。下面给出论文的地址和代码仓库链接:
- paper
 - code
 
1 文章摘要
  最近,条件扩散模型因其卓越的生成能力在众多应用中备受欢迎。然而,许多现有方法需要进行训练,它们需要训练一个时间依赖的分类器或一个条件依赖的评分估计器,这增加了构建条件扩散模型的成本,并且在不同条件之间的转移上也不方便。最近的一些工作尝试通过提出无需训练的解决方案来克服这一限制,但大多数只能应用于特定类别的任务,而不能应用于更一般的条件。在这项工作中,作者提出了一种无需训练的条件扩散模型(FreeDoM),可用于多种条件。具体来说,利用现成的预训练网络,例如人脸检测模型,来构建时间无关的能量函数,以引导生成过程而不需要训练。此外,由于能量函数的构建非常灵活并且适应各种条件,作者提出的FreeDoM比现有的无需训练的方法具有更广泛的应用范围。FreeDoM在其简单性、有效性和低成本方面具有优势。实验表明,FreeDoM对于各种条件是有效的,适用于包括图像和潜在代码域在内的各种数据领域的扩散模型。
2 引言
  最近,扩散模型在性能上已超越了之前最先进的生成模型(如GANs)。扩散模型的强大生成能力激发了研究人员将其应用于各种下游任务。条件生成是其中最受关注的领域之一。不同条件的条件扩散模型(CDMs)已被提出,如文本、类别标签、退化图像、分割图、标记、手绘草图、风格图像等。这些CDMs大致分为两类:需要训练的和无需训练的。
  一种典型的需要训练的CDM是训练一个时间依赖的分类器,以引导噪声图像 
     
      
       
        
        
          x 
         
        
          t 
         
        
       
      
        x_t 
       
      
    xt朝给定的条件 
     
      
       
       
         c 
        
       
      
        c 
       
      
    c前进。另一类需要训练的CDM直接训练一个新的基于条件c的得分估计器 
     
      
       
       
         s 
        
       
         ( 
        
        
        
          x 
         
        
          t 
         
        
       
         , 
        
       
         t 
        
       
         , 
        
       
         c 
        
       
         ) 
        
       
      
        s(x_t, t, c) 
       
      
    s(xt,t,c)。这些方法虽然性能优异但不够灵活。一旦需要生成新的目标条件,就必须重新训练或微调模型,既不方便又昂贵。
  相比之下,无需训练的CDMs尝试在不额外训练的情况下解决相同的问题。有些方法尝试使用交叉注意力控制实现条件生成;有些方法直接修改中间结果以实现零样本图像修复;还有些方法通过调整初始噪声图像实现图像翻译。虽然这些方法在单一应用中有效,但难以推广到更广泛的条件(如风格、面部ID和分割掩码)。
  为了让CDMs在无需训练的情况下支持广泛的条件,本文提出了一种无需训练的条件扩散模型(FreeDoM),包括以下两个关键点。首先,为了强调泛化能力,作者提出了一种由能量函数引导的采样过程,能量函数构建非常灵活,可以应用于各种条件。其次,为了使所提方法无需训练,又使用现成的预训练时间无关模型(这些模型在网上易于获取)来构建能量函数。
  FreeDoM主要有以下优点:(1)简单有效。只需在原始扩散模型的无条件采样过程中插入能量函数梯度的求导步骤。广泛的实验显示了其有效的控制能力。(2)成本低且高效。构建的能量函数是时间无关的,无需重新训练。选择的扩散模型也无需在所需条件下进行训练。得益于用于大数据域的高效时间旅行策略,采样步骤的数量非常少,从而加快了采样过程,同时确保了良好的生成结果。(3)适用范围广泛。该方法支持的条件包括但不限于文本、分割图、草图、标记、面部ID、风格图像等。此外,通过结合多种条件,可以实现各种复杂但有趣的应用。(4)支持不同类型的扩散模型。无论所考虑的数据域是人脸图像、ImageNet中的图像,还是从图像编码器提取的潜在代码,广泛的实验表明FreeDoM在所有这些领域都表现良好。
3 相关工作
3.1 需要训练的扩散方法
  需要训练的方法由于使用数据对进行监督学习,可以获得强大的控制生成能力。其中最突出的一种应用是文本生成图像任务。最广泛使用的文本生成图像模型是Stable Diffusion,通过输入提示文本生成符合文本描述的高质量图像。最近的一些研究,如ControlNet和T2I-Adapter,引入了更多需要训练的条件接口到Stable Diffusion中,如边缘图、分割图、深度图等。
   虽然这些需要训练的方法可以在训练条件下实现令人满意的控制效果,但训练的成本仍然是一个需要考虑的因素,特别是对于需要多个条件的复杂控制场景。需要训练的方法在实际应用中不是最便宜或最方便的解决方案。
3.2 无需训练的扩散方法
  无需训练的方法开发了各种有趣的技术,通过利用扩散模型的独特性质,即迭代去噪过程,实现某些任务的无需训练的条件生成。一些研究提出将目标交叉注意力图注入源交叉注意力图,以解决无需训练的prompt-to-prompt任务。此方法的局限性在于需要一个文本提示来预先固定要编辑的图像内容。DDNM提出使用Range-Null Space Decomposition修改中间结果,以无需训练的方式解决图像修复问题。这基于图像修复任务的降解算子,难以应用于其他任务。SDEdit提出调整初始噪声图像以控制生成过程,这在基于笔画的图像合成和编辑中很有用。其局限性在于笔画的指导不够精确和多样化。
  根据上述局限性,需要研究适用于广泛应用的无需训练的条件扩散模型(CDMs)。作者注意到该领域的一些最新努力。所提出来的FreeDoM具有更快的生成速度,并且适用于更广泛的应用(感觉实际效果还行,毕竟论文还是得吹一下)。
4 预备知识
4.1基于分数的扩散模型
  基于分数的扩散模型(SBDMs)是一类基于分数理论的扩散模型,该理论揭示了扩散模型的本质是估计分数函数 
     
      
       
        
        
          ∇ 
         
         
         
           x 
          
         
           t 
          
         
        
       
         log 
        
       
          
        
       
         p 
        
       
         ( 
        
        
        
          x 
         
        
          t 
         
        
       
         ) 
        
       
      
        ∇_{x_t} \log p(x_t) 
       
      
    ∇xtlogp(xt),其中 
     
      
       
        
        
          x 
         
        
          t 
         
        
       
      
        x_t 
       
      
    xt是噪声数据。在采样过程中,SBDMs 通过逐步使用估计的分数从 
     
      
       
        
        
          x 
         
        
          t 
         
        
       
      
        x_t 
       
      
    xt预测 
     
      
       
        
        
          x 
         
         
         
           t 
          
         
           − 
          
         
           1 
          
         
        
       
      
        x_{t-1} 
       
      
    xt−1。在本文的工作中,作者采用了DDPM的离散SBDMs设定,其采样公式为:
  
      
       
        
         
         
           x 
          
          
          
            t 
           
          
            − 
           
          
            1 
           
          
         
        
          = 
         
        
          ( 
         
        
          1 
         
        
          + 
         
         
         
           1 
          
         
           2 
          
         
         
         
           β 
          
         
           t 
          
         
        
          ) 
         
         
         
           x 
          
         
           t 
          
         
        
          + 
         
         
         
           β 
          
         
           t 
          
         
        
          ∇ 
         
         
         
           x 
          
         
           t 
          
         
        
          log 
         
        
           
         
        
          p 
         
        
          ( 
         
         
         
           x 
          
         
           t 
          
         
        
          ) 
         
        
          + 
         
         
          
          
            β 
           
          
            t 
           
          
         
        
          ϵ 
         
        
       
         \mathbf{x}_{t-1} = (1 + \frac{1}{2}\beta_t) \mathbf{x}_t + \beta_t \nabla \mathbf{x}_t \log p(\mathbf{x}_t) + \sqrt{\beta_t} \boldsymbol{\epsilon} 
        
       
     xt−1=(1+21βt)xt+βt∇xtlogp(xt)+βtϵ
 其中, 
     
      
       
       
         ϵ 
        
       
         ∼ 
        
       
         N 
        
       
         ( 
        
       
         0 
        
       
         , 
        
       
         I 
        
       
         ) 
        
       
      
        \boldsymbol{\epsilon} \sim \mathcal{N}(0, I) 
       
      
    ϵ∼N(0,I)是随机采样的高斯噪声, 
     
      
       
        
        
          β 
         
        
          t 
         
        
       
         ∈ 
        
       
         R 
        
       
      
        \beta_t \in R 
       
      
    βt∈R是预定义参数。在实际实现中,分数函数将使用分数估计器 
     
      
       
       
         s 
        
       
         ( 
        
        
        
          x 
         
        
          t 
         
        
       
         , 
        
       
         t 
        
       
         ) 
        
       
      
        s(x_t, t) 
       
      
    s(xt,t)来估计,即 
     
      
       
       
         s 
        
       
         ( 
        
        
        
          x 
         
        
          t 
         
        
       
         , 
        
       
         t 
        
       
         ) 
        
       
         ≈ 
        
        
        
          ∇ 
         
         
         
           x 
          
         
           t 
          
         
        
       
         log 
        
       
          
        
       
         p 
        
       
         ( 
        
        
        
          x 
         
        
          t 
         
        
       
         ) 
        
       
      
        s(x_t, t) \approx ∇_{x_t} \log p(x_t) 
       
      
    s(xt,t)≈∇xtlogp(xt)。然而,原始的扩散模型只能作为无条件生成器提供随机合成的结果。
4.2 条件分数函数
  为了将扩散模型的生成能力适应不同的下游任务,需要使用条件扩散模型(CDMs)。SDE提出了通过修改分数函数为 
     
      
       
        
        
          ∇ 
         
         
         
           x 
          
         
           t 
          
         
        
       
         log 
        
       
          
        
       
         p 
        
       
         ( 
        
        
        
          x 
         
        
          t 
         
        
       
         ∣ 
        
       
         c 
        
       
         ) 
        
       
      
        ∇_{x_t} \log p(x_t|c) 
       
      
    ∇xtlogp(xt∣c)来控制生成结果以满足给定的条件 
     
      
       
       
         c 
        
       
      
        c 
       
      
    c。使用贝叶斯公式 
     
      
       
       
         p 
        
       
         ( 
        
        
        
          x 
         
        
          t 
         
        
       
         ∣ 
        
       
         c 
        
       
         ) 
        
       
         = 
        
        
         
         
           p 
          
         
           ( 
          
         
           c 
          
         
           ∣ 
          
          
          
            x 
           
          
            t 
           
          
         
           ) 
          
         
           p 
          
         
           ( 
          
          
          
            x 
           
          
            t 
           
          
         
           ) 
          
         
         
         
           p 
          
         
           ( 
          
         
           c 
          
         
           ) 
          
         
        
       
      
        p(x_t|c)=\frac{p(c|x_t)p(x_t)}{p(c)} 
       
      
    p(xt∣c)=p(c)p(c∣xt)p(xt),可以将条件分数函数重写为两个部分:
  
      
       
        
        
          ∇ 
         
         
         
           x 
          
         
           t 
          
         
        
          log 
         
        
           
         
        
          p 
         
        
          ( 
         
         
         
           x 
          
         
           t 
          
         
        
          ∣ 
         
        
          c 
         
        
          ) 
         
        
          = 
         
        
          ∇ 
         
         
         
           x 
          
         
           t 
          
         
        
          log 
         
        
           
         
        
          p 
         
        
          ( 
         
         
         
           x 
          
         
           t 
          
         
        
          ) 
         
        
          + 
         
        
          ∇ 
         
         
         
           x 
          
         
           t 
          
         
        
          log 
         
        
           
         
        
          p 
         
        
          ( 
         
        
          c 
         
        
          ∣ 
         
         
         
           x 
          
         
           t 
          
         
        
          ) 
         
        
       
         \nabla \mathbf{x}_t \log p(\mathbf{x}_t | \mathbf{c}) = \nabla \mathbf{x}_t \log p(\mathbf{x}_t) + \nabla \mathbf{x}_t \log p(\mathbf{c} | \mathbf{x}_t) 
        
       
     ∇xtlogp(xt∣c)=∇xtlogp(xt)+∇xtlogp(c∣xt)
 其中,第一个部分 
     
      
       
       
         ∇ 
        
        
        
          x 
         
        
          t 
         
        
       
         log 
        
       
          
        
       
         p 
        
       
         ( 
        
        
        
          x 
         
        
          t 
         
        
       
         ) 
        
       
      
        \nabla \mathbf{x}_t \log p(\mathbf{x}_t) 
       
      
    ∇xtlogp(xt)可以使用预训练的无条件分数估计器 
     
      
       
       
         s 
        
       
         ( 
        
       
         ⋅ 
        
       
         , 
        
       
         t 
        
       
         ) 
        
       
      
        s(\cdot,t) 
       
      
    s(⋅,t)来估计,而第二个部分 
     
      
       
       
         ∇ 
        
        
        
          x 
         
        
          t 
         
        
       
         log 
        
       
          
        
       
         p 
        
       
         ( 
        
       
         c 
        
       
         ∣ 
        
        
        
          x 
         
        
          t 
         
        
       
         ) 
        
       
      
        \nabla \mathbf{x}_t \log p(\mathbf{c} | \mathbf{x}_t) 
       
      
    ∇xtlogp(c∣xt)是构建条件扩散模型的关键部分。我们可以将第二个部分 
     
      
       
       
         ∇ 
        
        
        
          x 
         
        
          t 
         
        
       
         log 
        
       
          
        
       
         p 
        
       
         ( 
        
       
         c 
        
       
         ∣ 
        
        
        
          x 
         
        
          t 
         
        
       
         ) 
        
       
      
        \nabla \mathbf{x}_t \log p(\mathbf{c} | \mathbf{x}_t) 
       
      
    ∇xtlogp(c∣xt)解释为一个修正梯度,将 
     
      
       
        
        
          x 
         
        
          t 
         
        
       
      
        x_t 
       
      
    xt指向数据空间中的一个超平面,其中所有数据都与给定的条件 
     
      
       
       
         c 
        
       
      
        c 
       
      
    c兼容。基于分类器的方法通过训练一个时间依赖的分类器来计算这个修正梯度,用于条件引导。
4.3 能量扩散引导
  建模修正梯度 
     
      
       
       
         ∇ 
        
        
        
          x 
         
        
          t 
         
        
       
         log 
        
       
          
        
       
         p 
        
       
         ( 
        
       
         c 
        
       
         ∣ 
        
        
        
          x 
         
        
          t 
         
        
       
         ) 
        
       
      
        \nabla \mathbf{x}_t \log p(\mathbf{c} | \mathbf{x}_t) 
       
      
    ∇xtlogp(c∣xt)仍然是一个未解决的问题,一种简单直接的方法是利用能量函数,如下所示:
  
      
       
        
        
          p 
         
        
          ( 
         
        
          c 
         
        
          ∣ 
         
         
         
           x 
          
         
           t 
          
         
        
          ) 
         
        
          = 
         
         
          
          
            exp 
           
          
             
           
          
            { 
           
          
            − 
           
          
            λ 
           
          
            E 
           
          
            ( 
           
          
            c 
           
          
            , 
           
           
           
             x 
            
           
             t 
            
           
          
            ) 
           
          
            } 
           
          
         
           Z 
          
         
        
       
         p(\mathbf{c}|\mathbf{x}_t) = \frac{\exp \{-\lambda \mathcal{E}(\mathbf{c}, \mathbf{x}_t)\}}{Z} 
        
       
     p(c∣xt)=Zexp{−λE(c,xt)}
 其中, 
     
      
       
       
         λ 
        
       
      
        \lambda 
       
      
    λ是一个表示正的温度系数, 
     
      
       
       
         Z 
        
       
      
        Z 
       
      
    Z表示一个归一化系数, 
     
      
       
       
         Z 
        
       
         > 
        
       
         0 
        
       
      
        Z>0 
       
      
    Z>0,计算公式为 
     
      
       
       
         Z 
        
       
         = 
        
        
        
          ∑ 
         
         
         
           c 
          
         
           ∈ 
          
         
           C 
          
         
        
       
         exp 
        
       
          
        
       
         { 
        
       
         − 
        
       
         λ 
        
       
         E 
        
       
         ( 
        
       
         c 
        
       
         , 
        
        
        
          x 
         
        
          t 
         
        
       
         ) 
        
       
         } 
        
       
      
        Z = \sum_{c \in C} \exp \{-\lambda \mathcal{E}(c, \mathbf{x}_t)\} 
       
      
    Z=∑c∈Cexp{−λE(c,xt)},其中 
     
      
       
       
         C 
        
       
      
        C 
       
      
    C表示给定的条件域。 
     
      
       
       
         E 
        
       
         ( 
        
       
         c 
        
       
         , 
        
        
        
          x 
         
        
          t 
         
        
       
         ) 
        
       
      
        \mathcal{E}(\mathbf{c}, \mathbf{x}_t) 
       
      
    E(c,xt)是一个能量函数,用于计算条件 
     
      
       
       
         c 
        
       
      
        c 
       
      
    c和噪声 
     
      
       
        
        
          x 
         
        
          t 
         
        
       
      
        x_t 
       
      
    xt之间的兼容性,值越小表示越兼容。如果 
     
      
       
        
        
          x 
         
        
          t 
         
        
       
      
        x_t 
       
      
    xt完全满足条件 
     
      
       
       
         c 
        
       
      
        c 
       
      
    c的约束,能量值应该为0。任何满足上述性质的函数都可以作为可行的能量函数,利用它我们只需调整系数 
     
      
       
       
         λ 
        
       
      
        \lambda 
       
      
    λ来获得 
     
      
       
       
         p 
        
       
         ( 
        
       
         c 
        
       
         ∣ 
        
        
        
          x 
         
        
          t 
         
        
       
         ) 
        
       
      
        p(c|x_t) 
       
      
    p(c∣xt)。
 因此,修正梯度 
     
      
       
       
         ∇ 
        
        
        
          x 
         
        
          t 
         
        
       
         log 
        
       
          
        
       
         p 
        
       
         ( 
        
       
         c 
        
       
         ∣ 
        
        
        
          x 
         
        
          t 
         
        
       
         ) 
        
       
      
        \nabla \mathbf{x}_t \log p(\mathbf{c} | \mathbf{x}_t) 
       
      
    ∇xtlogp(c∣xt)可以通过以下方式实现:
 
      
       
        
        
          ∇ 
         
         
         
           x 
          
         
           t 
          
         
        
          log 
         
        
           
         
        
          p 
         
        
          ( 
         
        
          c 
         
        
          ∣ 
         
         
         
           x 
          
         
           t 
          
         
        
          ) 
         
        
          ∝ 
         
        
          − 
         
        
          ∇ 
         
         
         
           x 
          
         
           t 
          
         
        
          E 
         
        
          ( 
         
        
          c 
         
        
          , 
         
         
         
           x 
          
         
           t 
          
         
        
          ) 
         
        
       
         \nabla \mathbf{x}_t \log p(\mathbf{c}|\mathbf{x}_t) \propto -\nabla \mathbf{x}_t \mathcal{E}(\mathbf{c}, \mathbf{x}_t) 
        
       
     ∇xtlogp(c∣xt)∝−∇xtE(c,xt)
 这被称为能量引导,结合上面的两个公式 
     
      
       
        
        
          x 
         
         
         
           t 
          
         
           − 
          
         
           1 
          
         
        
       
         , 
        
       
         ∇ 
        
        
        
          x 
         
        
          t 
         
        
       
         log 
        
       
          
        
       
         p 
        
       
         ( 
        
        
        
          x 
         
        
          t 
         
        
       
         ∣ 
        
       
         c 
        
       
         ) 
        
       
         , 
        
       
         ∇ 
        
        
        
          x 
         
        
          t 
         
        
       
         log 
        
       
          
        
       
         p 
        
       
         ( 
        
       
         c 
        
       
         ∣ 
        
        
        
          x 
         
        
          t 
         
        
       
         ) 
        
       
      
        x_{t-1},\nabla \mathbf{x}_t \log p(\mathbf{x}_t | \mathbf{c}) ,\nabla \mathbf{x}_t \log p(\mathbf{c} | \mathbf{x}_t) 
       
      
    xt−1,∇xtlogp(xt∣c),∇xtlogp(c∣xt),我们可以总结出条件采样公式:
  
      
       
        
         
         
           x 
          
          
          
            t 
           
          
            − 
           
          
            1 
           
          
         
        
          = 
         
         
         
           m 
          
         
           t 
          
         
        
          − 
         
         
         
           ρ 
          
         
           t 
          
         
        
          ∇ 
         
         
         
           x 
          
         
           t 
          
         
        
          E 
         
        
          ( 
         
        
          c 
         
        
          , 
         
         
         
           x 
          
         
           t 
          
         
        
          ) 
         
        
       
         \mathbf{x}_{t-1} = \mathbf{m}_t - \rho_t \nabla \mathbf{x}_t \mathcal{E}(\mathbf{c}, \mathbf{x}_t) 
        
       
     xt−1=mt−ρt∇xtE(c,xt)
 其中, 
     
      
       
        
        
          m 
         
        
          t 
         
        
       
         = 
        
       
         ( 
        
       
         1 
        
       
         + 
        
        
        
          1 
         
        
          2 
         
        
        
        
          β 
         
        
          t 
         
        
       
         ) 
        
        
        
          x 
         
        
          t 
         
        
       
         + 
        
        
        
          β 
         
        
          t 
         
        
       
         ∇ 
        
        
        
          x 
         
        
          t 
         
        
       
         log 
        
       
          
        
       
         p 
        
       
         ( 
        
        
        
          x 
         
        
          t 
         
        
       
         ) 
        
       
         + 
        
        
         
         
           β 
          
         
           t 
          
         
        
       
         ϵ 
        
       
      
        \mathbf{m}_t = (1 + \frac{1}{2} \beta_t) \mathbf{x}_t + \beta_t \nabla \mathbf{x}_t \log p(\mathbf{x}_t) + \sqrt{\beta_t} \boldsymbol{\epsilon} 
       
      
    mt=(1+21βt)xt+βt∇xtlogp(xt)+βtϵ, 
     
      
       
        
        
          ρ 
         
        
          t 
         
        
       
      
        \rho_t 
       
      
    ρt是一个尺度因子,可以看做是修正正向的学习率。总结出来的这个 
     
      
       
        
        
          x 
         
         
         
           t 
          
         
           − 
          
         
           1 
          
         
        
       
      
        x_{t-1} 
       
      
    xt−1是条件扩散模型的通用公式,允许使用不同的能量函数。
5 提出方法
该部分总共包含4个小部分:
- 我们使用与时间无关的距离测量函数来近似与时间有关的能量函数,从而实现无需训练且灵活的条件扩散模型。
 - 分析能量引导在大数据域中失效的原因,并提出时间旅行策略的高效版本。
 - 描述构建能量函数的具体细节。
 - 提供支持条件的具体示例。
 
5.1 近似时间相关能量
  我们使用能量函数来引导生成,因为它构建灵活并适用于各种条件。现有的基于分类器的一些方法选择时间相关的距离测量函数 
     
      
       
        
        
          D 
         
        
          ϕ 
         
        
       
         ( 
        
       
         c 
        
       
         , 
        
        
        
          x 
         
        
          t 
         
        
       
         , 
        
       
         t 
        
       
         ) 
        
       
      
        \mathcal{D}_{\phi}(c, x_t, t) 
       
      
    Dϕ(c,xt,t)来近似能量函数,如下所示:
  
      
       
        
        
          E 
         
        
          ( 
         
        
          c 
         
        
          , 
         
         
         
           x 
          
         
           t 
          
         
        
          ) 
         
        
          ≈ 
         
         
         
           D 
          
         
           ϕ 
          
         
        
          ( 
         
        
          c 
         
        
          , 
         
         
         
           x 
          
         
           t 
          
         
        
          , 
         
        
          t 
         
        
          ) 
         
        
       
         \mathcal{E}(c, x_t) \approx \mathcal{D}_{\phi}(c, x_t, t) 
        
       
     E(c,xt)≈Dϕ(c,xt,t)
 其中, 
     
      
       
       
         ϕ 
        
       
      
        \phi 
       
      
    ϕ表示定义的预训练参数, 
     
      
       
        
        
          D 
         
        
          ϕ 
         
        
       
         ( 
        
       
         c 
        
       
         , 
        
        
        
          x 
         
        
          t 
         
        
       
         , 
        
       
         t 
        
       
         ) 
        
       
      
        \mathcal{D}_{\phi}(c, x_t, t) 
       
      
    Dϕ(c,xt,t)计算给定条件 
     
      
       
       
         c 
        
       
      
        c 
       
      
    c和噪声中间结果 
     
      
       
        
        
          x 
         
        
          t 
         
        
       
      
        x_t 
       
      
    xt之间的距离。由于难以找到现有的预训练网络来处理噪声图像,无法直接构建噪声数据 
     
      
       
        
        
          x 
         
        
          t 
         
        
       
      
        x_t 
       
      
    xt的距离测量函数。在这种情况下,我们必须为每种类型的条件训练(或微调)一个时间相关网络。
  相比时间相关网络,干净数据 
     
      
       
        
        
          x 
         
        
          0 
         
        
       
      
        x_0 
       
      
    x0的时间不变距离测量函数广泛存在。许多现成的预训练网络(如分类网络、分割网络和面部 ID 编码网络)是开源的,并且在干净图像上表现良好。我们将这些用于干净数据的距离测量网络表示为 
     
      
       
        
        
          D 
         
        
          θ 
         
        
       
         ( 
        
       
         c 
        
       
         , 
        
        
        
          x 
         
        
          0 
         
        
       
         ) 
        
       
      
        \mathcal{D}_{\theta}(c,x_0) 
       
      
    Dθ(c,x0),其中 
     
      
       
       
         θ 
        
       
      
        \theta 
       
      
    θ表示它们的预训练参数。为了将这些网络用于能量函数,一种直接的方法是使用 
     
      
       
        
        
          D 
         
        
          θ 
         
        
       
         ( 
        
       
         c 
        
       
         , 
        
        
        
          x 
         
        
          0 
         
        
       
         ) 
        
       
      
        \mathcal{D}_{\theta}(c,x_0) 
       
      
    Dθ(c,x0)近似 
     
      
       
        
        
          D 
         
        
          ϕ 
         
        
       
         ( 
        
       
         c 
        
       
         , 
        
        
        
          x 
         
        
          t 
         
        
       
         , 
        
       
         t 
        
       
         ) 
        
       
      
        \mathcal{D}_{\phi}(c, x_t, t) 
       
      
    Dϕ(c,xt,t),公示如下:
  
      
       
        
         
         
           D 
          
         
           ϕ 
          
         
        
          ( 
         
        
          c 
         
        
          , 
         
         
         
           x 
          
         
           t 
          
         
        
          , 
         
        
          t 
         
        
          ) 
         
        
          ≈ 
         
         
         
           E 
          
          
          
            p 
           
          
            ( 
           
           
           
             x 
            
           
             0 
            
           
          
            ∣ 
           
           
           
             x 
            
           
             t 
            
           
          
            ) 
           
          
         
        
          [ 
         
         
         
           D 
          
         
           θ 
          
         
        
          ( 
         
        
          c 
         
        
          , 
         
         
         
           x 
          
         
           0 
          
         
        
          ) 
         
        
          ] 
         
        
       
         \mathcal{D}_{\phi}(c, x_t, t) \approx \mathbb{E}_{p(x_0 | x_t)}[\mathcal{D}_{\theta}(c, x_0)] 
        
       
     Dϕ(c,xt,t)≈Ep(x0∣xt)[Dθ(c,x0)]
   上面的方程是合理的,因为如果噪声图像 
     
      
       
        
        
          x 
         
        
          t 
         
        
       
      
        x_t 
       
      
    xt和条件 
     
      
       
       
         c 
        
       
      
        c 
       
      
    c之间的距离较小,则与噪声图像 
     
      
       
        
        
          x 
         
        
          t 
         
        
       
      
        x_t 
       
      
    xt对应的干净图像 
     
      
       
        
        
          x 
         
        
          0 
         
        
       
      
        x_0 
       
      
    x0与条件 
     
      
       
       
         c 
        
       
      
        c 
       
      
    c之间的距离也应该较小,尤其是在采样过程的后期,当 
     
      
       
        
        
          x 
         
        
          t 
         
        
       
      
        x_t 
       
      
    xt的噪声水平相对较小时。然而,在采样过程中,无法获得与中间噪声结果 
     
      
       
        
        
          x 
         
        
          t 
         
        
       
      
        x_t 
       
      
    xt对应的干净图像 
     
      
       
        
        
          x 
         
        
          0 
         
        
       
      
        x_0 
       
      
    x0,因此我们需要近似 
     
      
       
        
        
          x 
         
        
          0 
         
        
       
      
        x_0 
       
      
    x0。考虑 
     
      
       
       
         p 
        
       
         ( 
        
        
        
          x 
         
        
          0 
         
        
       
         ∣ 
        
        
        
          x 
         
        
          t 
         
        
       
         ) 
        
       
      
        p(x_0|x_t) 
       
      
    p(x0∣xt)的期望值:
  
      
       
        
         
         
           x 
          
          
          
            0 
           
          
            ∣ 
           
          
            t 
           
          
         
        
          : 
         
        
          = 
         
        
          E 
         
        
          [ 
         
         
         
           x 
          
         
           0 
          
         
        
          ∣ 
         
         
         
           x 
          
         
           t 
          
         
        
          ] 
         
        
          = 
         
         
         
           1 
          
          
           
            
            
              α 
             
            
              ˉ 
             
            
           
             t 
            
           
          
         
        
          ( 
         
         
         
           x 
          
         
           t 
          
         
        
          + 
         
        
          ( 
         
        
          1 
         
        
          − 
         
         
          
          
            α 
           
          
            ˉ 
           
          
         
           t 
          
         
        
          ) 
         
        
          s 
         
        
          ( 
         
         
         
           x 
          
         
           t 
          
         
        
          , 
         
        
          t 
         
        
          ) 
         
        
          ) 
         
        
       
         x_{0|t} := \mathbb{E}[x_0 | x_t] = \frac{1}{\sqrt{\bar{\alpha}_t}} (x_t + (1 - \bar{\alpha}_t) s(x_t, t)) 
        
       
     x0∣t:=E[x0∣xt]=αˉt1(xt+(1−αˉt)s(xt,t))
 其中, 
     
      
       
        
         
         
           α 
          
         
           ˉ 
          
         
        
          t 
         
        
       
         = 
        
        
        
          ∏ 
         
         
         
           i 
          
         
           = 
          
         
           1 
          
         
        
          t 
         
        
       
         ( 
        
       
         1 
        
       
         − 
        
        
        
          β 
         
        
          i 
         
        
       
         ) 
        
       
      
        \bar{\alpha}_t = \prod_{i=1}^t (1 - \beta_i) 
       
      
    αˉt=∏i=1t(1−βi), 
     
      
       
       
         s 
        
       
         ( 
        
       
         ⋅ 
        
       
         , 
        
       
         t 
        
       
         ) 
        
       
      
        s(\cdot,t) 
       
      
    s(⋅,t)是预训练的分数估计器,根据上面的公式,我们可以估计出干净的图像,记为 
     
      
       
        
        
          x 
         
         
         
           0 
          
         
           ∣ 
          
         
           t 
          
         
        
       
      
        x_{0|t} 
       
      
    x0∣t。然后,根据公式 
     
      
       
       
         E 
        
       
         ( 
        
       
         c 
        
       
         , 
        
        
        
          x 
         
        
          t 
         
        
       
         ) 
        
       
      
        \mathcal{E}(c, x_t) 
       
      
    E(c,xt)和 
     
      
       
        
        
          D 
         
        
          ϕ 
         
        
       
         ( 
        
       
         c 
        
       
         , 
        
        
        
          x 
         
        
          t 
         
        
       
         , 
        
       
         t 
        
       
         ) 
        
       
      
        \mathcal{D}_{\phi}(c, x_t, t) 
       
      
    Dϕ(c,xt,t),我们可以近似噪声数据 
     
      
       
        
        
          x 
         
        
          t 
         
        
       
      
        x_t 
       
      
    xt的时间相关函数:
  
      
       
        
        
          E 
         
        
          ( 
         
        
          c 
         
        
          , 
         
         
         
           x 
          
         
           t 
          
         
        
          ) 
         
        
          ≈ 
         
         
         
           D 
          
         
           θ 
          
         
        
          ( 
         
        
          c 
         
        
          , 
         
         
         
           x 
          
          
          
            0 
           
          
            ∣ 
           
          
            t 
           
          
         
        
          ) 
         
        
       
         \mathcal{E}(c, x_t) \approx \mathcal{D}_{\theta}(c, x_{0|t}) 
        
       
     E(c,xt)≈Dθ(c,x0∣t)
 根据上面的公式和公式 
     
      
       
        
        
          x 
         
         
         
           t 
          
         
           − 
          
         
           1 
          
         
        
       
      
        x_{t-1} 
       
      
    xt−1,近似采样处理过程可以写成:
  
      
       
        
         
         
           x 
          
          
          
            t 
           
          
            − 
           
          
            1 
           
          
         
        
          = 
         
         
         
           m 
          
         
           t 
          
         
        
          − 
         
         
         
           ρ 
          
         
           t 
          
         
         
         
           ∇ 
          
          
          
            x 
           
          
            t 
           
          
         
         
         
           D 
          
         
           θ 
          
         
        
          ( 
         
        
          c 
         
        
          , 
         
         
         
           x 
          
          
          
            0 
           
          
            ∣ 
           
          
            t 
           
          
         
        
          ( 
         
         
         
           x 
          
         
           t 
          
         
        
          ) 
         
        
          ) 
         
        
       
         x_{t-1} = m_t - \rho_t \nabla_{x_t} \mathcal{D}_{\theta}(c, x_{0|t}(x_t)) 
        
       
     xt−1=mt−ρt∇xtDθ(c,x0∣t(xt))
 具体细节可以看下面的算法1:
 
 算法1解析
- 初始化:从标准正态分布 N ( 0 , I ) \mathcal{N}(0, I) N(0,I)中采样,初始化 x T x_T xT。
 - 迭代采样:从 T T T到1进行迭代。
 - 采样噪声:如果 t > 1 t > 1 t>1,从标准正态分布 N ( 0 , I ) \mathcal{N}(0, I) N(0,I)中采样噪声 ϵ \epsilon ϵ,否则设 ϵ = 0 \epsilon=0 ϵ=0。
 - 更新 x t − 1 x_{t-1} xt−1:根据扩散模型的采样公式更新 x t − 1 x_{t-1} xt−1。
 - 估计 x 0 ∣ t x_{0|t} x0∣t:估计干净图像 x 0 ∣ t x_{0|t} x0∣t。
 - 计算梯度 g t g_t gt:计算条件 c c c和估计的干净图像 x 0 ∣ t x_{0|t} x0∣t之间的距离测量函数的梯度 g t g_t gt。
 - 更新 x t − 1 x_{t-1} xt−1:根据梯度 g t g_t gt和学习率 ρ t \rho_t ρt,调整 x t − 1 x_{t-1} xt−1。
 - 返回结果:返回最终的生成图像 x 0 x_0 x0。
 
5.2 有效的时间旅行策略
  在应用算法1的时候,作者发现对于不同的数据集,性能表现差异较大。对于比较小的数据域,如人脸,算法1能在100 个DDIM采样步骤内有效地产生满足给定条件的结果。然而,对于大数据域(如 ImageNet),经常得到与给定条件不密切相关甚至随机生成的结果(如下图(a)所示)。作者将算法1在大数据域上失败的原因归结为指导不足。指导不足的原因是扩散模型在大数据域中的无条件得分方向有更多的自由度,使其更容易偏离条件控制的方向。为了解决这个问题,作者引入了时间旅行策略,该策略在解决困难生成任务时已被经验性地证明可以抑制生成不和谐的结果。
 
   时间旅行策略是一种将当前中间结果 
     
      
       
        
        
          x 
         
        
          t 
         
        
       
      
        x_t 
       
      
    xt往回推 
     
      
       
       
         j 
        
       
      
        j 
       
      
    j步到 
     
      
       
        
        
          x 
         
         
         
           t 
          
         
           + 
          
         
           j 
          
         
        
       
      
        x_{t+j} 
       
      
    xt+j并重新采样到第 
     
      
       
        
        
          x 
         
        
          t 
         
        
       
      
        x_t 
       
      
    xt步的技术。这种策略在采样过程中插入更多的采样步骤,并优化生成的结果。在本文的实验中,作者每次向后推 
     
      
       
       
         j 
        
       
         = 
        
       
         1 
        
       
      
        j = 1 
       
      
    j=1步并重新采样。在第 
     
      
       
       
         t 
        
       
      
        t 
       
      
    t步时,重复这个重新采样过程 
     
      
       
        
        
          r 
         
        
          t 
         
        
       
      
        r_t 
       
      
    rt次。实验表明,时间旅行策略在解决指导不足问题上是有效的(如上图 2(b) 所示)。然而,时间成本也很高,因为采样步骤的数量增加了,特别是考虑到每个时间步都包括计算能量函数梯度的成本。
  幸运的是,作者发现时间旅行策略在每个时间步中的效果并不相同。实际上,在大多数时间步中使用这种技术不会显著修改最终结果,这意味着可以仅在少数时间步中使用这种策略,从而显著减少额外迭代步骤的数量。在下图中,作者通过将采样过程分为三个阶段来分析这种现象。在早期阶段,即混乱阶段,生成的结果 
     
      
       
        
        
          x 
         
         
         
           0 
          
         
           ∣ 
          
         
           t 
          
         
        
       
      
        x_{0|t} 
       
      
    x0∣t极其模糊,能量指导难以产生任何合理的结果,所以不需要采用时间旅行策略。在后期阶段,即细化阶段,生成结果的变化很小,所以时间旅行策略没有什么用。在中间阶段,即语义阶段,生成的结果变化显著,所以这个阶段对于条件生成至关重要。基于这一观察,作者仅在语义阶段应用时间旅行策略,以实现高效采样,同时解决指导不足的问题。语义阶段的范围是一个实验性的选择,取决于选择的具体扩散模型。作者提出的包含高效时间旅行策略的FreeDoM的详细算法在算法2中展示,其中 
     
      
       
        
        
          r 
         
        
          t 
         
        
       
         = 
        
       
         1 
        
       
      
        r_t = 1 
       
      
    rt=1 意味着在第 
     
      
       
       
         t 
        
       
      
        t 
       
      
    t步不应用时间旅行策略。
 
 算法2解析
- 初始化:从标准正态分布 N ( 0 , I ) \mathcal{N}(0, I) N(0,I)中采样,初始化 x T x_T xT。
 - 迭代采样:从 T T T到1进行迭代。
 - 时间旅行策略:在每个时间步 t t t,进行 r t r_t rt 次时间旅行。
 - 采样噪声:如果 t > 1 t > 1 t>1,从标准正态分布 N ( 0 , I ) \mathcal{N}(0, I) N(0,I)中采样噪声 ϵ 1 \epsilon_1 ϵ1,否则设 ϵ 1 = 0 \epsilon_1=0 ϵ1=0。
 - 更新 x t − 1 x_{t-1} xt−1:根据扩散模型的采样公式更新 x t − 1 x_{t-1} xt−1。
 - 估计 x 0 ∣ t x_{0|t} x0∣t:估计干净图像 x 0 ∣ t x_{0|t} x0∣t。
 - 计算梯度 g t g_t gt:计算条件 c c c和估计的干净图像 x 0 ∣ t x_{0|t} x0∣t之间的距离测量函数的梯度 g t g_t gt。
 - 更新 x t − 1 x_{t-1} xt−1:根据梯度 g t g_t gt和学习率 ρ t \rho_t ρt,调整 x t − 1 x_{t-1} xt−1。
 - 时间旅行重新采样:如果 i > 1 i > 1 i>1(即还需要更多次时间旅行),从标准正态分布 N ( 0 , I ) \mathcal{N}(0, I) N(0,I)中采样噪声 ϵ 2 \epsilon_2 ϵ2,并根据时间旅行策略重新采样 x t x_t xt。
 - 返回结果:返回最终的生成图像 x 0 x_0 x0。
 
5.3 能量函数构造
5.3.1 单一条件引导
  为了在特定应用中融入提出的算法,作者使用符合以下结构的距离测量函数来构建能量函数:
  
      
       
        
        
          E 
         
        
          ( 
         
        
          c 
         
        
          , 
         
         
         
           x 
          
         
           t 
          
         
        
          ) 
         
        
          ≈ 
         
         
         
           D 
          
         
           θ 
          
         
        
          ( 
         
        
          c 
         
        
          , 
         
         
         
           x 
          
          
          
            0 
           
          
            ∣ 
           
          
            t 
           
          
         
        
          ) 
         
        
          = 
         
        
          Dist 
         
        
          ( 
         
         
         
           P 
          
          
          
            θ 
           
          
            1 
           
          
         
        
          ( 
         
        
          c 
         
        
          ) 
         
        
          , 
         
         
         
           P 
          
          
          
            θ 
           
          
            2 
           
          
         
        
          ( 
         
         
         
           x 
          
          
          
            0 
           
          
            ∣ 
           
          
            t 
           
          
         
        
          ) 
         
        
          ) 
         
        
       
         \mathcal{E}(\mathbf{c}, \mathbf{x}_t) \approx \mathcal{D}_{\boldsymbol{\theta}}(\mathbf{c}, \mathbf{x}_{0|t}) = \text{Dist}(\mathcal{P}_{\boldsymbol{\theta}1}(\mathbf{c}), \mathcal{P}_{\boldsymbol{\theta}2}(\mathbf{x}_{0|t})) 
        
       
     E(c,xt)≈Dθ(c,x0∣t)=Dist(Pθ1(c),Pθ2(x0∣t))
 其中, 
     
      
       
       
         D 
        
       
         i 
        
       
         s 
        
       
         t 
        
       
         ( 
        
       
         ⋅ 
        
       
         ) 
        
       
      
        Dist(\cdot) 
       
      
    Dist(⋅) 表示距离测量方法,如欧几里得距离, 
     
      
       
       
         θ 
        
       
         = 
        
       
         { 
        
        
        
          θ 
         
        
          1 
         
        
       
         , 
        
        
        
          θ 
         
        
          2 
         
        
       
         } 
        
       
      
        \theta = \{\theta_1, \theta_2\} 
       
      
    θ={θ1,θ2}。 
     
      
       
       
         P 
        
        
        
          θ 
         
        
          1 
         
        
       
         ( 
        
       
         ⋅ 
        
       
         ) 
        
       
      
        \mathcal{P}{\boldsymbol{\theta}1}(·) 
       
      
    Pθ1(⋅) 和  
     
      
       
       
         P 
        
        
        
          θ 
         
        
          2 
         
        
       
         ( 
        
       
         ⋅ 
        
       
         ) 
        
       
      
        \mathcal{P}{\boldsymbol{\theta}2}(·) 
       
      
    Pθ2(⋅) 将条件和图像投射到同一空间进行距离测量。这些投射网络可以是预训练的分类网络、分割网络等。在大多数情况下,我们只需要一个网络将干净图像  
     
      
       
        
        
          x 
         
         
         
           0 
          
         
           ∣ 
          
         
           t 
          
         
        
       
      
        x_{0|t} 
       
      
    x0∣t 投射到条件空间。在有参考图像  
     
      
       
        
        
          x 
         
        
          ref 
         
        
       
      
        x_{\text{ref}} 
       
      
    xref 的情况下,我们也只需要一个特征编码器将参考图像  
     
      
       
        
        
          x 
         
        
          ref 
         
        
       
      
        x_{\text{ref}} 
       
      
    xref 和  
     
      
       
        
        
          x 
         
         
         
           0 
          
         
           ∣ 
          
         
           t 
          
         
        
       
      
        x_{0|t} 
       
      
    x0∣t 投射到相同的特征空间。
5.3.2 多条件引导
  在一些更复杂的应用中,可以有多个条件来控制生成的结果。以图像风格传递任务为例。这里,我们有两个条件:来自源图像的结构信息和来自样式图像的样式信息。在这些多条件情况下,假设给定的条件表示为  
     
      
       
       
         { 
        
        
        
          c 
         
        
          1 
         
        
       
         , 
        
       
         ⋯ 
         
       
         , 
        
        
        
          c 
         
        
          n 
         
        
       
         } 
        
       
      
        \{c_1, \cdots, c_n\} 
       
      
    {c1,⋯,cn},我们可以近似构建能量函数为:
  
      
       
        
         
          
          
           
           
             E 
            
           
             ( 
            
           
             { 
            
            
            
              c 
             
            
              1 
             
            
           
             , 
            
           
             ⋯ 
             
           
             , 
            
            
            
              c 
             
            
              n 
             
            
           
             } 
            
           
             , 
            
            
            
              x 
             
            
              t 
             
            
           
             ) 
            
           
             ≈ 
            
            
            
              η 
             
            
              1 
             
            
            
            
              D 
             
             
             
               θ 
              
             
               1 
              
             
            
           
             ( 
            
            
            
              c 
             
            
              1 
             
            
           
             , 
            
            
            
              x 
             
             
             
               0 
              
             
               ∣ 
              
             
               t 
              
             
            
           
             ) 
            
           
             + 
            
           
             ⋯ 
            
           
             + 
            
            
            
              η 
             
            
              n 
             
            
            
            
              D 
             
             
             
               θ 
              
             
               n 
              
             
            
           
             ( 
            
            
            
              c 
             
            
              n 
             
            
           
             , 
            
            
            
              x 
             
             
             
               0 
              
             
               ∣ 
              
             
               t 
              
             
            
           
             ) 
            
           
          
          
          
          
            (12) 
           
          
         
        
       
         \mathcal{E}(\{\mathbf{c}_1, \cdots, \mathbf{c}_n\}, \mathbf{x}_t) \approx \eta_1\mathcal{D}_{\boldsymbol{\theta}1}(\mathbf{c}_1, \mathbf{x}_{0|t}) + \cdots + \eta_n\mathcal{D}_{\boldsymbol{\theta}n}(\mathbf{c}_n, \mathbf{x}_{0|t}) \tag{12} 
        
       
     E({c1,⋯,cn},xt)≈η1Dθ1(c1,x0∣t)+⋯+ηnDθn(cn,x0∣t)(12)
 其中, 
     
      
       
        
        
          η 
         
        
          i 
         
        
       
      
        \eta_i 
       
      
    ηi 是权重因子。作者为特定条件使用不同的距离测量函数  
     
      
       
       
         { 
        
        
        
          D 
         
         
         
           θ 
          
         
           1 
          
         
        
       
         ( 
        
       
         ⋅ 
        
       
         , 
        
       
         ⋅ 
        
       
         ) 
        
       
         , 
        
       
         ⋯ 
         
       
         , 
        
        
        
          D 
         
         
         
           θ 
          
         
           n 
          
         
        
       
         ( 
        
       
         ⋅ 
        
       
         , 
        
       
         ⋅ 
        
       
         ) 
        
       
         } 
        
       
      
        \{\mathcal{D}_{\boldsymbol{\theta}1}(·, ·), \cdots, \mathcal{D}_{\boldsymbol{\theta}n}(·, ·)\} 
       
      
    {Dθ1(⋅,⋅),⋯,Dθn(⋅,⋅)},并将其总和用于梯度计算。
5.3.3 潜在扩散的引导
  作者说他提出的方法不仅适用于图像扩散,也适用于潜在扩散,例如Stable Diffusion。在这种情况下,中间结果  
     
      
       
        
        
          x 
         
        
          t 
         
        
       
      
        x_t 
       
      
    xt 是潜在编码而不是图像。作者提出可以使用潜在解码器将生成的潜在编码投射到图像,然后在图像域中使用相同的算法。
5.4 具体例子
5.4.1 文本
  对于给定的文本提示,基于CLIP构建距离测量函数。具体来说,使用CLIP图像编码器(作为 
     
      
       
        
        
          P 
         
         
         
           θ 
          
         
           2 
          
         
        
       
         ( 
        
       
         ⋅ 
        
       
         ) 
        
       
      
        \mathcal{P_{\theta_2}(\cdot)} 
       
      
    Pθ2(⋅))和CLIP文本编码器(作为 
     
      
       
        
        
          P 
         
         
         
           θ 
          
         
           2 
          
         
        
       
         ( 
        
       
         ⋅ 
        
       
         ) 
        
       
      
        \mathcal{P_{\theta_2}(\cdot)} 
       
      
    Pθ2(⋅))将图像 
     
      
       
        
        
          x 
         
         
         
           0 
          
         
           ∣ 
          
         
           t 
          
         
        
       
      
        x_{0|t} 
       
      
    x0∣t和给定的文本投射到相同的CLIP特征空间。与常用的余弦距离测量相比,为简便起见,我们选择了 
     
      
       
        
        
          ℓ 
         
        
          2 
         
        
       
      
        \ell_{2} 
       
      
    ℓ2欧几里得距离测量,因为实验中采样质量没有显著差异。
5.4.2 分割图
  对于分割图,我们选择基于实时语义分割网络BiSeNet的人脸解析网络来生成输入人脸的解析图,并直接计算给定解析图与 
     
      
       
        
        
          x 
         
         
         
           0 
          
         
           ∣ 
          
         
           t 
          
         
        
       
      
        x_{0|t} 
       
      
    x0∣t解析结果之间的 
     
      
       
        
        
          ℓ 
         
        
          2 
         
        
       
      
        \ell_2 
       
      
    ℓ2欧几里得距离。人脸解析网络的一个有趣用法是约束梯度更新区域,这样我们可以编辑目标语义区域而不改变其他区域(如下图所示)
 
5.4.3 素描
我们选择一个开源的预训练网络,它将给定的动画图像转换为手绘素描风格。实验证明,该网络对真实世界图像仍然有效。我们使用 ℓ 2 \ell_2 ℓ2欧几里得距离来比较给定的素描与 x 0 ∣ t x_{0|t} x0∣t的转换素描风格结果。
5.4.4 关键点检测
我们使用一个开源的预训练人脸关键点检测网络。该检测网络有两个阶段:第一阶段找到人脸中心位置,第二阶段标记该检测到的人脸的关键点。我们计算 x 0 ∣ t x_{0|t} x0∣t预测的人脸关键点与给定的关键点条件之间的 ℓ 2 \ell_2 ℓ2欧几里得距离,并仅在第一阶段检测到的人脸区域使用梯度更新中间结果。
5.4.5 Face IDs
  我们使用一个开源的预训练人脸识别网络ArcFace提取参考人脸的目标特征以表示人脸ID,并计算 
     
      
       
        
        
          x 
         
         
         
           0 
          
         
           ∣ 
          
         
           t 
          
         
        
       
      
        x_{0|t} 
       
      
    x0∣t提取的ID特征与参考图像的ID特征之间的 
     
      
       
        
        
          ℓ 
         
        
          2 
         
        
       
      
        \ell_2 
       
      
    ℓ2欧几里得距离。
5.4.6 风格图像
  风格图像表示为 
     
      
       
        
        
          x 
         
         
         
           s 
          
         
           t 
          
         
           y 
          
         
           l 
          
         
           e 
          
         
        
       
      
        x_{style} 
       
      
    xstyle 。我们使用以下公式计算 
     
      
       
        
        
          x 
         
         
         
           s 
          
         
           t 
          
         
           y 
          
         
           l 
          
         
           e 
          
         
        
       
      
        x_{style} 
       
      
    xstyle和 
     
      
       
        
        
          x 
         
         
         
           0 
          
         
           ∣ 
          
         
           t 
          
         
        
       
      
        x_{0|t} 
       
      
    x0∣t之间的风格信息距离:
  
      
       
        
        
          Dist 
         
        
          ( 
         
         
         
           x 
          
         
           style 
          
         
        
          , 
         
         
         
           x 
          
          
          
            0 
           
          
            ∣ 
           
          
            t 
           
          
         
        
          ) 
         
        
          = 
         
        
          ∣ 
         
        
          ∣ 
         
        
          G 
         
        
          ( 
         
         
         
           x 
          
         
           style 
          
         
         
         
           ) 
          
         
           j 
          
         
        
          − 
         
        
          G 
         
        
          ( 
         
         
         
           x 
          
          
          
            0 
           
          
            ∣ 
           
          
            t 
           
          
         
         
         
           ) 
          
         
           j 
          
         
        
          ∣ 
         
         
         
           ∣ 
          
         
           F 
          
         
           2 
          
         
        
          , 
         
        
       
         \text{Dist}(\mathbf{x}_{\text{style}}, \mathbf{x}_{0|t}) = ||G(\mathbf{x}_{\text{style}})_j - G(\mathbf{x}_{0|t})_j||_F^2, 
        
       
     Dist(xstyle,x0∣t)=∣∣G(xstyle)j−G(x0∣t)j∣∣F2,
 其中, 
     
      
       
       
         G 
        
       
         ( 
        
       
         ⋅ 
        
       
         ) 
        
       
      
        G(\cdot) 
       
      
    G(⋅)表示图像编码器第 
     
      
       
       
         j 
        
       
      
        j 
       
      
    j层特征图的Gram矩阵,在实验中,我们选择CLIP图像编码器第三层的特征来生成满意的结果。
5.4.7 低通滤波器
  对于图像传输任务,我们需要一个能约束生成结果符合源图像 
     
      
       
        
        
          x 
         
         
         
           s 
          
         
           o 
          
         
           r 
          
         
           c 
          
         
           e 
          
         
        
       
      
        x_{sorce} 
       
      
    xsorce结构信息的能量函数。类似于EGSDE和ILVR,我们在这个设置中选择了一个低通滤波器 
     
      
       
       
         K 
        
       
         ( 
        
       
         ⋅ 
        
       
         ) 
        
       
      
        \mathcal{K}(\cdot) 
       
      
    K(⋅)。源图像 
     
      
       
        
        
          x 
         
         
         
           s 
          
         
           o 
          
         
           r 
          
         
           c 
          
         
           e 
          
         
        
       
      
        x_{sorce} 
       
      
    xsorce和 
     
      
       
        
        
          x 
         
         
         
           0 
          
         
           ∣ 
          
         
           t 
          
         
        
       
      
        x_{0|t} 
       
      
    x0∣t之间的距离计算如下:
  
      
       
        
        
          Dist 
         
        
          ( 
         
         
         
           x 
          
         
           source 
          
         
        
          , 
         
         
         
           x 
          
          
          
            0 
           
          
            ∣ 
           
          
            t 
           
          
         
        
          ) 
         
        
          = 
         
        
          ∣ 
         
        
          ∣ 
         
        
          K 
         
        
          ( 
         
         
         
           x 
          
         
           source 
          
         
        
          ) 
         
        
          − 
         
        
          K 
         
        
          ( 
         
         
         
           x 
          
          
          
            0 
           
          
            ∣ 
           
          
            t 
           
          
         
        
          ) 
         
        
          ∣ 
         
         
         
           ∣ 
          
         
           2 
          
         
           2 
          
         
        
          . 
         
        
       
         \text{Dist}(\mathbf{x}_{\text{source}}, \mathbf{x}_{0|t}) = ||\mathcal{K}(\mathbf{x}_{\text{source}}) - \mathcal{K}(\mathbf{x}_{0|t})||_2^2. 
        
       
     Dist(xsource,x0∣t)=∣∣K(xsource)−K(x0∣t)∣∣22.
6 实验
6.1 实施细节
  作者提出的方法适用于许多开源的预训练扩散模型(DMs)。在的实验中,尝试了以下模型和条件:
- 无条件人脸扩散模型:
 
支持的图像分辨率:
256×256
预训练数据集:CelebA-HQ
实验条件:包括文本、解析图、草图、标志点和人脸ID
- 无条件ImageNet扩散模型:
 
支持的图像分辨率:
256×256
预训练数据集:ImageNet
实验条件:包括文本和风格图像
- 基于分类器的ImageNet扩散模型:
 
支持的图像分辨率:
256×256
预训练数据集:ImageNet
特点:带有时间依赖的分类器指导生成过程。
实验条件:风格图像
- Stable Diffusion:
 
模型类型:潜在扩散模型
标准输出图像分辨率:512×512(支持更高分辨率)
特点:文本到图像模型
实验条件:风格图像
- ControlNet [49]:
 
模型基础:基于
Stable Diffusion,支持额外条件输入和原始文本输入。
使用的预训练模型:姿势到图像和涂鸦到图像模型
实验条件:包括人脸ID和风格图像。
7 性能表现
7.1 单一条件
- 人脸数据

 - ImageNet数据

 
7.2 多条件

7.3 潜在域免训引导

   以上就是对本篇论文的解读,如有任何问题欢迎留言,批评指正!



















