G6 - CycleGAN实战

  • 🍨 本文为[🔗365天深度学习训练营](https://mp.weixin.qq.com/s/0dvHCaOoFnW8SCp3JpzKxg) 中的学习记录博客
  • 🍖 原作者:[K同学啊](https://mtyjkh.blog.csdn.net/)

目录

  • 理论知识
    • CycleGAN能做什么
  • 模型结构
    • 损失函数
  • 模型效果
  • 总结与心得体会


理论知识

CycleGAN能做什么

CycleGAN的一个重要的应用领域就是Domain Adapation(域迁移:可以通俗的理解 为画风迁移)。

比如可以把一张普通的风景照变化成梵高的画作,或者将游戏画面变化成真实世界的画面,将一匹正常肤色的马转换为斑马等。
在这里插入图片描述

模型结构

CycleGAN由左右两个GAN网络组成。

G(AB)负责把A类物体(斑马)转换成B类物体(正常的马)
G(BA)负责把B类物体(正常的马)还原成A类物体(斑马)

然后由一个判别器网络D来判别B类物体的真实性

损失函数

CycleGAN的Loss由三部分组成,即:
L o s s = L o s s G A N + L o s s c y c l e + L o s s i d e n t i t y Loss=Loss_{GAN}+Loss_{cycle}+Loss_{identity} Loss=LossGAN+Losscycle+Lossidentity
其中:

  • L o s s G A N Loss_{GAN} LossGAN 用于保证生成器和判别器相互进货,进行保证生成器能产生更真实的图片,这部分与其它的GAN网络无异。
  • L o s s c y c l e Loss_{cycle} Losscycle 用于保证生成器的输出图片与输入图片只是风格不同,而内容相同。即保证:将由图像 x x x生成的图像 Y ^ \hat{Y} Y^再放入生成器 F F F中,使生成的图像 x ^ \hat{x} x^尽可能与原始图像 x x x相似。
  • L o s s i d e n t i t y Loss_{identity} Lossidentity 是映射损失,即用真实的A当做输入,查看生成器是否会原封不到的输出

三种损失函数所捕捉的损失类型如图所示:
三种不同的损失函数

模型效果

直接下载UP提供的软件包,解压data.zip和cyclegan.zip

通过执行 python cyclegan.py来训练模型,默认参数是训练400个epoch需要训练一天时间以上,我们临时修改为训练4个epoch

# 还需要设置一下开始衰减的epoch,只要比n_epochs小就好,这里设置为2
python cyclegan.py --n_epochs 4 --decay_epoch 2

运行日志

模型效果
由于训练时间太短,只是稍微有些莫奈的味道

总结与心得体会

通过对CycleGAN的学习,我理解CycleGAN其实是训练了较前作来说是完整的GAN模型,G模型用来做从通过A生成B,F模型用来做通过B生成A。如果只是分别看GAN的损失,的确是两个不相关的模型,但是作者通过Cycle损失和Identity损失,将两个模型联合在一起进行训练,训练好的生成器G和生成器F就可以实现相反的两种转换。

通过前面的视频也可以看出,不同的帧之间,不一定具有一致性, 所以将一个图像模型直接转换为视频模型,有一个需要考虑的点就是前后帧的一致性问题,这应该是视频生成模型的共性问题。

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

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

相关文章

Vue小记——如何理解 $nextTick( ) ?

1、如何理解 $nextTick() 是一个非常重要的方法,用于在数据变动后,但DOM更新完成之前,执行特定的回调函数。这个方法确保了代码在DOM元素实际被更新之后才运行。 这是用来处理Vue的异步更新队列的。在Vue中,当你改变数据时&#…

OSINT技术情报精选·2024年6月第1周

OSINT技术情报精选2024年6月第1周 2024.6.11版权声明:本文为博主chszs的原创文章,未经博主允许不得转载。 1、经合组织:《2024数字经济展望:第1卷,拥抱技术前沿》 经合组织近日发布《2024数字经济展望》报告第一卷,…

每天五分钟深度学习:逻辑回归算法完成m个样本的梯度下降

本文重点 上节课程我们学习了单样本逻辑回归算法的梯度下降,实际使用中我们肯定是m个样本的梯度下降,那么m个样本的如何完成梯度下降呢? m个样本的损失函数定义为: 我们定义第i个样本的dw、db为: dw和db为损失J对w和b的偏导数,因为m个样本的代价函数J是1到m个样本总损失…

适合各行各业在线预约的自定义小程序源码系统 前后端分离 带完整的安装代码包以及代搭建教程

系统概述 这款自定义小程序源码系统是为了适应不同行业的预约需求而设计的。它具有高度的灵活性和可扩展性,可以根据不同用户的需求进行定制化开发,满足各种复杂的业务场景。 系统的前端采用了先进的小程序技术,为用户提供了简洁、直观的操…

【Windows】Topaz Gigapixel AI(人工智能图片放大工具)软件介绍和安装教程

软件介绍 Topaz Gigapixel AI是一款由Topaz Labs开发的先进图像放大软件,利用人工智能(AI)技术来放大图像,同时保持或甚至增强图像的细节和清晰度。这款软件特别适用于需要高质量图像放大的摄影师、设计师以及其他视觉内容创作者…

四六级考前突击之同义词替换

最常见的十组同义词替换 新的 Novel-new-fresh-most recent 奇怪的 Strange-odd-unusual-uncommon-Unfamiliar-peculiar odds之后的odds变成了机会的意思,同义词有chance-opportunity 传统 Convention-tradition convention还有大会和集会的意思 形容词为Conventional…

图片based64编码解码python代码

图片based64编码解码python代码 import base64 from PIL import Imagedef image_to_base64(image_path):# 打开图片文件image Image.open(image_path)# 将图片转换为二进制数据image_bytes Nonewith open(image_path, rb) as image_file:image_bytes image_file.read()# 将二…

【C++】模板及模板的特化

目录 一,模板 1,函数模板 什么是函数模板 函数模板原理 函数模板的实例化 推演(隐式)实例化 显示实例化 模板的参数的匹配原则 2,类模板 什么是类模板 类模板的实例化 二,模板的特化 1,类模板的特化 全特化…

dvc 更新加载模型版本控制

dvc即data version control, 是一种针对人工智能项目(机器学习或者深度学习)的数据版本管理工具。DVC的操作和GIT类似,可以认为为GIT的二次开发封装。结合GIT,DVC可以有效的管理人工智能项目的整个流程,包括代码&#…

YOLOv10在RK3588上的测试(进行中...)

1.代码源 国内镜像站在gitcode。这个镜像站也基本上包含了github上常用项目的镜像。然后它的主发布源在这里: GitCode - 全球开发者的开源社区,开源代码托管平台 yolov10是清华主导做的... 然后,在维护列表里看到了这个: 2024年05月31日&am…

并 查 集 模 板

朴素并查集&#xff1a; int p[N]; //存储每个点的祖宗节点// 返回x的祖宗节点int find(int x){if (p[x] ! x) p[x] find(p[x]);return p[x];}// 初始化&#xff0c;假定节点编号是1~nfor (int i 1; i < n; i ) p[i] i;// 合并a和b所在的两个集合&#xff1a;p[find(a)]…

【React】配置别名路径@

别名路径配置 1. 路径解析配置&#xff08;webpack&#xff09; CRA本身把webpack配置包装到了黑盒里无法直接修改&#xff0c;需要借助一个插件 - craco步骤 安装craco npm i -D craco/craco项目根目录下创建配置文件 craco.config.js配置文件中添加路径解析配置 const pa…

智慧检务大数据平台解决方案

1.1. 政务目标分析 1.1.1. 业务功能分析 为履行检察职能&#xff0c;人民检察院需开展职务犯罪查办和预防、刑事诉讼监督、民事行政监督、检务支持、内部管理与办公、检察队伍管理、检务保障支持等工作&#xff0c;分为 7 大类业务&#xff0c;主要功能如下&#xff1a; 1、…

系统编程 - kill,alarm,read,write

1、父进程杀死子进程 #include <stdio.h> #include <stdlib.h> #include <sys/types.h> #include <signal.h> #include <unistd.h>int main() {pid_t pid;pid fork();if(pid < 0){perror("fork failed");}else if(pid 0){int i …

白嫖Cloudflare Workers 搭建 Docker Hub镜像加速服务

简介 基于Cloudflare Workers 搭建 Docker Hub镜像加速服务。 首先要注册一个Cloudflare账号。 Cloudflare账号下域名的一级域名&#xff0c;推荐万网注册个top域名&#xff0c;再转移到Cloudflare&#xff0c;很便宜的。 注意 Worker 每天每免费账号有次数限制&#xff0c;…

PFA进口聚四氟乙烯量筒不易碎塑料量具

PFA量筒:也叫特氟龙量筒、耐腐蚀性量筒&#xff1b;低溶出与析出&#xff0c;主要用于生物医药、医药研发、新材料、痕量分析、同位素检测,ICP-MS/OES/AAS分析等实验。 常用规格:5ml、10ml、25ml、30ml、50ml、100ml、200ml、250ml、500ml、1000ml、2000ml等。 产品特性&#x…

docker Pulling fs layer 含义

在使用Docker时&#xff0c;当你执行 docker pull 命令来获取一个新的镜像&#xff0c;控制台输出中可能会出现 "Pulling fs layer" 的信息。这是Docker拉取镜像过程中的一个步骤&#xff0c;下面是对这一过程的解释&#xff1a; Docker 镜像是由一系列的层&#xf…

【6】第一个Java程序:Hello World

一、引言 Java&#xff0c;作为一种广泛使用的编程语言&#xff0c;其强大的跨平台能力和丰富的库函数使其成为开发者的首选。对于初学者来说&#xff0c;编写并运行第一个Java程序是一个令人兴奋的时刻。本文将指导你使用Eclipse这一流行的集成开发环境&#xff08;IDE&#…

数组循环form表单对象校验

<el-button type"primary" icon"el-icon-circle-plus-outline" :size"$formSize" click"addDevice" :disabled"readOnly">添加</el-button><!--整个表单块循环--> <div v-for"(item,index) in ac…

Vue基础面试题(二)

文章目录 1.Vue 单页应用与多页应用的区别2.Vue template 到 render 的过程3. Vue data 中某一个属性的值发生改变后&#xff0c;视图会立即同步执行重新渲染吗&#xff1f;4.Vue的优点5.vue如何监听对象或者数组某个属性的变化6.Vue模版编译原理7. 对SSR的理解8.Vue的性能优化…