【深度学习】写实转漫画——CycleGAN原理解析

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、结束

好了,以上便是这篇论文的主要内容了,如有问题,还望指出,阿里嘎多!

相关推荐
江畔柳前堤3 小时前
roLabelImg 详细安装教程
开发语言·人工智能·后端·云原生
阿里云大数据AI技术3 小时前
分链路差异化设计的DSP准实时数仓|钛动科技基于阿里云实时计算 Flink 版 + DLF Paimon + EMR Serverless StarRocks 的实践
人工智能·flink
陕西企来客3 小时前
2026年7月AI智能搜索曝光趋势研判
大数据·人工智能·机器学习·ai智能搜索曝光
阿里云大数据AI技术4 小时前
从算力到智能体,面向 Agentic AI 的基础设施演进
人工智能·agent
hangyuekejiGEO5 小时前
GEO技术服务选型指南
大数据·人工智能·python
阿里云大数据AI技术5 小时前
EMR Serverless Spark AI Function 的双维降本实践
人工智能·sql·spark
维基框架5 小时前
GitHub源码处理提速 一趟扫描反而更慢
人工智能·github
冬奇Lab5 小时前
代码库知识库系列(05):向量检索 vs 知识图谱——加了调用图并没有变更好
人工智能
AKAMAI5 小时前
你的源服务器可能是你做出的最昂贵决定
运维·人工智能·云计算
冬奇Lab6 小时前
【无标题】
人工智能·开源