Principio y evolución del algoritmo YOLO(I)
La primera vez que entré en contacto con el algoritmo YOLO fue a través del video de enseñanza de Andrew Ng. En realidad, esta fue la primera vez que entré en contacto con el algoritmo de detección de objetivos. Aquí presentamos principalmente a YOLO (véalo solo una vez). Ahora se ha desarrollado a la versión V3. Es diferente de la estrategia de dos pasos adoptada por la rama Faster RCNN, que primero identifica el primer plano y luego detecta el objetivo, pero realiza directamente la detección del objetivo. Por lo tanto, la velocidad de reconocimiento es mejor que Faster RCNN (5 FPS), mientras que la versión básica YOLO_v1 puede alcanzar 45 fps en la GPU Titan X y 150 fps en Faster RCNN. Sin embargo, YOLO es ligeramente peor que Faster RCNN en términos de precisión, hablaremos de eso más adelante. Por cierto, si desea comprender el principio de Faster RCNN, puede consultar el principio y la evolución de Faster-RCNN.
Sabemos que YOLO en realidad significa Solo miras una vez, lo que significa que puedes conocer la ubicación y el objeto con solo un vistazo. Personalmente, creo que es bastante vívido. No necesita la estructura RPN de Faster RCNN, los puntos de anclaje que realmente elige son cuadros candidatos predeterminados y la imagen se divide en una cuadrícula de 7x7, cada cuadrícula permite 2 cuadros delimitadores diferentes. Entonces, al principio tenemos cuadros candidatos (cuadros delimitadores) de 7x7x2, que cubren aproximadamente toda el área de la imagen. La idea es que, aunque Faster RCNN ya tiene un cuadro delimitador en la primera etapa, aún necesita ajustarse en la segunda etapa, por lo que es mejor comenzar con él como un cuadro delimitador aproximado.
A continuación se muestra una buena introducción al modelo.
1. Estructura del modelo
De hecho, el modelo consta de solo unas pocas palabras:
¿Cómo se forma el tamaño de los 30 canales?
a.Posición de 2 cuadros delimitadores (8 canales)
Cada cuadro delimitador requiere 4 valores para representar su posición, (Centro_x, Centro_y, ancho, alto), es decir. (coordenada x del centro del cuadro delimitador, coordenada y del centro del cuadro delimitador, ancho y alto del cuadro delimitador, ancho y alto del cuadro delimitador), 2 cuadros delimitadores requieren 8 valores para representar sus posiciones .
b. 2 niveles de confianza en la frontera (2 canales)
c. 20 probabilidades de clasificación (20 canales)
Hablemos de clasificación Las 20 dimensiones restantes de la canal. Cada canal representa la probabilidad de clasificación de una categoría. Dado que YOLO admite el reconocimiento de 20 objetos diferentes (personas, pájaros, gatos, automóviles, sillas, etc.), aquí hay 20 valores que representan la probabilidad de que cualquiera de estos objetos aparezca en esa ubicación de la cuadrícula. Sin embargo, solo podemos predecir 49 objetos en un conjunto de imágenes, lo que puede explicarse por el hecho de que un achor de cuadrícula 2 solo puede tener un objeto predicho con precisión (es decir, el objeto con el mayor porcentaje de pagaré calculado en el achor), por lo que no son objetos de 7x7.
La figura coloca la posición de la bicicleta en el cuadro delimitador 1, pero de hecho, después de la salida de la red durante el proceso de entrenamiento, el pagaré en los dos cuadros delimitadores se compara con la posición real de la bicicleta. la bicicleta La posición (cuadro delimitador real) se coloca en el cuadro delimitador con un pagaré más grande (se supone que está en el cuadro delimitador 1 en la figura), y la confianza del cuadro delimitador se establece en 1
En segundo lugar , Función de pérdida
En términos generales, es la suma de los cuadrados del error de salida de la red y el error del contenido de la etiqueta de la muestra, como el error general de la muestra.
Varios términos de la función de pérdida corresponden al contenido del vector de salida de 30 dimensiones.
III.Defectos de YOLO v1
Nota:
Detalles:
La última capa de YOLO utiliza una función de activación lineal y otras capas para Leaky ReLU. Utilice el abandono y el aumento de datos durante el entrenamiento para evitar el sobreajuste.
Para obtener más detalles, consulte el artículo original
En PASCAL VOC 2007, YOLOv2 logró un 76,8% de mAP a 67 FPS y un 78,6% de mAP a 40 FPS, lo que fue mejor que usar ResNet y SSD Faster R-CNN. . YOLOv2 tiene dos inconvenientes: uno es una localización inexacta y el otro es una baja recuperación en comparación con los métodos basados en propuestas regionales. Por tanto, YOLOv2 mejora principalmente en estos dos aspectos. Además, YOLOv2 no logra mejoras profundizando o ampliando la red, sino que la simplifica.
YOLOv2 mejora principalmente en dos aspectos.
1.Darknet-19
En YOLO v1, el autor utiliza una red de entrenamiento basada en GooleNet. Aquí el autor hace una comparación simple entre GooleNet y GooleNet que es computacionalmente compleja. es mejor que VGG16 en términos de precisión (8,25 mil millones de operaciones versus 30,69 mil millones de operaciones), pero la precisión de los cinco primeros en ImageNet es ligeramente menor que la del segundo (88% versus 90%). En YOLO v2, el autor utiliza un nuevo modelo de clasificación como red básica, a saber, Darknet-19: esta red contiene 19 capas convolucionales y 5 capas de agrupación máxima, mientras que GooleNet utilizado en YOLO v1 contiene 24 capas de convolución y 5 capas de agrupación máxima. Esta red contiene 19 capas convolucionales y 5 capas de agrupación máxima, mientras que la GooleNet utilizada en YOLO v1 contiene 24 capas convolucionales y 2 capas completamente conectadas, por lo que la relación general de operación convolución a convolución de Darknet-19 es que YOLO v1 usa menos GoogleNet. que es la clave para reducir la cantidad de cálculo. Finalmente, para la predicción se utiliza la capa de agrupación promedio en lugar de la capa completamente conectada. La red logró una precisión entre los cinco primeros del 91,2% en ImageNet.
2. Entrenamiento de clasificación
Las partes 2 y 3 aquí se han mencionado antes, que son consejos para el procesamiento de entrenamiento: 1. Entrene Darknet-19 desde cero, conjunto de datos Para ImageNet, entrene durante 160 épocas, el tamaño de la imagen de entrada es 224224 y la tasa de aprendizaje inicial es 0,1. Además, se utilizan métodos estándar para agregar datos durante el entrenamiento, como recorte aleatorio, rotación y ajustes de croma y brillo. 2. Luego ajuste la red, esta vez usando 448,448. Los resultados muestran que después del ajuste fino, la precisión del top 1 es del 76,5%, la precisión del top 5 es del 93,3%, y si el método de entrenamiento original es. Seguido, la precisión de Darknet-19 es 0,001 y la precisión de los 5 primeros es 93,3%. Darknet-19 tiene una precisión entre los primeros 1 del 72,9% y una precisión entre los 5 primeros del 91,2%. Se puede ver que los pasos 1 y 2 mejoran la precisión de la clasificación de la red principal en términos de estructura de red y método de entrenamiento, respectivamente.
3. Entrenamiento para la detección
Después del paso 2 anterior, comience a portar la red a detección y comience a realizar ajustes nuevamente en función de los datos detectados. Primero elimine la última capa de convolución, luego agregue 3 3 capas de convolución, cada capa de convolución tiene 1024 filtros, cada filtro está conectado a una capa de convolución 1 1, el número de filtros en la convolución 1 1 se determina según la categoría a detectar.
Por ejemplo, para los datos VOC, dado que cada celda de la cuadrícula necesita predecir 5 cuadros, cada cuadro tiene 5 valores de coordenadas y 20 valores de categoría, hay 125 filtros por celda de la cuadrícula (a diferencia de YOLOv1, YOLOv1 tiene 30 filtros por unidad de cuadrícula). ¿Recuerda la matriz 7 7 30? En YOLOv1, la probabilidad de clase es predicha por la unidad de cuadrícula, es decir, una unidad de cuadrícula corresponde a dos cajas con la misma probabilidad, pero en YOLOv2, la probabilidad de categoría pertenece a la caja. cada cuadro corresponde a una probabilidad de categoría, no determinada por la unidad de la cuadrícula, por lo que aquí cada cuadro corresponde a 25 valores predichos (5 valores de coordenadas más 20 valores de categoría), mientras que en YOLOv1, los 20 valores de categoría de dos los cuadros de una celda de la cuadrícula son iguales). Además, el autor también mencionó conectar las últimas 3 3*512 capas convolucionales a la penúltima capa convolucional. Finalmente, el autor ajustó este modelo previamente entrenado 160 veces en el conjunto de datos de detección, utilizando una tasa de aprendizaje de 0,001, y dividió la tasa de aprendizaje por 10 en los ajustes 60 y 90, y la caída del peso fue 0,0005.
La siguiente es una comparación de tres puntos entre yolo v3 y yolo v2: uso de funciones de múltiples escalas para la detección de objetos 2. Ajuste de la estructura de red subyacente 3.