La Red de Conocimientos Pedagógicos - Currículum vitae - Comprensión profunda de YOLO v1

Comprensión profunda de YOLO v1

YOLO (You Only Look Once) es un algoritmo de localización y reconocimiento de objetos basado en redes neuronales profundas. Su característica más importante es que se ejecuta muy rápido y se puede utilizar en sistemas en tiempo real.

Ahora YOLO se ha desarrollado hasta la versión v3, pero la nueva versión se mejora y evoluciona constantemente en función de la versión original, por lo que este artículo analiza primero la versión YOLO v1.

Para analizar y comprender YOLOv2/YOLO9000, pase a YOLO v2/YOLO 9000.

Ingrese una imagen, genere los objetos que contiene y la posición de cada objeto (el cuadro rectangular que contiene el objeto).

El reconocimiento y la localización de objetos se pueden ver como dos tareas: encontrar el área de la imagen donde existe el objeto y luego identificar qué objeto está en esa área.

En los últimos años, varios métodos basados ​​en redes neuronales convolucionales CNN han logrado buenos resultados en el reconocimiento de objetos (una imagen contiene solo un objeto, que básicamente ocupa todo el rango de la imagen). Entonces el principal problema a resolver es dónde está el objeto.

La idea más simple es recorrer todas las posiciones posibles en la imagen, buscar cada área de diferentes tamaños, relaciones de aspecto y posiciones en forma de alfombra, detectar si hay objetos uno por uno, y seleccione el resultado con la mayor probabilidad como salida. Evidentemente, este método es demasiado ineficaz.

RCNN fue pionero en el método de recomendación de regiones. Primero, realiza una serie de búsquedas selectivas a partir de la imagen, unas 2.000 de ellas, y luego identifica a cada candidato. La eficiencia del reconocimiento y posicionamiento de objetos ha mejorado enormemente.

Sin embargo, la velocidad de RCNN sigue siendo muy lenta. Se necesitan unos 49 segundos para procesar una imagen. Como resultado, también siguieron Fast RCNN y RCNN más rápido. La estructura de la red neuronal y el algoritmo de área candidata de RCNN se han mejorado continuamente, y RCNN más rápido ha podido alcanzar una velocidad de procesamiento de aproximadamente 0,2 segundos. Las siguientes imágenes son de R-CNN, Fast R-CNN, Fast R-CNN, ¿YOLO? —? Algoritmo de detección de objetivos

Pero en general, la serie RCNN sigue siendo un modo de procesamiento de dos etapas: primero propone un área candidata y luego identifica objetos en el área candidata.

YOLO significa que solo miras una vez. Combina creativamente las dos etapas de reconocimiento de áreas candidatas y objetos. Puedes saber qué objetos y sus ubicaciones de un vistazo (sin mirar dos veces).

De hecho, YOLO en realidad no elimina áreas candidatas, sino que utiliza áreas candidatas predefinidas (para ser precisos, debería ser el área de predicción, porque no es el punto de anclaje utilizado por RCNN más rápido). Es decir, la imagen se divide en 7 * 7 = 49 cuadrículas, cada cuadrícula permite la predicción de 2 cuadros delimitadores (cuadros rectangulares que contienen un objeto) y hay un total de *** 49 * 2 = 98 cuadros delimitadores. Puede entenderse como 98 áreas candidatas, que cubren aproximadamente toda el área de la imagen.

Aunque RCNN encontrará algunas áreas candidatas, después de todo, son solo candidatas. Una vez que se reconoce realmente el objeto, es necesario ajustar la región candidata para acercarla al cuadro delimitador real. Este proceso es una regresión delimitadora: los cuadros delimitadores candidatos se ajustan para que se acerquen más a los cuadros delimitadores reales.

Dado que al final se ajustará de todos modos, ¿por qué molestarse en buscar áreas candidatas primero? Solo hay un alcance regional, entonces YOLO lo hace.

Pero dicho esto, ¿por qué funciona la regresión de límites? Creo que es esencialmente porque la información de clasificación ya contiene información de ubicación. Así como ves la cara y el cuerpo del dueño, puedes inferir la posición de tus orejas y tu trasero.

Veamos el plan de implementación de YOLO en detalle.

1) Estructura

Después de eliminar las áreas candidatas, la estructura de YOLO es muy simple, que es simple convolución y agrupación, y finalmente agrega dos capas de conexión completa. Si se observa únicamente la estructura de la red, casi no existe una diferencia esencial con la red de clasificación de objetos CNN ordinaria. La mayor diferencia es que la capa de salida final utiliza una función lineal como función de activación, porque es necesario predecir la posición del cuadro delimitador (tipo numérico), no solo la probabilidad del objeto. En términos generales, toda la estructura de YOLO es que la imagen de entrada se transforma mediante una red neuronal para obtener un tensor de salida, como se muestra en la siguiente figura.

Debido a que se trata solo de algunas estructuras de redes neuronales convencionales, es importante comprender la relación de mapeo entre entrada y salida al comprender el diseño de YOLO.

2) Relación de mapeo entre entrada y salida

3) Entrada

Con referencia a la Figura 5, la entrada es la imagen original y el único requisito es ampliar al tamaño 448*448. La razón principal es que en la red de YOLO, la capa convolucional finalmente está conectada a dos capas completamente conectadas. La capa completamente conectada requiere un vector de tamaño fijo como entrada, por lo que el retroceso requiere que la imagen original tenga un tamaño fijo. Entonces el tamaño del diseño YOLO es 448*448.

4) Salida

La salida es un tensor de 7*7*30.

4.1) Cuadrícula de 7*7

Según el diseño de YOLO, la imagen de entrada se divide en cuadrículas de 7*7, y 7*7 en el tensor de salida corresponde a 7* 7 en la cuadrícula de la imagen de entrada. O consideramos el tensor 7 * 7 * 30 como 7 * 7 = 49 vectores de 30 dimensiones, es decir, cada cuadrícula en la imagen de entrada genera un vector de 30 dimensiones. Con referencia a la Figura 5 anterior, por ejemplo, la cuadrícula en la esquina superior izquierda de la imagen de entrada corresponde al vector en la esquina superior izquierda del tensor de salida.

Cabe señalar que esto no significa que solo la información de la cuadrícula se asigne al vector de 30 dimensiones. Después de que la red neuronal extrae y convierte la información de la imagen de entrada, la información alrededor de la cuadrícula también se identificará y clasificará, y finalmente se codificará en un vector de 30 dimensiones.

4.2) Vector de 30 dimensiones

En concreto, qué información contiene el vector de 30 dimensiones correspondiente a cada cuadrícula.

①Probabilidad de clasificación de 20 objetos

Debido a que YOLO admite el reconocimiento de 20 objetos diferentes (personas, pájaros, gatos, automóviles, sillas, etc.), hay 20 valores que representan cualquier objeto La probabilidad de existir en esta ubicación de la cuadrícula. Puede escribirse como probabilidad condicional, lo que significa que si hay un objeto en la cuadrícula, entonces su probabilidad es. (Los estudiantes que no recuerden la probabilidad condicional pueden consultar el teorema de Bayes).

②Las posiciones de los dos cuadros delimitadores.

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.

③Confianza de dos cuadros delimitadores

La confianza del cuadro delimitador = la probabilidad de que haya un objeto en el cuadro delimitador * el pagaré del cuadro delimitador y el cuadro delimitador real de el objeto.

Se representa mediante una fórmula.

Es la probabilidad de que haya un objeto en el cuadro delimitador, que es diferente del primer punto anterior. Pr(Objeto) no importa qué objeto sea, refleja la probabilidad de tener o no un objeto. El punto (1) significa asumir que ya hay un objeto en la cuadrícula, ¿qué objeto es?

Es el pagaré (intersección/unión) del cuadro delimitador del objeto y el cuadro delimitador real. Cabe señalar que el cuadro delimitador en el vector de 30 dimensiones que analizamos es la salida de la red YOLO, que es el cuadro delimitador predicho. Por lo tanto, refleja la cercanía entre el cuadro delimitador previsto y el cuadro delimitador verdadero.

También cabe señalar que, aunque a veces se mencionan cuadros delimitadores "predichos", este pagaré se calcula durante la fase de entrenamiento. Cuando se trata de influencia, no sabemos dónde están los objetos reales y sólo podemos confiar en la salida de la red. En este momento, ya no es necesario (e imposible) calcular el pagaré.

En general, la confiabilidad del cuadro delimitador se refiere a si contiene el objeto y su posicionamiento preciso. Un nivel de confianza alto indica que hay un objeto aquí y que la ubicación es precisa, y un nivel de confianza bajo indica que puede que no haya ningún objeto o incluso si hay un objeto, hay una gran desviación de posición.

Explique brevemente el pagaré. La siguiente imagen es del curso de aprendizaje profundo de Andrew Ng, donde pagaré = área de intersección/área de unión, pagaré = 1 cuando dos cuadros se superponen completamente y pagaré = 0 cuando no se cruzan.

En términos generales, un vector de 30 dimensiones = 20 probabilidades de objeto, 2 cuadros delimitadores * 4 coordenadas, 2 confianzas del cuadro delimitador.

4.3) Discusión

①Una imagen puede detectar hasta 49 objetos.

Solo hay un conjunto de (20) clasificaciones de objetos de probabilidad en cada vector de 30 dimensiones, por lo que solo se puede predecir un objeto. Por lo tanto, la salida de 7*7=49 vectores de 30 dimensiones representa hasta 49 objetos.

②Hay un total de 49 * * * 2 = 98 cuadros delimitadores.

Hay 2 conjuntos de cuadros delimitadores en cada vector de 30 dimensiones, por lo que hay 98 regiones candidatas en total.

③ El cuadro delimitador de YOLO no es el ancla de una RCNN más rápida.

Algunos algoritmos, como el RCNN más rápido, adoptan un diseño que establece manualmente N puntos de anclaje en cada cuadrícula; cada punto de anclaje tiene un tamaño y una relación de aspecto diferentes. El cuadro delimitador de YOLO parece dos puntos de anclaje en la cuadrícula, pero no lo son. YOLO no preestablece el tamaño y la forma de los dos cuadros delimitadores, ni predice la salida de un objeto en cada cuadro delimitador. Esto simplemente significa que se predicen dos cuadros delimitadores para un objeto y se elige el que tiene predicciones relativamente precisas.

Aquí se utilizan dos cuadros delimitadores. Este no es un algoritmo completamente supervisado, sino más bien un algoritmo evolutivo. Si se trata de un algoritmo supervisado, debemos proporcionar de antemano un cuadro delimitador correcto como objetivo de regresión según la muestra. Sin embargo, los dos cuadros delimitadores de YOLO no saben de antemano dónde estarán. Justo después del cálculo directo, la red generará dos cuadros delimitadores, y estos dos cuadros delimitadores utilizarán los cuadros delimitadores reales de los objetos en la muestra para calcular el pagaré. En este momento, se puede determinar que el cuadro delimitador con un valor de pagaré grande se utiliza como cuadro delimitador responsable de predecir el objeto.

Al comienzo del entrenamiento, los cuadros delimitadores predichos por la red pueden ser caóticos, pero siempre se selecciona el que tiene mejor pagaré. A medida que avanza el entrenamiento, cada cuadro delimitador gradualmente será bueno para predecir ciertas situaciones (tal vez el tamaño del objeto, la relación de aspecto, diferentes tipos de objetos, etc.). Entonces, esta es una idea de evolución o aprendizaje no supervisado.

Además, la capacidad de respuesta se menciona a menudo en los artículos. Por ejemplo, nuestro sistema divide la imagen de entrada en una cuadrícula s*s. Si el centro de un objeto cae dentro de una celda de la cuadrícula, esa celda de la cuadrícula es responsable de detectar el objeto. Esta responsabilidad es un poco confusa al predecir lo que significa "responsable". De hecho, no tiene mucho sentido, solo que un objeto solo sea predicho por una cuadrícula, no permita que varias cuadrículas compitan para predecir el mismo objeto. Más específicamente, al configurar una muestra de entrenamiento, cada objeto de la muestra pertenece a una y solo una cuadrícula, e incluso si a veces un objeto abarca varias cuadrículas, solo se especifica una de ellas. Específicamente, calcula la posición central del cuadro delimitador del objeto y en qué cuadrícula cae la posición central. La probabilidad de categoría del objeto en el vector de salida correspondiente a la cuadrícula es 1 (esta cuadrícula es responsable de predecir el objeto). todas las demás cuadrículas tienen la probabilidad del objeto. La probabilidad de predicción se establece en 0 (no es responsable de predecir el objeto).

Además: yolo predice múltiples cuadros delimitadores por celda de la cuadrícula. En el momento del entrenamiento, solo queremos un predictor de cuadro delimitador para cada objeto. De manera similar, aunque habrá dos cuadros delimitadores en una cuadrícula, elegiremos uno como predicción y el otro se ignorará. Las siguientes partes de la muestra de capacitación se verán más claramente.

④Se puede ajustar el número de cuadrículas y cuadros delimitadores.

Cuadrícula de 7*7, cada cuadrícula tiene 2 cuadros delimitadores, lo cual es un poco aproximado para la imagen de entrada de 448*448. También podemos configurar más cuadrículas y más cuadros delimitadores. Supongamos que el número de cuadrículas es S*S y que cada cuadrícula genera b bordes. La red admite el reconocimiento de diferentes objetos. En este momento, la longitud del vector de salida es:

El tensor de salida completo es:

YOLO selecciona 7*7 cuadrículas, 2 cuadros delimitadores y 20 tipos de objetos, por lo que la longitud Longitud del vector = 20 2 * (4 1) = 30. El tensor de salida completo es 7*7*30.

Debido a la escasa configuración de la cuadrícula y del cuadro delimitador, la precisión de la predicción y la tasa de recuperación de esta versión de YOLO después del entrenamiento no son muy ideales, y las versiones posteriores v2 y v3 mejorarán. Por supuesto, debido a que su velocidad puede cumplir con los requisitos del procesamiento en tiempo real, sigue siendo bastante atractivo para la industria.

5) Construcción de muestras de entrenamiento

Como aprendizaje supervisado, necesitamos construir muestras de entrenamiento antes de que el modelo pueda aprender de ellas.

Para una imagen de entrada, ¿qué datos se deben completar en el tensor de salida 7*7*30 (es decir, la etiqueta Y o la etiqueta que generalmente se menciona en el aprendizaje supervisado)?

Primero, la dimensión de salida 7*7 corresponde a la cuadrícula de entrada 7*7.

Luego, observe más de cerca el relleno de vectores de 30 dimensiones (consulte la Figura 6 arriba).

①Probabilidad de clasificación de 20 objetos

Para cada objeto en la imagen de entrada, primero encuentre su punto central. Por ejemplo, la bicicleta en la Figura 8 tiene el punto central en el punto amarillo y cae dentro de la cuadrícula amarilla. Luego, en el vector de 30 dimensiones correspondiente a la cuadrícula amarilla, la probabilidad de la bicicleta es 1 y la probabilidad de otros objetos es. 0. En las otras 48 cuadrículas de vectores de 30 dimensiones, la bicicleta tiene una probabilidad de 0. Esto es lo que se llama "la cuadrícula donde el punto central se encarga de predecir el objeto". Las probabilidades de clasificación de perros y coches también se rellenan de la misma forma.

②Las posiciones de los dos cuadros delimitadores.

La posición del cuadro delimitador de la muestra de entrenamiento debe completarse en el cuadro delimitador real del objeto, pero un objeto corresponde a dos cuadros delimitadores. ¿Cuál debo completar? Como se mencionó anteriormente, la selección debe basarse en el pagaré de la salida de la red y el cuadro delimitador real del objeto, por lo que es necesario decidir dinámicamente qué cuadro delimitador llenar durante el proceso de capacitación. Consulte el punto ③ a continuación.

③Confianza de dos cuadros delimitadores

La fórmula de confianza se analiza anteriormente.

Se puede calcular directamente, es decir, el pagaré se calcula utilizando los dos cuadros delimitadores generados por la red y el cuadro delimitador real del objeto.

Luego mire el pagaré de los dos cuadros delimitadores. Cuál es más grande (más cerca del cuadro delimitador real del objeto), qué cuadro delimitador es responsable de predecir si el objeto existe, es decir, la posición del cuadro delimitador real del objeto también se completa en el cuadro delimitador. Otro cuadro delimitador que no se encarga de predecir.

En general, el cuadro delimitador más cercano al cuadro delimitador real del objeto pertenece a los otros cuadros delimitadores de la malla.

Por ejemplo, si el punto central de la bicicleta en la imagen de arriba está ubicado en una cuadrícula con 4 filas y 3 columnas, entonces el vector de 30 dimensiones con 4 filas y 3 columnas en el tensor de salida es como se muestra en la siguiente figura.

Hay una bicicleta en una cuadrícula de 4 filas y 3 columnas, su punto central está en esta cuadrícula y su límite de posición es el límite real de la bicicleta completada en el cuadro delimitador 1.

Tenga en cuenta que 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 La posición de la bicicleta (cuadro delimitador real) se coloca en un cuadro delimitador con un pagaré relativamente grande (se supone que es el cuadro delimitador 1 en la figura), y el nivel de confianza del cuadro delimitador se establece en 1.

6) Función de pérdida

La pérdida es la desviación entre el valor de salida real de la red y el valor de la etiqueta de muestra.

La función de pérdida dada por YOLO es la siguiente

En la fórmula

significa que hay objetos en la cuadrícula I.

Significa que hay un objeto en el j-ésimo cuadro delimitador de la cuadrícula I.

Significa que no hay ningún objeto en el j-ésimo cuadro delimitador de la cuadrícula I.

En términos generales, la suma de los errores al cuadrado 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.

①Error de clasificación del objeto

En la quinta línea de la fórmula, observe que la malla del objeto existe antes de que contenga el error.

② Error de posición del cuadro delimitador

Líneas 1 y 2 de la fórmula.

A) Todo con significa que solo los datos del cuadro delimitador "responsable" (el pagaré es relativamente grande) se incluirán en el error.

b) Primero toma la raíz cuadrada del ancho y alto de la segunda línea, porque si tomas la diferencia directamente, los objetos grandes serán menos sensibles a la diferencia, mientras que los objetos pequeños serán más sensibles a la diferencia. Por lo tanto, tomar la raíz cuadrada puede reducir la diferencia de sensibilidad para que los objetos grandes y pequeños tengan pesos similares en el error de tamaño.

c) Multiplicar los pesos utilizados para ajustar el error de posición del cuadro delimitador (error de clasificación relativo y error de confianza). Configuración YOLO, que aumenta el peso del error de posición.

③Error de confianza del cuadro delimitador

La tercera y cuarta líneas de la fórmula.

a) La tercera línea es el error de confianza del cuadro delimitador del objeto. "Tiene" significa que sólo se incluirá en el error la confianza de los cuadros de predicción "responsables" (pagarés relativamente grandes).

b) La cuarta fila es el error de confianza del cuadro delimitador sin objetos. Debido a que no hay ningún objeto en el cuadro delimitador, debe decir honestamente "No tengo ningún objeto aquí", es decir, generar el nivel de confianza más bajo posible. Si genera una alta confianza de manera inapropiada, se puede confundir con el cuadro delimitador que en realidad es responsable de la predicción de objetos. De hecho, al igual que la clasificación de objetos, la probabilidad del objeto correcto es mejor 1 y la probabilidad de todos los demás objetos es mejor 0.

c) Multiplique la línea 4 por pesos (en relación con otros errores) para ajustar la confianza de los cuadros delimitadores sin objetos. Configuración de YOLO, que reduce el peso del error de confianza para cuadros delimitadores sin objetos.

7) Entrenamiento

YOLO usa el conjunto de datos ImageNet para entrenar previamente las primeras 20 capas de la red convolucional y luego usa la red completa para entrenar y predecir el reconocimiento y localización de objetos en el conjunto de datos PASCAL VOC. La estructura de red de YOLO se muestra en la siguiente figura:

La última capa de YOLO utiliza una función de activación lineal y las otras 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.

8) Predicción (inferencia)

Una red YOLO entrenada generará un tensor de 7*7*30 para representar los objetos contenidos en todas las cuadrículas de la imagen (probabilidad), también como los dos posibles cuadros delimitadores del objeto y la confianza (confianza).

Para extraer los objetos y ubicaciones más probables, YOLO utiliza el algoritmo NMS (Non-Maximum Suppression).

9) NMS (supresión no máxima)

El método NMS no es complicado. Su idea central es: seleccionar la salida con la puntuación más alta, eliminar la superposición con la salida. y repita el proceso hasta que se hayan abordado todas las alternativas.

El método de cálculo NMS de YOLO es el siguiente.

El tensor 7*7*30 generado por la red, en cada cuadrícula, la puntuación del objeto ubicado en el j-ésimo cuadro delimitador:

Indica que el objeto existe en Posibilidades en el j-ésimo cuadro delimitador.

Cada cuadrícula tiene: 20 probabilidades de objetos * 2 confianzas del cuadro delimitador, *** 40 puntuaciones (objetos candidatos). 49 cuadrados ***1960 puntos. Ng sugirió que cada objeto debería ser NMS, por lo que cada objeto tiene una puntuación de 1960/20=98.

Los pasos de NMS son los siguientes:

1) Establezca un umbral de puntuación y los candidatos por debajo del umbral se excluirán (establezca la puntuación en 0).

2) Recorre cada categoría de objeto.

? 2.1) Se recorren 98 puntuaciones del objeto.

2.1.1) Encuentre el objeto con la puntuación más grande y su cuadro delimitador y agréguelo a la lista de salida.

2.1.2) Para cada objeto candidato con una puntuación distinta de 0, calcule su pagaré utilizando el cuadro delimitador del objeto de salida en 2.1.1 anterior.

2.1.3) De acuerdo con el umbral de pagaré preestablecido, excluya a todos los candidatos que superen este umbral (alta superposición) (establezca la puntuación en 0).

2.1.4) Si todos los cuadros delimitadores están en la lista de salida o puntuación = 0, se completa NMS para esa categoría de objeto y el proceso regresa al paso 2 para procesar el siguiente objeto.

3) La lista de salida es el objeto de predicción.

10) Resumen

YOLO es famoso por su velocidad. La velocidad de procesamiento puede alcanzar los 45 fps, y su versión rápida (con red pequeña) puede incluso alcanzar los 155 fps. Esto se debe a su diseño de red que integra reconocimiento y posicionamiento. Este diseño unificado también permite realizar entrenamiento y predicción de un extremo a otro, lo cual es muy simple.

La desventaja es que el efecto de detección de objetos pequeños no es muy bueno (especialmente algunos objetos pequeños agrupados), la precisión de la predicción del límite no es muy alta y la precisión general de la predicción es ligeramente menor que RCNN rápido. La razón principal es que la configuración de la cuadrícula es escasa y solo se predicen dos límites por cuadrícula. Además, la capa de agrupación perderá información detallada, lo que afectará el posicionamiento.

Consulte el artículo original para obtener más detalles.

Finalmente, si insistes en ver este lugar y lo encuentras útil, por favor dame un me gusta :)?

Solo lo ves una vez: Detección de objetos unificada en tiempo real

Andrew Ng Deep Learning Engineer-04 Red neuronal convolucional

YOLO gráfico

¿Realmente entiendes a yolo?

Principio e implementación de la detección de objetivos|YOLO