DETR deformable(2020 ICLR)

DETR deformable(2020 ICLR)

Las épocas de entrenamiento de Detr se reducen diez veces y el rendimiento de objetivos pequeños es mejor

Atención deformable

  1. Combinando el escaso muestreo espacial de la convolución deformada y las capacidades de modelado de relaciones de Transformer

  2. Al utilizar funciones de capa de entidades de varios niveles, no es necesario utilizar el diseño FPN (use directamente la salida troncal de varios niveles)

    Dos formas de mejorar:

    1. mecanismo de refinamiento iterativo de bbox
    2. 2. DETR deformable de dos etapas

todo el cuadro:

Insertar descripción de la imagen aquí

Lo mismo es 6 codificadores, 6 decodificadores.

Primero, se utilizan características de imagen multicapa para realizar módulos de atención deformables de varios niveles alrededor de un punto de muestreo (parte morada)

El decodificador utiliza atención cruzada, la línea roja apunta a la segunda (cruz, la primera es atención propia)

Igual que la consulta de objeto

Visualización detallada

atención-multihead:
 MultiHeadAttn ( zq , x ) = ∑ m = 1 MW m ⏟ \ RC × C v [ ∑ k ∈ Ω k A mqk W m ′ ⏟ \ RC v × C xk ] donde A mqk ∝ exp ⁡ { ( U mzq ) T ( V mxk ) C v } U m , V m ∈ \ RC p × C \begin{array}{c} \text { MultiHeadAttn }\left(\mathrm{z}_{\mathrm{q} }, \mathrm{x}\right)=\sum_{m=1}^{M} \underbrace{W_{m}}_{\backslash \mathrm{R}^{C \times C_{v}}} [\sum_{k \in \Omega_{k}} A_{mqk} \underbrace{W_{m}^{\prime}}_{\backslash \mathrm{R}^{C_{v} \times C}} x_{k}] \\ \text { donde } A_{mqk} \propto \exp \left\{\frac{\left(U_{m} z_{q}\right)^{T}\left(V_{ m} x_{k}\right)}{\sqrt{C_{v}}}\right\} \quad U_{m}, V_{m} \in \backslash \mathbf{R}^{C_{p} \veces C} \end{matriz} Atención multicabezal ( zq,x )=metro = 1m\ RC × Cv W.m[ k ΩkAmqk _ _\ RCv× C W.metroXk] donde  Amqk _ _Exp{ Cv ( Ud.mzq)T (VmXk)}Ud.m,Vm\ RCp× C
atención-deformable:
DeformAttn ⁡ ( zq , pq , x ) = ∑ m = 1 MW m ⏟ \ RC × C v [ ∑ k = 1 KA mqk W m ′ ⏟ \ RC v × C x ( pq + Δ pmqk ) ] \operatorname{DeformAttn}\left(\mathrm{z}_{\mathrm{q}}, \mathrm{p}_{\mathrm{q}}, \mathrm{x}\right)=\sum_{m= 1}^{M} \underbrace{W_{m}}_{\backslash \mathrm{R}^{C \times C v}}[\sum_{k=1}^{K} A_{mqk} \underbrace {W_{m}^{\prime}}_{\backslash \mathrm{R}^{C_{v} \times C}} x\left(p_{q}+\Delta p_{mqk}\right)]Deformar atención( zq,pagq,x )=metro = 1m\ RC × C v W.m[k = 1kAmqk _ _\ RCv× C W.metroX( pag.q+Δpag _mqk _ _) ]

M: cabeza

K: punto de muestreo

Mapa de características: xl, l∈[1,L], que representa mapas de características de múltiples escalas

p_q: punto de referencia, punto de coordenadas de consulta

Aquí, cada punto de píxel z_q solo calcula la atención con sus k puntos de muestreo correspondientes.

  • z_q: la consulta puede ser la imagen del codificador o la salida del decodificador anterior (cada píxel en el mapa de características es un vector z_q con dimensión C)
  • El punto de referencia de cada píxel es la coordenada de posición bidimensional p_q (se generan muchos puntos de muestreo p_q en la imagen. Al final del artículo, escribí cómo obtener el punto de referencia en el codificador y decodificador. El de una etapa El punto de referencia se genera mediante la función get_reference_points, y el punto de referencia de dos etapas se genera mediante la función gen_encoder_output_proposals, que se analizará más adelante en las dos etapas).
  • M representa el número de cabezas en el mecanismo de atención de múltiples cabezas (M = 8 en el documento)
  • En cada encabezado solo se consideran K puntos cercanos a z_q (K es mucho más pequeño que H x W, K = 4 en el artículo).
  • Δpmqk representa el desplazamiento de posición del muestreo (el primer lineal), que es una coordenada bidimensional (el punto de muestreo inicial es fijo, pero las coordenadas de los puntos que son más dignos de atención se calcularán y predecirán más adelante a través de la conexión completa capa)

