【深度学习】写实转漫画——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} DxmaxExPdata(X)[logDx(x)]+EyPdata(Y)[log(1Dx(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} DymaxEyPdata(Y)[logDy(y)]+ExPdata(X)[log(1Dy(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} GminExPdata(X)[log(1Dy(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} FminEyPdata(Y)[log(1Dx(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)=GminDymaxEyPdata(Y)[logDy(y)]+ExPdata(X)[log(1Dy(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)=FminDxmaxExPdata(X)[logDx(x)]+EyPdata(Y)[log(1Dx(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)=ExPdata(X)[∣∣F(G(x))x1]+EyPdata(Y)[∣∣G(F(y))y1](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)=EyPdata(Y)[∣∣G(y)y1]+ExPdata(X)[∣∣F(x)x1](9)
论文提到——“没有 L i d e n t i t y L_{\mathbb{identity}} Lidentity ,生成器G和F可以在不需要的时候自由地改变输入图像的色彩,比如画像的白天转化为图片后,会变成黄昏”。如图

在这里插入图片描述

​ 这个损失函数的理解我暂时没想明白,等以后想通了再回来补,如果您知道,还望指出!给您跪了!

3、结束

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

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/1192.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

自定义鼠标软件 SteerMouse最新完整激活版

SteerMouse是一款实用的Mac OS X系统辅助工具,可以帮助用户自定义鼠标和触控板的设置,提高使用效率。它提供了多种功能,如自定义按钮、滚轮和光标速度,以及调整灵敏度等,使用户能够根据自己的需求和习惯进行优化。 Ste…

idea 将项目上传到gitee远程仓库具体操作

目录标题 一、新建仓库二、初始化项目三、addcommit四、配置远程仓库五、拉取远程仓库内容六、push代码到仓库七、如果是私有仓库可能会拉取失败(一)需要增加SSH 公钥(二)把远程仓库地址换成ssh的连接八、如果是私有仓库&#xff…

【PCL】教程conditional_euclidean_clustering 对输入的点云数据进行条件欧式聚类分析...

[done, 3349.09 ms : 19553780 points] Available dimensions: x y z intensity 源点云 Statues_4.pcd 不同条件函数output.pcd 【按5切换到强度通道可视化】 终端输出: Loading... >> Done: 1200.46 ms, 19553780 points Downsampling... >> Done: 411…

学习BOM

目录 前言: 1. BOM组成: 1.1Window 对象: 1.1Location 对象: 1.2Navigator 对象: 1.2.1 navigator 对象包含了关于浏览器的信息包括: 1.3History 对象: 1.4常用的history的方法和属性: 1.4Document…

力扣-LCP 02.分式化简

题解: class Solution:def fraction(self, cont: List[int]) -> List[int]:# 初始化分子和分母为 0 和 1n, m 0, 1# 从最后一个元素开始遍历 cont 列表for a in cont[::-1]:# 更新分子和分母,分别为 m 和 (m * a n)n, m m, (m * a n)# 返回最终的…

大型网站系统架构演化实例_9.分布式服务

1. 第十阶段:分布式服务 随着业务拆分越来越小,存储系统越来越庞大,应用系统的整体复杂度呈指数级增加,部署维护越来越困难。由于所有应用要和所有数据库系统连接,在数万台服务器规模的网站中,这些连接的数…

计算机网络 -- 多人聊天室

一 程序介绍和核心功能 这是基于 UDP 协议实现的一个网络程序,主要功能是 构建一个多人聊天室,当某个用户发送消息时,其他用户可以立即收到,形成一个群聊。 这个程序由一台服务器和n个客户端组成,服务器扮演了一个接受…

[Kubernetes] etcd的集群基石作用

文章目录 1. 配置存储2. 数据一致性3. 服务发现与协调4. 集群状态中枢5. 集群稳定性 1. 配置存储 etcd作为一个高度可靠的分布式键值存储系统,存储了Kubernetes集群的完整配置和状态数据。集群的元数据,包括节点信息、命名空间、部署、副本集、服务、持…

5.11 mybatis之returnInstanceForEmptyRow作用

文章目录 1. 当returnInstanceForEmptyRowtrue时2 当returnInstanceForEmptyRowfalse时 mybatis的settings配置中有个属性returnInstanceForEmptyRow,该属性新增于mybatis的3.4.2版本,低于此版本不可用。该属性的作用官方解释为:当返回行的所…

使用Python+opencv实现自动扫雷

大家好,相信许多人很早就知道有扫雷这么一款经典的游戏,更是有不少人曾听说过中国雷圣,也是中国扫雷第一、世界综合排名第二的郭蔚嘉的顶顶大名。扫雷作为一款在Windows9x时代就已经诞生的经典游戏,从过去到现在依然都有着它独特的…

汽车4S集团数据分析

派可数据分析--汽车4S集团。 派可数据汽车4S集团数据分析概述。派可数据汽车4S集团分析主题全面涵盖行业内各板块业务分析,具体包括:保险业务分析、客户关系分析、汽车保养情况分析、售后维修主题分析、整车销售分析、整车库存分析、装具销售分析、配件…

dbearver达梦连接

1、新建达梦驱动 新建驱动管理器 点击“数据库”,选择“驱动管理器” 配置 点击“新建”,出现配置界面 类名:dm.jdbc.driver.DmDriver #固定值,不能修改URL模板:jdbc:dm://{host}/DMHR #配置要连接的数据库信息默认…

【VIC水文模型】准备工作:平台软件安装

VIC水文模型所需平台软件安装 1 Arcgis安装2 Cygwin安装(Linux系统)3 Matlab/R/Fortran的安装Notepad 4 VIC模型程序代码获取参考 由于VIC模型的编程语言为C语言,交互方式为控制台输指令,需要在Linux系统上运行。Windows 上使用 …

Https网站接口被黑被恶意调取

背景: 维护的一个网站最近短信接口被黑,发送大量短信。起初以为是在网站内部操作,优化了发送短信前的操作,如添加图形验证码,屏蔽国外IP等。但后续还存在被调取情况,定位排查到是该接口在外部被恶意调取。 …

免费使用ChatGPT 4.0 和 文心一言 4.0

前言 今天给大家分享如何免费使用ChatGPT4.0 和 文心一言 4.0,废话就不多说了,我们直接入正题。 ChatGPT 4.0 先来看看如何免费使用ChatGPT 4.0 进入Coze登录 https://www.coze.com 选择大圣-GPT-4 文心一言 4.0 通过文心智能体平台,就…

Java 笔记 03:Java 基础知识,使用 IDEA 创建 Java 项目、设置注释颜色,以及自动生成 JavaDoc

一、前言 记录时间 [2024-04-21] 系列文章简摘: Java 笔记 01:Java 概述,MarkDown 常用语法整理 Java 笔记 02:Java 开发环境的搭建,IDEA / Notepad / JDK 安装及环境配置,编写第一个 Java 程序 本文讲述了…

OJ:数字三角形(搜索)

🎁个人主页:我们的五年 🔍系列专栏:每日一练 🌷追光的人,终会万丈光芒 🌷1.问题描述: ⛳️题目描述: 示出了一个数字三角形。 请编一个程序计算从顶至底的某处的一条路…

对接浦发银行支付(六)-- 请求退款接口与查询退款结果接口

一、概述 本文介绍浦发银行支付的请求退款和查询退款结果两个接口,浦发银行的退款流水号是以5901开头。发起退款的时候,浦发银行返回浦发银行退款流水号给我们(这里的我们是指对接浦发银行支付的一方,于浦发银行而言,…

面向对象设计模式之概念

设计模式系列的观点结合了《HeadFirst设计模式》(中文版)以及《设计模式:可复用面向对象软件的基础》两本书的知识,以及Sunny(刘伟)的博客 《HeadFirst设计模式》(中文版): 百度网盘链接:https://pan.baidu.com/s/1osvnUGZZREm8Jb…

「GO基础」变量

💝💝💝欢迎莅临我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。 推荐:「stormsha的主页」…