如何比较PixelCNN与DCGAN两种Image generation方法?

2023-11-18

今天组会读了一下deepmind的PixelCNN(nips的那篇),不是很明白到底为什么follow的work这么多(而且pixel rnn还拿了best paper award。。),感觉pixel by pixel生成是一种非常反直觉的生成方式。而且是规定了从上往下从左往右的顺序。这种生成方式的insight在哪里?
(个人理解是为了引出wavenet?因为对语言序列来说生成是有顺序的,但是用来生成图片就很奇怪了)
相比较,虽然GAN生成的更加随意,但是laplacian GAN和stack GAN都是一种更符合直觉的方式。

另外,pixel CNN也有生成速度慢的问题,所以它和GAN相比到底有什么不同的地方值得大家去思考呢?(有什么可能比GAN更优的地方呢?)

(对pixelCNN还一知半解,只是想到了提个问,欢迎贴个reddit上已有的讨论啊什么的。。。。。。)

作者:Xun Huang
链接:https://www.zhihu.com/question/54414709/answer/139256237
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

谢邀,相比GAN,PixelCNN/RNN有以下几个优势:
1. 可以通过chain rule提供 exact的data likelihoodp(\textbf{x})=\prod_{i=1}^{n^{2}} p(x_{i}|x_{1}, ..., x_{i-1}),虽说likelihood不是一个完美的evaluation metric [12],但它对评价一个generative model还是能提供很多insight(尤其是detect missing mode)。GAN的方法不仅没有办法给出exact的likelihood,而且approximate出来的likelihood似乎结果很差 [9]。另外PixelCNN这套方法在likelihood这个metric上是state-of-the-art,甩其它方法一大截。我觉得拿ICML best paper主要就是因为这个。
2. 因为objective function直接就是likelihood,PixelCNN的 training要稳定很多
PixelCNN的典型training curve[11]:
<img src="https://pic2.zhimg.com/v2-710a1cd80b866075703f4ff734d4c9c9_b.png" data-rawwidth="747" data-rawheight="323" class="origin_image zh-lightbox-thumb" width="747" data-original="https://pic2.zhimg.com/v2-710a1cd80b866075703f4ff734d4c9c9_r.png">
GAN的典型training curve... [10]
<img src="https://pic3.zhimg.com/v2-4acb41ec2440af0fcbee1517832a36fe_b.png" data-rawwidth="1834" data-rawheight="673" class="origin_image zh-lightbox-thumb" width="1834" data-original="https://pic3.zhimg.com/v2-4acb41ec2440af0fcbee1517832a36fe_r.png">

3. PixelCNN的data space可以是continuous也可以是discrete的(discrete的performance稍好一点点),但是GAN目前基本还只能在continuous data上work。在discrete data上如何实现GAN目前仍是一个non-trivial的open problem。

当然,除了题主提到的依赖于arbitrary的order而且sampling很慢以外,PixelCNN还有很多缺点:
1. PixelCNN的 training其实也很慢,比如OpenAI的PixelCNN++ [8] 要在8块Titan上train 5天才converge... 这还只是一个CIFAR dataset
2. sample quality明显不如GAN。现在state-of-the-art的GAN在CIFAR上能生成相当reasonable的sample [5]:
<img src="https://pic1.zhimg.com/v2-3c668605be5bf3121c3bc144f4dbcae4_b.png" data-rawwidth="320" data-rawheight="320" class="content_image" width="320">
但是PixelCNN++[8]的sample基本还看不出什么object...
<img src="https://pic4.zhimg.com/v2-00214865f46df7fc5d2212eed8a829a7_b.png" data-rawwidth="340" data-rawheight="339" class="content_image" width="340">

3. 暂时还没有paper用PixelCNN成功做出来unsupervised/semi-supervised feature learning,但是GAN在这方面硕果累累 [1,2,3,4]。

