如何比较PixelCNN与DCGAN两种Image generation方法?
2017-04-02 18:02
435 查看
今天组会读了一下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 likelihood
,虽说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
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 likelihood
,虽说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
相关文章推荐
- 如何比较PixelCNN与DCGAN两种Image generation方法?
- 一个简单登陆框的变化+更新了如何连接sql数据库,获得数据集,比较两种方法(数据集和读数据)
- C#实现Singleton的两种方法的比较
- Oracle中自增字段的两种方法的比较(Trigger和Sequence)
- ASP创建对象的两种方法比较
- Oracle Spool的用法小结以及两种方法的比较----------导出记录到文本
- DotNet开发中关于SQLServer连接的两种方法之比较
- 在sdk中如何加入web浏览器的两种方法(部分原创部分翻译)
- 如何恢复LINUX的引导(两种方法)
- 再谈两种不同字符串比较方法的性能对比
- 两种实现事务方法的比较
- php面向对象的方法重载两种版本比较
- 两种比较典型的ASP木马防范方法
- thin 和 oci两种方法连接oracle数据库 比较
- ASP创建对象的两种方法比较
- DotNet开发中关于SQLServer连接的两种方法之比较
- 两种不同字符串比较方法的性能对比
- 如何C#中实现在TreeView查找某一节点(两种方法)
- CSS渐变文本效果的两种方法比较
- 如何C#中实现在TreeView查找某一节点(两种方法)