专栏名称: 机器之心
专业的人工智能媒体和产业服务平台
目录
相关文章推荐
先进能源科技战略情报研究中心  ·  美国能源部投入3500万美元支持利用AI促进 ... ·  12 小时前  
先进能源科技战略情报研究中心  ·  美国能源部投入3500万美元支持利用AI促进 ... ·  12 小时前  
爱可可-爱生活  ·  【[1k星]typescript-types ... ·  16 小时前  
机器之心  ·  CVPR ... ·  昨天  
爱可可-爱生活  ·  SWE-RL让AI具备更强大的软件工程推理能 ... ·  昨天  
爱可可-爱生活  ·  [LG]《Minions: ... ·  3 天前  
51好读  ›  专栏  ›  机器之心

开源 | OpenAI 的 PixelCNN++实现:基于 Python3 和 TensorFlow

机器之心  · 公众号  · AI  · 2016-12-19 21:08

正文

选自Github

机器之心编译

参与:朱思颖、蒋思源





今年 6 月 DeepMind 的一条官方推文里,公布了他们当时运用 PixelCNN 所生成的条件自然场景合成图,并称这种方法将艺术生成模型提升到一个新的水准。DeepMind 运用 PixelCNN 实现条件图像生成的论文也被今年的 NIPS 所收录(见文末附录)。6 个月之后,近日,OpenAI 在 GitHub 公开了 TensorFlow 框架里用 Python3 实现的 PixelCNN 优化版——PixelCNN++的源码,其论文已被 ICLR 2017 接收。


所公开的源码是 PixelCNN++的具体代码实现,是在 TensorFlow 框架里用 Python3 编写的。PixelCNN++的具体阐述在以下论文:


PixelCNN++:A PixelCNN Implementation with Discretized Logistic Mixture Likelihood and Other Modifications, by Tim Salimans, Andrej Karpathy, Xi Chen, Diederik P. Kingma, and Yaroslav Bulatov.


我们的研究是建立在 van der Oord 等人今年 6 月份最初提出来的 PixelCNN(所附论文一)上。PixelCNN 是一类强大的生成模型,它有易处理似然性(tractable likelihood)从而容易进行抽样。其核心的卷积神经网络计算在一个像素值上的概率分布,且受左侧和上侧的像素值约束。下面是在 CIFAR-10 上训练的模型里面的示例样本,其实现了每维度 2.92 bits(van der Oord 等人的 PixelCNN 是 3.03 bits):

来自模型(左)的样品和来自以 CIFAR-10 类标签为约束的模型的样本(右):




此代码支持将我们改进的 PixelCNN 在 CIFAR-10 和 Small ImageNet 上进行多 GPU 训练,并很容易适应额外的数据集。在具有 8 个 Maxwell TITAN X GPU 的机器上进行训练在大约 10 小时内能实现每个维度 3.0 bits,并且需要大约 5 天才能收敛到 2.92 bits。


开源地址: https://github.com/openai/pixel-cnn


设置


你需要以下环境运行该代码:


  • 多 GPU 计算机

  • Python3

  • Numpy, TensorFlow


训练模型


使用 train.py 脚本进行模型的训练,在 CIFAR-10 上训练默认模型只需要简单键入:


python3 train.py


你可能希望至少可更改 --data_dir 和 --save_dir,它们指向系统下载数据的路径(如果是无效的)和保存点的位置。


我想使用更少的 GPU 进行训练。为了在更少的 GPU 上训练,我们建议使用 CUDA_VISIBLE_DEVICES 缩小 GPU 可用(the visibility of GPUs)数量,然后再运行脚本。不要忘记相应地调制 flag: --nr_gpu。


我想训练自己的数据集。看看 data/ 文件夹中的 DataLoader 类,必须为你自己的数据集写一个类似的数据迭代器,然后代码才能从那边正常运行。


预训练模型检查点(checkpoint)


你可以下载(http://alpha.openai.com/pxpp.zip)(http://alpha.openai.com/pxpp.zip%EF%BC%89) 中我们已训练的模型(TensorFlow),它在 CIFAR-10 上实现了 2.92bpd。


引用


如果你发现代码很有用,请在你的研究中引用我们:


@inproceedings{Salimans2016PixeCNN,

title={PixelCNN++: A PixelCNN Implementation with Discretized Logistic Mixture Likelihood and Other Modifications},

author={Tim Salimans and Andrej Karpathy and Xi Chen and Diederik P. Kingma and Yaroslav Bulatov},

booktitle={Submitted to ICLR 2017},

year={2016}

}


附录:


论文:Conditional Image Generation with PixelCNN Decoders




摘要:

本研究探索了使用条件图像生成与基于 PixelCNN 架构的新的图像密度模型。该模型可以以任何矢量为条件,包括描述性标签或标签,或由其他网络创建的隐嵌入。当使用来自 ImageNet 数据库的类标签时,该模型能够生成表示不同动物,对象,风景和结构的多样化、形象逼真的场景。当对由未知的面部的单个图像给出的卷积网络产生的嵌入进行调节时,它可以生成不同面部表情,姿势和光照条件下同一个人的各种新肖像。我们还展示了条件 PixelCNN 可以作为图像自动编码器中的强大的解码器。此外,提出的模型中的门控卷积层提高了 PixelCNN 的对数似然度,以匹配 ImageNet 上的 PixelRNN 的最新性能,大大降低了计算成本。


论文:PIXELCNN++: A PIXELCNN IMPLEMENTATION WITH DISCRETIZED LOGISTIC MIXTURE LIKELIHOOD AND OTHER MODIFICATIONS









请到「今天看啥」查看全文