最后还想说的一点是,PixelCNN和GAN也许并不是非此即彼的关系,在将来有可能可以combine起来。如果有一个generative model能同时具备两者的优势,既能给出exact的likelihood又能有GAN这么好的sample quality,那将会是一个非常有趣的工作。这几个月的各种model组合(VAE+GAN [6], VAE+PixelCNN [7])也suggest这种combination或许是可行的。

[1] Salimans et al., Improved Techniques for Training GANs, 2016
[2] Dumoulin et al., Adversarially Learned Inference, 2016
[3] Donahue et al., Adversarial Feature Learning, 2016
[4] Denton et al., Semi-Supervised Learning with Context-Conditional Generative Adversarial Networks, 2016
[5] Huang et. al., Stacked Generative Adversarial Networks, 2016
[6] Larsen et al., Autoencoding beyond pixels using a learned similarity metric, 2016
[7] Gulrajani et al., PixelVAE: A Latent Variable Model for Natural Images, 2016
[8] Salimans et al., PixelCNN++: A PixelCNN Implementation with Discretized Logistic Mixture Likelihood and Other Modifications, 2016
[9] Wu et al., On the Quantitative Analysis of Decoder-Based Generative Models, 2016
[10] torch/torch.github.io
[11] carpedm20/pixel-rnn-tensorflow
[12] Thesis et al., A note on the evaluation of generative models, 2016

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何比较PixelCNN与DCGAN两种Image generation方法? 的相关文章

  • 【CV】第 1 章:人工神经网络基础

    大家好 我是Sonhhxg 柒 希望你看完之后 能对你有所帮助 不足请指正 共同学习交流 个人主页 Sonhhxg 柒的博客 CSDN博客 欢迎各位 点赞 收藏 留言 系列专栏 机器学习 ML 自然语言处理 NLP 深度学习 DL fore
  • ubuntu不能上网解决方法

    可能会是Network Manager 有BUG引起的 解决方法如下 首先 卸载掉Network Manager sudo apt get remove network manager 然后 手动配置网卡 在终端输入 sudo gedit
  • Shell之字符串、数组、内置命令、运算符

    文章目录 Shell字符串变量 Shell字符串变量 格式介绍 字符串的3种格式 字符串的3种格式区别 获取字符串的长度 小结 字符串拼接方式 Shell字符串变量 字符串截取 案例 小结 Shell索引数组变量 Shell索引数组变量 定
  • 神经网络的梯度下降法--基于手写数字识别神经网络(二)

    仅供个人学习使用 学习资料来源于 3Blue1Brown官方账号 上一节讲了神经网络的结构 本节主要讲神经网络是怎样进行学习 主要涉及两个内容 1 梯度下降的思想 Gtadient descent 2 隐含层神经元的真实目的 一 梯度 计算
  • C++报错无效的预处理命令include_C语言:全局变量在多个c文件中公用的方法!

    用C语言编写程序的时候 我们经常会遇到这样一种情况 希望在头文件中定义一个全局变量 然后包含到两个不同的c文件中 希望这个全局变量能在两个文件中共用 举例说明 项目文件夹project下有main c common c和common h三个
  • strapi的使用(一)

    一 strapi strapi是一个基于nodejs的CMS 内容管理系统 服务基于koa2 可以通过可视化页面简单的操作数据库建表 修改数据 配置权限等等 前端可以根据RESTful API 设计规范请求strapi默认配置的接口 获取到
  • 单片机设计_单路测温系统(AT89C51、DS18B20温度传感器、LCD1602)

    单片机测温系统 想要更多项目私wo 一 简介 此系统主要由AT89C51 DS18B20温度模块和LCD1602组成 大致的原理是DS18B20温度采集到的数据传送给AT89C51的P3 3 INT1 外部中断1 最后通过LCD1602显示
  • 让开发人员偷懒的正则表达式

    正则表达式是一种基于特殊模式符号系统的文本处理系统 简而言之 它为程序员提供了轻松处理和验证字符串的能力 它代表了DRY Don t Repeat Yourself 原则的实现 在几乎所有支持的语言中 正则表达式模式根本不会改变形式 在后端
  • github部署本地

    github的java项目部署到本地 通过idea 1 注册github 如果你没有github的账号 那需要注册一个 注册github可以参考 https zhuanlan zhihu com p 103268406 当然 由于githu
  • SSM项目-基于Java+Mysql的大学生奖助学金发放管理系统(附论文+源码)

    大家好 我是职场程序猿 感谢您阅读本文 欢迎一键三连哦 当前专栏 Java毕业设计 精彩专栏推荐 安卓app毕业设计 微信小程序毕业设计 演示视频 ssm112大学生奖助学金发放管理系统演示 源码下载地址 https download cs
  • HCNP Routing&Switching之MAC安全

    优质资源分享 学习路线指引 点击解锁 知识定位 人群定位 Python实战微信订餐小程序 进阶级 本课程是python flask 微信小程序的完美结合 从项目搭建到腾讯云部署上线 打造一个全栈订餐系统 Python量化交易实战 入门级 手
  • Spark 源码阅读一-启动脚本

    Spark Complile Help Links Because spark 1 5 need maven version 3 3 3 so i track the branch 1 4 git branch a git checkout
  • Day13 static-静态变量

    一 static 1 关于JavaBean类中的成员变量 public class Student private String name private int age private String gender 新增老师姓名 publi
  • 网页访问计数器 html,网页计数器(访问量)

    1 PHP实现网站访问量计数器 思路 用户向服务器发出访问请求 服务器读取访问次数文件 1 向客户端返回 服务器保存新的浏览次数 新用户访问 重复即可 解决方案 主要算法 1 数据文件 counter dat 2 读出数据文件 打开文件 如
  • Python Web:Flask异步执行任务

    Flask 是 Python 中有名的轻量级同步 web 框架 在一些开发中 可能会遇到需要长时间处理的任务 此时就需要使用异步的方式来实现 让长时间任务在后台运行 先将本次请求的响应状态返回给前端 不让前端界面 卡顿 当异步任务处理好后
  • jQuery empty() vs remove()

    https stackoverflow com questions 3090662 jquery empty vs remove http www cnblogs com yeer archive 2009 06 10 1500682 ht

