tutorial redes reconocimiento neuronales neuronal imagenes ejemplos convolucionales convolucional clasificador basicos machine-learning neural-network dbn

machine-learning - reconocimiento - redes neuronales convolucionales python



Aprendizaje profundo para la clasificación de imágenes (3)

Debe usar una capa softmax ( http://en.wikipedia.org/wiki/Softmax_activation_function ) en la parte superior de la red que ha utilizado para la generación, y usar la propagación hacia atrás para ajustar la red final.

Después de leer algunos artículos sobre el aprendizaje profundo y las redes de creencias profundas, tuve una idea básica de cómo funciona. Pero sigue pegado con el último paso, es decir, el paso de clasificación. La mayor parte de la implementación que encontré en Internet tiene que ver con la generación. (Dígitos MNIST)

¿Hay alguna explicación (o código) disponible en algún lugar que se refiera a la clasificación de imágenes (preferiblemente imágenes u objetos) utilizando DBN?

También algunos consejos en la dirección sería realmente útil.


Estos días la gente comienza a usar SVM en la capa de clasificación.

El aprendizaje profundo está evolucionando muy libre y ampliamente.


La idea basica

En estos días, el aprendizaje profundo del estado de la técnica para problemas de clasificación de imágenes (por ejemplo, ImageNet ) suele ser "redes neuronales de convolución profunda" (ConvNets profundas). Se parecen más o menos a esta configuración ConvNet de Krizhevsky et al :

Para la inferencia (clasificación) , alimenta una imagen en el lado izquierdo (observe que la profundidad en el lado izquierdo es 3, para RGB), cruje a través de una serie de filtros de convolución y escupe un vector de 1000 dimensiones en el lado derecho. Esta imagen es especialmente para ImageNet, que se enfoca en la clasificación de 1000 categorías de imágenes, por lo que el vector 1000d es "la puntuación de la probabilidad de que esta imagen se ajuste a la categoría".

Entrenar la red neuronal es solo un poco más complejo. Para el entrenamiento, básicamente ejecutas la clasificación repetidamente, y de vez en cuando haces propagación hacia atrás (consulta las conferencias de Andrew Ng) para mejorar los filtros de convolución en la red. Básicamente, la propagación hacia atrás pregunta "¿qué clasificó la red correctamente / incorrectamente? Para cosas mal clasificadas, reparemos un poco la red".

Implementación

Caffe es una implementación de código abierto muy rápida (más rápida que cuda-convnet de Krizhevsky y otros) de redes neuronales convolucionales profundas. El código de Caffe es bastante fácil de leer; básicamente hay un archivo C ++ por tipo de capa de red (por ejemplo, capas convolucionales, capas de agrupación máxima, etc.).