Búsqueda de sitios web

Redes de atención de canales y de compresión y excitación (SENet)


Durante los primeros días de los mecanismos de atención en la visión por computadora, un artículo publicado en CVPR 2018 (y TPAMI), Squeeze and Excitation Networks, introdujo un novedoso mecanismo de atención de canales. Este módulo complementario simple pero eficiente se puede agregar a cualquier arquitectura básica para obtener una mejora en el rendimiento, con una sobrecarga computacional insignificante.

En este artículo cubriremos las redes de compresión y excitación en cuatro partes. Primero, entenderemos la intuición detrás de por qué canalizar la atención es importante visitando algunos aspectos de las técnicas fotográficas modernas. Luego avanzaremos a la metodología involucrada en calcular la atención del canal en bloques de compresión y excitación (SE). A continuación, analizaremos el impacto de los bloques de compresión y excitación (SE) en arquitecturas estándar, mientras los evaluamos en diferentes tareas de visión por computadora. Terminaremos con una crítica al artículo respecto a ciertas deficiencias en el método propuesto.

Tabla de contenido

  • Selección de fotogramas en la fotografía moderna
  • Canal de atención en redes neuronales convolucionales
  • Redes de compresión y excitación
  • Código
  • MBConv en redes eficientes
  • Puntos de referencia
  • Deficiencias
  • Referencias

Requisitos previos

  • Python: para ejecutar el código aquí incluido, su máquina necesitará Python instalado. Los lectores deben tener experiencia básica en codificación Python antes de continuar.
  • Conceptos básicos del aprendizaje profundo: este artículo cubre conceptos esenciales para aplicar la teoría del aprendizaje profundo y se espera que los lectores tengan cierta experiencia con términos relevantes y teoría básica.

Selección de fotogramas en la fotografía moderna

Fotogramas en Pixel 2

A medida que la fotografía moderna ha ido creciendo a través de generaciones de mejoras en los mecanismos inteligentes para capturar la mejor toma, una de las técnicas más sutiles que ha pasado desapercibida es la selección de los mejores fotogramas para una fotografía fija. Esta es una característica común en ciertos teléfonos inteligentes.

Hay muchas variables en una fotografía fija. Dos fotografías de un sujeto tomadas con un segundo de diferencia, en las mismas condiciones y en el mismo entorno, aún pueden diferir mucho. Por ejemplo, sus ojos podrían estar cerrados en una de las dos fotografías. Para obtener la mejor toma, es mucho mejor capturar varios fotogramas en el instante en que se toma la fotografía, de modo que el fotógrafo tenga la opción de seleccionar el mejor fotograma de todos los fotogramas capturados. Hoy en día esto se hace de forma automatizada e inteligente. Los teléfonos inteligentes como Google Pixel tienen la capacidad de elegir el mejor fotograma entre todos los fotogramas disponibles al capturar una sola fotografía. Este mecanismo inteligente está condicionado por diferentes factores como la iluminación, el contraste, el desenfoque, la distorsión del fondo, etc. De forma abstracta, el mecanismo inteligente es seleccionar el encuadre que contiene la información mejor representativa de la fotografía.

En términos de arquitecturas modernas de redes neuronales convolucionales, se pueden considerar los marcos como canales en un tensor calculado por una capa convolucional. Este tensor generalmente se indica mediante una dimensionalidad (B, C, H, W), donde B se refiere al tamaño del lote, C se refiere a los canales, y H, W se refiere a las dimensiones espaciales de los mapas de características (H representa la altura y W representa el ancho). Los canales son el resultado de que los filtros convolucionales derivan diferentes características de la entrada. Sin embargo, es posible que los canales no tengan la misma importancia representativa. Como algunos canales pueden ser más importantes que otros, tiene sentido aplicar un peso a los canales en función de su importancia antes de propagarlos a la siguiente capa.

Usaremos esto como una comprensión fundamental de la importancia de la atención del canal, que analizaremos en las siguientes secciones.

Atención del canal

Basándonos en la intuición descrita en la sección anterior, profundicemos en por qué la atención del canal es un componente crucial para mejorar las capacidades de generalización de una arquitectura de red neuronal convolucional profunda.

En resumen, en una red neuronal convolucional, hay dos componentes principales:

  1. El tensor de entrada (normalmente un tensor de cuatro dimensiones) representado por las dimensiones (B, C, H, W >).
  2. Los filtros convolucionales entrenables que contienen los pesos para esa capa.

