artificial-intelligence - tutorial - redes neuronales tensorflow
¿Se puede usar un perceptron para detectar dígitos escritos a mano? (3)
Aquí hay un programa de ejemplo de Matlab que usa una red neuronal entrenada para detectar dígitos individuales (tamaño de imagen fijado a 28 * 28).
Digamos que tengo un pequeño mapa de bits que contiene un solo dígito (0,9) en escritura a mano.
¿Es posible detectar el dígito usando un perceptrón (de dos capas)?
¿Hay otras posibilidades para detectar dígitos individuales de mapas de bits además de usar redes neuronales?
Alimentar cada píxel de un mapa de bits directamente en una red neuronal requerirá mucho entrenamiento, y no funcionará bien para manejar la escala o la rotación de la imagen.
Para ayudar a la red neuronal a realizar una buena clasificación, debe realizar algunos pasos de preproceso.
- Normaliza la imagen:
- Ajuste el contraste y el brillo para que el histograma de la imagen coincida con una imagen de referencia.
- Desenfoque la imagen, para eliminar el ruido.
- Convierta a blanco y negro, usando algún umbral.
- Encuentra el cuadro delimitador de la forma, escala a un tamaño predefinido.
- Calcule varias características de la imagen que pueden usarse para diferenciar un dígito de otro:
- El número de Euler de la imagen: te dice cuántos "agujeros" hay en la forma (por ejemplo, dos agujeros para el dígito 8).
- La cantidad de píxeles blancos (el área del dígito)
- Los componentes principales del conjunto de coordenadas de los píxeles blancos: le indican qué tan "alargada" es la forma.
- ... otras características que usted puede pensar que tienden a tener valores similares para dígitos similares.
Los componentes principales también se pueden usar para normalizar la rotación de la forma, de modo que el eje más largo sea vertical.
Las características son lo que alimentas a la red neuronal para la clasificación, no los píxeles.
Aquí hay un enlace a una enorme base de datos de dígitos escritos a mano. La página principal también tiene datos relativos de rendimiento para muchos métodos diferentes, incluidas redes neuronales de 2 capas. Esto debería darle un buen comienzo: base de datos de dígitos MNIST y rendimiento
También es posible que desee comprobar el trabajo de Geoff Hinton en Restricted Boltzmann Machines, que dice que funciona bastante bien, y hay una buena conferencia explicativa en su sitio (muy visible).