當前位置:
首頁 > 科技 > OpenAI 的 PixelCNN++實現

OpenAI 的 PixelCNN++實現

選自Github


機器之心編譯


參與:朱思穎、蔣思源

OpenAI 的 PixelCNN++實現



今年 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 類標籤為約束的模型的樣本(右):

OpenAI 的 PixelCNN++實現


此代碼支持將我們改進的 PixelCNN 在 CIFAR-10 和 SmallImageNet上進行多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,


author=,


booktitle=,


year=


}


附錄:


論文:Conditional Image Generation with PixelCNN Decoders

OpenAI 的 PixelCNN++實現



摘要:


本研究探索了使用條件圖像生成與基於 PixelCNN 架構的新的圖像密度模型。該模型可以以任何矢量為條件,包括描述性標籤或標籤,或由其他網路創建的隱嵌入。當使用來自ImageNet資料庫的類標籤時,該模型能夠生成表示不同動物,對象,風景和結構的多樣化、形象逼真的場景。當對由未知的面部的單個圖像給出的卷積網路產生的嵌入進行調節時,它可以生成不同面部表情,姿勢和光照條件下同一個人的各種新肖像。我們還展示了條件 PixelCNN 可以作為圖像自動編碼器中的強大的解碼器。此外,提出的模型中的門控卷積層提高了 PixelCNN 的對數似然度,以匹配ImageNet上的 PixelRNN 的最新性能,大大降低了計算成本。


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

OpenAI 的 PixelCNN++實現



PixelCNN 是最近提出的一類具有易處理似然性(tractable likelihood)的強大生成模型。本文將討論我們怎樣實現 PixelCNN,同時在 Github 上開源。我們的實現方法包含對原始模型的多個修改,不僅精簡了結構,還提高了性能。主要從以下幾個角度完成:1. 我們使用像素上的離散邏輯混合似然(discretized logistic mixture likelihood),而不是 256 階的 softmax 回歸(256-way softmax),這能大大加快訓練。2. 我們對整個像素而不是 R/G/B 子像素進行約束,從而簡化模型結構。3. 我們使用下採樣(downsampling)有效地捕獲多種解析度結構。4. 我們引入額外的快捷連接,以進一步加速優化。5. 我們使用 dropout 對模型進行正則化。最後,我們在 CIFAR-10 上呈現最先進的對數似然(log likelihood)結果,以證明這些改進的有用性。


請您繼續閱讀更多來自 機器之心 的精彩文章:

谷歌自動駕駛公司Waymo新車型,計劃明年上路
紐約大學發現新的言語工作記憶結構,可用於人工智慧研究
耶魯大學人腦研究:用磁共振掃描你的智力水平
深度學習遇上物理學:上能分析星系團,下能解碼基本粒子

TAG:機器之心 |

您可能感興趣

OpenAI 聯手 DeepMind,找到「馴化」AI 新辦
OpenAI的人工智慧進軍DOTA2:影魔solo輕鬆擊敗頂級選手天才少年Dendi和Sumail!
OpenAI——用80年代AI碾壓DeepMind
OpenAI Universe加入GTA5,遊戲訓練人工智慧
OpenAI 聯手DeepMind,找到「馴化」AI 新辦法
Dota淪陷:OpenAI狂虐Dota2世界冠軍
OpenAI橫掃《Dota2》選手Dendi 人工智慧所向披靡!
OpenAI及DeepMind兩團隊令未來的AI機器更安全
OpenAI開源機器人模擬軟體Roboschool
谷歌DeepMind與OpenAI合作預防機器人暴亂
OpenAI聯合DeepMind發布全新研究:根據人類反饋進行強化學習
微軟創立全新人工智慧實驗室,將與 DeepMind、OpenAI 同台競技
OpenAI是如何在dota2中擊敗頂級人類選手的?
OpenAI人工智慧1v1擊敗Dota2最強玩家
OpenAI和Google 是如何預防人工智慧失控的?
OpenAI打敗Dota2職業玩家 AI將稱霸遊戲世界?
OpenAI:當AlphaGo應用於機器人領域是否戰無不勝?
人工智慧攻陷電競,OpenAI 完虐Dota2職業高手
馬斯克的 OpenAI 擊敗《Dota 2》職業電競選手