基于CycleGan开源项目实战图像合成

news/2024/6/24 9:12:29/文章来源:https://blog.csdn.net/qq_52053775/article/details/132657405

项目代码及数据链接见文末

         没有配对图像能够进行图像生成吗?当然可以,CycleGan不需要配对的数据,例如,只要我们知道马的样子和斑马的样子,我们就能够很轻松的将马转化为斑马。

1.网络结构

        传统GAN网络是,我们将图像输入到一个生成器网络中得到一个假的图像,然后再输入到判别器进行判别。 

       

        那么。传统GAN网络能不能做呢?很显然,并不能。对于输入的斑马来说,现在没有配对的马的图片,马的图片是完完全全不同的分布。这时候,我们需要从形态各异的斑马生成形态各异的马。这很可能导致模式崩塌问题。因此,我们可以采取一种新的方法,让斑马生成的马保持其原来的形态,这样就不容易导致模式崩塌问题了

        那么现在怎么做呢?因此,我们可以结合翻译应该是“循环一致的”的性质,即如果我们翻译,例如,把一个句子从英语翻译成法语,然后把它从法语翻译回英语,我们应该返回到原来的句子。即我们现在既要让斑马转化成马,但是马的形态、场景保持不变,能够很好的返回斑马。

        此时我们需要两对生成网络。Gab和Gba,GAB生成一个马。然后GBA进行还原,意思是,生成出的马必须进行限制,保持其原有的形态(动作都不变),同时要与马足够相似。 

         整体网络架构如下,网络由两对GAN组成,一个网络由马生成斑马,另一个网络由斑马变成马。

 PatchGAN的原理

        patchGAN的原理是,我们先使用卷积,将图像降维为N*N的矩阵,此时,矩阵每一个特征点就代表一个小区域。我们的标签也是N*N的矩阵,最后,我们计算N*N矩阵的损失(MSE损失)

        

2.项目简介

下载数据:Index of /cyclegan/datasets

 

将数据集下载到dataset文件夹中

下载预训练权重:Index of /cyclegan/pretrained_models 

模型的测试

运行:text.py

python test.py --dataroot ./datasets/horse2zebra/testA --name horse2zebra_pretrained --model test --no_dropout

或者直接指定参数

效果由斑马生成马 

 模型的训练

运行train.py

指定参数 

网络流程

在cycle gan中。我们需要训练两个GAN网络,每个GAN网络包含2个生成器和2个判别器

首先是训练判别器。

第一个GAN网络

  • 首先由马生成斑马,进入判别器判别
  • 然后由生成的斑马重新再生成马,进入判别器判别

第二个GAN网络

  • 首先,由斑马生成马,进入判别器判别
  • 再由生成的马重新生成斑马,进行判别器判别

identity loss

生成器损失

        如果A2B网络是需要由马生成斑马,那么当我们之间输入斑马的时候呢?很显然,我们需要输出斑马本身,因此,当模型输入斑马的时候,我们也需要计算损失,希望生成图片与原图片足够相似。B2A也类似

然后由马生成斑马,计算一次损失,计算生成的斑马和真斑马之间的MSE损失,斑马还原为马,计算一次损失,计算还原的马和原来的马之间的损失。由斑马生成马也是如此。 

 

 判别器损失

        在判别器网络中,期望真实图片输出概率为1, 假的图片输出概率为0。然后计算相应的判别器损失。

        

链接:https://pan.baidu.com/s/1sRzDaBek7unZhzldVuh0Yw?pwd=bw3o 
提取码:bw3o 

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

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

相关文章

src挖掘技巧总结分享

src挖洞技术分享 src推荐刚入门的新手首选公益src如漏洞盒子、补天src,因为漏洞盒子收录范围广,只要是国内的站点都收入,相比其它src平台挖掘难度非常适合新手。后续可以尝试先从一些小的src厂商入手。 首先是熟能生巧,我一开始挖…

java网络编程——网络编程概述及UDP/TCP通信编程的实现

前言: 学习到通信了,整理下相关知识点。打好基础,daydayup!!! 网络编程 网络编程指可以让设备中的程序与网络上其他设备中的程序进行数据交互。 基本的通信架构 基本的通信架构有两种形式:CS架构(Client客户端/Server服…

Docker数据卷挂载

一、容器与数据耦合的问题: 数据卷是虚拟的,不真实存在的,它指向文件中的文件夹 ,属主机文件系统通过数据卷和容器数据进行联系,你改变我也改变。 解决办法: 对宿主机文件系统内的文件进行修改,会立刻反应…

光伏无人机:绿色能源与航空技术的融合创新

在可再生能源和无人机技术快速发展的背景下,光伏无人机作为一种新兴的绿色航空器,正逐渐展现出其独特的优势和广阔的应用前景。本文将深入探讨光伏无人机的原理、优势以及其在多个领域的应用,展望其未来的发展趋势。 一、光伏无人机的原理 光…

Midjourney绘图欣赏系列(十五)

Midjourney介绍 Midjourney 是生成式人工智能的一个很好的例子,它根据文本提示创建图像。它与 Dall-E 和 Stable Diffusion 一起成为最流行的 AI 艺术创作工具之一。与竞争对手不同,Midjourney 是自筹资金且闭源的,因此确切了解其幕后内容尚不…

MATLAB 自定义均值滤波 (53)

MATLAB 自定义均值滤波 (53) 一、算法介绍二、算法实现1.原理2.代码一、算法介绍 均值滤波,是一种常见的点云平滑算法,改善原始点云的数据质量问题,MATLAB自带的工具似乎不太友好,这里提供自定义实现的点云均值滤波算法,具体效果如下所示: 均值滤波前: 均值滤波后:…

基于单片机20v数字电压表仿真系统设计

**单片机设计介绍,基于单片机20v数字电压表仿真系统设计 文章目录 一 概要二、功能设计三、 软件设计原理图 五、 程序六、 文章目录 一 概要 基于单片机20V数字电压表仿真系统设计的主要目标是实现一个能够准确测量和显示20V直流电压的仿真系统。以下是该设计的主…

安卓Activity上滑关闭效果实现

最近在做一个屏保功能,需要支持如图的上滑关闭功能。 因为屏保是可以左右滑动切换的,内部是一个viewpager 做这个效果的时候,关键就是要注意外层拦截触摸事件时,需要有条件的拦截,不能影响到内部viewpager的滑动处理…

认识什么是Git

目录 1. 认识Git 1.1. 问题引入 1.2. 概念 1.3. 作用 1.4. 如何学 1.5. Git 安装 1.6. Git配置用户信息 2. Git仓库 2.1. Git 仓库(repository) 2.2. 创建 2.3. 需求 3. Git的三个区域 3.1. Git 使用时的三个区域 3.2. 工作区的内容&#…

Datacom HCIP笔记-OSPF协议 之二

链路:路由器之间的相连的链路 状态:链路上的参数在某一时刻的状态 单边邻居 one way? 收到对端发来的hello报文,其中没有自己的router id LSA类型: 1类LSA:描述路由器自身加入到ospf进程中的直连链路的状态…

Java语言基础(12)网络通信与编程

网络通信与编程 1. 什么是计算机网络,计算机网络的作用?2. 计算机网络编程指的是什么?3. 关于IP地址?4. 关于端口号PORT?5. 计算机之间通信需要协议?6. 关于HTTP协议?7. 使用java实现计算机和计…

大数据面试专题 -- kafka

1、什么是消息队列? 是一个用于存放数据的组件,用于系统之间或者是模块之间的消息传递。 2、消息队列的应用场景? 主要是用于模块之间的解耦合、异步处理、日志处理、流量削峰 3、什么是kafka? kafka是一种基于订阅发布模式的…

新闻管理系统(源码+文档)

新闻管理系统(小程序、ios、安卓都可部署) 文件包含内容程序简要说明含有功能项目截图客户端新闻详情新闻首页分类退出登录个人中心拨打客服热线注册界面个人资料新闻评论成功 管理端用户管理分类管理新闻管理 文件包含内容 1、搭建视频 2、流程图 3、开…

Kubernetes(K8S)学习(三):K8S实战案例

K8S实战案例 一、部署wordpressmysql(NodePort方式)(1)创建命名空间:wordpress(2)创建wordpress-db.yaml文件(mysql)(3)创建pod:mysql…

Git常用语句

设置用户名 git config --global user.name "用户名" git config --global user.email "邮箱"查看git用户信息 cat ~/.gitconfig初始化本地库 git initclone指定分支的代码 git clone -b my_branch gitgitlabxxxxxxxxxxxxxxxxxxxxxx.gitpush三件套 gi…

“Linux 三剑客”,通常指的是三个经典的命令行工具:grep、sed 和 awk

1、grep: 简介:grep 是一个强大的文本搜索工具,可以用于在文件中查找匹配特定模式的行。示例: 搜索包含特定关键词的行: grep "keyword" filename 递归搜索目录下所有文件: grep -r define zj…

STM32F4系列单片机的定时器讲解和计数器,PWM信号输出,PWM信号捕获的实现对电机进行控制和监测功能

1.定时器功能介绍: 在控制领域里面,我们可以用信号输出定时器,进行PWM的控制,从而达到控制电机的目的,通过输入捕获功能可以用来接收外部的数字信号,用于测量脉冲宽度、频率或周期等。在这里给大家介绍下&…

Windows系统编译protobuf

在编译ncnn前,需要编译好protobuf。这篇文章将记录protobuf的编译方法。 什么是protobuf Protocol Buffers是一种轻量级、高效的数据交换格式,它可以用于结构化数据的序列化,适用于通信协议、数据存储等领域。 优点: 高效性&…

Vision Pro开发实践(一)

简介 Vision Pro是苹果公司的首款头戴式“空间计算”显示设备,于2023年6月6日在“WWDC2023”正式发布,同时推出的还有专为Vision Pro打造的操作系统平台visionOS,以及一整套“新的”开发工具,之所以打引号,是因为用于…

《书生·浦语大模型全链路开源开放体系》学习笔记

书生浦语大模型全链路开源开放体系-学习笔记 大模型成为发展通用人工智能的重要途径专用模型通用大模型 书生大模型开源历程InternLM2回归语言建模的本质主要亮点性能全方位提升强大的内生计算能力 从模型到应用典型流程全链条开源开放体系数据数据集获取预训练微调XTuner 评测…