tutorial neuronal machine libreria learning imagenes funciones espaƱol ejemplos convolucional clasificador basicos machine-learning computer-vision deep-learning tensorflow

machine-learning - neuronal - tensorflow libreria



Extraiga funciones usando CNN preentrenado(Tensorflow) (1)

El equipo de TensorFlow lanzó recientemente una profunda CNN capacitada en el conjunto de datos de ImageNet. Puede descargar la secuencia de comandos que recupera los datos (incluido el modelo de gráfico y los pesos entrenados) desde here . El tutorial de Reconocimiento de imágenes asociado contiene más detalles sobre el modelo.

Si bien el modelo actual no está específicamente empaquetado para ser utilizado en un paso de capacitación posterior, puede explorar la modificación de la secuencia de comandos para reutilizar partes del modelo y los pesos entrenados en su propia red.

Deep Learning se ha aplicado con éxito en varios grandes conjuntos de datos para la clasificación de un puñado de clases (gatos, perros, automóviles, aviones, etc.), con actuaciones que superan descripciones más simples como Bolsas de características sobre SIFT, histogramas de color, etc.

Sin embargo, la formación de dicha red requiere una gran cantidad de datos por clase y mucho tiempo de entrenamiento. Sin embargo, muy a menudo uno no tiene suficientes datos o simplemente quiere hacerse una idea de lo bien que puede funcionar una red neuronal convolucional, antes de dedicar un tiempo a diseñar y entrenar dicho dispositivo y recopilar los datos de capacitación.

En este caso particular, podría ser ideal tener una red configurada y entrenada utilizando algún conjunto de datos de referencia utilizado por las publicaciones de vanguardia, y simplemente aplicarlo a algún conjunto de datos que pueda tener como extractor de características.

Esto da como resultado un conjunto de características para cada imagen, que podría alimentar a un método de clasificación clásico como SVM, regresión logística, redes neuronales, etc.

En particular, cuando uno no tiene suficientes datos para entrenar a la CNN, puedo esperar que esto supere el rendimiento de una tubería donde CNN recibió capacitación sobre algunas muestras.

Estaba viendo los tutoriales de tensorflow, pero siempre parecen tener una fase clara de entrenamiento / prueba. No pude encontrar un archivo encurtido (o similar) con un extractor de funciones de CNN preconfigurado.

Mis preguntas son: ¿existen esas redes preformadas y dónde puedo encontrarlas? Alternativamente: ¿tiene sentido este enfoque? ¿Dónde podría encontrar pesas CNN +?

EDITAR el comentario de Wrt @ john Intenté usar ''DecodeJpeg:0'' y ''DecodeJpeg/contents:0'' y verifiqué las salidas, que son diferentes (: S)

import cv2, requests, numpy import tensorflow.python.platform import tensorflow as tf response = requests.get(''https://i.stack.imgur.com/LIW6C.jpg?s=328&g=1'') data = numpy.asarray(bytearray(response.content), dtype=np.uint8) image = cv2.imdecode(data,-1) compression_worked, jpeg_data = cv2.imencode(''.jpeg'', image) if not compression_worked: raise Exception("Failure when compressing image to jpeg format in opencv library") jpeg_data = jpeg_data.tostring() with open(''./deep_learning_models/inception-v3/classify_image_graph_def.pb'', ''rb'') as graph_file: graph_def = tf.GraphDef() graph_def.ParseFromString(graph_file.read()) tf.import_graph_def(graph_def, name='''') with tf.Session() as sess: softmax_tensor = sess.graph.get_tensor_by_name(''pool_3:0'') arr0 = numpy.squeeze(sess.run( softmax_tensor, {''DecodeJpeg:0'': image} )) arr1 = numpy.squeeze(sess.run( softmax_tensor, {''DecodeJpeg/contents:0'': jpeg_data} )) print(numpy.abs(arr0 - arr1).max())

Entonces la diferencia absoluta máxima es 1.27649 , y en general todos los elementos difieren (especialmente dado que el valor promedio de los arr0 y arr1 se encuentra entre 0 - 0.5).

También esperaría que ''DecodeJpeg:0'' necesita una cadena de jpeg, no una matriz numpy, ¿por qué el nombre contiene ''Jpeg''? @john: ¿Podría decir qué tan seguro está acerca de su comentario?

Así que supongo que no estoy seguro de qué es qué, ya que esperaría que una red neuronal entrenada fuera determinista (pero caótica como máximo).