随机推荐

  • JavaSE复习笔记

    第一章 Java概述 一 计算机语言 机器语言 汇编语言 高级语言 二 跨平台原理 Java可以在一处开发到处运行 即在一类操作系统上开发的程序 可以在任何操作系统上运行 不同的操作系统有不同的JVM java是运行在JVM上 从而实现了跨
  • win7系统打开定位服务器地址,win7 定位服务器地址

    win7 定位服务器地址 内容精选 换一换 您可以通过云日志服务 查看访问七层共享型负载均衡请求的详细日志记录 分析负载均衡的响应状态码 快速定位异常的后端服务器 您已经创建了七层负载均衡 您已经开通了云日志服务 登录管理控制台 在管理控制
  • 函数式组件与类组件有何不同?

    与React类组件相比 React函数式组件究竟有何不同 在过去一段时间里 典型的回答是类组件提供了更多的特性 比如state 当有了Hooks后 答案就不再是这样了 或许你曾听过它们中的某一个在性能上的表现优于另一个 那是哪一个 很多此类
  • MultipartFile实现文件上传和下载(Springboot)

    MultipartFile是SpringMVC提供简化上传操作的工具类 在不使用框架之前 都是使用原生的HttpServletRequest来接收上传的数据 文件是以二进制流传递到后端的 然后需要我们自己转换为File类 使用了Multip
  • 计算机专业选修课怎么选比较好,大一选修课选什么好 大学选修课推荐

    大学之于高中最大的不同点除了越来越多的自由时间以外 大学有各种各样的选修课供我们选择 在专业课之余 还可以选择其他自己感兴趣的学科进行学习 同时也能给自己增加一项技能 大学热门选修课 1 职场礼仪 礼仪是永远不会过时的 它是一个人的修养素质
  • 语法6:raise - 触发异常

    目录 1 基础格式 2 raise 单独语句 3 raise class 4 raise instance 5 raise from 6 try raise 实现循环跳出
  • JDK的命令行工具——修改中

    目录 一 jps 虚拟机进程状况工具 二 jstat 虚拟机统计信息监视工具 三 jinfo java配置信息工具 四 jmap java内存映像工具 五 jhat 虚拟机堆转储快照分析工具 仅做了解即可 六 jstack java堆栈跟踪
  • 以太坊私有网络的设置与体验

    记录一下搭建一个以太坊私有网络环境的过程 方便以后的开发 我这里采用的是Geth客户端 在geth ethereum org网站上有详细的文档介绍 这里主要是按照官网的教程来操作 安装 我是Ubuntu的环境 执行以下命令来安装 sudo
  • 使用hydra进行FTP认证破解

    hydra入门 hydra是什么 hydra的安装 hydra的基本使用 熟悉常见协议 HTTP协议 FTP协议 SSH协议 Telnet协议 熟悉hydra的参数 基本参数 高级参数 使用方法 使用hydra进行HTTP认证破解 HTTP
  • 搭建机器人电控系统——通信协议——串口通信USART/UART、RS232、RS485及其实例

    通信协议 串口通信详解 IIC通信详解 SPI通信详解 CAN通信详解 文章目录 通信协议 什么是串口 串口分类 USART UART RS232 RS485的区别 串口协议原理 传输协议 需要定义的参数 发送函数USART SendDat
  • Java是一门什么语言?

    个人理解 Java代码需要先编译成class 然后交给JVM执行 而JVM在执行class代码时是解释执行的 所以Java不是一门单纯的编译型或解释型语言 它是一门混合型语言 它是集编译型语言和解释型语言的优势于一身 即执行速度较快 只需编
  • 微调(fine-tuning)

    微调 fine tuing 是一种迁移学习 transfer learning 方法 在迁移学习过程中 预训练的模型的权重会根据新数据进行训练和调整
  • Python工程师面试必备25条知识点

    1 到底什么是Python 你可以在回答中与其他技术进行对比 Python是一种解释型语言 与C语言和C的衍生语言不同 Python代码在运行之前不需要编译 其他解释型语言还包括PHP和Ruby Python是动态类型语言 指的是你在声明变
  • Vue实现高德地图信息窗

  • 操作系统——读者写者问题(写者优先)

    阅读前提醒 本文代码为伪代码 仅供理解 马上就要被关得精神失常了 也许这是我的最后一条博客了吧 啊哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈水文来咯 1 什么是读者写者问题 一个数据文件或记录可被多个进程共享
  • 当pytest遇上poium会擦出什么火花 ?

    首先 创建一个test sample test demo py 文件 写入下面三行代码 def test bing page page get https www bing com assert page get title 必应 不要问题
  • 栈和队列-P79-9

    队列的最大容量为MaxSize 这句话并不是说该队列存满时的元素个数为MaxSize 这一种情况是最大容量为MaxSize 没有申请其他数据成员 判断队列满的条件是Q front Q rear 1 MaxSize 解释 通俗的解释 Q re
  • 强化学习:带起始探索的每次访问同策回合更新算法求解机器人找金币问题

    1 问题描述 2 环境建模 3 游戏环境类roadenv 设计 class roadenv def init self epsilon 0 5 gamma 0 8 状态空间 动作空间 self states 1 2 3 4 5 6 7 8
  • Python 线程池 ThreadPoolExecutor

    线程池 以前我们定义多线程任务的时候都是通过循环来控制线程数量 很不优雅 import threading class MyThread threading Thread def init self threadID name counte
  • 如何比较PixelCNN与DCGAN两种Image generation方法?

    今天组会读了一下deepmind的PixelCNN nips的那篇 不是很明白到底为什么follow的work这么多 而且pixel rnn还拿了best paper award 感觉pixel by pixel生成是一种非常反直觉的生成方