python - objetos - TensorFlow: entrenamiento en mi propia imagen
tensorflow reconocimiento de imagen (1)
Soy nuevo en TensorFlow. Estoy buscando ayuda para el reconocimiento de imágenes donde puedo entrenar mi propio conjunto de datos de imágenes .
¿Hay algún ejemplo para entrenar el nuevo conjunto de datos?
Si está interesado en cómo ingresar sus propios datos en TensorFlow, puede consultar este tutorial .
También escribí una guía con las mejores prácticas para CS230 en Stanford here .
Nueva respuesta (con tf.data
) y con etiquetas
Con la introducción de tf.data
en r1.4
, podemos crear un lote de imágenes sin marcadores de posición y sin colas. Los pasos son los siguientes:
- Crea una lista que contenga los nombres de archivo de las imágenes y una lista correspondiente de etiquetas
- Crea un
tf.data.Dataset
lea estos nombres de archivo y etiquetas - Preprocesar los datos
- Cree un iterador a partir del
tf.data.Dataset
que producirá el siguiente lote
El código es:
# 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()
Ahora podemos ejecutar directamente sess.run([images, labels])
sin alimentar ningún dato a través de marcadores de posición.
Respuesta anterior (con colas TensorFlow)
Para resumir, tienes varios pasos:
- Crea una lista de nombres de archivos (por ejemplo: las rutas a tus imágenes)
- Crear una cola de nombre de archivo TensorFlow
- Lea y decodifique cada imagen, redimensionelas a un tamaño fijo (necesario para el procesamiento por lotes)
- Imprime un lote de estas imágenes
El código más simple sería:
# 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)