Algoritmo de red central

En comparación con yolo, ssd, fast_rcnn, etc., que dependen de una gran cantidad de redes de detección de anclaje, CenterNet es una red de detección de objetivos sin anclaje. Centernet considera el objetivo como un punto, y un objetivo está determinado por un punto característico. Centernet divide la imagen de entrada en varias regiones, y cada región tiene un punto característico. El resultado de la predicción de la red centernet determinará si la característica es el objeto correspondiente, así como el tipo y la confianza del objeto; al mismo tiempo, los puntos de la característica se ajustarán para obtener las coordenadas del centro del objeto; y la se devolverá el ancho y la altura del objeto.

1. Estructura de la red

La estructura de la red Centernet se divide principalmente en las siguientes tres partes:

1. Red troncal de extracción de características

Centernet utiliza muchos tipos de redes de características troncales, como Hourglass Network (utilizada principalmente para la estimación de la postura del cuerpo humano), DLANet (Deep Layer Aggregation) o Resnet, etc. Cuando el tamaño de la imagen de red de entrada de la red central original es 3x512x512, la forma del último mapa de características es (2048,16,16).

2. Sobremuestreo para obtener mapas de características de alta resolución

Para esta parte, centernet usa tres deconvoluciones para el muestreo ascendente y los canales de salida de estas tres deconvoluciones son 256, 128 y 64 respectivamente. Para cada desconvolución, la altura y el ancho del mapa de características se duplicarán. Por lo tanto, después de tres veces de desconvolución y muestreo ascendente, la altura y el ancho del mapa de características que obtuvimos será 8 veces el original. En este momento, la altura y el ancho del mapa de características son 128x128 y el número de canales es 64. En este punto hemos obtenido un mapa de características efectivo de 64x128x128 (mapa de características de alta resolución).

3, cabeza central

Mediante el paso anterior podemos obtener un mapa de características de alta resolución de 64x128x128. Este mapa de funciones es equivalente a dividir la imagen completa en áreas de 128x128, y cada área tiene un punto de función.Si el centro de un objeto cae en esta área, entonces está determinado por este punto de función.

Podemos usar este mapa de características para realizar tres convoluciones, a saber:

1) Predicción del mapa de calor, el número de canales de convolución en este momento es num_classes, y el resultado final es (num_classes, 128, 128), que representa si hay un objeto en cada punto de calor y el tipo de objeto;

2) Predicción de desplazamiento En este momento, el número de canales de convolución es 2, y el resultado final es (2,128,128), que representa el desplazamiento de cada centro de objeto desde el punto de calor;

3) Predicción de ancho y alto En este momento, el número de canales de convolución es 2, y el resultado final es (2,128,128), que representa la predicción del ancho y alto de cada objeto;

2. Comprensión y generación de heatmap (mapa de calor)

1. Comprensión del mapa de calor

CenterNet detecta el objetivo como un punto, es decir, utiliza el punto central del cuadro del objetivo para representar el objetivo, predice el desplazamiento del punto central (desplazamiento), el ancho y la altura (tamaño) del objetivo para obtener el cuadro real del objeto y el mapa de calor representa la información de clasificación. Cada categoría tiene un mapa de calor.En cada mapa de calor, si hay un punto central del objetivo del objeto en una determinada coordenada, se genera un punto clave (representado por un círculo gaussiano) en esa coordenada, como se muestra en la siguiente figura:

 

 2. Los pasos para generar un mapa de calor son los siguientes:

El lado izquierdo de la siguiente figura es la imagen enviada a la red después del zoom, el tamaño es 512x512, y el lado derecho es la imagen del mapa de calor generado, el tamaño es 128x128 (la escala del mapa de calor prevista final de la red es 128x128. Los pasos son como sigue:

1) Escale el cuadro de destino a una escala de 128x128, luego encuentre las coordenadas del punto central del cuadro y redondee hacia arriba, y configúrelo en el punto

2) Calcule el radio del círculo gaussiano de acuerdo con el tamaño del cuadro de destino y configúrelo en R

3) En el mapa de calor, tome el punto como el centro y complete el valor de cálculo de la función gaussiana con R como el radio. (El punto es el valor máximo, y decrece según la función Gaussiana a lo largo del radio)

(Nota: dado que ambos objetivos son gatos y pertenecen a la misma categoría, están en el mismo mapa de calor. Si hay otro perro, el punto clave del perro está en otro mapa de calor)

3. Determinación del radio de la función gaussiana del mapa de calor

  La razón por la que los puntos clave en el mapa de calor están representados por un núcleo gaussiano bidimensional es que para algunos puntos cerca del punto central del objetivo, el IOU del cuadro predicho y gt_box puede ser mayor que 0.7, y estos valores predichos ​no se puede castigar directamente. Debe ser más suave, por lo que se utiliza un núcleo gaussiano. Tomando prestadas las explicaciones de los grandes, como se muestra en la siguiente figura:

  En cuanto a la determinación del radio del círculo gaussiano, depende principalmente del ancho y la altura del cuadro objetivo, y su método de cálculo se muestra en la figura a continuación. En la situación real, se tomará IOU = 0.7, es decir, se usa la superposición = 0.7 en la figura a continuación como el valor crítico, y luego se calculan los radios de los tres casos respectivamente, y el valor mínimo se toma como el radio r del núcleo gaussiano

 

Esta parte del código es la siguiente:

def gaussian_radius(det_size, min_overlap=0.7):

    alto, ancho = det_size

    a1 = 1

    b1 = (alto + ancho)

    c1 = ancho * alto * (1 - min_overlap) / (1 + min_overlap)

    cuadrado1 = np.raíz cuadrada(b1 ** 2 - 4 * a1 * c1)

    r1 = (b1 + sq1) / 2

    a2 = 4

    b2 = 2 * (alto + ancho)

    c2 = (1 - min_overlap) * ancho * alto

    cuadrado2 = np.raíz cuadrada(b2 ** 2 - 4 * a2 * c2)

    r2 = (b2 + sq2) / 2

    a3 = 4 * min_overlap

    b3 = -2 * min_overlap * (alto + ancho)

    c3 = (min_overlap - 1) * ancho * alto

    sq3 = np.sqrt(b3 ** 2 - 4 * a3 * c3)

    r3 = (b3 + sq3) / 2

    retorno min(r1, r2, r3)  

Para obtener más información, consulte: https://zhuanlan.zhihu.com/p/388024445

Tres, función de pérdida

La pérdida de la red central incluye tres partes, la pérdida del mapa de calor, la pérdida de la predicción del ancho y la altura del objetivo y la pérdida del desplazamiento del punto central del objetivo.

1. Pérdida de mapa de calor

La pérdida del mapa de calor se calcula utilizando la idea de pérdida focal, donde α y β son los hiperparámetros de pérdida focal, y N es el número de puntos clave de la imagen (el número de muestras positivas), que se utiliza para la estandarización. α y β son 2 y 4 en este documento, respectivamente. En la fórmula, Yxyc es el valor predicho e Yxyc es el valor real.

La idea general es similar a Focal Loss: para muestras que son fáciles de clasificar, reduzca adecuadamente su proporción de entrenamiento, que es el valor de pérdida.

Para obtener más información, consulte: https://zhuanlan.zhihu.com/p/66048276

2. Pérdida de compensación del punto central

La fórmula de la función de pérdida es la siguiente, que solo calcula la pérdida del valor compensado de la muestra positiva. donde  representa el valor de desplazamiento predicho, p es la coordenada del punto central del objetivo en la imagen, R es la escala de escala y es la coordenada entera aproximada del punto central después de hacer zoom

  

3. Valor de pérdida de predicción de ancho y alto

La fórmula de la función de pérdida es la siguiente, y solo se calcula para el valor de pérdida de la muestra positiva, Spk es el tamaño previsto y Sk es el tamaño real

La pérdida del valor de compensación y la pérdida del ancho y la altura utilizan la función de pérdida ordinaria L1. Tanto la predicción del valor de desplazamiento como la predicción de ancho y alto usan directamente el tamaño de las coordenadas del mapa de características, es decir, entre 0 y 128. Dado que la pérdida prevista por wh ancho y alto será relativamente grande, su pérdida se multiplica por un coeficiente y el papel es 0,1. El coeficiente para la predicción del valor de compensación es entonces 1.

4. Decodificación

En la etapa de inferencia, primero ingrese la imagen en la red para obtener el mapa de calor y luego use 3x3 MaxPool para detectar si el valor del punto de acceso actual es mayor (o igual) que los ocho puntos vecinos circundantes (ocho direcciones) (similar a detección basada en ancla) efecto nms). Tome top100 tales puntos (todas las categorías juntas). Use los valores de desplazamiento y tamaño obtenidos por regresión para calcular el bbox:

Finalmente, el punto central mayor que el umbral se selecciona como resultado final.

Como se mencionó en el documento original, a diferencia de otros algoritmos de detección de objetivos, centernet requiere una supresión no máxima después de la decodificación, y la supresión no máxima de centernet se realiza antes de la decodificación (usando un kernel de agrupación 3x3). Sin embargo, en el uso real, se encuentra que cuando el objetivo es un objetivo pequeño, de hecho es posible no realizar un procesamiento posterior de supresión no máxima después de la decodificación.Si el objetivo es un objetivo grande, cuando la red no puede determinar correctamente el centro del objetivo, aún se requiere supresión no máxima Valor suprimido para posprocesamiento.

Este artículo se refiere a los siguientes artículos.

https://zhuanlan.zhihu.com/p/388024445

https://zhuanlan.zhihu.com/p/66048276

https://www.codenong.com/cs106869363/

Supongo que te gusta

Origin blog.csdn.net/wanchengkai/article/details/128707828
Recomendado
Clasificación