1、前言
上一篇,我们讲解了按照指定文本标签生成对应图像的CGAN。本篇文章,我们讲CycleGAN。这个模型可以对图像风格进行转化,并且训练还是在非配对的训练集上面进行的,实用性挺大
原论文:Unpaired Image-to-Image Translation using Cycle-Consistent Adversarial Networks (arxiv.org)
参考代码:A clean and readable Pytorch implementation of CycleGAN (github.com)
视频:【写实转漫画——CycleGAN原理解析-哔哩哔哩】
案例演示(现实转漫画):

PS:图像来自此项目:Style transfer for between real photos and anime images using CycleGAN (github.com)
2、CycleGAN训练原理
前置知识:GAN
以我们拍摄的照片转为漫画风格为例,在训练的时候,我们应当要有一批写实图像,记为X,还有另外一批漫画图像,记为Y
同GAN一样,CycleGAN也有生成网络跟判别网络;只不过,在CycleGAN中,生成网络有两个,判别网络也有两个。
首先,生成网络记为G,F

对于写实图像X,把它作为输入送给生成网络G,生成对应的漫画图像,由于是通过X伪造的,我们记为 Y ^ \hat Y Y^;对于训练的漫画图像Y,我们将它作为输入送给生成网络F,生成对应的写实图像,由于是通过Y伪造的,我们记为 X ^ \hat X X^
2.1、对抗损失
判别网络
记为 D x , D y D_x,D_y Dx,Dy,与GAN一样,我们希望判别网络能够正确区分出真实图像和伪造的图像;于是便有(对这个不熟的请看GAN)
对 
     
      
       
        
        
          D 
         
        
          x 
         
        
       
      
        D_x 
       
      
    Dx
  
      
       
        
         
          
          
           
            
             
             
               max 
              
             
                
              
             
             
             
               D 
              
             
               x 
              
             
            
            
            
              E 
             
             
             
               x 
              
             
               ∼ 
              
              
              
                P 
               
               
               
                 d 
                
               
                 a 
                
               
                 t 
                
               
                 a 
                
               
              
             
               ( 
              
             
               X 
              
             
               ) 
              
             
            
            
            
              [ 
             
            
              log 
             
            
               
             
             
             
               D 
              
             
               x 
              
             
            
              ( 
             
            
              x 
             
            
              ) 
             
            
              ] 
             
            
           
             + 
            
            
            
              E 
             
             
             
               y 
              
             
               ∼ 
              
              
              
                P 
               
               
               
                 d 
                
               
                 a 
                
               
                 t 
                
               
                 a 
                
               
              
             
               ( 
              
             
               Y 
              
             
               ) 
              
             
            
            
            
              [ 
             
            
              log 
             
            
               
             
            
              ( 
             
            
              1 
             
            
              − 
             
             
             
               D 
              
             
               x 
              
             
            
              ( 
             
            
              F 
             
            
              ( 
             
            
              y 
             
            
              ) 
             
            
              ) 
             
            
              ] 
             
            
           
          
          
          
          
            (1) 
           
          
         
        
       
         \max\limits_{D_x}\mathbb{E}_{x\sim P_{data}(X)}\left[\log D_x(x)\right]+\mathbb{E}_{y\sim P_{data}(Y)}\left[\log (1-D_x(F(y))\right]\tag{1} 
        
       
     DxmaxEx∼Pdata(X)[logDx(x)]+Ey∼Pdata(Y)[log(1−Dx(F(y))](1)
 对 
     
      
       
        
        
          D 
         
        
          y 
         
        
       
      
        D_y 
       
      
    Dy
  
      
       
        
         
          
          
           
            
             
             
               max 
              
             
                
              
             
             
             
               D 
              
             
               y 
              
             
            
            
            
              E 
             
             
             
               y 
              
             
               ∼ 
              
              
              
                P 
               
               
               
                 d 
                
               
                 a 
                
               
                 t 
                
               
                 a 
                
               
              
             
               ( 
              
             
               Y 
              
             
               ) 
              
             
            
            
            
              [ 
             
            
              log 
             
            
               
             
             
             
               D 
              
             
               y 
              
             
            
              ( 
             
            
              y 
             
            
              ) 
             
            
              ] 
             
            
           
             + 
            
            
            
              E 
             
             
             
               x 
              
             
               ∼ 
              
              
              
                P 
               
               
               
                 d 
                
               
                 a 
                
               
                 t 
                
               
                 a 
                
               
              
             
               ( 
              
             
               X 
              
             
               ) 
              
             
            
            
            
              [ 
             
            
              log 
             
            
               
             
            
              ( 
             
            
              1 
             
            
              − 
             
             
             
               D 
              
             
               y 
              
             
            
              ( 
             
            
              G 
             
            
              ( 
             
            
              x 
             
            
              ) 
             
            
              ) 
             
            
              ] 
             
            
           
          
          
          
          
            (2) 
           
          
         
        
       
         \max\limits_{D_y}\mathbb{E}_{y\sim P_{data}(Y)}\left[\log D_y(y)\right]+\mathbb{E}_{x\sim P_{data}(X)}\left[\log (1-D_y(G(x))\right]\tag{2} 
        
       
     DymaxEy∼Pdata(Y)[logDy(y)]+Ex∼Pdata(X)[log(1−Dy(G(x))](2)
 生成网络
同GAN一样,生成网络希望生成的图像能够欺骗判别网络
对G
  
      
       
        
         
          
          
           
            
             
             
               min 
              
             
                
              
             
            
              G 
             
            
            
            
              E 
             
             
             
               x 
              
             
               ∼ 
              
              
              
                P 
               
               
               
                 d 
                
               
                 a 
                
               
                 t 
                
               
                 a 
                
               
              
             
               ( 
              
             
               X 
              
             
               ) 
              
             
            
            
            
              [ 
             
            
              log 
             
            
               
             
            
              ( 
             
            
              1 
             
            
              − 
             
             
             
               D 
              
             
               y 
              
             
            
              ( 
             
            
              G 
             
            
              ( 
             
            
              x 
             
            
              ) 
             
            
              ) 
             
            
              ] 
             
            
           
          
          
          
          
            (3) 
           
          
         
        
       
         \min\limits_{G}\mathbb{E}_{x\sim P_{data}(X)}\left[\log (1-D_y(G(x))\right]\tag{3} 
        
       
     GminEx∼Pdata(X)[log(1−Dy(G(x))](3)
 对F
  
      
       
        
         
          
          
           
            
             
             
               min 
              
             
                
              
             
            
              F 
             
            
            
            
              E 
             
             
             
               y 
              
             
               ∼ 
              
              
              
                P 
               
               
               
                 d 
                
               
                 a 
                
               
                 t 
                
               
                 a 
                
               
              
             
               ( 
              
             
               Y 
              
             
               ) 
              
             
            
            
            
              [ 
             
            
              log 
             
            
               
             
            
              ( 
             
            
              1 
             
            
              − 
             
             
             
               D 
              
             
               x 
              
             
            
              ( 
             
            
              F 
             
            
              ( 
             
            
              y 
             
            
              ) 
             
            
              ) 
             
            
              ] 
             
            
           
          
          
          
          
            (4) 
           
          
         
        
       
         \min\limits_{F}\mathbb{E}_{y\sim P_{data}(Y)}\left[\log (1-D_x(F(y))\right]\tag{4} 
        
       
     FminEy∼Pdata(Y)[log(1−Dx(F(y))](4)
 整合(2)、(3)得
  
      
       
        
         
          
          
           
            
            
              L 
             
             
             
               G 
              
             
               A 
              
             
               N 
              
             
            
           
             ( 
            
           
             G 
            
           
             , 
            
            
            
              D 
             
            
              y 
             
            
           
             , 
            
           
             X 
            
           
             , 
            
           
             Y 
            
           
             ) 
            
           
             = 
            
            
             
             
               min 
              
             
                
              
             
            
              G 
             
            
            
             
             
               max 
              
             
                
              
             
             
             
               D 
              
             
               y 
              
             
            
            
            
              E 
             
             
             
               y 
              
             
               ∼ 
              
              
              
                P 
               
               
               
                 d 
                
               
                 a 
                
               
                 t 
                
               
                 a 
                
               
              
             
               ( 
              
             
               Y 
              
             
               ) 
              
             
            
            
            
              [ 
             
            
              log 
             
            
               
             
             
             
               D 
              
             
               y 
              
             
            
              ( 
             
            
              y 
             
            
              ) 
             
            
              ] 
             
            
           
             + 
            
            
            
              E 
             
             
             
               x 
              
             
               ∼ 
              
              
              
                P 
               
               
               
                 d 
                
               
                 a 
                
               
                 t 
                
               
                 a 
                
               
              
             
               ( 
              
             
               X 
              
             
               ) 
              
             
            
            
            
              [ 
             
            
              log 
             
            
               
             
            
              ( 
             
            
              1 
             
            
              − 
             
             
             
               D 
              
             
               y 
              
             
            
              ( 
             
            
              G 
             
            
              ( 
             
            
              x 
             
            
              ) 
             
            
              ) 
             
            
              ] 
             
            
           
          
          
          
          
            (5) 
           
          
         
        
       
         \mathcal{L}_{GAN}(G,D_y,X,Y)=\min\limits_{G}\max\limits_{D_y}\mathbb{E}_{y\sim P_{data}(Y)}\left[\log D_y(y)\right]+\mathbb{E}_{x\sim P_{data}(X)}\left[\log (1-D_y(G(x))\right]\tag{5} 
        
       
     LGAN(G,Dy,X,Y)=GminDymaxEy∼Pdata(Y)[logDy(y)]+Ex∼Pdata(X)[log(1−Dy(G(x))](5)
 整合(1)、(4)得
  
      
       
        
         
          
          
           
            
            
              L 
             
             
             
               G 
              
             
               A 
              
             
               N 
              
             
            
           
             ( 
            
           
             F 
            
           
             , 
            
            
            
              D 
             
            
              x 
             
            
           
             , 
            
           
             Y 
            
           
             , 
            
           
             X 
            
           
             ) 
            
           
             = 
            
            
             
             
               min 
              
             
                
              
             
            
              F 
             
            
            
             
             
               max 
              
             
                
              
             
             
             
               D 
              
             
               x 
              
             
            
            
            
              E 
             
             
             
               x 
              
             
               ∼ 
              
              
              
                P 
               
               
               
                 d 
                
               
                 a 
                
               
                 t 
                
               
                 a 
                
               
              
             
               ( 
              
             
               X 
              
             
               ) 
              
             
            
            
            
              [ 
             
            
              log 
             
            
               
             
             
             
               D 
              
             
               x 
              
             
            
              ( 
             
            
              x 
             
            
              ) 
             
            
              ] 
             
            
           
             + 
            
            
            
              E 
             
             
             
               y 
              
             
               ∼ 
              
              
              
                P 
               
               
               
                 d 
                
               
                 a 
                
               
                 t 
                
               
                 a 
                
               
              
             
               ( 
              
             
               Y 
              
             
               ) 
              
             
            
            
            
              [ 
             
            
              log 
             
            
               
             
            
              ( 
             
            
              1 
             
            
              − 
             
             
             
               D 
              
             
               x 
              
             
            
              ( 
             
            
              F 
             
            
              ( 
             
            
              y 
             
            
              ) 
             
            
              ) 
             
            
              ] 
             
            
           
          
          
          
          
            (6) 
           
          
         
        
       
         \mathcal{L}_{GAN}(F,D_x,Y,X)=\min\limits_{F}\max\limits_{D_x}\mathbb{E}_{x\sim P_{data}(X)}\left[\log D_x(x)\right]+\mathbb{E}_{y\sim P_{data}(Y)}\left[\log (1-D_x(F(y))\right]\tag{6} 
        
       
     LGAN(F,Dx,Y,X)=FminDxmaxEx∼Pdata(X)[logDx(x)]+Ey∼Pdata(Y)[log(1−Dx(F(y))](6)
2.2、循环一致性损失(Cycle Consistency Loss)
有了以上的损失函数,当生成网络(如 Y ^ = G ( X ) \hat Y=G(X) Y^=G(X))生成图像,上面的函数只能够保证真实的Y和 Y ^ \hat Y Y^的概率分布是一样的,但是却无法保证两张图像除了风格以外,其他东西不变。于是,作者加入循环一致性损失

也就是,当我们把X通过生成网络G生成 
     
      
       
        
        
          Y 
         
        
          ^ 
         
        
       
      
        \hat Y 
       
      
    Y^,我们希望可以将 
     
      
       
        
        
          Y 
         
        
          ^ 
         
        
       
      
        \hat Y 
       
      
    Y^输入给生成网络,从而得到 
     
      
       
        
        
          X 
         
        
          ^ 
         
        
       
      
        \hat X 
       
      
    X^,让 
     
      
       
       
         X 
        
       
      
        X 
       
      
    X跟 
     
      
       
        
        
          X 
         
        
          ^ 
         
        
       
      
        \hat X 
       
      
    X^的差别最小。所以损失函数设定如下
  
      
       
        
         
          
          
           
            
            
              L 
             
             
             
               C 
              
             
               y 
              
             
               c 
              
             
               l 
              
             
               e 
              
             
            
           
             ( 
            
           
             G 
            
           
             , 
            
           
             F 
            
           
             ) 
            
           
             = 
            
            
            
              E 
             
             
             
               x 
              
             
               ∼ 
              
              
              
                P 
               
               
               
                 d 
                
               
                 a 
                
               
                 t 
                
               
                 a 
                
               
              
             
               ( 
              
             
               X 
              
             
               ) 
              
             
            
            
            
              [ 
             
            
              ∣ 
             
            
              ∣ 
             
            
              F 
             
            
              ( 
             
            
              G 
             
            
              ( 
             
            
              x 
             
            
              ) 
             
            
              ) 
             
            
              − 
             
            
              x 
             
            
              ∣ 
             
             
             
               ∣ 
              
             
               1 
              
             
            
              ] 
             
            
           
             + 
            
            
            
              E 
             
             
             
               y 
              
             
               ∼ 
              
              
              
                P 
               
               
               
                 d 
                
               
                 a 
                
               
                 t 
                
               
                 a 
                
               
              
             
               ( 
              
             
               Y 
              
             
               ) 
              
             
            
            
            
              [ 
             
            
              ∣ 
             
            
              ∣ 
             
            
              G 
             
            
              ( 
             
            
              F 
             
            
              ( 
             
            
              y 
             
            
              ) 
             
            
              ) 
             
            
              − 
             
            
              y 
             
            
              ∣ 
             
             
             
               ∣ 
              
             
               1 
              
             
            
              ] 
             
            
           
          
          
          
          
            (7) 
           
          
         
        
       
         \mathcal{L}_{Cycle}(G,F)=\mathbb{E}_{x\sim P_{data}(X)}\left[||F(G(x))-x||_1\right]+\mathbb{E}_{y\sim P_{data}(Y)}\left[||G(F(y))-y||_1\right]\tag{7} 
        
       
     LCycle(G,F)=Ex∼Pdata(X)[∣∣F(G(x))−x∣∣1]+Ey∼Pdata(Y)[∣∣G(F(y))−y∣∣1](7)
 综合(5)、(6)、(7)可得最终损失函数
  
      
       
        
         
          
          
           
           
             L 
            
           
             ( 
            
           
             G 
            
           
             , 
            
           
             F 
            
           
             , 
            
            
            
              D 
             
            
              x 
             
            
           
             , 
            
            
            
              D 
             
            
              y 
             
            
           
             ) 
            
           
             = 
            
            
            
              L 
             
             
             
               G 
              
             
               A 
              
             
               N 
              
             
            
           
             ( 
            
           
             G 
            
           
             , 
            
            
            
              D 
             
            
              y 
             
            
           
             , 
            
           
             X 
            
           
             , 
            
           
             Y 
            
           
             ) 
            
           
             + 
            
            
            
              L 
             
             
             
               G 
              
             
               A 
              
             
               N 
              
             
            
           
             ( 
            
           
             F 
            
           
             , 
            
            
            
              D 
             
            
              x 
             
            
           
             , 
            
           
             Y 
            
           
             , 
            
           
             X 
            
           
             ) 
            
           
             + 
            
           
             λ 
            
            
            
              L 
             
             
             
               C 
              
             
               y 
              
             
               c 
              
             
               l 
              
             
               e 
              
             
            
           
             ( 
            
           
             G 
            
           
             , 
            
           
             F 
            
           
             ) 
            
           
          
          
          
          
            (8) 
           
          
         
        
       
         \mathcal{L}(G,F,D_x,D_y)=\mathcal{L}_{GAN}(G,D_y,X,Y)+\mathcal{L}_{GAN}(F,D_x,Y,X)+\lambda\mathcal{L}_{Cycle}(G,F)\tag{8} 
        
       
     L(G,F,Dx,Dy)=LGAN(G,Dy,X,Y)+LGAN(F,Dx,Y,X)+λLCycle(G,F)(8)
 其中 
     
      
       
       
         λ 
        
       
      
        \lambda 
       
      
    λ是一个超参数,用于调节重要度的
2.3、鉴别损失
这个损失并非是必要的,作者在论文中提到,当模型做绘画转图像的任务时,加入这个鉴别损失,能够有效提高转化质量,其公式为
  
      
       
        
         
          
          
           
            
            
              L 
             
             
             
               i 
              
             
               d 
              
             
               e 
              
             
               n 
              
             
               t 
              
             
               i 
              
             
               t 
              
             
               y 
              
             
            
           
             ( 
            
           
             G 
            
           
             , 
            
           
             F 
            
           
             ) 
            
           
             = 
            
            
            
              E 
             
             
             
               y 
              
             
               ∼ 
              
              
              
                P 
               
               
               
                 d 
                
               
                 a 
                
               
                 t 
                
               
                 a 
                
               
              
             
               ( 
              
             
               Y 
              
             
               ) 
              
             
            
            
            
              [ 
             
            
              ∣ 
             
            
              ∣ 
             
            
              G 
             
            
              ( 
             
            
              y 
             
            
              ) 
             
            
              − 
             
            
              y 
             
            
              ∣ 
             
             
             
               ∣ 
              
             
               1 
              
             
            
              ] 
             
            
           
             + 
            
            
            
              E 
             
             
             
               x 
              
             
               ∼ 
              
              
              
                P 
               
               
               
                 d 
                
               
                 a 
                
               
                 t 
                
               
                 a 
                
               
              
             
               ( 
              
             
               X 
              
             
               ) 
              
             
            
            
            
              [ 
             
            
              ∣ 
             
            
              ∣ 
             
            
              F 
             
            
              ( 
             
            
              x 
             
            
              ) 
             
            
              − 
             
            
              x 
             
            
              ∣ 
             
             
             
               ∣ 
              
             
               1 
              
             
            
              ] 
             
            
           
          
          
          
          
            (9) 
           
          
         
        
       
         \mathcal{L}_{\mathbb{identity}}(G,F)=\mathbb{E}_{y\sim P_{data}(Y)}\left[||G(y)-y||_1\right]+\mathbb{E}_{x \sim P_{data}(X)}\left[||F(x)-x||_1\right]\tag{9} 
        
       
     Lidentity(G,F)=Ey∼Pdata(Y)[∣∣G(y)−y∣∣1]+Ex∼Pdata(X)[∣∣F(x)−x∣∣1](9)
 论文提到——“没有 
     
      
       
        
        
          L 
         
         
         
           i 
          
         
           d 
          
         
           e 
          
         
           n 
          
         
           t 
          
         
           i 
          
         
           t 
          
         
           y 
          
         
        
       
      
        L_{\mathbb{identity}} 
       
      
    Lidentity ,生成器G和F可以在不需要的时候自由地改变输入图像的色彩,比如画像的白天转化为图片后,会变成黄昏”。如图

 这个损失函数的理解我暂时没想明白,等以后想通了再回来补,如果您知道,还望指出!给您跪了!
3、结束
好了,以上便是这篇论文的主要内容了,如有问题,还望指出,阿里嘎多!




















