ImageNet Large Scale Visual Recognition Challenge ( ILSVRC ) es una competencia anual de visión por computadora. Cada año, los equipos compiten en dos tareas. El primero es detectar objetos dentro de una imagen provenientes de 200 clases, lo que se denomina localización de objetos. El segundo es clasificar imágenes, cada una etiquetada con una de 1000 categorías, lo que se denomina clasificación de imágenes. VGG 16 fue propuesto por Karen Simonyan y Andrew Zisserman del Laboratorio del Grupo de Geometría Visual de la Universidad de Oxford en 2014 en el documento «REDES CONVOLUCIONALES MUY PROFUNDAS PARA EL RECONOCIMIENTO DE IMÁGENES A GRAN ESCALA». Este modelo ganó el 1er y 2do lugar en las categorías anteriores en el desafío ILSVRC 2014.
Este modelo logra una precisión de prueba del 92,7 % entre los cinco primeros en el conjunto de datos de ImageNet, que contiene 14 millones de imágenes pertenecientes a 1000 clases.
Objetivo: El conjunto de datos de ImageNet contiene imágenes de tamaño fijo de 224*224 y tiene canales RGB. Entonces, tenemos un tensor de (224, 224, 3) como entrada. Este modelo procesa la imagen de entrada y genera un vector de 1000 valores. Este vector representa la probabilidad de clasificación para la clase correspondiente. Supongamos que tenemos un modelo que predice que la imagen pertenece a la clase 0 con probabilidad 1 , clase 1 con probabilidad 0.05 , clase 2 con probabilidad 0.05 , clase 3 con probabilidad 0.03 , clase 780 con probabilidad 0.72, clase 999 con probabilidad 0.05 y todas las demás clases con 0 . entonces, el vector de clasificación para esto será: Para asegurarnos de que estas probabilidades suman 1 , usamos la función softmax.
Esta función softmax se define de la siguiente manera:
Después de esto, tomamos los 5 candidatos más probables en el vector. y nuestro vector de verdad fundamental se define de la siguiente manera: Luego definimos nuestra función de error de la siguiente manera: [Tex]donde \, d = 0 \, if \, c_{i} \, = \, G_{k}\, else \ , d \, = \, 1 [/Tex]Entonces, la función de pérdida para este ejemplo es: Entonces, [Tex]\kern 6pc E \, = \, 0 \\ [/Tex]Ya que, todas las categorías en el suelo verdad están en la array de los 5 principales previstos, por lo que la pérdida se convierte en 0.
Arquitectura VGG : La entrada a la red es una imagen de dimensiones (224, 224, 3) . Las dos primeras capas tienen 64 canales de un tamaño de filtro de 3*3 y el mismo relleno. Luego, después de una capa de grupo máxima de zancada (2, 2) , dos capas tienen capas de convolución de 128 tamaños de filtro y tamaño de filtro (3, 3) . A esto le sigue una capa de zancada de agrupación máxima (2, 2) que es la misma que la capa anterior. Luego hay 2 capas de convolución de tamaño de filtro (3, 3) y 256 filtros. Después de eso, hay 2 juegos de 3capas de convolución y una capa de grupo máximo. Cada uno tiene 512 filtros de tamaño (3, 3) con el mismo relleno. Luego, esta imagen se pasa a la pila de dos capas de convolución. En estas capas de convolución y agrupación máxima, los filtros que usamos son del tamaño 3*3 en lugar de 11*11 en AlexNet y 7*7 en ZF-Net. En algunas de las capas, también usa 1*1 píxel que se usa para manipular la cantidad de canales de entrada. Hay un relleno de 1 píxel (mismo relleno) realizado después de cada capa de convolución para evitar la característica espacial de la imagen.
Después de la pila de capas de convolución y agrupación máxima, obtuvimos un mapa de características (7, 7, 512) . Aplanamos esta salida para convertirla en un vector de características (1, 25088) . Después de esto, hay 3 capas totalmente conectadas, la primera capa toma la entrada del último vector de características y genera un vector (1, 4096) , la segunda capa también genera un vector de tamaño (1, 4096) pero la tercera capa genera un 1000 canales para 1000clases de desafío ILSVRC, es decir, la tercera capa completamente conectada se usa para implementar la función softmax para clasificar 1000 clases. Todas las capas ocultas usan ReLU como su función de activación. ReLU es más eficiente desde el punto de vista computacional porque da como resultado un aprendizaje más rápido y también disminuye la probabilidad de que desaparezcan los problemas de gradiente.
Configuración: La siguiente tabla enumera diferentes arquitecturas VGG. Podemos ver que hay 2 versiones de VGG-16 (C y D). No hay mucha diferencia entre ellos, excepto por el hecho de que, a excepción de algunas capas de convolución, se utiliza la convolución de tamaño de filtro (3, 3) en lugar de (1, 1) . Estos dos contienen 134 millones y 138 millones de parámetros respectivamente.
Localización de objetos en la imagen: para realizar la localización, debemos reemplazar la puntuación de la clase por las coordenadas de ubicación del cuadro delimitador. La ubicación de un cuadro delimitador está representada por el vector 4-D (coordenadas del centro (x, y), alto, ancho). Hay dos versiones de arquitectura de localización, una es un cuadro delimitador que se comparte entre diferentes candidatos (la salida es un vector de 4 parámetros) y la otra es un cuadro delimitador específico de la clase (la salida es un vector de 4000 parámetros). El documento experimentó con ambos enfoques en la arquitectura VGG -16 (D). Aquí también necesitamos cambiar la pérdida de pérdida de clasificación a funciones de pérdida de regresión (como MSE ) que penalizan la desviación de la pérdida prevista de la realidad básica.
Resultados: VGG-16 fue una de las arquitecturas con mejor desempeño en el desafío ILSVRC 2014. Fue finalista en la tarea de clasificación con un error de clasificación entre los 5 primeros del 7,32 % (solo detrás de GoogLeNet con un error de clasificación del 6,66 % ). También fue el ganador de la tarea de localización con un error de localización del 25,32 % .
Limitaciones de VGG 16:
- Es muy lento de entrenar (el modelo VGG original se entrenó en la GPU Nvidia Titan durante 2 o 3 semanas).
- El tamaño de los pesos imageNet entrenados con VGG-16 es de 528 MB. Por lo tanto, requiere bastante espacio en disco y ancho de banda, lo que lo hace ineficiente.
- 138 millones de parámetros conducen a un problema de gradientes explosivos.
Más avances: se introducen Resnets para evitar el problema de explosión de gradientes que ocurrió en VGG-16.