image gpt
1.0.0
圖像 GPT 的 PyTorch 實現,基於論文Generative Pretraining from Pixels (Chen 等人)和隨附的程式碼。
模型產生的測試集半影像的補全。第一列是輸入;最後一列是原始影像
iGPT-S 在 CIFAR10 上進行預訓練。完成度相當差,因為模型僅在 CIFAR10 上訓練,而不是在所有 ImageNet 上訓練。
sklearn.cluster.MiniBatchKMeans
。) 根據他們的部落格文章,最大的模型 iGPT-L(1.4 M 參數)訓練了 2500 V100 天。透過大幅減少注意力頭的數量、層數和輸入大小(這會以二次方方式影響模型大小),我們可以在不到2 小時的時間內在單一NVIDIA 2070 上的Fashion-MNIST 上訓練我們自己的模型(26 K 參數)。
一些預先訓練的模型位於models
目錄中。運行./download.sh
下載cifar10
預訓練的 iGPT-S 模型。
下載圖像,並使用k均值和num_clusters
簇計算質心。這些質心用於在將影像輸入模型之前對其進行量化。
# options: mnist, fmnist, cifar10
python src/compute_centroids.py --dataset mnist --num_clusters=8
# creates data/_centroids.npy
注意:在模型中使用與num_vocab
相同的num_clusters
。
可以使用src/run.py
和train
指令來訓練模型。
可以透過指定資料集和模型配置來預先訓練模型。 configs/s_gen.yml
對應於論文中的 iGPT-S, configs/xxs_gen.yml
是一個超小型模型,用於嘗試計算有限的玩具資料集。
python src/run.py --dataset mnist train configs/xxs_gen.yml
可以透過將預訓練檢查點的路徑以及設定檔和資料集傳遞給--pretrained
來微調預訓練模型。
python src/run.py --dataset mnist train configs/xxs_clf.yml --pretrained=models/mnist_gen.ckpt `
可以使用測試集中的隨機圖像創建類似上面的圖形:
# outputs to figure.png
python src/sample.py models/mnist_gen.ckpt
像我推文中看到的那樣的 GIF 可以這樣製作:
# outputs to out.gif
python src/gif.py models/mnist_gen.ckpt