Il peut être préférable d'avoir un titre qui génère une image à partir d'un tableau numpy en Python3 (osez être une niche (^^;)
cifar est un ensemble d'images d'avions et de chats, et le concombre est un ensemble d'images de concombres (comme son nom l'indique). Il est distribué au format de tableau numpy afin qu'il soit facile à utiliser pour l'apprentissage automatique, mais la motivation est de jeter un œil au contenu réel.
https://www.cs.toronto.edu/~kriz/cifar.html https://github.com/workpiles/CUCUMBER-9
Il semble que le concombre ait le même format que le cifer, mais en réalité, il était différent et nécessitait un traitement séparé. Le format de concombre est-il plus pratique pour Tensorflow? (Je ne connais pas la raison)
data.shape = (10000, 3072) # cifar-10
data.shape = (1485, 1024) # CUCUMBER-9
L'exemple de programme est le suivant. Pour Python2, utilisez cPickle. Nécessite numpy et 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)
Si vous exécutez chaque ensemble de données dans le répertoire actuel, il enlèvera au hasard une feuille et l'enregistrera en tant qu'image.
Recommended Posts