📒
Notes
  • 个人笔记
  • Machine Learning
    • Tensorflow
      • Text
        • Keras构建RNN
        • 字词嵌入
        • 字词嵌入示例程序
      • Data processing
        • tf.data数据加载
      • Tensorflow Tricks
    • 循环神经网络概览
    • Pix2Pix
  • Assembly Language
    • DOS中的Debug模式
    • LOOP指令
    • 8086CPU
    • 标志位寄存器
    • 汇编指令
    • 汇编语言源程序格式
  • Linux System
    • Systemctl 服务脚本
    • Linux端口占用
    • Btrfs文件系统
    • C Socket网络编程细节问题
  • Hexo
    • Hexo下的Tag/Categories栏
    • Git备份博客
    • Hexo博客基本部署
  • Kernel
    • C语言中消息队列实现
    • Linux内核的进程调度函数
    • Linux内核模块的编译
    • Linux Kernel概述
  • Linux Software
    • Linux软件安装与配置
  • Docker
    • OVS+Docker网络构建
    • Docker分层垃圾清理
  • C
    • CMakeList语法
Powered by GitBook
On this page

Was this helpful?

  1. Machine Learning

Pix2Pix

Previous循环神经网络概览NextAssembly Language

Last updated 5 years ago

Was this helpful?

why PatchGAN?

首先对于这样一个图像生成问题,一个很容易想到的损失模型就是L1 Loss,直接做 生成图像 和 目标图像 的“差”。 对于这样的一个损失函数,论文的作者也给出了使用L1损失进行训练的结果,或者说,让我们来看一看所有不同的损失的训练结果对比:

可以看到明显L1作为损失训练出来的图像更模糊。 但L1也是有优点的,对于图像的低频部分他能很好地掌握:

Although these losses fail to encourage high frequency crispness, in many cases they nonetheless accurately capture the low frequencies.

因此在设计Discriminator的时候,作者选择在L1基础上拓展。而接下来就是要考虑如何量化高频部分的损失。为此设计了PatchGAN:

only penalizes structure at the scale of patches. 只惩罚一个小的Patch视野内的损失。

它的具体结构就如之后描述的那样:

This discriminator tries to classify if each N × N patch in an image is real or fake. We run this discriminator convolutionally across the image, averaging all responses to provide the ultimate output of D. 批判模型试着判断每一个 $N \times N$ 的视野是真的还是假的,即使用卷积,最后将所有结果的平均作为损失值输出。

事实上所谓的PatchGAN就是一个卷积网络,卷积网络将源数据分块进行处理(和PatchGAN所期望的分块一样),以减少参数量、节省训练时间等等。 PatchGAN和rugular GAN的区别在于原本GAN的输出是单一常量,true or false,但是PatchGAN的输出是 $ N \times N $ 的向量。 类似于YOLO vs SSD,一个卷积带全连接,一个纯卷积。

why PatchGAN?
pix2pix-different-loss-induce