(二)使用CycleGAN进行移动风格迁移
目录
介绍
CycleGAN模型
CycleGAN生成器
CycleGAN鉴别器
CycleGAN损失函数
下一步
- 下载项目代码 - 7.2 MB
介绍
在本系列文章中,我们将展示一个基于循环一致对抗网络(CycleGAN)的移动图像到图像转换系统。我们将构建一个CycleGAN,它可以执行不成对的图像到图像的转换,并向您展示一些有趣但具有学术深度的例子。我们还将讨论如何将这种使用TensorFlow和Keras构建的训练有素的网络转换为TensorFlow Lite并用作移动设备上的应用程序。
我们假设您熟悉深度学习的概念,以及Jupyter Notebooks和TensorFlow。欢迎您下载项目代码。
在本系列的前一篇文章中,我们讨论了条件生成对抗网络(CGAN)的概念。在本文中,我们将仔细研究CycleGAN结构,解释它的工作原理,并展示如何使用TensorFlow和Keras实现它。
CycleGAN模型
CycleGAN模型能够训练深度卷积神经网络(深度CNN),通过映射来自未配对数据集的输入和输出图像来执行图像到图像的转换。网络学习如何使用一组训练图像将输入图像映射到输出图像。
典型的CycleGAN架构包括两个生成器和两个鉴别器,它们使用相同的模型同步工作以将图像从源域映射到目标域,反之亦然。下图显示了一个简单的CycleGAN架构。
我们将以马到斑马的转换为例来解释CycleGAN的工作机制和训练。
正如您在上图中看到的,该网络有两个生成器(GAB和GBA)和两个鉴别器(DA和DB)。GAB为第一个域(域A)生成图像。换句话说,它将图像从域A转换到域B——从马到斑马。第二个生成器 GBA为第二个域(域B)生成图像。换句话说,它将图像从域B转换为域A——从斑马到马。
每个生成器都有一个相应的鉴别器,用于检测生成的图像是真还是假。DA检测由GAB生成的图像,而DB检测由GBA生成的图像。
所以我们有两个映射函数——G和F:
- G:A→B
- F:B→A
A表示来自域A的图像,B表示来自域B的所需输出图像。
CycleGAN生成器
CycleGAN生成器是一个自动编码器,它获取输入图像,从中提取特征,然后生成另一个图像。生成器网络由三个主要阶段组成:
- 编码器(卷积块)
- 变压器(残差块)
- 解码器(转置卷积块)
编码器阶段包括三个2D卷积层,后面是一个实例归一化层和一个激活函数(ReLU)。编码器使用卷积从输入图像中提取特征,将表示减少了输入图像大小的25%。
编码器输出通过主要由6到9个残差块组成的变压器级。每个块是一组2D卷积层,每两层后跟一个具有动量的实例归一化层。
转换器输出将通过解码器级,解码器级由两个上采样块组成。每个上采样块都是一个转置卷积层,后跟一个ReLU激活函数。这两个反卷积块将来自转换器的已处理图像的表示大小增加到其原始值。
生成器具有使用tanh激活函数的最终2D卷积层。该层允许生成大小等于原始输入图像大小的图像。
CycleGAN鉴别器
CycleGAN鉴别器是典型的CNN,包括多个卷积层。该网络采用输入图像并将其分类为真或假。CycleGAN鉴别器与常规GAN中使用的鉴别器不同。后者将输入从256 x 256图像映射到单个标量输出,表示“真”或“假”。CycleGAN鉴别器从256 x 256图像映射到N x N输出数组X。在该数组中,每个X ij表示图像中的补丁ij是真的还是假的。下图显示了CycleGAN鉴别器的典型架构。
CycleGAN损失函数
CycleGAN有两个损失函数:
- 对抗性损失
- 循环一致性损失
Adversarial Loss:这种损失类似于常规GAN中使用的损失。然而,在CycleGAN中,对抗性损失应用于试图生成其相应域的图像的两个生成器。生成器旨在最小化其鉴别器的损失,以最终生成真实图像。对抗性损失计算如下:
其中G是“X到Y”域,F是“Y到X”的逆域。D x和D y是鉴别器。
Cycle-Consistency Loss:要理解这种损失,我们首先应该了解CycleGAN中实践的循环一致性方法。这种方法最早是在CycleGAN文章中提出的,它表示逆映射,F:Y→X。循环一致性旨在使映射图像的逆映射产生与原始图像相同的结果。换句话说,如果我们想把一个图像从马转换成斑马,然后再从斑马转换回马,我们应该得到初始图像。
CycleGAN使用两个循环一致性损失来正则化映射:
- 前向循环——一致性损失
- 向后循环——一致性损失
计算这两个是为了确保如果图像从一个域转换到另一个域(A到B)然后返回(B到A),将获得相同的结果。
下一步
在接下来的文章中,我们将向您展示如何实现使用Keras框架CycleGAN。
https://www.codeproject.com/Articles/5304920/Using-CycleGAN-for-Mobile-Style-Transfer
(二)使用CycleGAN进行移动风格迁移相关推荐
- CycleGAN实现图像风格迁移的神作
论文链接:http://openaccess.thecvf.com/content_ICCV_2017/papers/Zhu_Unpaired_Image-To-Image_Translation_I ...
- 论文总结:基于深度学习的图像风格迁移研究
基于深度学习的图像风格迁移研究 前言 图像风格迁移方法 基于图像迭代的图像风格迁移方法 基于模型迭代的图像风格迁移方法 卷积神经网络 生成对抗网络 CycleGAN 前言 什么是深度学习? 深度学习是 ...
- 四天搞懂生成对抗网络(二)——风格迁移的“精神始祖”Conditional GAN
点击左上方蓝字关注我们 [飞桨开发者说]吕坤,唐山广播电视台,算法工程师,喜欢研究GAN等深度学习技术在媒体.教育上的应用. 从"自由挥洒"到"有的放矢" 1. ...
- GANs系列:用于图像风格迁移的CycleGAN网络原理解读
CycleGAN论文:https://arxiv.org/pdf/1703.10593.pdf 一.前言 目前关于GAN应用,比较有意思的应用就是GAN用在图像风格迁移,图像降噪修复,图像超分辨率了, ...
- 【飞桨PaddlePaddle】四天搞懂生成对抗网络(二)——风格迁移的“精神始祖”Conditional GAN
从"自由挥洒"到"有的放矢" 1.给GAN加个"按钮" 上一篇<四天搞懂生成对抗网络(一)--通俗理解经典GAN>中,我们实现了 ...
- opencv中的美图技巧(祛斑,词云,风格迁移,抠图,插图,修改背景,图片二维码)等着你的女朋友夸你吧
个人ps 没掌握得怎么好,尝试用程序来完成ps的功能吧. 有斑点怎么办:祛斑. 只有一张城市白天图,像生成黑夜图怎么办,用风格迁移把. 人物抠图就不说啦吧. 没钱带女友旅游世界怎么办,我教你修改你背景 ...
- 三维球体换算到二维_单图像三维重建、2D到3D风格迁移和3D DeepDream
项目网址:http://hiroharu-kato.com/projects_en/neural_renderer.html 代码网址:https://github.com/hiroharu-kato ...
- 学会CycleGAN进行风格迁移,实现自定义滤镜
学会CycleGAN进行风格迁移,实现自定义滤镜 前言 效果展示 数据集介绍与加载 CycleGAN模型 数据预处理 模型构建 损失函数 训练结果可视化函数 训练步骤 更多效果展示 风格迁移系列链接 ...
- cycleGAN网络风格迁移,将黑夜转变成白天,低照度图像复原
cycleGAN网络风格迁移,将黑夜转变成白天,低照度图像复原 链接: [link](用CycleGAN网络复原低照度图像,风格转换,将黑夜颠倒成白昼,图像质量更优 - 小拍的文章 - 知乎https ...
最新文章
- C++如何获得文件大小(1)
- vue-自定义过滤器--时间
- 数据挖掘系列(2)--关联规则FpGrowth算法
- java五子棋用到的类_JAVA五子棋用到的知识点以及方法类有哪些?
- DefaultSerializer requires a Serializable payload but received an object of type
- ASIHTTP 框架,同步、 异步请求、 上传 、 下载
- Qt与OpenCV结合:图像显示
- 妄想集合(牛客练习赛90)
- SheevaPlug是什么,有什么用途
- DevSecOps简介(二)
- linux切换至root权限,【linux】sudo su切换到root权限
- SAP License:结算金额大于可支配金额
- Disney牵手联想发布AR头显,还有配备激光剑的AR游戏《星球大战》
- 拓端tecdat|Python用GARCH、离散随机波动率模型DSV模拟和估计股票收益时间序列与蒙特卡洛可视化
- 10个Excel VBA实例教程-刘欢-专题视频课程
- 使用Visio 2003 + Oracle 11g创建ERD,反向工程师失败了吗?
- 荣耀总裁赵明揭秘华为薪酬制度:不看资历,只看贡献
- 联华精选APP--请求body体和返回体加解密
- 2022 Google I/O 谷歌开发者大会汇总
- 图片的旋转,缩放和拖拽
热门文章
- C语言求正弦的泰勒展开,用泰勒公式求sin(x)的近似值
- 冬季海报素材温暖上线,PSD分层设计师最爱
- UI设计实用素材|iPhone样机模型(展示你的应用程序、网站或用户界面的完美方式。
- 新手网页设计提高设计水平的法宝,临摹练习!
- makefile指定头文件路径_玩转Makefile | 企业项目Makefile实例
- C++ new和malloc区别
- 商务风格表格的设计与实现
- Redhat或者Centos 手动安装htop
- Virtio-blk Performance Improvement
- GDB Watchpoints