原始论文: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: 

  1. x是指原始图像(上图的左边),y是指目标真实图像(上图的右边),G(x,z)是指根据噪声和原始图像生成的图像(fake);
  2. D(x,y)代表通过判别器得到的真实图片是否真实的概率,同理D(x,G(x,z))代表生成的图像是否真实的概率;
  3. 判别器的最终目的是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实现相关推荐

  1. yolov4源码_YOLOv4特征提取网络——CSPDarkNet结构解析及PyTorch实现

    1 YOLOv4目标检测模型 自从Redmon说他不在更新YOLO系列之后,我一度以为这么好用的框架就要慢慢淡入历史了,事实是我多虑了.YOLOv4在使用YOLO Loss的基础上,使用了新的back ...

  2. Bert模型介绍及代码解析(pytorch)

    Bert(预训练模型) 动机 基于微调的NLP模型 预训练的模型抽取了足够多的信息 新的任务只需要增加一个简单的输出层 注:bert相当于只有编码器的transformer 基于transformer ...

  3. MixNet解析以及pytorch源码

    文章目录 摘要 大卷积核与小卷积核 分组卷积 MinNet核心代码 完整代码: 摘要 MixConv 的主要思想是在单个深度卷积操作中混合多个不同大小的内核,以便它可以轻松地从输入图像中捕获不同类型的 ...

  4. 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], ...

  5. PyTorch模型的保存加载以及数据的可视化

    文章目录 PyTorch模型的保存和加载 模块和张量的序列化和反序列化 模块状态字典的保存和载入 PyTorch数据的可视化 TensorBoard的使用 总结 PyTorch模型的保存和加载 在深度 ...

  6. Pytorch计算神经网络的参数量和浮点操作数

    参考链接:https://github.com/ShichenLiu/CondenseNet/blob/master/utils.py 计算参数量 遍历模型的参数,并提取参数的维度: def get_ ...

  7. coggle11月打卡—pytorch与CV竞赛

    文章目录 任务1:PyTorch张量计算与Numpy的转换 任务2:梯度计算和梯度下降过程 1.学习自动求梯度原理 1.1 pytorch自动求导初步认识 1.2 tensor的创建与属性设置 1.3 ...

  8. 小白学习pytorch源码(二):setup.py最详细解读

    小白学习pytorch源码(二) pytorch setup.py最全解析 setup.py与setuptools setup.py最详细解读 setup.py 环境检查 setup.py setup ...

  9. 【深度学习】资源:最全的 Pytorch 资源大全

    Pytorch资源大全 目录 Pytorch及相关库 NLP和语音处理: 计算机视觉: 概率/生成库: 其他库: 教程和示例 论文的实现 Pytorch其他 Pytorch及相关库 pytorch:P ...

最新文章

  1. 英伟达“暴力碾压”谷歌:53分钟训练完BERT,2.2毫秒完成推理,创下NLP三项新纪录...
  2. [JBoss] - 环境搭建
  3. 知识图谱实践篇(一):数据准备和本体建模
  4. java redis 重连机制_redis在java中的客户端连接
  5. python语言合法命名的_python语言合法命名_python合法命名
  6. 剪切caspase3_caspase-3
  7. AdneneBoumessouer / MVTec-Anomaly-Detection学习笔记
  8. qt drawrect绘制图形为什么不显示_Qt编写自定义控件45-柱状标尺控件
  9. 推荐两个不错的公众号
  10. (十一)ntp时间同步
  11. linux更换输入法_一日一Linux之一:CentOS 8.1 王者荣耀
  12. UI - PS如何导入不同的字体
  13. cmd强制删除文件夹
  14. python爬虫--爬取网易云音乐评论
  15. 【论文笔记】Learning Convolutional Networks for Content-weighted Image Compression
  16. nide-js.nt
  17. Spark性能优化之-shuffle调优
  18. 访问ftp服务器不显示文件夹权限问题,访问ftp服务器显示无权限问题
  19. python io模块
  20. 【疑难杂症爆破委员会】UEFI Linux、Windows双系统,丢失Windows的efi文件导致找不到启动项(恢复Windows的efi文件)

热门文章

  1. XMPP中文 XEP-0030:服务发现
  2. mysql bool型注入,SQL注入【七】——Boolean注入
  3. 鸿蒙系统照片显示模糊,为什么iPhone上照片模糊了 iCloud相册到底有啥用?
  4. 2023年东北大学计算机科学与技术考研上岸前辈初复试备考经验指导
  5. kubectl查看node状态_全栈之路:使用pm2自动化部署node项目
  6. 创维E900V22C E900V22D 安卓9版本-U盘通刷固件及教程
  7. 【AI-CPS】【智能制造】智能装备 ── 强化工业基础能力
  8. nn.Softmax(dim=1)(outputs) 与 torch.max(probs, 1)[1]的理解
  9. XP下的VISTA主题及工具完全包!
  10. 《NFL橄榄球》:亚特兰大猎鹰·橄榄1号位