画像 GPT の PyTorch 実装。論文「Generative Pretraining from Pixels 」(Chen et al.) とそれに付随するコードに基づいています。
モデルによって生成された、テスト セットからの半分のイメージの完成。最初の列は入力です。最後の列は元の画像です
CIFAR10 で事前トレーニングされた iGPT-S。モデルは ImageNet のすべてではなく CIFAR10 でのみトレーニングされたため、完成度はかなり悪いです。
sklearn.cluster.MiniBatchKMeans
を使用しています)。 彼らのブログ投稿によると、最大のモデルである iGPT-L (140 万パラメータ) は 2500 V100 日間トレーニングされました。アテンション ヘッドの数、レイヤーの数、および入力サイズ (モデル サイズに二次的に影響します) を大幅に削減することで、単一の NVIDIA 2070 上の Fashion-MNIST で独自のモデル (26 K パラメーター) を 2 時間以内にトレーニングできます。
一部の事前トレーニング済みモデルはmodels
ディレクトリにあります。 ./download.sh
を実行して、 cifar10
事前トレーニング済み iGPT-S モデルをダウンロードします。
画像がダウンロードされ、 num_clusters
クラスターを使用したk平均法を使用して重心が計算されます。これらの重心は、モデルに入力される前に画像を量子化するために使用されます。
# 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