52 votes

TensorFlow: s'entraîner à ma propre image

Je suis nouveau sur TensorFlow. Je cherche de l'aide sur la reconnaissance d'image où je peux former mon propre jeu de données d' image .

Existe-t-il un exemple pour la formation du nouvel ensemble de données?

98voto

Olivier Moindrot Points 17630

Si vous êtes intéressé dans la saisie de vos données en TensorFlow, vous pouvez consulter ce tutoriel.
J'ai également écrit un guide des bonnes pratiques pour CS230 à Stanford ici.


Nouvelle réponse (avec tf.data) et avec des étiquettes

Avec l'introduction de l' tf.data en r1.4, nous pouvons créer un lot d'images, sans espaces et sans files d'attente. Les étapes sont les suivantes:

  1. Créer une liste contenant les noms de fichiers des images et une liste d'étiquettes
  2. Créer un tf.data.Dataset de la lecture de ces noms de fichiers et les étiquettes
  3. Prétraiter les données
  4. Créer un itérateur de l' tf.data.Dataset qui produira la prochaine fournée

Le code est:

# step 1
filenames = tf.constant(['im_01.jpg', 'im_02.jpg', 'im_03.jpg', 'im_04.jpg'])
labels = tf.constant([0, 1, 0, 1])

# step 2: create a dataset returning slices of `filenames`
dataset = tf.data.Dataset.from_tensor_slices((filenames, labels))

# step 3: parse every image in the dataset using `map`
def _parse_function(filename, label):
    image_string = tf.read_file(filename)
    image_decoded = tf.image.decode_jpeg(image_string, channels=3)
    image = tf.cast(image_decoded, tf.float32)
    return image, label

dataset = dataset.map(_parse_function)
dataset = dataset.batch(2)

# step 4: create iterator and final input tensor
iterator = dataset.make_one_shot_iterator()
images, labels = iterator.get_next()

Nous pouvons maintenant lancer directement sess.run([images, labels]) sans se nourrir de toutes les données grâce à des espaces réservés.


Ancien réponse (avec TensorFlow les files d'attente)

Pour résumer, vous avez plusieurs étapes:

  1. Créer une liste de noms de fichiers (ex: les chemins d'accès à vos images)
  2. Créer un TensorFlow nom de fichier de la file d'attente
  3. Lire et décoder chaque image, redimensionner à une taille fixe (nécessaire pour le traitement par lots)
  4. La sortie d'un lot de ces images

Le code le plus simple serait:

# step 1
filenames = ['im_01.jpg', 'im_02.jpg', 'im_03.jpg', 'im_04.jpg']

# step 2
filename_queue = tf.train.string_input_producer(filenames)

# step 3: read, decode and resize images
reader = tf.WholeFileReader()
filename, content = reader.read(filename_queue)
image = tf.image.decode_jpeg(content, channels=3)
image = tf.cast(image, tf.float32)
resized_image = tf.image.resize_images(image, [224, 224])

# step 4: Batching
image_batch = tf.train.batch([resized_image], batch_size=8)

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X