
支持多数据集的生成预训练模型
Image GPT是一个基于生成像素预训练模型(Generative Pretraining from Pixels)的PyTorch实现,支持多种预训练模型和数据集。该项目允许下载预训练模型、量化图像、进行生成预训练和分类微调。它还具有BERT风格的预训练、支持加载OpenAI预训练模型等功能。目前,使用单个NVIDIA 2070 GPU可在Fashion-MNIST上实现高效训练,简化了多种图像数据集上的生成模型训练和应用流程。
Image GPT,是一种基于PyTorch的项目,其目的是实现从像素开始的生成式预训练。这项工作是基于Chen等人的Generative Pretraining from Pixels论文,以及他们提供的代码。Image GPT利用生成模型来完成和扩展输入的图像片段,从而生成完整的图像。
在项目中,通过预训练的模型,可以生成测试集中一半图像的补全。比如,利用iGPT-S模型对CIFAR10数据集进行预训练时,由于仅在CIFAR10而非完整的ImageNet上进行训练,因此生成的图像补全效果相对较差。
项目仍在进行中,目前的工作包括:
sklearn.cluster.MiniBatchKMeans)。根据OpenAI的博客文章,最大的模型iGPT-L(140万参数)在训练时使用了2500个V100天。通过大幅减少注意力头的数量、层数和输入大小(这会使模型大小呈二次方缩放),可以在单个NVIDIA 2070上不到两个小时内训练我们自己的模型(26,000参数)来处理Fashion-MNIST数据集。
在项目的models目录中可以找到一些预训练模型。通过./download.sh可以下载CIFAR10预训练的iGPT-S模型。
图像会被下载,然后使用K均值计算质心。计算的质心用于图像量化,图像在被输入模型之前需进行此步骤。
命令示例:
# 选项:mnist, fmnist, cifar10 python src/compute_centroids.py --dataset mnist --num_clusters=8 # 这会创建 data/<dataset>_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
预训练模型可以通过传递预训练检查点的路径进行微调,此外还需提供配置文件和数据集。
命令示例:
python src/run.py --dataset mnist train configs/xxs_clf.yml --pretrained=models/mnist_gen.ckpt`
可以使用随机的测试图像生成类似上图的样例:
命令示例:
# 输出至 figure.png python src/sample.py models/mnist_gen.ckpt
还可以用命令生成类似于推文中展示的GIF:
# 输出至 out.gif python src/gif.py models/mnist_gen.ckpt
通过以上说明,读者可以理解并使用Image GPT项目进行图像生成与分析。通过不断更新与优化,Image GPT有望在图像生成任务中得出更高质量的结果。