【深度学习】写实转漫画——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、结束

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

相关推荐
Hali_Botebie5 分钟前
Infinity Instruct:扩展指令选择与综合以增强语言模型:推动开源指令数据集的发展
人工智能·语言模型·自然语言处理
YueJoy.AI7 分钟前
B端技术产品的核心指标体系搭建实战
人工智能·ai·语言模型
阿里云大数据AI技术7 分钟前
DataWorks Data Agent 助力菜鸟 AI 数据研发 SuperETL 实践落地
人工智能
志栋智能11 分钟前
超自动化安全:构建智能安全运营的神经系统
大数据·运维·网络·人工智能·安全·自动化
YueJoy.AI14 分钟前
数据埋点驱动的高并发产品转化率分析实战
人工智能·ai·语言模型
星辰AI15 分钟前
拒绝带病上线:在 GitHub Actions 中自动探测并阻断依赖库逻辑漏洞
人工智能·ai·语言模型
手写码匠17 分钟前
华为云Flexus+DeepSeek征文|基于华为云Flexus X实例 + Dify + DeepSeek 构建企业级智能知识库问答系统实战
人工智能·深度学习·算法·aigc
lqqjuly20 分钟前
语音识别:隐马尔可夫模型、深度学习与序列转导
人工智能·深度学习·语音识别
码农小白AI21 分钟前
实验室数智化转型的真正起点:AI 报告审核如何成为第一道“质量闸门”,IACheck重构审核逻辑
人工智能·重构
PNP机器人33 分钟前
基于视觉运动扩散与 AR 遥操作的多指灵巧手在手操控学习研究
人工智能·遥操作·灵巧手