Es ist möglicherweise besser, einen Titel zu haben, der ein Bild aus einem numpy-Array in Python3 generiert (wage es, eine Nische zu sein (^^;)
cifar ist ein Bildsatz von Flugzeugen und Katzen, und Gurke ist ein Bildsatz von Gurken (wie der Name schon sagt). Es wird im Numpy-Array-Format verteilt, so dass es für maschinelles Lernen einfach zu verwenden ist. Die Motivation besteht jedoch darin, einen Blick auf den tatsächlichen Inhalt zu werfen.
https://www.cs.toronto.edu/~kriz/cifar.html https://github.com/workpiles/CUCUMBER-9
Es scheint, dass Gurke das gleiche Format wie Cifer hat, aber in Wirklichkeit war es anders und jedes erforderte eine separate Verarbeitung. Ist das Gurkenformat für Tensorflow bequemer? (Ich kenne den Grund nicht)
data.shape = (10000, 3072) # cifar-10
data.shape = (1485, 1024) # CUCUMBER-9
Das Beispielprogramm ist wie folgt. Verwenden Sie für Python2 cPickle. Benötigt Numpy und PIL.
import numpy as np
import _pickle,random
from PIL import Image
def unpickle(file):
fo = open(file, 'rb')
dict = _pickle.load(fo, encoding='latin-1')
fo.close()
return dict
def image_from_cifar(index,dic):
name = dic['filenames'][index]
data = dic['data'][index].reshape(3, 32, 32).transpose(1, 2, 0) # shape=(32, 32, 3)
img = Image.fromarray(data, 'RGB')
print(name)
img.save(name)
def image_from_cucumber(index,dic):
name = dic['filenames'][index]
r = dic['data'][index*3]
g = dic['data'][index*3+1]
b = dic['data'][index*3+2]
data = np.array([r,g,b]).T.reshape(32,32,3)
img = Image.fromarray(data, 'RGB')
print(name)
img.save(name)
if __name__ == "__main__":
dic = unpickle('cifar-10-batches-py/data_batch_1')
image_from_cifar(random.randint(0,len(dic['filenames'])),dic)
dic = unpickle('CUCUMBER-9-master/prototype_1/cucumber-9-python/data_batch_1')
image_from_cucumber(random.randint(0,len(dic['filenames'])),dic)
Wenn Sie jeden Datensatz im aktuellen Verzeichnis ausführen, wird zufällig ein Blatt herausgenommen und als Bild gespeichert.
Recommended Posts