web-dev-qa-db-fra.com

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 ma propre image ensemble de données.

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

37
VICTOR

Si vous souhaitez savoir comment entrer vos propres données dans TensorFlow, vous pouvez consulter ce didacticiel .
J'ai également rédigé un guide contenant les meilleures pratiques pour le CS230 à Stanford ici .


Nouvelle réponse (avec tf.data) Et avec étiquettes

Avec l'introduction de tf.data Dans r1.4, Nous pouvons créer un lot d'images sans espaces réservés 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 correspondante
  2. Créez un tf.data.Dataset Lisant ces noms de fichiers et étiquettes
  3. Prétraiter les données
  4. Créez un itérateur à partir du tf.data.Dataset Qui donnera le prochain lot

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()

Maintenant, nous pouvons exécuter directement sess.run([images, labels]) sans introduire de données dans des espaces réservés.


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

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 une file d'attente de fichiers TensorFlow
  3. Lire et décoder chaque image, les redimensionner à une taille fixe (nécessaire pour le traitement en lot)
  4. Produire 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)
70
Olivier Moindrot