[PYTHON] Datensatz "Moving MNIST"

Einführung

Moving MNIST ist ein Testsatz zur Bewertung der Sequenzvorhersage und -rekonstruktion. Eine Sammlung von Bildern, die so erstellt wurden, dass sich handgeschriebene Zahlen auf dem Bildschirm bewegen.

000000.gif Das linke ist der Datensatz und das rechte ist ein Beispiel für die Vorhersage. Zitiert aus dieser Site.

Es gibt 10.000 Datentypen mit jeweils 20 Frames. Das Bild hat eine Größe von 64 x 64 und zeigt zwei Zahlen.

Daten lesen

Sie können es von [dieser Site] herunterladen (http://www.cs.toronto.edu/~nitish/unsupervised_video/).

!curl -o mnist_test_seq.npy http://www.cs.toronto.edu/~nitish/unsupervised_video/mnist_test_seq.npy

Lesen Sie die Daten.

import numpy as np

path="./mnist_test_seq.npy"
data = np.load(path)

print(data.shape)  # (20, 10000, 64, 64)

Lassen Sie uns ipywidgets verwenden, um zu überprüfen, ob das Video korrekt ist.

%matplotlib inline
import matplotlib.pyplot as plt
from ipywidgets import interact

def f(k):
    plt.imshow(data[k][0], 'gray')
    plt.show()

interact(f, k=(0,19,1) )

タイトルなし.gif

Es gibt 10.000 solcher Sets.

So erstellen Sie einen Datensatz, wenn Sie 10 Frames mit 10 Frames vorhersagen.

import numpy as np
from torch.utils.data import Dataset


class MovingMnistDataset(Dataset):
    def __init__(self, path="./mnist_test_seq.npy"):
        self.data = np.load(path)
        # (t, N, H, W) -> (N, t, C, H, W)
        self.data = self.data.transpose(1, 0, 2, 3)[:, :, None, ...]

    def __len__(self):
        return len(self.data)

    def __getitem__(self, i):
        return self.data[i, :10, ...].astype(np.int32), self.data[i, 10:, ...].astype(np.int32)

dataset = MovingMnistDataset()

Recommended Posts

Datensatz "Moving MNIST"
Datensatzgenerierung
Datensatz für maschinelles Lernen
Künstlicher Datensatz (Sinusfunktion)
[MNIST] Konvertiert Daten für Keras in PNG