El principio y desarrollo del algoritmo YOLO (I)
Sabemos que YOLO en realidad solo mira una vez, lo que significa que solo necesitas mirarlo para conocer la ubicación y el objeto. Personalmente lo encuentro bastante vívido. No necesita la estructura RPN de un RCNN más rápido. De hecho, eligió anclajes para retener los cuadros candidatos y dividió la imagen en una cuadrícula de 7×7, cada cuadrícula permitiendo dos cuadros delimitadores diferentes. De esta forma, desde el principio tenemos un cuadro candidato de 7x7x2, que cubre aproximadamente toda el área de la imagen. Su idea es que incluso si el RCNN más rápido tiene un cuadro de regresión en la primera etapa, la segunda etapa aún necesita ajustes, por lo que es mejor hacer un cuadro de regresión aproximado.
Veamos bien este modelo.
En primer lugar, la estructura del modelo
De hecho, el vocabulario simple de este modelo es:
¿Cómo forma 30 la escala del canal?
A. Posición de 2 cuadros delimitadores (8 canales)
Cada cuadro delimitador requiere cuatro valores para representar su posición, (Centro_x, Centro_y, ancho, alto), es decir. (coordenada x, coordenada y del punto central del cuadro delimitador, ancho y alto del cuadro delimitador), dos cuadros delimitadores * * * requieren ocho valores para representar sus posiciones.
B. Confianza de 2 cuadros delimitadores (2 canales)
Probabilidad de clasificación C.20 (20 canales)
Hablemos del resto de la clasificación de 20 dimensiones. canal. Cada canal representa la probabilidad de clasificación de una categoría. Debido a que YOLO admite el reconocimiento de 20 objetos diferentes (personas, pájaros, gatos, automóviles, sillas, etc.), hay 20 valores que representan la probabilidad de que exista cualquier objeto en esta ubicación de la cuadrícula. Pero solo podemos predecir 49 objetos en un conjunto de imágenes. Se puede entender que una cuadrícula2 tiene dos anclas y solo se predice con precisión un objeto (es decir, el ancla con la mayor proporción de pagarés), por lo que hay 7 × 7. objetos.
La posición de la bicicleta en la imagen se coloca en el cuadro delimitador 1, pero de hecho, después de la salida de la red durante el proceso de entrenamiento, los dos cuadros delimitadores se comparan con el pagaré de la posición real de la bicicleta, y la posición de la bicicleta (cuadro delimitador real) se coloca en un cuadro delimitador con un pagaré más grande (se supone que es el cuadro delimitador 1 en la figura), y el nivel de confianza del cuadro delimitador se establece en 1.
En segundo lugar, función de pérdida
En términos generales, la suma de los errores cuadrados entre la salida de la red y el contenido de la etiqueta de muestra se utiliza como el error total de la muestra.
Varios elementos de la función de pérdida corresponden al contenido del vector de 30 dimensiones de salida.
3. Defectos de YOLO v1
Nota:
Información detallada:
La última capa de YOLO utiliza una función de activación lineal. Todas las capas son ReLU con fugas. Utilice el abandono y el aumento de datos durante el entrenamiento para evitar el sobreajuste. Consulte el artículo original para obtener más detalles.
A 67 FPS, YOLOv2 logró el 76,8% de los mapas en PASCAL VOC 2007. A 40 FPS, YOLOv2 logró un mAP del 78,6%, que es mejor que el R-CNN más rápido que usa ResNet y SSD. Al lograr resultados tan excelentes, YOLOv2 se publicó en CVPR en 2017 y recibió más de 1000 citas. YOLO tiene dos desventajas: primero, un posicionamiento inexacto y, segundo, una tasa de recuperación más baja en comparación con los métodos basados en propuestas regionales. Por tanto, YOLOv2 mejora principalmente en estos dos aspectos. Además, YOLOv2 no mejora el rendimiento al profundizar o ampliar la red, sino que la simplifica.
A continuación se presenta principalmente la promoción de YOLO v2 desde dos puntos. Mejor y más rápido.
1. Darknet-19
En YOLO v1, la red de entrenamiento utilizada por el autor se basa en GooleNet. Aquí, el autor hace una comparación simple entre GooleNet y VGG16. GooleNet es mejor que vgg 16 en términos de complejidad computacional (8,25 mil millones de operaciones frente a 3,069 mil millones de operaciones), pero la precisión entre los cinco primeros del primero es ligeramente menor que la del segundo (88. En YOLO v2, el autor adoptó una nueva clasificación El modelo sirve como red básica, es decir, Darknet-19, la Tabla 6 es la estructura de red final: Darknet-19 solo requiere 5,58 mil millones de operaciones, mientras que GooleNet utilizado por YOLO v1 contiene solo 5,58 mil millones de operaciones. Capas completamente conectadas, por lo que Darknet-19 tiene menos operaciones de convolución que GoogleNet utilizada por YOLO v1, que es la clave para reducir la cantidad de cálculo. Finalmente, se utiliza la capa de agrupación promedio en lugar de la capa completamente conectada para la predicción. ha logrado una precisión del 0,2% del top 5 en 965438+ImageNet
2. Entrenamiento de clasificación
La segunda y tercera partes mencionadas anteriormente son procesos de capacitación. Aquí se utiliza para la clasificación el entrenamiento previo en ImageNet, que se divide principalmente en dos pasos: 1. Entrene Darknet-19 desde cero, use ImageNet como conjunto de datos para entrenar durante 160 épocas, el tamaño de la imagen de entrada es 224224 y el La tasa de aprendizaje inicial es 0,1. Además, en el entrenamiento se utilizan métodos estándar de adición de datos, como recorte aleatorio, rotación, croma y ajuste de brillo. 2. Ajuste fino de la red En este momento, se utilizan 448,448 entradas y los parámetros. excepto que las épocas y la tasa de aprendizaje no cambian. Aquí la tasa de aprendizaje se cambia a 0,001 y el entrenamiento es para 10 épocas. Los resultados muestran que la precisión del top 1 y el top 5 después del ajuste fino son del 76,5 % y del 93,3 %. respectivamente, según el método de entrenamiento original, la precisión del top 1 de Darknet-19 es del 72,9% y la precisión del top 5 es del 91,2%. Por lo tanto, se puede ver que los pasos 1 y 2 mejoran la precisión de la clasificación. red principal en términos de estructura de red y modo de entrenamiento
3. Entrenamiento de detección
Después del paso 2 anterior, comenzamos a trasplantar la red para la detección y comenzamos a ajustarla. Según los datos detectados, primero elimine la última capa convolucional y agregue tres capas convolucionales de 3/3. Cada capa convolucional tiene 1024 filtros y cada capa convolucional está conectada con 1 1. La cantidad de filtros para 1 1 convolución depende de. categoría a detectar, por ejemplo, para 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, por lo que cada celda de la cuadrícula tiene 125 filtros (a diferencia de YOLOv1, en YOLOv1, cada uno). La celda de la cuadrícula tiene 30 filtros. Recuerde la matriz 7 7 30 En YOLOv1, la probabilidad de clase la predice la unidad de cuadrícula, lo que significa que la probabilidad de clase de dos cuadros correspondientes a una unidad de cuadrícula es la misma, pero en YOLOv2, la clase. La probabilidad pertenece al cuadro, y cada cuadro corresponde a una probabilidad de clase, que no está determinada por la unidad de la cuadrícula. Entonces, aquí cada cuadro corresponde a 25 valores predichos (5 coordenadas más 20 valores de categoría), mientras que en YOLOv1, los 20 valores de categoría de dos cuadros en una celda de la cuadrícula son los mismos). Además, el autor también mencionó conectar la última capa convolucional de 3 ^ 3 * 512 con la penúltima capa convolucional. Finalmente, los autores entrenaron previamente el modelo ajustado en el conjunto de datos de prueba durante 160 épocas con una tasa de aprendizaje de 0,001. En las épocas 60 y 90, la tasa de aprendizaje se divide por 10 y los pesos descienden a 0,0005.
Yolo v3 tiene tres puntos respecto a yolo v2: 1. Detección de objetos mediante funciones multiescala. 2. Ajustar la estructura básica de la red.