Los filtros convolucionales son responsables de construir los mapas de características en función de los pesos aprendidos dentro de esos filtros. Mientras que algunos filtros aprenden bordes, otros aprenden texturas y, en conjunto, aprenden diferentes representaciones de características de la información de la clase objetivo dentro de la imagen incrustada por el tensor de entrada. Por tanto, el número de canales representa el número de filtros convolucionales que aprenden los diferentes mapas de características de la entrada. Según nuestra comprensión previa de la selección de fotogramas en fotografía, estos mapas de características también tienen una magnitud de importancia diferente. Esto significa que algunos mapas de características son más importantes que otros. Por ejemplo, un mapa de características que contiene información de borde podría ser más importante y crucial para el aprendizaje, en comparación con otro mapa de características que aprende transiciones de textura de fondo. Por lo tanto, en un nivel fundamental, uno querría proporcionar los mapas de características “más importantes” con un mayor grado de importancia en comparación con los mapas de características homólogos.

Mapas de características de ejemplo

Ésta es la base de la atención del canal. Queremos centrar esa “atención” en canales más importantes, que es básicamente dar mayor importancia a canales concretos que a otros. La forma más sencilla de hacerlo es escalar los canales más importantes con un valor más alto. Esto es exactamente lo que proponen las Squeeze-Excitation Networks.

Redes de compresión y excitación

En 2018, Hu et al. publicó su artículo titulado Squeeze-and-Excitation Networks en CVPR 2018 con una versión de revista en TPAMI. Aclamado como uno de los trabajos más influyentes en el ámbito de los mecanismos de atención, el artículo ha obtenido más de 1000 citas. Echemos un vistazo a lo que propone el artículo.

Módulo de excitación-compresión

El artículo propone un módulo novedoso y fácil de conectar llamado bloque Squeeze-and-Excite (abreviado como bloque SE) que consta de tres componentes (que se muestran en la figura anterior):

  1. Módulo de compresión
  2. Módulo de excitación
  3. Módulo de escala

Repasemos cada uno de estos módulos con más detalle y comprendamos por qué son importantes en el contexto de la atención del canal.

Módulo de compresión

Para obtener una atención óptima del canal, sería deseable que el escalado de los mapas de características se adaptara a los propios mapas de características. En resumen, el conjunto de mapas de características es esencialmente el tensor de salida de una capa convolucional (generalmente un tensor de dimensionalidad 4-D (B,C,H,W), donde las iniciales representan el tamaño del lote. Canales, Alto y Ancho de los mapas de características). Para simplificar, solo lo consideraremos como un tensor tridimensional de la forma (C, H, W); esencialmente nos preocupa la profundidad (número de canales/mapas de características en el tensor) y las dimensiones espaciales de cada mapa de características en ese tensor. Por lo tanto, para que la atención del canal se adapte a cada canal, tenemos H_×_W píxeles (o valores) en total de los que preocuparnos. Básicamente, esto significaría que para que la atención sea verdaderamente adaptable, estaría operando con un total de valores C_×_H_×_W en total. Este valor será muy grande porque en las redes neuronales modernas, la cantidad de canales aumenta a medida que aumenta la profundidad de la red. Por lo tanto, la necesidad de utilizar un descriptor de características que pueda descomponer la información de cada mapa de características en un valor singular será útil para reducir la complejidad computacional de toda la operación.

Esto constituye la motivación para el módulo Squeeze. Existen muchos descriptores de características que pueden usarse para reducir las dimensiones espaciales de los mapas de características a un valor singular, pero un método general utilizado para la reducción del tamaño espacial en redes neuronales convolucionales es la agrupación. Hay dos métodos de agrupación muy populares: agrupación promedio y agrupación máxima. El primero calcula los valores promedio de píxeles dentro de una ventana definida, mientras que el segundo toma el valor máximo de píxeles en la misma ventana definida. Ambos tienen una buena cantidad de ventajas y desventajas. Si bien la agrupación máxima conserva los píxeles más activos, también puede ser extremadamente ruidosa y no tendrá en cuenta los píxeles vecinos. La agrupación promedio, por otro lado, no preserva la información; sin embargo, construye un promedio más suave de todos los píxeles de esa ventana.

Los autores realizaron un estudio de ablación para investigar el rendimiento de cada descriptor, a saber, Global Average Pool (GAP) y Global Max Pool (GMP), que se muestra en la siguiente tabla.

