pix2pix解析以及pytorch实现
原始论文:https://arxiv.org/pdf/1611.07004.pdf
原始pytorch版本的代码:GitHub - junyanz/pytorch-CycleGAN-and-pix2pix: Image-to-Image Translation in PyTorch
我的复现代码:
pix2pix就是用cGAN(Conditional GAN)实现成对的图像转换。例如下图
具体方法和网络结构
pix2pix与传统的GAN方法有一定区别(读者最好先了解一下传统GAN),它运用了cGAN的方法:
在生成器(G)上,通过随机噪声z和真实图像x生成图像y,
在判别器上与传统的GAN一样;
在loss上,与传统的GAN_Loss不同,pix2pix的loss除了加上了conditional特性,还增加了L1_Loss让目标域的图像更加接近源域的图像:
传统的GAN_Loss:
cGAN_Loss:
- x是指原始图像(上图的左边),y是指目标真实图像(上图的右边),G(x,z)是指根据噪声和原始图像生成的图像(fake);
- D(x,y)代表通过判别器得到的真实图片是否真实的概率,同理D(x,G(x,z))代表生成的图像是否真实的概率;
- 判别器的最终目的是D(x,y)尽可能的接近于1,判别器的能力越强D(x,y)越大,D(x,G(x,z))越小,1-D(x,G(x,z))越大,因此 越大,这也解释了为什么要 ;生成器的最终目的是使G(x,z)越像真实图片,即D(x,G(x,z))越大,此时1-D(x,G(x,z))越小,同理这也说明了为什么要
再加上L1约束,最终的需要优化的目标函数如下:
网络结构
pix2pix在网络结构上的亮点主要是在生成器上运用了U-net的网络结构,同时加入跳链接(skip connections),第i层与第n-i层直接连接,具体细节可以参考U-net原论文。除此之外,pix2pix还运用了dropout操作。
PatchGAN
L1_Loss有利于对于低频信息建模,pix2pix使用L1_Loss作为辅助loss加入总loss中会使生成的图像更加清晰,论文中作者也进行了对比实验:
对于高频信息,作者提出了一种PatchGAN对高频信息进行建模,就是针对同一个图像中不同N*N大小的区域进行真伪鉴别,最后将他们平均值作为输出。N*N的区域可以比整个图像小的多,但是任然能得到高质量的结果。使用PatchGAN能减少参数量,加快训练速度,同时能应用于任意大尺度的图像。经过作者的探索,当N=70时,得到的结果最好。
上述就是pix2pix这篇论文的核心方法以及一些setting,论文中有更加详细的网络结构和PatchGAN的分析,有兴趣可以去阅读原论文。最后附上一些我自己复现的代码训出来的一些例子(代码我就先不放了,后面还会讲一下cycleGAN,到时一起放出来),部分还没训好(太费时了,懒得训了),从左到右:input,label,gen_image
pix2pix解析以及pytorch实现相关推荐
- yolov4源码_YOLOv4特征提取网络——CSPDarkNet结构解析及PyTorch实现
1 YOLOv4目标检测模型 自从Redmon说他不在更新YOLO系列之后,我一度以为这么好用的框架就要慢慢淡入历史了,事实是我多虑了.YOLOv4在使用YOLO Loss的基础上,使用了新的back ...
- Bert模型介绍及代码解析(pytorch)
Bert(预训练模型) 动机 基于微调的NLP模型 预训练的模型抽取了足够多的信息 新的任务只需要增加一个简单的输出层 注:bert相当于只有编码器的transformer 基于transformer ...
- MixNet解析以及pytorch源码
文章目录 摘要 大卷积核与小卷积核 分组卷积 MinNet核心代码 完整代码: 摘要 MixConv 的主要思想是在单个深度卷积操作中混合多个不同大小的内核,以便它可以轻松地从输入图像中捕获不同类型的 ...
- pytorch代码解析:loss = y_hat - y.view(y_hat.size())
pytorch代码解析:pytorch中loss = y_hat - y.view(y_hat.size()) import torchy_hat = torch.tensor([[-0.0044], ...
- PyTorch模型的保存加载以及数据的可视化
文章目录 PyTorch模型的保存和加载 模块和张量的序列化和反序列化 模块状态字典的保存和载入 PyTorch数据的可视化 TensorBoard的使用 总结 PyTorch模型的保存和加载 在深度 ...
- Pytorch计算神经网络的参数量和浮点操作数
参考链接:https://github.com/ShichenLiu/CondenseNet/blob/master/utils.py 计算参数量 遍历模型的参数,并提取参数的维度: def get_ ...
- coggle11月打卡—pytorch与CV竞赛
文章目录 任务1:PyTorch张量计算与Numpy的转换 任务2:梯度计算和梯度下降过程 1.学习自动求梯度原理 1.1 pytorch自动求导初步认识 1.2 tensor的创建与属性设置 1.3 ...
- 小白学习pytorch源码(二):setup.py最详细解读
小白学习pytorch源码(二) pytorch setup.py最全解析 setup.py与setuptools setup.py最详细解读 setup.py 环境检查 setup.py setup ...
- 【深度学习】资源:最全的 Pytorch 资源大全
Pytorch资源大全 目录 Pytorch及相关库 NLP和语音处理: 计算机视觉: 概率/生成库: 其他库: 教程和示例 论文的实现 Pytorch其他 Pytorch及相关库 pytorch:P ...
最新文章
- 英伟达“暴力碾压”谷歌:53分钟训练完BERT,2.2毫秒完成推理,创下NLP三项新纪录...
- [JBoss] - 环境搭建
- 知识图谱实践篇(一):数据准备和本体建模
- java redis 重连机制_redis在java中的客户端连接
- python语言合法命名的_python语言合法命名_python合法命名
- 剪切caspase3_caspase-3
- AdneneBoumessouer / MVTec-Anomaly-Detection学习笔记
- qt drawrect绘制图形为什么不显示_Qt编写自定义控件45-柱状标尺控件
- 推荐两个不错的公众号
- (十一)ntp时间同步
- linux更换输入法_一日一Linux之一:CentOS 8.1 王者荣耀
- UI - PS如何导入不同的字体
- cmd强制删除文件夹
- python爬虫--爬取网易云音乐评论
- 【论文笔记】Learning Convolutional Networks for Content-weighted Image Compression
- nide-js.nt
- Spark性能优化之-shuffle调优
- 访问ftp服务器不显示文件夹权限问题,访问ftp服务器显示无权限问题
- python io模块
- 【疑难杂症爆破委员会】UEFI Linux、Windows双系统,丢失Windows的efi文件导致找不到启动项(恢复Windows的efi文件)
热门文章
- XMPP中文 XEP-0030:服务发现
- mysql bool型注入,SQL注入【七】——Boolean注入
- 鸿蒙系统照片显示模糊,为什么iPhone上照片模糊了 iCloud相册到底有啥用?
- 2023年东北大学计算机科学与技术考研上岸前辈初复试备考经验指导
- kubectl查看node状态_全栈之路:使用pm2自动化部署node项目
- 创维E900V22C E900V22D 安卓9版本-U盘通刷固件及教程
- 【AI-CPS】【智能制造】智能装备 ── 强化工业基础能力
- nn.Softmax(dim=1)(outputs) 与 torch.max(probs, 1)[1]的理解
- XP下的VISTA主题及工具完全包!
- 《NFL橄榄球》:亚特兰大猎鹰·橄榄1号位