20. TiNO-Edit: Timestep and Noise Optimization for Robust Diffusion-Based Image Editing
  该文通过对扩散模型中添加噪声的时刻 
     
      
       
        
        
          t 
         
        
          k 
         
        
       
      
        t_k 
       
      
    tk和噪声 
     
      
       
       
         N 
        
       
      
        N 
       
      
    N进行优化,提升SD等文生图模型的图像编辑效果。作者指出现有的方法为了提升文生图模型的图像编辑质量,通常是引入更多的条件信息,如编辑指令(InstructPix2Pix)、边缘图、分割图(ControlNet)等。而较少有人关注扩散模型中的两个关键超参数,时刻 
     
      
       
        
        
          t 
         
        
          k 
         
        
       
      
        t_k 
       
      
    tk和噪声 
     
      
       
       
         N 
        
       
      
        N 
       
      
    N,对于编辑效果的影响。因此,作者专门探索了这两个参数对于编辑效果的影响,并且提出一种自动寻找最优参数的优化方法。
 
   如上图所示,当把一个猫的图片和一个“a photo of dog”的文本描述输入到SD模型中进行Img2Img的转换时,扩散过程的最终时刻 
     
      
       
       
         T 
        
       
      
        T 
       
      
    T(每一列代表一个T)和随机噪声 
     
      
       
       
         N 
        
       
      
        N 
       
      
    N(每一行代表一种N)的选择都会对转换结果产生显著影响。具体而言,随着扩散过程不断的增长,最终生成的结果会越来越接近文本提示的目标结果,而与原本输入的图像越来越无关,这一洞见在SDEdit这篇论文中也有提及。而选择不同的随机噪声,则会生成完全不同的结果。
   基于上述的观察结果,不同于直接找到一个适用于所有情况的最优的 
     
      
       
       
         T 
        
       
      
        T 
       
      
    T和 
     
      
       
       
         N 
        
       
      
        N 
       
      
    N,TiNO-Edit的目的是实现 
     
      
       
       
         T 
        
       
      
        T 
       
      
    T和 
     
      
       
       
         N 
        
       
      
        N 
       
      
    N相关参数优化过程的自动化。具体而言,就是现有方法都是预先给定相关的参数,然后对每个样本的扩散和生成过程都采用相同的参数。而TiNO-Edit是在每个样本的扩散和生成过程中都加入了一个优化过程,能够自动地寻找最优的时间和噪声参数,使输出的结果达到最佳,可以理解为一个参数自适应的操作。
   在实现过程中,作者并不是直接对扩散过程的最终时刻 
     
      
       
       
         T 
        
       
      
        T 
       
      
    T进行优化,而是对每次加入噪声的时刻 
     
      
       
        
        
          t 
         
        
          k 
         
        
       
         = 
        
       
         k 
        
        
        
          T 
         
        
          K 
         
        
       
         , 
        
       
         k 
        
       
         ∈ 
        
       
         [ 
        
       
         1 
        
       
         , 
        
       
         K 
        
       
         ] 
        
       
      
        t_k=k\frac{T}{K},k\in[1,K] 
       
      
    tk=kKT,k∈[1,K]进行优化。其中 
     
      
       
       
         T 
        
       
         ∈ 
        
       
         [ 
        
       
         0 
        
       
         , 
        
       
         1 
        
       
         ] 
        
       
      
        T\in[0,1] 
       
      
    T∈[0,1]表示最终时刻, 
     
      
       
       
         K 
        
       
      
        K 
       
      
    K相当于把时刻 
     
      
       
       
         [ 
        
       
         0 
        
       
         , 
        
       
         T 
        
       
         ] 
        
       
      
        [0,T] 
       
      
    [0,T]离散为 
     
      
       
       
         K 
        
       
      
        K 
       
      
    K个时间点,从中随机选取第 
     
      
       
       
         k 
        
       
      
        k 
       
      
    k个时间点 
     
      
       
        
        
          t 
         
        
          k 
         
        
       
      
        t_k 
       
      
    tk作为添加噪声的时刻。此外还对初始化的随机噪声 
     
      
       
       
         N 
        
       
         ∼ 
        
       
         N 
        
       
         ( 
        
       
         0 
        
       
         , 
        
       
         I 
        
       
         ) 
        
       
      
        N\sim \mathcal{N}(0,I) 
       
      
    N∼N(0,I)进行优化。优化过程如下图所示
 
   输入信息包括:原始输入图像 
     
      
       
       
         I 
        
       
      
        I 
       
      
    I, 原始输入图像的文字描述 
     
      
       
       
         p 
        
       
      
        p 
       
      
    p,目标提示 
     
      
       
        
        
          p 
         
        
          O 
         
        
       
      
        p_O 
       
      
    pO和其他输入 
     
      
       
       
         A 
        
       
         = 
        
       
         { 
        
        
        
          I 
         
        
          ∗ 
         
        
        
        
          M 
         
        
          a 
         
        
       
         , 
        
       
         ∗ 
        
       
         ∈ 
        
       
         { 
        
       
         r 
        
       
         , 
        
       
         s 
        
       
         , 
        
       
         c 
        
       
         } 
        
       
         } 
        
       
      
        \mathcal{A}=\{I_*M_a,*\in\{r,s,c\}\} 
       
      
    A={I∗Ma,∗∈{r,s,c}}, 
     
      
       
        
        
          M 
         
        
          a 
         
        
       
      
        M_a 
       
      
    Ma表示添加物体的掩码, 
     
      
       
        
        
          I 
         
        
          r 
         
        
       
      
        I_r 
       
      
    Ir表示图像编辑的参考引导图像, 
     
      
       
        
        
          I 
         
        
          s 
         
        
       
      
        I_s 
       
      
    Is表示涂鸦引导图像, 
     
      
       
        
        
          I 
         
        
          c 
         
        
       
      
        I_c 
       
      
    Ic表示图像组成(Image Composition)。然后,对 
     
      
       
       
         K 
        
       
      
        K 
       
      
    K, 
     
      
       
       
         T 
        
       
      
        T 
       
      
    T, 
     
      
       
        
        
          t 
         
        
          k 
         
        
       
      
        t_k 
       
      
    tk和 
     
      
       
       
         N 
        
       
      
        N 
       
      
    N等参数进行初始化,由于TiNO-Edit是对SD这类潜在的扩散模型进行优化,因此需要将输入图像 
     
      
       
       
         I 
        
       
      
        I 
       
      
    I先经过一个变分自动编码器 
     
      
       
        
         
         
           V 
          
         
           A 
          
         
           E 
          
         
         
         
           e 
          
         
           n 
          
         
           c 
          
         
        
       
      
        {VAE}_{enc} 
       
      
    VAEenc映射到潜在空间中,得到潜在特征 
     
      
       
       
         L 
        
       
      
        L 
       
      
    L。 
     
      
       
       
         M 
        
       
         S 
        
       
         K 
        
       
      
        MSK 
       
      
    MSK表示一种掩码操作,是根据编辑任务只对图像中需要编辑的位置进行掩码,而保持其他位置不变。 
     
      
       
       
         W 
        
       
      
        W 
       
      
    W表示参数优化迭代的次数, 
     
      
       
       
         F 
        
       
         D 
        
       
      
        FD 
       
      
    FD表示前向扩散过程, 
     
      
       
       
         R 
        
       
         D 
        
       
      
        RD 
       
      
    RD表示反向采样过程。在每次迭代过程中,都要完成一次完整的扩散和采样过程,并根据目标函数 
     
      
       
        
        
          L 
         
         
         
           t 
          
         
           o 
          
         
           t 
          
         
           a 
          
         
           l 
          
         
        
       
      
        \mathcal{L}_{total} 
       
      
    Ltotal对 
     
      
       
        
        
          t 
         
        
          k 
         
        
       
      
        t_k 
       
      
    tk和 
     
      
       
       
         N 
        
       
      
        N 
       
      
    N进行优化,最终将最优的采样结果 
     
      
       
        
         
         
           L 
          
         
           ~ 
          
         
        
          0 
         
        
       
      
        \tilde{L}_0 
       
      
    L~0进行解码得到目标图像。
   目标函数 
     
      
       
        
        
          L 
         
         
         
           t 
          
         
           o 
          
         
           t 
          
         
           a 
          
         
           l 
          
         
        
       
      
        \mathcal{L}_{total} 
       
      
    Ltotal计算方式如下 
      
       
        
         
          
           
            
             
             
               L 
              
             
               total  
              
             
             
             
               ( 
              
             
               L 
              
             
               , 
              
              
               
               
                 L 
                
               
                 ~ 
                
               
              
                0 
               
              
             
               , 
              
              
              
                p 
               
              
                O 
               
              
             
               , 
              
             
               p 
              
             
               , 
              
             
               A 
              
             
               ) 
              
             
            
           
          
         
         
          
           
            
            
              = 
             
             
             
               λ 
              
             
               sem  
              
             
            
              ⋅ 
             
             
             
               L 
              
             
               sem  
              
             
             
             
               ( 
              
             
               L 
              
             
               , 
              
              
               
               
                 L 
                
               
                 ~ 
                
               
              
                0 
               
              
             
               , 
              
              
              
                p 
               
              
                O 
               
              
             
               , 
              
             
               p 
              
             
               ) 
              
             
            
           
          
         
         
          
           
            
            
              + 
             
             
             
               λ 
              
             
               ref  
              
             
            
              ⋅ 
             
             
             
               L 
              
             
               ref  
              
             
             
             
               ( 
              
             
               L 
              
             
               , 
              
              
              
                L 
               
              
                r 
               
              
             
               ) 
              
             
            
           
          
         
         
          
           
            
            
              + 
             
             
             
               λ 
              
             
               perc  
              
             
            
              ⋅ 
             
             
             
               L 
              
             
               perc  
              
             
             
             
               ( 
              
             
               L 
              
             
               , 
              
              
               
               
                 L 
                
               
                 ~ 
                
               
              
                0 
               
              
             
               ) 
              
             
            
              , 
             
            
           
          
         
        
       
         \begin{array}{l} \mathcal{L}_{\text {total }}\left(L, \tilde{L}_{0}, p_{O}, p, \mathcal{A}\right) \\ =\lambda_{\text {sem }} \cdot \mathcal{L}_{\text {sem }}\left(L, \tilde{L}_{0}, p_{O}, p\right) \\ +\lambda_{\text {ref }} \cdot \mathcal{L}_{\text {ref }}\left(L, L_{r}\right) \\ +\lambda_{\text {perc }} \cdot \mathcal{L}_{\text {perc }}\left(L, \tilde{L}_{0}\right), \end{array} 
        
       
     Ltotal (L,L~0,pO,p,A)=λsem ⋅Lsem (L,L~0,pO,p)+λref ⋅Lref (L,Lr)+λperc ⋅Lperc (L,L~0),其中, 
     
      
       
        
        
          L 
         
        
          sem  
         
        
       
      
        \mathcal{L}_{\text {sem }} 
       
      
    Lsem 表示语义损失,计算方法为 
      
       
        
         
          
           
            
           
          
          
           
            
             
             
             
               L 
              
             
               sem  
              
             
             
             
               ( 
              
             
               L 
              
             
               , 
              
              
               
               
                 L 
                
               
                 ~ 
                
               
              
                0 
               
              
             
               , 
              
              
              
                p 
               
              
                O 
               
              
             
               , 
              
             
               p 
              
             
               ) 
              
             
            
           
          
         
         
          
           
           
             = 
            
           
          
          
           
            
             
            
              cos 
             
            
               
             
             
             
               ( 
              
              
               
               
                 LatentCLIP 
                
               
                  
                
               
              
                vis  
               
              
             
               ( 
              
             
               L 
              
             
               ) 
              
             
               , 
              
              
               
               
                 LatentCLIP 
                
               
                  
                
               
              
                vis  
               
              
              
              
                ( 
               
               
                
                
                  L 
                 
                
                  ~ 
                 
                
               
                 0 
                
               
              
                ) 
               
              
             
               ) 
              
             
            
           
          
         
         
          
           
            
           
          
          
           
            
             
            
              − 
             
            
              cos 
             
            
               
             
             
             
               ( 
              
              
               
               
                 CLIP 
                
               
                  
                
               
              
                text  
               
              
              
              
                ( 
               
               
               
                 p 
                
               
                 O 
                
               
              
                ) 
               
              
             
               , 
              
              
               
               
                 CLIP 
                
               
                  
                
               
              
                text  
               
              
             
               ( 
              
             
               p 
              
             
               ) 
              
             
               ) 
              
             
            
              , 
             
            
           
          
         
        
       
         \begin{aligned} & \mathcal{L}_{\text {sem }}\left(L, \tilde{L}_{0}, p_{O}, p\right) \\ = & \cos \left(\operatorname{LatentCLIP}_{\text {vis }}(L), \operatorname{LatentCLIP}_{\text {vis }}\left(\tilde{L}_{0}\right)\right) \\ & -\cos \left(\operatorname{CLIP}_{\text {text }}\left(p_{O}\right), \operatorname{CLIP}_{\text {text }}(p)\right), \end{aligned} 
        
       
     =Lsem (L,L~0,pO,p)cos(LatentCLIPvis (L),LatentCLIPvis (L~0))−cos(CLIPtext (pO),CLIPtext (p)), 
     
      
       
        
         
         
           LatentCLIP 
          
         
            
          
         
        
          vis  
         
        
       
      
        \operatorname{LatentCLIP}_{\text {vis }} 
       
      
    LatentCLIPvis 是一种视觉编码器,根据输入的潜在特征 
     
      
       
       
         L 
        
       
      
        L 
       
      
    L,输出与原始图像 
     
      
       
       
         I 
        
       
      
        I 
       
      
    I的CLIP特征 
     
      
       
       
         CLIP 
        
       
         ( 
        
       
         I 
        
       
         ) 
        
       
      
        \text{CLIP}(I) 
       
      
    CLIP(I)相似的特征。说白了就是原本的CLIP模型是直接对图像 
     
      
       
       
         I 
        
       
      
        I 
       
      
    I进行编码的,而这里作者输入的是潜在特征 
     
      
       
       
         L 
        
       
      
        L 
       
      
    L,为了适应这一改变,作者专门训练了一个 
     
      
       
       
         LatentCLIP 
        
       
      
        \text{LatentCLIP} 
       
      
    LatentCLIP模型,让其根据 
     
      
       
       
         L 
        
       
      
        L 
       
      
    L输出与 
     
      
       
       
         CLIP 
        
       
         ( 
        
       
         I 
        
       
         ) 
        
       
      
        \text{CLIP}(I) 
       
      
    CLIP(I)接近的特征图,其训练过程如下
 
  
     
      
       
        
         
         
           CLIP 
          
         
            
          
         
        
          text  
         
        
       
      
        \operatorname{CLIP}_{\text {text }} 
       
      
    CLIPtext 就表示原始的CLIP文本编码器。 
     
      
       
        
        
          L 
         
        
          ref  
         
        
       
      
        \mathcal{L}_{\text {ref }} 
       
      
    Lref 表示参考图像特征 
     
      
       
        
        
          L 
         
        
          r 
         
        
       
      
        L_r 
       
      
    Lr与输入图像特征 
     
      
       
       
         L 
        
       
      
        L 
       
      
    L之间的余弦相似性, 
      
       
        
         
         
           L 
          
         
           ref  
          
         
         
         
           ( 
          
         
           L 
          
         
           , 
          
          
          
            L 
           
          
            r 
           
          
         
           ) 
          
         
        
          = 
         
        
          cos 
         
        
           
         
         
         
           ( 
          
          
           
           
             LatentCLIP 
            
           
              
            
           
          
            vis  
           
          
         
           ( 
          
         
           L 
          
         
           ) 
          
         
           , 
          
          
           
           
             LatentCLIP 
            
           
              
            
           
          
            vis  
           
          
          
          
            ( 
           
           
           
             L 
            
           
             r 
            
           
          
            ) 
           
          
         
           ) 
          
         
        
       
         \mathcal{L}_{\text {ref }}\left(L, L_{r}\right) =\cos \left(\operatorname{LatentCLIP}_{\text {vis }}(L), \operatorname{LatentCLIP}_{\text {vis }}\left({L}_{r}\right)\right) 
        
       
     Lref (L,Lr)=cos(LatentCLIPvis (L),LatentCLIPvis (Lr)) 
     
      
       
        
        
          L 
         
        
          perc  
         
        
       
      
        \mathcal{L}_{\text {perc }} 
       
      
    Lperc 表示输入的特征 
     
      
       
       
         L 
        
       
      
        L 
       
      
    L和生成结果的特征 
     
      
       
        
         
         
           L 
          
         
           ~ 
          
         
        
          0 
         
        
       
      
        \tilde{L}_{0} 
       
      
    L~0之间的视觉相似性, 
      
       
        
         
         
           L 
          
         
           perc  
          
         
         
         
           ( 
          
         
           L 
          
         
           , 
          
          
           
           
             L 
            
           
             ~ 
            
           
          
            0 
           
          
         
           ) 
          
         
        
          = 
         
        
          ∥ 
         
        
          LatentVGG 
         
        
           
         
        
          ( 
         
        
          L 
         
        
          ) 
         
        
          , 
         
        
          LatentVGG 
         
        
           
         
         
         
           ( 
          
          
           
           
             L 
            
           
             ~ 
            
           
          
            0 
           
          
         
           ) 
          
         
         
         
           ∥ 
          
         
           1 
          
         
        
       
         \mathcal{L}_{\text {perc }}\left(L, \tilde{L}_{0}\right)=\|\operatorname{LatentVGG}(L), \operatorname{LatentVGG}\left(\tilde{L}_{0}\right)\|_1 
        
       
     Lperc (L,L~0)=∥LatentVGG(L),LatentVGG(L~0)∥1 
     
      
       
       
         LatentVGG 
        
       
          
        
       
      
        \operatorname{LatentVGG} 
       
      
    LatentVGG与 
     
      
       
        
         
         
           LatentCLIP 
          
         
            
          
         
        
          vis  
         
        
       
      
        \operatorname{LatentCLIP}_{\text {vis }} 
       
      
    LatentCLIPvis 的训练过程类似,只是把CLIP的图像编码器换成了VGG。
   经过上述的优化训练过程,TiNO-Edit在多个图像编辑任务中的确取得了优于其他方法的效果,可视化结果对比如下
 纯文本引导
 
 参考图像引导
 
涂鸦引导
 



