Descriptor Top-1 Error Rate Top-5 Error Rate
GMP 22.57 6.09
GAP 22.28 6.03

Por lo tanto, el módulo Squeeze opta por la opción más suave de las dos y utiliza la operación Global Average Pool (GAP) que básicamente reduce todo el mapa de características a un valor singular tomando el promedio de todos los píxeles en ese mapa de características. Así, en términos de dimensionalidad, si el tensor de entrada es (C_×_H_×_W), luego de pasarlo por el operador GAP el tensor de salida obtenido tendrá la forma (_C_×1×1) , esencialmente un vector de longitud C donde cada mapa de características ahora se descompone en un valor singular.

Para verificar la importancia del operador Squeeze, los autores compararon además una variante Squeeze y una variante No-Squeeze, como se muestra en la siguiente tabla. Nota: una variante sin compresión significa esencialmente que el tensor que contiene los mapas de características no se redujo a un solo píxel y que el módulo de excitación operó en todo el tensor.

Variant Top-1 Error Rate Top-5 Error Rate GFLOPs Parameters
Vanilla ResNet-50 23.30 6.55 3.86 25.6M
NoSqueeze 22.93 6.39 4.27 28.1M
SE 22.28 6.03 3.87 28.1M

Módulo de excitación

Ejemplo de una estructura de perceptrón multicapa (MLP).

Ahora, con el tensor de entrada descompuesto a un tamaño considerablemente más pequeño de (C×1×1), la siguiente parte del módulo es aprender los pesos de escala adaptativos para estos canales. Para el módulo de excitación en el bloque de compresión y excitación, los autores optan por una estructura de cuello de botella de perceptrón multicapa (MLP) completamente conectada para mapear los pesos de escala. Este cuello de botella de MLP tiene una única capa oculta junto con la capa de entrada y salida, que tienen la misma forma. La capa oculta se utiliza como un bloque de reducción donde el espacio de entrada se reduce a un espacio más pequeño definido por el factor de reducción (que está establecido en 16 de forma predeterminada). Luego, el espacio comprimido se expande nuevamente a la dimensionalidad original como tensor de entrada. En términos más compactos, los cambios de dimensionalidad en cada capa del MLP se pueden definir mediante los siguientes tres puntos:

  1. La entrada tiene la forma (_C_×1×1). Por tanto, hay neuronas C en la capa de entrada.
  2. La capa oculta reduce esto mediante un factor de reducción r, lo que conduce a un número total de neuronas C/r.
  3. Finalmente, la salida se proyecta de regreso al mismo espacio dimensional que la entrada, regresando a las neuronas C en total.

En total, pasa el tensor (_C_×1×1) como entrada y obtiene un tensor ponderado de la misma forma–(_C_×1×1).

Los autores proporcionan resultados de experimentos sobre el rendimiento de un módulo SE en una arquitectura ResNet-50 utilizando diferentes relaciones de reducción (r), como se muestra en la siguiente tabla.

r Top-1 Error Rate Top-5 Error Rate Parameters
2 22.29 6.00 45.7M
4 22.25 6.09 35.7M
8 2.26 5.99 30.7M
16 22.28 6.03 28.1M
32 22.72 6.20 26.9M
Vanilla 23.30 6.55 25.6M

Idealmente, para mejorar la propagación de la información y la interacción entre canales (CCI), r debería establecerse en 1, convirtiéndola así en una red cuadrada completamente conectada con el mismo ancho en cada capa. Sin embargo, existe una compensación entre aumentar la complejidad y mejorar el rendimiento al disminuir r. Por lo tanto, basándose en la tabla anterior, los autores utilizan 16 como valor predeterminado para el índice de reducción. Este es un hiperparámetro con posibilidad de realizar ajustes adicionales para mejorar el rendimiento.

Módulo de escala

Después de obtener el tensor "excitado" (_C_×1×1) del módulo de excitación, primero se pasa a través de una capa de activación sigmoidea que escala los valores a un rango de 0-1. Posteriormente, la salida se aplica directamente a la entrada mediante una simple multiplicación de elementos transmitida, que escala cada canal/mapa de características en el tensor de entrada con su correspondiente peso aprendido del MLP en el módulo de Excitación.

Los autores realizaron más estudios de ablación sobre el efecto de diferentes funciones de activación no lineales que se utilizarán como operador de excitación, como se muestra en la siguiente tabla.

Activation Function Top-1 Error Rate Top-5 Error Rate
ReLU 23.47 6.98
Tanh 23.00 6.38
Sigmoid 22.28 6.03

Con base en los resultados, los autores establecen que Sigmoide es la función de activación de mejor rendimiento y, por lo tanto, la emplean como operador de excitación predeterminado en el módulo de escala.

En resumen, el bloque de excitación Squeeze (bloque SE) toma un tensor de entrada x de forma (C_×_H_×_W), lo reduce a un tensor de forma (_C_× 1×1) mediante Global Average Pooling (GAP), y posteriormente pasa este vector de longitud C a una estructura de cuello de botella de perceptrón multicapa (MLP) y genera un tensor ponderado de la misma forma (_C_ ×1×1) que luego se transmite y se multiplica por elementos con la entrada x.

Ahora la pregunta es: ¿dónde está “conectado” el módulo? en una red residual?

Diseños de integración de bloques SE explorados en el estudio de ablación.

Los autores probaron diferentes estrategias de integración para el bloque SE, como se muestra en el diagrama anterior. Estos incluyen:

  1. Estándar SE
  2. SE-PRE
  3. SE-POST
  4. SE-Identidad

El bloque SE estándar se aplica justo después de la capa convolucional final de la arquitectura, en este caso de una Red Residual, justo antes de la fusión de la conexión de omisión. La configuración SE-PRE se construyó colocando el bloque SE al inicio del bloque, antes de la primera capa convolucional, mientras que SE-POST hizo lo contrario colocándolo al final del bloque (después de la fusión de la conexión de salto). . Finalmente, el bloque SE-Identity aplicó el módulo SE en la propia rama de conexión de salto, paralelo al bloque principal, y se agrega a la salida final como un residual normal.

Los autores proporcionaron los resultados de sus extensos estudios de ablación sobre las estrategias de integración, que se muestran en las dos tablas siguientes:

Tabla 1. Efecto de diferentes estrategias de integración SE en las tasas de error de ResNet-50 en la tarea de clasificación de ImageNet
Strategy Top-1 Error Rate Top-5 Error Rate
SE 22.28 6.03
SE-PRE 22.23 6.00
SE-POST 22.78 6.35
SE-Identity 22.20 6.15
Tabla 2. Efecto de introducir el bloque SE después de la capa convolucional espacial 3x3 en un bloque Residual
Design Top-1 Error Rate Top-5 Error Rate GFLOPs Parameters
SE 22.28 6.03 3.87 28.1M
SE-3×3 22.48 6.02 3.86 25.8M

Como podemos ver en la Tabla 1, todas las configuraciones excepto SE-POST proporcionaron un rendimiento similar y consistente. Como se demuestra en la Tabla 2, los autores experimentaron además insertando el bloque SE después de la convolución espacial en el bloque residual. Dado que la convolución espacial 3 × 3 tiene menos canales, la sobrecarga de parámetros y FLOP es mucho menor. Si bien puede proporcionar un rendimiento similar en comparación con la configuración SE predeterminada, los autores no proporcionaron ninguna declaración concluyente sobre qué configuración es más favorable y mantuvieron "SE" como la configuración de integración predeterminada.

Afortunadamente, los autores responden a la pregunta de cómo integrar los bloques SE en las arquitecturas existentes.

Módulo SE-ResNet

En una red residual, el bloque Squeeze-Excitation se conecta después de la capa convolucional final, en el bloque anterior a la adición del residual en la conexión de salto. La intuición detrás de esto es mantener la rama de omisión de conexión lo más limpia posible para facilitar el aprendizaje de la identidad.

Módulo SE-Inception

Sin embargo, en una red Inception, debido a la ausencia de conexiones de salto, el bloque SE se inserta en cada bloque Inception después de la capa convolucional final.

En la siguiente figura del artículo, los autores muestran las arquitecturas ResNet-50 y ResNext-50 modificadas con un módulo SE en cada bloque.

Diseños de arquitectura basados en SE

Los autores estudiaron exhaustivamente la estrategia de integración del bloque SE en las 4 etapas diferentes en un ResNet-50. Los resultados se muestran en la siguiente tabla.

Stage Top-1 Error Rate Top-5 Error Rate GFLOPs Parameters
ResNet-50 23.30 6.55 3.86 25.6M
SE Stage 2 23.03 6.48 3.86 25.6M
SE Stage 3 23.04 6.32 3.86 25.7M
SE Stage 4 22.68 6.22 3.86 26.4M
SE All 22.28 6.03 3.87 28.1M

Código

El repositorio de código oficial asociado con el artículo se puede encontrar aquí. Sin embargo, el código está estructurado en Caffe, un marco menos popular hoy en día. Echemos un vistazo a las versiones PyTorch y TensorFlow del módulo.

PyTorch

### Import necessary packages
from torch import nn

### Squeeze and Excitation Class definition
class SE(nn.Module):
    def __init__(self, channel, reduction_ratio =16):
        super(SE, self).__init__()
        ### Global Average Pooling
        self.gap = nn.AdaptiveAvgPool2d(1)

        ### Fully Connected Multi-Layer Perceptron (FC-MLP)
        self.mlp = nn.Sequential(
            nn.Linear(channel, channel // reduction_ratio, bias=False),
            nn.ReLU(inplace=True),
            nn.Linear(channel // reduction_ratio, channel, bias=False),
            nn.Sigmoid()
        )

    def forward(self, x):
        b, c, _, _ = x.size()
        y = self.gap(x).view(b, c)
        y = self.mlp(y).view(b, c, 1, 1)
        return x * y.expand_as(x)

TensorFlow

import tensorflow as tf

__all__ = [
    'squeeze_and_excitation_block',
]

def squeeze_and_excitation_block(input_X, out_dim, reduction_ratio=16, layer_name='SE-block'):
    """Squeeze-and-Excitation (SE) Block
    SE block to perform feature recalibration - a mechanism that allows
    the network to perform feature recalibration, through which it can
    learn to use global information to selectively emphasise informative
    features and suppress less useful ones
    """

    with tf.name_scope(layer_name):

        # Squeeze: Global Information Embedding
        squeeze = tf.nn.avg_pool(input_X, ksize=[1, *input_X.shape[1:3], 1], strides=[1, 1, 1, 1], padding='VALID', name='squeeze')

        # Excitation: Adaptive Feature Recalibration
        ## Dense (Bottleneck) -> ReLU
        with tf.variable_scope(layer_name+'-variables'):
            excitation = tf.layers.dense(squeeze, units=out_dim/reduction_ratio, name='excitation-bottleneck')
        excitation = tf.nn.relu(excitation, name='excitation-bottleneck-relu')

        ## Dense -> Sigmoid
        with tf.variable_scope(layer_name+'-variables'):
            excitation = tf.layers.dense(excitation, units=out_dim, name='excitation')
        excitation = tf.nn.sigmoid(excitation, name='excitation-sigmoid')

        # Scaling
        scaler = tf.reshape(excitation, shape=[-1, 1, 1, out_dim], name='scaler')

        return input_X * scaler

MBConv en redes eficientes

Algunos de los trabajos más influyentes que incorporan el bloque Squeeze-Excitation son el de MobileNet v2 y Efficient Nets, los cuales utilizan el bloque residual invertido móvil (MBConv). Las redes eficientes también agregan un bloque de excitación y compresión.

Bloques MBConv en redes eficientes

En MBConv, el bloque Squeeze-Excitation se coloca antes de la capa convolucional final, después de la convolución espacial en el bloque. Esto lo convierte más en una parte integral que en un complemento, para el cual fue diseñado originalmente. Los autores de SE-Net realizaron estudios de ablación y también probaron este método de integración; sin embargo, optaron por la configuración predeterminada de agregar un bloque SE después de la convolución final 1×1. Las redes eficientes se consideran de última generación (SOTA) en muchas tareas, desde la clasificación de imágenes en el conjunto de datos estándar ImageNet-1k hasta la detección de objetos en el conjunto de datos MS-COCO. Este es un testimonio de la importancia de la atención del canal y la eficiencia de los bloques Squeeze Excitation.

Puntos de referencia

Los autores proporcionan amplios resultados sobre diferentes tareas como clasificación de imágenes, clasificación de escenas y detección de objetos, en conjuntos de datos estándar competitivos como ImageNet, MS-COCO y Places-365. La siguiente tabla muestra la eficiencia y las ventajas de utilizar módulos SE en las tareas mencionadas anteriormente:

Tarea de clasificación CIFAR-10

Architecture Vanilla SE-variant
ResNet-110 6.37 5.21
ResNet-164 5.46 4.39
WRN-16-8 4.27 3.88
Shake-Shake 26 2x96d + Cutout 2.56 2.12

La métrica utilizada aquí para comparar es el error de clasificación. Los autores también agregaron una forma de aumento de datos, a saber, Cutout en la red Shake-Shake, para confirmar si la mejora de rendimiento obtenida al usar el módulo SE es consistente con el uso de diferentes técnicas de mejora del rendimiento como la de aumento de datos.

Tarea de clasificación CIFAR-100

Architecture Vanilla SE-variant
ResNet-110 26.88 23.85
ResNet-164 24.33 21.31
WRN-16-8 20.43 19.14
Shake-Shake 26 2x96d + Cutout 15.85 15.41

Tarea de clasificación ImageNet-1k

Comparación del rendimiento de clasificación de ImageNet para arquitecturas profundas estándar

Comparación del rendimiento de clasificación de ImageNet para arquitecturas móviles ligeras

Dinámica de entrenamiento

Curvas de entrenamiento de diferentes redes con y sin Squeeze Excitation (SE).

Como se muestra en los gráficos anteriores, las redes equipadas con módulos de compresión y excitación muestran una curva mejorada consistente, lo que conduce a una mejor generalización y un mayor rendimiento.

Tarea de clasificación de escenas en el conjunto de datos Places-365

Architecture Top-1 Error Rate Top-5 Error Rate
Places-365-CNN 41.07 11.48
ResNet-152 41.15 11.61
SE-ResNet-152 40.37 11.01

Tarea de detección de objetos en un conjunto de datos MS-COCO utilizando un RCNN más rápido

Backbone AP@IoU=0.5 AP
ResNet-50 57.9 38.0
SE-ResNet-50 61.0 40.4
ResNet-101 60.1 39.9
SE-ResNet-101 62.7 41.9

Deficiencias

Aunque el artículo es revolucionario por derecho propio, se destacan ciertos defectos en la estructura y algunas estrategias de diseño no concluyentes.

  1. El método es bastante costoso y agrega una cantidad significativa de parámetros y FLOPS además del modelo de referencia. Aunque en el gran esquema de las cosas esta sobrecarga podría ser mínima, ha habido muchos enfoques nuevos destinados a brindar atención de canal a un costo extremadamente económico que han funcionado mejor que las SENet, por ejemplo ECANet (publicado en CVPR 2020).
  2. Aunque la atención del canal parece ser eficiente en términos de parámetros y sobrecarga de FLOP, un defecto importante es la operación de escalado en la que el vector de canal ponderado se transmite y se aplica/multiplica por elementos al tensor de entrada. Este tensor difundido intermedio tiene el mismo espacio dimensional que el de la entrada, lo que provoca un aumento considerable de la complejidad de la memoria. Esto hace que el proceso de entrenamiento sea más lento y requiera más memoria.
  3. Para reducir la complejidad computacional, existe una estructura de cuello de botella en el MLP del módulo de excitación del bloque, donde el número de canales se reduce en una relación de reducción específica. Esto provoca pérdida de información y, por tanto, no es óptimo.
  4. Dado que SENet solo gira en torno a brindar atención al canal mediante el uso de descriptores de características globales dedicados, que en este caso es Global Average Pooling (GAP), hay una pérdida de información y la atención brindada es puntual. Esto significa que todos los píxeles se asignan en el dominio espacial de un mapa de características de manera uniforme y, por lo tanto, no se discrimina entre píxeles importantes o deterministas de clase versus aquellos que forman parte del fondo o que no contienen información útil. Por lo tanto, se justifica que la importancia/necesidad de la atención espacial vaya acompañada de la atención del canal. Uno de los mejores ejemplos de lo mismo es CBAM (publicado en ECCV 2018).
  5. Existen estrategias de diseño no concluyentes con respecto a SENet. Los autores afirmaron que esto está más allá del alcance del artículo para comprender cuál sería la configuración óptima, que incluye la estrategia de integración posicional para los módulos SE y la relación de reducción que se utilizará en el MLP.

Referencias

  1. Redes de compresión y excitación, TPAMI 2018.
  2. CBAM: Módulo de Atención de Bloques Convolucionales, ECCV 2018.
  3. ECA-Net: Atención de canales eficiente para redes neuronales convolucionales profundas, CVPR 2020.
  4. Repositorio original de SENet.

Artículos relacionados: