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