2017-08-10 4 views
0

Je suis en train d'écrire un programme d'apprentissage automatique pour identifier les centres de cercles dans des images en noir et blanc. Le script générateur d'images est ici:Pré-traitement d'image circulaire générée pour Tensorflow

from __future__ import division 
from __future__ import print_function 
import numpy as np 
from PIL import Image 
from random import randint 


for n in range(0,400): 
#import time 
#date_string = time.strftime("%Y-%m-%d-%H:%M:%S") 
#Initialize the matrix- Size (100,100) 
size = 100 
arr = np.zeros((size,size)) 

#Initialize the Gaussian Properties 

x0 = randint(1,100); y0 = randint(1,100); sigmax = randint(1,10); 
sigmay = randint(1,10) 

center = (x0,y0) 
print (center) 
#Create the Gaussian Function 

def Gaussian(x,y): 
    result = int(round(255*np.exp(-(x - x0)**2/(2 * sigmax**2)) * 
    np.exp(-(y - y0)**2/(2 *sigmay**2)))) 
    return result 

for i in range(size): 
    for j in range(size): 
     arr[i][j] = Gaussian(i,j) 

im = Image.fromarray(arr) 
if im.mode !='RGB': 
    im = im.convert('RGB') 
    #im.show() 
    im.save("/home/garrett/train/"+str(n)+".jpeg", "JPEG") 

Ce script génère une image comme celle d'un cercle noir et blanc, et l'étiquette donnant le centre est sortie dans un fichier texte. J'utilise le script trouvé à https://github.com/tensorflow/models/blob/master/inception/inception/data/build_imagenet_data.py comme une boîte noire pour traiter mes données d'image pour une utilisation avec Tensorflow. Cependant, quand je lance cette commande:

python build_image_data.py --train_directory=./train -- 
output_directory=./ --validation_directory=./validate -- 
labels_file=mylabels.txt --train_shards=1 --validation_shards=1 -- 
num_threads=1 

Je reçois le message d'erreur suivant:

Saving results to ./ 
Determining list of input files and labels from ./validate. 
Traceback (most recent call last): 
    File "build_image_data.py", line 435, in <module> 
    tf.app.run() 
    File "/home/garrett/anaconda3/lib/python3.6/site- 
packages/tensorflow/python/platform/app.py", line 48, in run 
    _sys.exit(main(_sys.argv[:1] + flags_passthrough)) 
    File "build_image_data.py", line 429, in main 
    FLAGS.validation_shards, FLAGS.labels_file) 
    File "build_image_data.py", line 415, in _process_dataset 
    filenames, texts, labels = _find_image_files(directory, 
labels_file) 
    File "build_image_data.py", line 379, in _find_image_files 
    matching_files = tf.gfile.Glob(jpeg_file_path) 
    File "/home/garrett/anaconda3/lib/python3.6/site- 
packages/tensorflow/python/lib/io/file_io.py", line 332, in 
get_matching_files 
    for single_filename in filename 
    File "/home/garrett/anaconda3/lib/python3.6/contextlib.py", line 89, 
in __exit__ 
    next(self.gen) 
    File "/home/garrett/anaconda3/lib/python3.6/site- 
packages/tensorflow/python/framework/errors_impl.py", line 466, in 
raise_exception_on_not_ok_status 
    pywrap_tensorflow.TF_GetCode(status)) 
tensorflow.python.framework.errors_impl.NotFoundError: ./validate/(33, 
23) 

Est-ce la bonne méthode? Si oui, qu'est-ce que je fais de mal? Si non, quelle est la bonne méthode de formatage de mes données à utiliser avec Tensorflow? Si cela aide, je prévois d'utiliser un réseau de neurones convolutionnels pour identifier les centres. C'est probablement exagéré, mais c'est plus pour la pratique avant que j'achève une tâche similaire, plus compliquée.

Merci, et tout conseil est apprécié.

Répondre