Reconocimiento de imágenes | Reconocimiento de dígitos escritos a mano basado en Keras (incluido el código)
La ola de inteligencia artificial está arrasando el mundo y palabras como aprendizaje profundo e inteligencia artificial (IA) nos rodean constantemente. El desarrollo de la inteligencia artificial es un proceso de tres altibajos. Durante la década de 1990, razonamiento del conocimiento >: red neuronal > aprendizaje automático; alrededor de 2005, aprendizaje automático >: conocimiento (web semántica) > red neuronal; después de 2017, red neuronal basada en aprendizaje profundo >: conocimiento (gráfico de conocimiento) > aprendizaje automático.
La red neuronal convolucional (CNN), como representante del aprendizaje profundo, fue propuesta por primera vez en 1961 por dos neurobiólogos, Hubel y Wiesel. En experimentos con células de la corteza visual de gatos, se descubrió que la corteza visual del cerebro es jerárquica (la estructura de red jerárquica en CNN es exactamente la misma). Como subcampo del aprendizaje automático (ML), el aprendizaje profundo ha experimentado un renacimiento espectacular debido al aumento de la potencia informática y la disponibilidad de grandes cantidades de datos. Sin embargo, es discutible si el aprendizaje profundo puede ser igual o representar la inteligencia artificial. El aprendizaje profundo puede considerarse una tecnología importante en la etapa actual de desarrollo de la inteligencia artificial. Dado que este artículo escribe principalmente una introducción al aprendizaje profundo y no realiza una investigación en profundidad sobre el concepto de detalles, el autor presenta el proceso general de aprendizaje profundo para procesar imágenes de casos reales.
Contenido:
Tome los dígitos de reconocimiento de escritura a mano como ejemplo. Como proyecto introductorio al aprendizaje profundo, este artículo se basa en la biblioteca de aprendizaje profundo de Keras. Los módulos utilizados como Tensorflow deben configurarse con anticipación y se debe prestar atención al modelo y las rutas de los archivos para guardar y cargar imágenes. Debe crearse o modificarse para ejecutarse en su propia computadora. El siguiente proceso incluye: cargar el conjunto de datos MNIST con Keras, construir un modelo de red de entrenamiento Lenet, guardar y cargar el modelo con Keras, entrenar y predecir el conjunto de datos de dígitos escritos a mano con Keras y, finalmente, dibujar un gráfico de iteración de errores.
Introducción al conjunto de datos de dígitos escritos a mano:
El reconocimiento de dígitos escritos a mano es casi un conjunto de datos introductorio para el aprendizaje profundo. El conjunto de datos MNIST está integrado en keras. El conjunto de prueba contiene 60.000 datos y el conjunto de verificación contiene 10.000 datos, los cuales son imágenes en escala de grises de un solo canal. El tamaño de píxel de cada imagen es 28,28. A * * * contiene 65,438+00 categorías, numeradas del 0 al 9.
Importar módulos relacionados:
Cargar conjunto de datos MNIST
Keras puede implementar una variedad de modelos de redes neuronales y cargar una variedad de conjuntos de datos para evaluar el efecto de el modelo. A continuación, utilizamos código para cargar automáticamente el conjunto de datos MNIST.
Muestre las primeras 6 imágenes en el conjunto de datos de entrenamiento MNIST:
Preprocesamiento de datos
Primero, los datos se convierten en un vector de cuatro dimensiones.
Establecimiento y cálculo del modelo
Configuración de parámetros del modelo de entrenamiento:
Este artículo utiliza la arquitectura de red de Lenet. La arquitectura de red de Lenet se define de la siguiente manera. Si desea cambiar la arquitectura de la red, como usar VGGNet, GoogleNet, Inception, ResNets o crear una arquitectura de red diferente usted mismo, puede modificarla directamente en esta función.
Se adjuntan dos modelos clásicos:
VGG16:
Sitio web de Google:
Establezca el método de optimización, la función de pérdida y el modelo de compilación:
Este artículo utiliza un generador para ahorrar memoria:
Análisis de resultados
Se produce un gráfico iterativo de pérdida y precisión durante la fase de entrenamiento. Este artículo establece la época en 10 y logra una precisión de 0,98 (el código y las imágenes son los siguientes).
Cuenta oficial de WeChat: Papa Technology Meow
Bienvenido a seguir la discusión~