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é.