En términos de velocidad, YOLO es uno de los mejores modelos en reconocimiento de objetos, capaz de reconocer objetos y procesar cuadros a una velocidad de hasta 150 FPS para redes pequeñas. Sin embargo, en términos de precisión mAP, YOLO no era el modelo más avanzado, pero tiene una Precisión promedio (mAP) bastante buena del 63% cuando se entrenó en PASCAL VOC2007 y PASCAL VOC 2012. Sin embargo, Fast R-CNN, que era el estado de la técnica en ese momento tiene un mAP de 71% .
YOLO v2 y YOLO 9000 fueron propuestos por J. Redmon y A. Farhadi en 2016 en el documento titulado YOLO 9000: Better, Faster, Stronger . A 67 FPS , YOLOv2 da mAP de 76,8 % y a 67 FPS da un mAP de 78,6 % en el conjunto de datos VOC 2007 mejoró los modelos como Faster R-CNN y SSD . YOLO 9000 usó la arquitectura YOLO v2 pero pudo detectar más de 9000 clases. YOLO 9000, sin embargo, tiene un mAP de 19,7% .
Veamos la arquitectura y el funcionamiento de YOLO v2:
Cambios de arquitectura frente a YOLOv1:
la arquitectura anterior de YOLO tiene muchos problemas en comparación con el método de última generación como Fast R-CNN. Cometió muchos errores de localización y tiene poca memoria. Por lo tanto, el objetivo de este documento no es solo mejorar estas deficiencias de YOLO, sino también mantener la velocidad de la arquitectura. Hay algunas mejoras incrementales que se realizan en YOLO básico. Analicemos estos cambios a continuación:
- Normalización
por lotes: al agregar la normalización por lotes a la arquitectura, podemos aumentar la convergencia del modelo que nos lleva a un entrenamiento más rápido. Esto también elimina la necesidad de aplicar otros tipos de normalización como Dropout sin sobreajuste. También se observa que agregar solo la normalización por lotes puede causar un aumento en mAP en un 2% en comparación con YOLO básico. - Clasificador de alta resolución:
la versión anterior de YOLO usa 224 * 224 como tamaño de entrada durante el entrenamiento, pero en el momento de la detección, toma una imagen hasta un tamaño de 448 * 448. Esto hace que el modelo se ajuste a una nueva resolución que, a su vez, provoca una disminución de mAP.
La versión YOLOv2 entrena en una resolución más alta (448 * 448) durante 10 épocas en datos de ImageNet. Esto le da tiempo a la red para ajustar los filtros para una resolución más alta. Al entrenar en un tamaño de imagen de 448*448, el mAp aumentó en un 4 % . - Use cuadros de anclaje para cuadros delimitadores:
YOLO utiliza capas completamente conectadas para predecir cuadros delimitadores en lugar de predecir coordenadas directamente desde la red de convolución como en Fast R-CNN, Faster R-CNN.
En esta versión, eliminamos la capa completamente conectada y, en su lugar, agregamos los cuadros de anclaje para predecir los cuadros delimitadores. Hicimos los siguientes cambios en la arquitectura:- Eliminamos la capa totalmente conectada responsable de predecir los cuadros delimitadores y la reemplazamos con la predicción de cuadros ancla.
- Cambiamos el tamaño de entrada de 448 * 448 a 416 * 416 . Esto crea un mapa de características de tamaño 13 * 13 cuando lo muestreamos 32x. La idea detrás de esto es que existe una buena posibilidad de que el objeto esté en el centro del mapa de características.
- Elimine una capa de agrupación para obtener una red espacial de 13 * 13 en lugar de 7 * 7
Con estos cambios, el mAP del modelo se reduce ligeramente (del 69,5 % al 69,2 %), sin embargo, el recuerdo aumenta del 81 % al 88 % .
- Clusters de dimensionalidad:
Necesitamos identificar el número de anclas (previas) generadas para que brinden los mejores resultados. Tomemos como K por ahora. Nuestra tarea es identificar los cuadros delimitadores top-K para imágenes que tengan la máxima precisión. Usamos el algoritmo de agrupamiento de K-means para ese propósito. Pero no necesitamos minimizar la distancia euclidiana, sino que maximizamos el IOU como objetivo de este algoritmo.
YOLO v2 usa K=5 para una mejor compensación del algoritmo. Podemos concluir del siguiente gráfico que a medida que aumentamos el valor de K=5, la precisión no cambia significativamente.
El agrupamiento basado en IOU en K = 5 da un mAp del 61 % . - Problema de ubicación directa:
la versión anterior de YOLO no tiene una restricción en la predicción de ubicación, lo que la hace inestable en las primeras iteraciones. YOLOv2 predice 5 parámetros (t x , t y , t w , th , to (puntuación de objetividad)) y aplica la función sigma para restringir su valor entre 0 y 1. Esta restricción de ubicación directa aumenta el mAP en un 5 %. - Características de grano fino:
YOLOv2 que genera 13 * 13 es suficiente para detectar objetos grandes. Sin embargo, si queremos detectar objetos más finos, podemos modificar la arquitectura de modo que la salida de la capa anterior 26 * 26 * 512 a 13 * 13 * 2048 y se concatene con la capa de salida original 13 * 13 * 1024 haciendo nuestra capa de salida de tamaño . - Entrenamiento multiescala:
YOLO v2 ha sido entrenado en diferentes tamaños de entrada de 320 * 320 a 608 * 608 usando un paso de 32 . Esta arquitectura elige al azar las dimensiones de la imagen para cada 10 lotes . Puede haber una compensación establecida entre la precisión y el tamaño de la imagen. Por ejemplo, YOLOv2 con un tamaño de imagen de 288 * 288 a 90 FPS ofrece tanto mAP como Fast R-CNN.
Arquitectura:
YOLO v2 está capacitado en diferentes arquitecturas como VGG-16 y GoogleNet. El documento también propuso una arquitectura llamada Darknet-19. La razón para elegir la arquitectura Darknet es su menor requisito de procesamiento que otras arquitecturas 5,58 FLOPS (en comparación con 30,69 FLOPS en VGG-16 para un tamaño de imagen de 224 * 224 y 8,52 FLOPS en GoogleNet personalizado). La estructura de Darknet-19 se da a continuación:
Para fines de detección, reemplazamos la última capa de convolución de esta arquitectura y, en su lugar, agregamos tres capas de convolución de 3 * 3 cada 1024 filtros seguidos de convolución de 1 * 1 con la cantidad de salidas que necesitamos para la detección.
Para VOC predecimos 5 cajas con 5 coordenadas (t x , t y , t w , t h , to (puntuación de objetividad)) cada una con 20 clases por caja. Así que el número total de filtros es 125.
Entrenamiento:
El YOLOv2 está entrenado para dos propósitos:
- Para la tarea de clasificación, el modelo se entrena en la tarea de clasificación ImageNet-1000 durante 160 épocas con una tasa de aprendizaje inicial de 0,1 , una disminución del peso de 0,0005 y un impulso de 0,9 utilizando la arquitectura Darknet-19. Hay algunas técnicas estándar de aumento de datos aplicadas para esta capacitación.
- Para la detección, se realizaron algunas modificaciones en la arquitectura Darknet-19 que discutimos anteriormente. El modelo se entrena durante 160 épocas con una tasa de aprendizaje inicial de 10-3 , una caída de peso de 0,0005 y un impulso de 0,9 . La misma estrategia utilizada para entrenar el modelo tanto en COCO como en VOC.
Resultados y Conclusión:
YOLOv2 brinda una precisión de detección de última generación en PASCAL VOC y COCO. Puede funcionar en diferentes tamaños, lo que ofrece una compensación entre velocidad y precisión. A 67 FPS, YOLOv2 puede dar un mAP de 76,8 mientras que a 40 FPS el detector ofrece una precisión de 78,6 mAP, mejor que el modelo de última generación, como Faster R-CNN y SSD, mientras que funciona significativamente más rápido que esos modelos.
Este modelo también ha sido la base del modelo YOLO9000 que es capaz de detectar más de 9000 clases en tiempo real.
Referencia: