Resumen de atención en visión artificial

Introducción: La
primera aplicación del mecanismo de atención (atención) debería ser la traducción automática, y en los últimos años se ha popularizado en tareas de visión artificial (CV). El propósito principal del mecanismo de atención en CV es permitir que la red neuronal se concentre en aprender lugares interesantes.

Prefacio:

Atención, hay dos, uno es un enfoque suave (atención suave), el otro es una atención fuerte (atención dura).
1. La atención suave presta más atención a áreas o canales, y la atención suave es atención determinista, que se puede generar directamente a través de la red después de que se completa el aprendizaje. El punto más importante es que la atención suave es diferenciable, lo cual es muy importante local. La atención que se puede diferenciar se puede calcular a través de la red neuronal para calcular el gradiente y la propagación hacia adelante y la retroalimentación hacia atrás para conocer el peso de la atención.
2. Una atención fuerte significa más atención, es decir, cada punto de la imagen puede extender la atención Al mismo tiempo, una atención fuerte es un proceso de predicción aleatoria que enfatiza los cambios dinámicos. Por supuesto, lo más importante es que la atención fuerte es una atención no diferenciable, y el proceso de formación suele realizarse mediante el aprendizaje por refuerzo (RL).

Atención en dominio espacial:

La transformación espacial correspondiente se realiza en la información del dominio espacial en la imagen para que se pueda extraer la información clave. Enmascare el espacio y puntúelo, que representa el módulo de atención espacial.
1. La siguiente es la red STN propuesta por Google DeepMind:
Inserte la descripción de la imagen aquí
Localization Net aquí se usa para generar coeficientes de transformación afines, la entrada es una imagen dimensional C × H × W, y la salida es un coeficiente de transformación espacial, y su tamaño depende del tipo de transformación que se va a aprender. Sin embargo, si es una transformación afín, es un vector de 6 dimensiones. Es decir, ubique la posición de destino y luego realice operaciones como la rotación, lo que facilita el aprendizaje de la muestra de entrada.
2. Dynamic Capacity Networks utiliza dos subredes, a saber, una subred de bajo rendimiento (modelo aproximado) y una subred de alto rendimiento (modelo fino).
Inserte la descripción de la imagen aquí
La subred de bajo rendimiento se utiliza para procesar la imagen completa y localizar la región de interés, como se muestra en la operación fc en la siguiente figura. La subred de alto rendimiento refina la región de interés, como se muestra en la operación siguiente. Los dos se utilizan juntos para obtener un menor costo de cálculo y una mayor precisión.

Atención de dominio de canal —— SENet:

Es similar a agregar un peso a la señal en cada canal para representar la correlación entre el canal y la información clave. Cuanto mayor sea el peso, mayor será la correlación. Genere una máscara para el canal y puntúelo El representante es SEnet, Módulo de Atención de Canal.
1. SEnet es el campeón mundial de 2017. El nombre completo de SE es Squeeze-and-Excitation. Es un módulo. Si la red existente está integrada en el módulo SE, entonces la red es SENet, que puede integrarse en casi cualquier red popular.
Inserte la descripción de la imagen aquí
La imagen de arriba es la unidad de bloque de SEnet. Ftr en la imagen es la estructura de convolución tradicional. X y U son la entrada (C '× H' × W ') y la salida (C × H × W) de Ftr. Estos son el pasado La estructura ya existe. La parte agregada de SENet es la estructura después de U: primero, haga una agrupación promedio global para U (Fsq (.) En la figura, el autor lo llama el proceso Squeeze), y los datos de salida 1 × 1 × C pasarán por dos niveles de conexión completa (Figura En Fex (.), El autor llamó el proceso de excitación), y finalmente usa sigmoide (mecanismo de auto-puerta en el artículo) para limitar al rango de [0, 1], y multiplicar este valor como escala a los canales C de U, Como datos de entrada del siguiente nivel. El principio de esta estructura es aumentar las características importantes y debilitar las características no importantes controlando el tamaño de la escala, haciendo que las características extraídas sean más direccionales.
En términos sencillos: al procesar el mapa de características enrevesado, se obtiene un vector unidimensional igual al número de canales como la puntuación de importancia de cada canal, y luego la puntuación de importancia de cada canal se multiplica por cada canal El valor original es el mapa de características real que estamos buscando. Los diferentes canales en este mapa de características tienen una importancia diferente.
A continuación se muestra un ejemplo de cómo incrustar la estructura Inception y la estructura
Inserte la descripción de la imagen aquí
Resnet: implementación del código pytorch:

class SELayer(nn.Module):
    def __init__(self, channel, reduction=16):
        super(SELayer, self).__init__()
        self.avg_pool = nn.AdaptiveAvgPool2d(1)
        self.fc = nn.Sequential(
            nn.Linear(channel, channel // reduction, bias=False),
            nn.ReLU(inplace=True),
            nn.Linear(channel // reduction, channel, bias=False),
            nn.Sigmoid()
        )
 
    def forward(self, x):
        b, c, _, _ = x.size()
        y = self.avg_pool(x).view(b, c)
        y = self.fc(y).view(b, c, 1, 1)
        return x * y.expand_as(x)

Supongo que te gusta

Origin blog.csdn.net/qq_42823043/article/details/107785329
Recomendado
Clasificación