深度学习(33)——CycleGAN(1)

news2024/10/5 13:57:31

深度学习(33)——CycleGAN(1)

完整项目在在这里:欢迎造访

文章目录

  • 深度学习(33)——CycleGAN(1)
    • 1. Generator
    • 2. Discriminator
    • 3. fake pool
    • 4. loss定义
    • 5. 模型参数量
    • 6. debug 记录

数据格式:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

1. Generator

self.netG_A = networks.define_G(opt.input_nc, opt.output_nc, opt.ngf, opt.netG, opt.norm, not opt.no_dropout, opt.init_type, opt.init_gain, self.gpu_ids)
特征提取部分使用backbone是resnet(可选择的,可以换其他模型做backbone)

  • 上采样一共9个ResNet Block
    在这里插入图片描述
  • 下采样部分
    在这里插入图片描述

2. Discriminator

self.netD_A = networks.define_D(opt.output_nc, opt.ndf, opt.netD, opt.n_layers_D, opt.norm, opt.init_type, opt.init_gain, self.gpu_ids)
在上一节说过,discriminator就是一个辨别真假的二分类模型,输入还是一张三通道的图像,最终判断这张图片是真是假。
在这里插入图片描述

3. fake pool

用于保存生成的fake image
self.fake_A_pool = ImagePool(opt.pool_size)

4. loss定义

self.criterionGAN = networks.GANLoss(opt.gan_mode).to(self.device)  # define GAN loss.MSE
self.criterionCycle = torch.nn.L1Loss()
self.criterionIdt = torch.nn.L1Loss()
  • GANLoss 根据gan_mode定义,此处为MSELoss

5. 模型参数量

在这里插入图片描述

6. debug 记录

  • set_input(input): 得到real_A,real_B

  • optimize_parameters(): 计算loss做反向传播

    • forward(): 生成fake_A,fake_B,rec_A,rec_B

      • generatorA先根据real_A生成fake_B
      • generatorB使用fake_B生成rec_A
      • generatorB根据real_B生成fake_A
      • generatorA使用fake_A生成rec_B
    • backward_G():反向传播

      • 计算identity_loss:generatorA是输入real_A得到fake_B的,那现在输入real_B是不是也可以生成和real_B差不多,将这个生成的命名为idt_A,idt_A和real_B之间会存在identity_loss,同理idt_B和real_A之间也存在identity_loss
      • 计算generator_loss:generatorA生成的feak_B的loss,我们是希望feak_B是骗过discriminatorA的,所以希望discriminatorA认为是真的A,所以这里将fake_B与True做MSEloss,同理希望discriminatorB认为fake_A是真的B
      • 计算cycle_loss:real_A经过generatorA生成fake_B,fake_B经过经过generatorB返回生成rec_A,计算这样循环生成的A和真实A之间的loss,B也同理。
      • 最终的generator_loss是上面三者的和,因为有AB之分,所以一共有6项self.loss_G = self.loss_G_A + self.loss_G_B + self.loss_cycle_A + self.loss_cycle_B + self.loss_idt_A + self.loss_idt_B
    • backward_D_A(): 计算discriminator_A的loss

    • backward_D_B(): 计算discriminator_B的loss

  1. 当optimizer generator的时候discriminator设置为无梯度,不反向传播。 self.set_requires_grad([self.netD_A, self.netD_B], False)

就酱,欢迎提问讨论,886~

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

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

相关文章

Nodejs 第七章(发布npm包)

发布npm的包的好处是什么 方便团队或者跨团队共享代码,使用npm包就可以方便的管理,并且还可以进行版本控制做开源造轮子必备技术,否则你做完的轮子如何让别人使用难道是U盘拷贝?面试题我面字节的时候就问到了这个增加个人IP 让更…

消息队列之 - 消息持久化设计

目录 前言设计思想消息文件的格式垃圾回收的思想其他情况序列化和反序列化 具体代码实现测试消息文件 前言 我们之前说过, 消息队列不管要往硬盘中存储, 还要往内存中存储, 并且是以内存为主 ,硬盘为辅, 接下来, 就将消息队列如何存储到硬盘 做一个设计 设计思想 我们往硬盘…

云服务器无法远程连接服务

问题 今天刚买了华为的云服务器,通过宝塔安装了对应的基础服务,也在华为云的官网上设置了安全组。此时万事俱备只欠东风,我测试使用sqlyog进行远程连接。原本已经在准备部署项目了,现实给了我重重的一拳。 sqlyog爆2003代码错误&…

交换机VLAN技术和实验(eNSP)

目录 一,交换机的演变 1.1,最小网络单元 1.2,中继器(物理层) 1.3,集线器(物理层) 1.4,网桥(数据链路层) 二,交换机的工作行为 2.…

IO进线程——库的制作(静态库、动态库)

库的制作 1、静态库 ①生成二进制文件 gcc -c linkstack.c -o linkstack.o②制作静态库文件,把.o文件转换为.a文件 ar crs liblinkstack.a linkstack.o③编译时链接 gcc linkstack_main.c -L. -llinkstack2、动态库 ①生成地址无关二进制文件 gcc -fPIC -c l…

《工具箱-VNCServer》配置VNCServer,使用VNCViewer实现局域网内页面共享

VNCServer设置 通过VNCServer配置,与VNCviewer配套使用 1.下载并安装VNCServer 2.邮箱密码注册后用户登录 3.设置VNC密码 4.设置viewer不能控制本机 5.打开VNClicensewiz,选择“Enter a license key …” BQ24G-PDXE4-KKKRS-WBHZE-F5RCA BQ24G-PDXE4-…

mysql进阶-修改linux服务器中MySQL的字符集

1.背景 linux中mysql8默认的字符集是latin1,在插入中文时会报错,所以一般在配置好mysql时需要修改字符集为utf8【又叫utfmb3,一般开发够用,一个字符用3个字节表示】或者utfmb4【一个字符用4个字节表示,如果存储emoji表情&#xf…

Linux实战:五子棋

一、五子棋原理 采用二维数组保存棋盘信息,棋盘上面的任何一个位置,里面可以放置三类信息。 空用户1的落子(黑子)用户2的落子(白子)下棋就是在二维数组中找对应的空位置,进行落子落完子之后下来就要考虑该落子位置是否有”五子连珠“,进而进行输赢判定,每一次走棋,多…

如何让python在手机上运行,python在手机上怎么运行

大家好,小编来为大家解答以下问题,python程序如何在手机上运行,如何让python在手机上运行,现在让我们一起来看看吧! 在计算机语言的运用过程中PythonS60手机是经常被使用的计算机语言,以下的文章是介绍Pyth…

华为OD机试真题 JavaScript 实现【明明的随机数】【2023Q1 100分】,附详细解题思路

目录 一、题目描述二、输入描述三、输出描述四、解题思路五、JavaScript算法源码 华为OD机试 2023B卷题库疯狂收录中,刷题点这里 刷的越多,抽中的概率越大,每一题都有详细的答题思路、详细的代码注释、样例测试,发现新题目&#x…

Python超实用!批量重命名文件/文件夹,只需1行代码

大家好,这里是程序员晚枫,之前在小破站给大家分享了一个视频:批量重命名文件。 最近在程序员晚枫的读者群里,发现很多朋友对这个功能很感兴趣,尤其是对下一步的优化:批量重命名文件夹。 这周我利用下班时…

Java 解析Excel单元格的富文本

1. 总体介绍 该方法是解析 xlsx 单元格中的富文本,注意不是 xls,xls 的 api 不一样,试了很久没成功。只实现了解析 斜体字、上下标,其它的实现方式应该类似。 2. 具体实现 2.1 代码 package util;import java.io.FileInputStr…

嵌入式一开始该怎么学?学习单片机

学习单片机: 模电数电肯定必须的,玩单片机大概率这两门课都学过,学过微机原理更好。 直接看野火的文档,芯片手册,外设手册。 学单片机不要纠结于某个型号,我认为stm32就OK,主要是原理和感觉。…

【ZYNQ】Linux驱动之梦开始的地方

软件版本:Vivado2021.1 操作系统:WIN10 64bit、Ubuntu18.04 硬件平台:ZYNQ UltraScale 文章目录 1.1系统框图1.2介绍1.2.1寄存器查询手册1.2.2物理地址与虚拟地址1.2.3MIO介绍1.2.4PS的LED 引脚介绍 1.3搭建工程1.4程序分析1.4.1驱动程序分析…

edgeConnector新版兼容ARM-为用户提供更多部署方案

Softing工业自动化的edgeConnector产品新版3.50兼容ARM处理器——大大扩展了edgeConnector产品的应用范围。 (edgeConnector新版兼容ARM——为用户提供更多部署方案) Softing edgeConnector产品系列是基于Docker的软件应用,可访问SIMATIC S7、…

QT 在label上透明绘图

一、新建TransparentDemo工程 二、在界面上添加label,修改样式表,将底色置为红色,作为北京 三、新建一个TransparentLabel类,继承自QLabel 此时,工程包括文件 五、在transparentlabel.h中添加 头文件 #include …

静态分析全解析:助力高质量软件开发,降低成本风险

按时发布高质量版本、需要满足编码和合规标准,而且决不能出现错误……静态分析为那些面临巨大压力的队伍提供了帮助。 这就是为什么开发团队都在使用静态分析/源代码分析工具。本篇文章将讨论静态分析、使用静态代码分析器的优势,以及静态分析的局限性。…

MySQL语法

Mysql通用语法 SQL可多行书写,分号结尾SQL语句可以使用空格进行缩进,增加可读性MYSQL,不区分大小写,但关键字推荐使用大写注释: 单行注释:--注释内容 或#注释内容 多行注释:/*注释内容*/ SQ…

声音从何而来?如何保护自己免受聊天工具中欺诈性语音邮件的侵害?

🗣 并不是每个人都喜欢在信使上收到语音邮件。 如果它们也是骗子发来的,那就更令人不快了。 让我们来看看攻击者都会使用哪些手段吧 社交工程 骗子可以使用语音信息而不是电话来散布虚假信息,例如,以银行的名义散布有关账户问…

windows下的txt文档,传到ubuntu后,每行后面出现^M,怎么处理?

问题背景:windows下pycharm生成的txt文档,传到ubuntu后,每行后面出现^M 用vim打开显示 使用cat -A filename显示如下 参考https://www.lmlphp.com/user/16697/article/item/579325/给出的几种方法 方法一、dos2unix filename。服务器没装…