Este diagrama de arquitectura de red representa una red neuronal convolucional profunda jerárquica (CNN) para la clasificación de imágenes en color sin supervisión.
La forma de entender el diagrama es comenzar desde el lado derecho y trabajar hacia la izquierda (arriba de la jerarquía) y luego nuevamente hacia la derecha. El diagrama ilustra una fase de generación de izquierda a derecha, pero primero es más fácil comprender la fase de “discriminación” (reconocimiento de imagen) de derecha a izquierda, que utiliza la misma arquitectura de modelo.
Una imagen RGB de 64 × 64 píxeles ingresa a esta CNN jerárquica a la derecha en la matriz 3D etiquetada G. El “ancho” de esta capa, que se muestra como “3”, representa los 3 valores que forman un píxel de color: el rojo, el verde, y componentes azules. Entonces, el número total de valores en la imagen de entrada es 64x64x3 = 4096 píxeles o 12,288 valores.
- ¿Cómo se compara Caffe 2 con TensorFlow?
- ¿Qué tipo de antecedentes estadísticos debo tener para tomar el curso de Reconocimiento de patrones? Cual estadística Qué libro es útil para mi preparación?
- ¿Cuáles son algunos de los temas candentes que se están investigando actualmente en la escucha de máquinas / procesamiento de audio?
- ¿Cómo utiliza Google el aprendizaje automático?
- ¿Cómo comienzo en la teoría y la programación del aprendizaje automático?
Se aplica una operación de “convolución” de la red neuronal yendo un paso hacia la izquierda. Lo que se muestra es que un “parche de imagen” de 5 × 5 (región gris que contiene valores de 5x5x3) se asigna a un vector de 128 unidades de salida. Estos 75 valores (5x5x3) se introducen en la capa de red neuronal y se emiten 128 valores (1x1x128). Esto se repite para cada una de las ubicaciones de parche de imagen de 32 × 32, un algoritmo denominado “rectángulo de escaneo”, que da como resultado una imagen de salida de 32x32x128.
En una “red neuronal convolucional” normal, la transformación del parche de imagen se aplicaría a cada ubicación de píxel, por lo que una imagen de entrada de 64 × 64 produciría una “imagen” de salida de 64 × 64. Sin embargo, en esta red en particular, se omite cualquier otra ubicación de píxeles (llamada “zancada”), de modo que la “imagen” de salida es 32 × 32 “píxeles” donde cada píxel tiene 128 componentes (un vector de 128). El parche de imagen de entrada 5 × 5 en el diagrama parece tener 3 columnas grises para ilustrar el efecto de zancada. Los píxeles horizontales 1,2,3,4,5 se asignan a un parche, y los píxeles horizontales 3,4,5,6,7 se asignan al siguiente (desplazado sobre una zancada de dos píxeles). Por lo tanto, los píxeles 3 y 4 se introducen en dos “píxeles” de orden superior diferentes (la franja central gris oscuro).
Continuando a la izquierda, esta transformación se repite para 3 capas más, convirtiendo la representación de imagen de 128 × 32 píxeles de 128 componentes en una representación de 16 × 16 píxeles de 256 componentes, luego en una representación de 8 × 8 píxeles de 512 componentes, y finalmente en una representación de 4 × 4 píxeles de 1024 componentes. Cada capa de imagen muestra la salida de la capa anterior en verde y la entrada a la siguiente capa en gris.
En cada representación de orden superior, un área más grande de la imagen original está representada por un solo “píxel”. Por lo tanto, cada píxel en la imagen 4 × 4 representa al menos 16 píxeles en el original, pero debido al efecto de despliegue de los tamaños de parche de imagen 5 × 5, cada uno de los píxeles de mayor orden termina cubriendo casi toda la imagen.
Entonces, todo eso es para la fase de “discriminación” (reconocimiento).
Debido a que esta es una red “adversaria”, todo el proceso también se ejecuta en reversa de derecha a izquierda para generar imágenes RGB “imaginarias” a partir del ruido. Esta es la fase que realmente se representa en este diagrama. Algo de ruido aleatorio (el vector z de 100 componentes a la izquierda) se procesa a la derecha en pasos llamados “deconv” para “deconvolución” (pero en realidad son convoluciones) para generar una imagen aleatoria a la derecha.
La generación de imágenes aleatorias tiene dos propósitos.
Durante el entrenamiento, una imagen es “reconocida” (de derecha a izquierda), luego se agrega ruido a la representación de orden superior, luego se regenera una versión “noisificada” de izquierda a derecha. Esta versión no ruidosa se vuelve a entrenar para hacer que la representación sea más robusta al ruido.
Después del entrenamiento, se puede ejecutar un ruido totalmente aleatorio a través de la red (de izquierda a derecha) para generar escenas completamente “imaginadas”.
Aquí hay un ejemplo de salida de esta red del documento después de entrenarla en imágenes de dormitorios y luego inyectar varios ejemplos de ruido aleatorio:
Tenga en cuenta que todas estas imágenes generadas aleatoriamente parecen dormitorios en una inspección informal. Pero si te acercas y miras de cerca, verás que no están del todo bien; Las habitaciones y las camas son estructuralmente incoherentes. Bastante raro.
Después de más entrenamiento, sus habitaciones imaginadas se vuelven más coherentes pero siguen siendo un poco extrañas en algunos lugares: