Skip to content

Redes Neuronales Convolucionales: Visión Artificial

Juan Lu Hernández edited this page May 22, 2021 · 2 revisions

Redes Neuronales Convolucionales: Visión Artificial

CNN

Introducción

Aplicar ecualizado a las imágenes suele ayudar. Es decir regular la intensidad para que no hayan muchos picos en el histograma de intensidades.

La ecualización local (Clahe) es mejor que las globales pues presta atención a trocitos de la imagen para ecualizarla.

Una convolución es aplicar un filtro a la imagen para modificarla. Es decir un filtro es una matriz que modifica una imagen. Esto tradicionalmente se ha hecho en base a la experiencia del que lo define(aleatorio).

Esto se aplica multiplicando y sumando el filtro sobre la matriz de la imagen original.

Lo más común es aplicar el filtro gausiano.

Fundamentos

Una red neuronal convolucional se componen de:

* Convoluciones: filtros convolucionales, que son matrices con numero que la red va aprendiendo. Estos filtros son fijos, luego solo saca propiedades locales. 

* Pooling: divide la imagen, coge las características que saca las convoluciones y las reduce para así sacar características mas globales. 

* Convolucion + Pooling… 

* Capa de flatten: dadas todas componentes de todas las características d los filtros convoluciones las pone en una array de una dimensión 

* Red neuronal totalmente conectada: que recibe el array de la capa flatten. 

Los filtros de las convoluciones se van ajustando en función de cuales extrae mejor las características de la imagen. Son matrices con números dentro que se multiplican y suman a la matriz de la imagen.

La red va combinando resultados de capas anteriores y va extrayendo caracteristicas mas generales.

Padding: amplia la imagen alrededor para que no se reduzca en la convolucion y solo en el pooling.

Stride: saltos en la aplicación de filtros.

Pooling: dividir la imagen en zonas de 2x2, tamaño del pooling, y de cada zona se queda:

Average pooling: la media de esa zona 

Max pooling: el maximo de la zona 

Herramientas de mejoras

Dropout

Desactivar de forma aleatoria un porcentaje de neuronas. Así el sistema no es es dependiente de ciertas neuronas.

El numero de neuronas a desactivar lo definimos nosotros

Batch Normalization

Aplicar normalización a los mapas de activación de dentro de la red, para estabilizar el aprendizaje.

Así se puede aumentar el learning rate, reducir las épocas y así tener tasas de aprendizaje mas altas.

Data Aumentation

Aplicar operaciones geométricas, cambios de contraste,…. Para hacer muchos mas datos a partir de mi dataset, que es pequeño. Así la red ve fotos que no es la misma que tiene rotación o cambio de brillo,…

Mejora la performance de la red y reduce el overfitting.

Transfer Learning

Transferencia de aprendizaje, a partir de una arquitectura concreta, entrenar ese modelo con datos de los que tenga mucho y después coger ese modelo y hacer un “fine tuning” con mis datos, de mi problema especifico.

Si un modelo no tiene overfitting y mejora muy lento, es conveniente subir el “learning rate”

Segmentación

La segmentación es la clasificación pero pixel a pixel. Calcula la probabilidad de que un pixel pertenezca al objeto.

La mas utilizada es la UNet. Que recibe una imagen a la entrada, le aplica convoluciones y max pooling, y después realiza ello inverso, convoluciones transpuestas, para a la salida obtener también una imagen.

Para medir que tal los esta haciendo la red utilizamos el coeficiente de Dice, que evalúa el solapamiento de las dos mascaras.

Detección de Objetos

Generar una caja que contenga el objeto y ademas identifique de que objeto se trata.

* YOLO: detector de objetos multiproposito. Divide la imagen en cuadritos, después para cada cuadro saca las cuatro coordenadas, saca la probabilidad de que ese cuadro tenga un objeto y la probabilidad de que ese objeto de un cierto tipo. 

* SuperResolución: aumentar la resolución de las imágenes. 

* Style Transfer: saca una imagen dada con un estilo propuesto 

* Estimación Pose: posición de una persona a partir de puntos clave