K puntos de muestreo se obtienen a partir del punto de referencia p_q y el desplazamiento Δpmqk . Por supuesto, este desplazamiento no puede ser un número entero. Se utiliza la interpolación bilineal para obtener las características en este desplazamiento .

Luego conéctelo a la norma de peso y envíelo.

imagen

Donde se utiliza Atención Deformable:

  • La atención propia en el codificador se reemplaza por la atención deformable.
  • La atención cruzada en el decodificador se reemplaza por la atención deformable, la atención propia no se reemplaza y el foco sigue estando en el qkv original.

DETR original: cabezal de clasificación, cabezal de predicción bbox genera cuatro valores (punto central, ancho y alto)

detr deformable: el resultado de la predicción del cabezal de predicción de bbox es el desplazamiento de coordenadas con respecto al punto de referencia . Este diseño puede reducir la dificultad de optimizar la red.

Primero, las coordenadas iniciales del punto de referencia se obtendrán a través de Lineal, por lo que la salida del bbox final ya no representa el valor de las coordenadas, sino que representa el desplazamiento de las coordenadas, que se utiliza para corregir las coordenadas del punto de referencia, que es más consistente con la red.el diseño de

Insertar descripción de la imagen aquí

Varias variaciones de detr deformable:

Variante 1: mejora de bbox, refinamiento de bbox (no clasificación auxiliar)

punto de referencia: codificador: ceñidor H*W

Decodificador: 300 coordenadas generadas después de lineal (el método de adquisición de puntos de referencia son consultas de objetos para obtener cada punto de referencia correspondiente a través de un nn.Linear)

No aplicable a la mejora de bbox, función continua del decodificador

Implementación:

Pase un decodificador, calcule las coordenadas de bbox (más el punto de referencia), páselo a la siguiente capa y repita

Es decir, si se utiliza la estrategia iterativa de refinamiento de bbox, el Decodificador predecirá los bboxes en cada capa, y estos bboxes se usarán como puntos de referencia para una nueva ronda que usará la siguiente capa. proceso fino, que compara continuamente los puntos de referencia, realiza la corrección y eventualmente devuelve el resultado de la corrección de la última capa.

Se puede ver que incluso si no es un modo de 2 etapas, siempre que se utilice la estrategia iterativa de refinamiento de bbox, el punto de referencia devuelto aquí se convertirá en una forma 4D . Porque el resultado predicho de la rama de regresión para detectar la cabeza tiene la forma de 4d (xywh), ​​​​y es el desplazamiento relativo al punto de referencia (no la posición de coordenadas absolutas). Si el punto de referencia entrante inicial es 2D, entonces wh está determinado únicamente por el resultado de la predicción de detectar la cabeza.

Variante 2: dos etapas (cómo obtener el punto de referencia: una etapa/dos etapas)

6encoder -> memoria (salida) -> pasar dos encabezados de clasificación FFN (cls, bbox) -> salida y memoria de bbox-> 6decoder En el modo de 2
etapas, la entrada del punto de referencia al decodificador es la propuesta top-k predicha por las cajas Encoder, es decir, son 4d (2d en casos que no sean de 2 etapas)

Obtener puntos de referencia: Cabe señalar que en el modo de 2 etapas, los puntos de referencia y los métodos y formas de generación de la consulta de objeto y la entrada de consulta incrustada en el Decodificador serán diferentes:

– Si es el modo de 2 etapas, entonces el punto de referencia es el cuadro de propuesta con la puntuación top-k más alta predicha por el codificador (tenga en cuenta que el punto de referencia es 4d en este momento, en forma de bbox). Luego, la consulta de objeto del decodificador (objetivo) y la incrustación de consulta correspondiente se generan mediante la incrustación de posición en el punto de referencia;

– De lo contrario, la consulta de objeto (objetivo) del decodificador y la incrustación de consultas son el nn.embedding preestablecido, y luego la incrustación de consultas se genera a través de la capa completamente conectada para generar un punto de referencia 2D. En este momento, el punto de referencia está en la forma de coordenadas centrales normalizadas.

Además, el número de puntos de referencia generados en los dos casos puede ser diferente: en 2 etapas, hay top-k (el autor lo configuró en 300), mientras que en 1 etapa hay num_queries (el autor también lo configuró a 300), es decir, y El número de consultas de objetos es el mismo (se puede entender que el punto de referencia en este momento es la posición de la consulta de objetos en sí).

otro:

num_class no tiene ningún objeto (+1), pero hay un proceso similar

El cálculo de pérdida de etiquetas del comparador es diferente:

Original: directamente a través de softmax

Lo que se utiliza aquí es la pérdida focal de BCE.

referencia:

https://www.bilibili.com/video/BV1B8411M73e/?spm_id_from=333.788&vd_source=4e2df178682eb78a7ad1cc398e6e154d

Supongo que te gusta

Origin blog.csdn.net/qq_52038588/article/details/133149148
Recomendado
Clasificación