Attention par canal et réseaux de compression et d'excitation (SENet)
Pendant les premiers jours des mécanismes d'attention en vision par ordinateur, un article publié à CVPR 2018 (et TPAMI), Squeeze and Excitation Networks, a introduit un nouveau mécanisme d'attention des canaux. Ce module complémentaire simple mais efficace peut être ajouté à n'importe quelle architecture de base pour obtenir une amélioration des performances, avec un surcoût computationnel négligeable.
Dans cet article, nous couvrirons les réseaux Squeeze-and-Excitation en quatre parties. Tout d'abord, nous comprendrons l'intuition derrière l'importance de l'attention sur les canaux en explorant certains aspects des techniques modernes de photographie. Ensuite, nous passerons à la méthodologie impliquée dans le calcul de l'attention sur les canaux dans les blocs Squeeze-and-Excitation (SE). Par la suite, nous analyserons l'impact des blocs Squeeze-and-Excitation (SE) dans les architectures standards, tout en les évaluant sur différentes tâches de vision par ordinateur. Nous terminerons par une critique de l'article concernant certaines lacunes dans la méthode proposée.
Table des matières
- Sélection du cadrage en photographie moderne
- Attention par canal dans les réseaux de neurones convolutifs
- Réseaux Squeeze-and-Excitation
- Code
- MBConv dans Efficient Nets
- Repères
- Défauts
- Références
Prérequis
- Python : pour exécuter le code ici, votre machine devra avoir Python installé. Les lecteurs devraient avoir une expérience de codage Python de base avant de continuer
- Principes de l'apprentissage profond : Cet article couvre des concepts essentiels à l'application de la théorie de l'apprentissage profond, et les lecteurs sont supposés avoir une certaine expérience des termes pertinents et de la théorie de base.
Sélection du cadrage en photographie moderne
Plans de cadre dans Pixel 2
Alors que la photographie moderne a progressé au fil des générations grâce aux améliorations des mécanismes intelligents pour capturer le meilleur cliché, l'une des techniques les plus subtiles qui est passée inaperçue est la sélection des meilleures prises de cadre pour une photo fixe. C'est une fonction courante dans certains téléphones intelligents.
Il y a de nombreuses variables dans une photographie fixe. Deux photographies d’un sujet prises à une seconde d'intervalle, dans les mêmes conditions et dans le même environnement, peuvent encore différer considérablement. Par exemple, leurs yeux peuvent être fermés sur l’une des deux photographies. Pour obtenir la meilleure image, il est beaucoup plus efficace de capturer plusieurs images au moment où la photographie est prise, afin que le photographe puisse choisir la meilleure image parmi toutes celles capturées. De nos jours, cela se fait de manière automatisée et intelligente. Les smartphones comme le Google Pixel ont la capacité de choisir la meilleure image parmi toutes les images disponibles prises lors de la capture d’une seule photographie. Ce mécanisme intelligent est conditionné par différents facteurs tels que l’éclairage, le contraste, le flou, la distorsion de l’arrière-plan, etc. D’une manière abstraite, le mécanisme intelligent sélectionne l’image qui contient la meilleure information représentative de la photographie.
En termes d'architectures modernes de réseaux de neurones convolutionnels, vous pouvez considérer les images comme les canaux d'un tenseur calculé par une couche convolutionnelle. Ce tenseur est généralement noté par une dimension (B, C, H, W), où B fait référence à la taille du lot, C fait référence aux canaux, et H, W fait référence aux dimensions spatiales des cartes de caractéristiques (H représente la hauteur et W représente la largeur). Les canaux sont le résultat des filtres convolutionnels extrayant différentes caractéristiques de l'entrée. Cependant, les canaux peuvent ne pas avoir la même importance représentative. Comme certains canaux peuvent être plus importants que d'autres, il est logique d'appliquer un poids aux canaux en fonction de leur importance avant de les propager à la couche suivante.
Nous utiliserons cela comme une compréhension fondamentale de l'importance de l'attention des canaux, que nous aborderons dans les sections suivantes.
Attention de canal
Sur la base de l'intuition décrite dans la section précédente, entrons en détail sur pourquoi l'attention sur les canaux est un composant crucial pour améliorer les capacités de généralisation d'une architecture de réseau neuronal convolutionnel profond.
Pour récapituler, dans un réseau de neurones convolutionnel, il y a deux composants principaux :
- Le tenseur d'entrée (généralement un tenseur à quatre dimensions) représenté par les dimensions (B, C, H, W).
- Les filtres convolutifs entraînables qui contiennent les poids pour cette couche.
Les filtres convolutifs sont responsables de la construction des cartes de caractéristiques basées sur les poids appris à l'intérieur de ces filtres. Alors que certains filtres apprennent les contours, d'autres apprennent les textures, et collectivement ils apprennent différentes représentations de caractéristiques de l'information de la classe cible contenue dans l'image encodée par le tenseur d'entrée. Ainsi, le nombre de canaux représente le nombre de filtres convolutifs qui apprennent les différentes cartes de caractéristiques de l'entrée. D'après notre compréhension précédente de la sélection de cadres en photographie, ces cartes de caractéristiques ont également une importance de magnitudes différentes. Cela signifie que certaines cartes de caractéristiques sont plus importantes que d'autres. Par exemple, une carte de caractéristiques contenant des informations sur les bords pourrait être plus importante et cruciale pour l'apprentissage, comparée à une autre carte de caractéristiques apprenant les transitions de textures d'arrière-plan. Ainsi, à un niveau fondamental, on voudrait fournir aux cartes de caractéristiques "plus importantes" un degré d'importance plus élevé par rapport aux cartes de caractéristiques correspondantes.
Exemples de cartes de caractéristiques
Ceci est la base pour l'attention sur les canaux. Nous voulons concentrer cette « attention » sur les canaux les plus importants, ce qui consiste essentiellement à donner plus d'importance à certains canaux par rapport à d'autres. La manière la plus simple de le faire est de mettre à l'échelle les canaux les plus importants avec une valeur plus élevée. C'est exactement ce que proposent les réseaux Squeeze-Excitation.
Réseaux de Compression et d'Exitation
En 2018, Hu et al. ont publié leur article intitulé Squeeze-and-Excitation Networks à CVPR 2018 avec une version dans le journal TPAMI. Acclamé comme l'un des travaux les plus influents dans le domaine des mécanismes d'attention, l'article a été cité plus de 1000 fois. Voyons ce que propose l'article.
Module de Compression-Excitation
L'article propose un module innovant, facile à brancher, appelé bloc Squeeze-and-Excite (abrégé en bloc SE) qui se compose de trois composants (montrés dans la figure ci-dessus) :
- Module de compression
- Module d'excitation
- Module d'échelle
Passons en revue chacun de ces modules plus en détail et comprenons pourquoi ils sont importants dans le contexte de l'attention aux canaux.
Module de compression
Pour obtenir une attention optimale sur les canaux, on souhaiterait que la mise à l'échelle des cartes de caractéristiques soit adaptative aux cartes de caractéristiques elles-mêmes. Pour récapituler, l'ensemble des cartes de caractéristiques est essentiellement le tenseur de sortie d'une couche convolutionnelle (généralement un tenseur 4D de dimension (B,C,H,W), où les initiales représentent la taille du lot, les canaux, la hauteur et la largeur des cartes de caractéristiques). Pour simplifier, nous allons seulement le considérer comme un tenseur 3D de forme (C, H, W)-essentiellement, nous nous intéressons à la profondeur (nombre de canaux/cartes de caractéristiques dans le tenseur) et aux dimensions spatiales de chaque carte de caractéristiques dans ce tenseur. Ainsi, pour rendre l'attention sur les canaux adaptative à chaque canal lui-même, nous avons H_×_W pixels (ou valeurs) au total à prendre en compte. Cela signifierait essentiellement que pour rendre l'attention vraiment adaptative, vous fonctionneriez avec un total de C_×_H_×_W valeurs au total. Cette valeur deviendra très grande car dans les réseaux neuronaux modernes, le nombre de canaux augmente avec la profondeur croissante du réseau. Ainsi, la nécessité d'utiliser un descripteur de caractéristiques capable de décomposer l'information de chaque carte de caractéristiques en une seule valeur sera utile pour réduire la complexité computationnelle de l'ensemble de l'opération.
Ceci constitue la motivation pour le module Squeeze. Il existe de nombreux descripteurs de caractéristiques qui peuvent être utilisés pour réduire les dimensions spatiales des cartes de caractéristiques à une valeur unique, mais une méthode générale utilisée pour la réduction de la taille spatiale dans les réseaux de neurones convolutionnels est le pooling. Il existe deux méthodes de pooling très populaires : le pooling moyen et le pooling maximal. La première calcule la valeur moyenne des pixels dans une fenêtre définie, tandis que la seconde prend la valeur maximale des pixels dans la même fenêtre définie. Les deux ont leur lot d'avantages et d'inconvénients. Alors que le max pooling préserve les pixels les plus activants, il peut aussi être extrêmement bruyant et ne tiendra pas compte des pixels voisins. Le pooling moyen, en revanche, ne préserve pas l'information ; cependant, il construit une moyenne plus lisse de tous les pixels dans cette fenêtre.
Les auteurs ont réalisé une étude d'ablation pour examiner la performance de chaque descripteur, à savoir, le Global Average Pool (GAP) et le Global Max Pool (GMP), comme indiqué dans le tableau suivant.
| Descripteur | Taux d'erreur Top-1 | Taux d'erreur Top-5 |
|---|---|---|
| BPF | 22.57 | 6.09 |
| ÉCART | 22.28 | 6.03 |
Le module Squeeze opte ainsi pour l'option la plus douce des deux, et utilise l'opération Global Average Pool (GAP) qui réduit essentiellement toute la carte de caractéristiques à une valeur unique en prenant la moyenne de tous les pixels de cette carte de caractéristiques. Ainsi, en termes de dimensionnalité, si le tenseur d'entrée est (C_×_H_×_W), alors après l'avoir passé à travers l'opérateur GAP, le tenseur de sortie obtenu aura la forme (_C_×1×1), essentiellement un vecteur de longueur C où chaque carte de caractéristiques est maintenant réduite à une valeur unique.
Pour vérifier l'importance de l'opérateur Squeeze, les auteurs ont en outre comparé une variante Squeeze et une variante Sans-Squeeze, comme indiqué dans le tableau suivant. Remarque : une variante Sans-Squeeze signifie essentiellement que le tenseur contenant les cartes de caractéristiques n'a pas été réduit à un seul pixel, et que le module d'Excitation a fonctionné sur l'ensemble du tenseur.
| Variante | Taux d'erreur Top-1 | Taux d'erreur Top-5 | GFLOPs | Paramètres |
|---|---|---|---|---|
| ResNet-50 Vanille | 23.30 | 6.55 | 3.86 | 25,6M |
| NoSqueeze | 22.93 | 6.39 | 4.27 | 28,1 M |
| SE | 22.28 | 6.03 | 3.87 | 28,1 M |
Module d'excitation
Exemple d'une structure de perceptron multicouche (MLP).
Maintenant, avec le tenseur d'entrée décomposé en une taille considérablement plus petite de (C×1×1), la partie suivante du module consiste à apprendre les poids de mise à l'échelle adaptatifs pour ces canaux. Pour le Module d'Excitation dans le Bloc Squeeze-and-Excitation, les auteurs choisissent une structure de goulot d'étranglement du Perceptron Multicouche (MLP) entièrement connecté pour mapper les poids de mise à l'échelle. Ce goulot d'étranglement MLP possède une seule couche cachée ainsi que la couche d'entrée et de sortie, qui ont la même forme. La couche cachée est utilisée comme un bloc de réduction où l'espace d'entrée est réduit à un espace plus petit défini par le facteur de réduction (qui est fixé à 16 par défaut). L'espace compressé est ensuite réexpansé à la dimensionalité originale du tenseur d'entrée. En termes plus compacts, les changements de dimensionalité à chaque couche du MLP peuvent être définis par les trois points suivants :
- L'entrée a une forme (_C_×1×1). Ainsi, il y a C neurones dans la couche d'entrée.
- La couche cachée réduit ceci par un facteur de réduction r, conduisant ainsi à un nombre total de C/r neurones.
- Enfin, la sortie est projetée de nouveau dans le même espace dimensionnel que l'entrée, revenant à un total de C neurones.
Au total, vous passez le tenseur (_C_×1×1) en entrée et obtenez un tenseur pondéré de la même forme-(_C_×1×1).
Les auteurs présentent des résultats pour des expériences sur les performances d'un module SE dans une architecture ResNet-50 en utilisant différents ratios de réduction (r), comme indiqué dans le tableau ci-dessous.
| r | Taux d'erreur Top-1 | Taux d'erreur Top-5 | Paramètres |
|---|---|---|---|
| 2 | 22.29 | 6.00 | 45,7 M |
| 4 | 22.25 | 6.09 | 35,7 M |
| 8 | 2.26 | 5.99 | 30,7 M |
| 16 | 22.28 | 6.03 | 28,1 M |
| 32 | 22.72 | 6.20 | 26,9 M |
| Vanille | 23.30 | 6.55 | 25,6M |
Idéalement, pour améliorer la propagation de l'information et une meilleure interaction inter-canaux (CCI), r devrait être fixé à 1, ce qui en ferait un réseau carré entièrement connecté avec la même largeur à chaque couche. Cependant, il existe un compromis entre l'augmentation de la complexité et l'amélioration des performances avec la diminution de r. Ainsi, d'après le tableau ci-dessus, les auteurs utilisent 16 comme valeur par défaut pour le ratio de réduction. Il s'agit d'un hyperparamètre pouvant être ajusté davantage pour améliorer les performances.
Module d'échelle
Après avoir obtenu le tenseur (_C_×1×1) « excité » du module d'excitation, il est d'abord passé à travers une couche d'activation sigmoïde qui met à l'échelle les valeurs dans une plage de 0 à 1. Ensuite, la sortie est appliquée directement à l'entrée par une simple multiplication élément par élément diffusée, ce qui met à l'échelle chaque canal/carte de caractéristiques dans le tenseur d'entrée avec son poids appris correspondant provenant du MLP dans le module d'excitation.
Les auteurs ont effectué des études d'ablation supplémentaires sur l'effet de différentes fonctions d'activation non linéaires à utiliser comme opérateur d'excitation, comme le montre le tableau suivant.
| Fonction d'activation | Taux d'erreur Top-1 | Taux d'erreur Top-5 |
|---|---|---|
| ReLU | 23.47 | 6.98 |
| Tanh | 23.00 | 6.38 |
| Sigmoïde | 22.28 | 6.03 |
D'après les résultats, les auteurs établissent que la fonction d'activation Sigmoid est la plus performante, et l'utilisent donc comme opérateur d'excitation par défaut dans le module d'échelle.
En résumé, le bloc Squeeze Excitation (bloc SE) prend un tenseur d'entrée x de forme (C_×_H_×_W), le réduit à un tenseur de forme (_C_×1×1) par un Global Average Pooling (GAP), et passe ensuite ce vecteur de longueur C dans une structure en goulot d'étranglement d'un Perceptron Multi-Couches (MLP), et produit un tenseur pondéré de la même forme (_C_×1×1) qui est ensuite diffusé et multiplié élément par élément avec l'entrée x.
Alors, la question est : où le module est-il « branché », par exemple dans un réseau résiduel ?
Conceptions d'intégration de bloc SE explorées dans l'étude d'ablation.
Les auteurs ont testé différentes stratégies d'intégration pour le bloc SE, comme montré dans le diagramme ci-dessus. Celles-ci incluent :
- SE standard
- SE-PRE
- SE-POST
- Identité SE
Le bloc SE standard est appliqué juste après la dernière couche convolutionnelle de l'architecture, dans ce cas d'un réseau résiduel, juste avant la fusion de la connexion de dérivation. La configuration SE-PRE a été construite en plaçant le bloc SE au début du bloc, avant la première couche convolutionnelle, tandis que SE-POST a fait le contraire en le plaçant à la fin du bloc (après la fusion de la connexion de dérivation). Enfin, le bloc SE-Identity a appliqué le module SE dans la branche de la connexion de dérivation elle-même, parallèlement au bloc principal, et est ajouté à la sortie finale comme un résidu normal.
Les auteurs ont fourni les résultats de leurs études d'ablation approfondies sur les stratégies d'intégration, présentés dans les deux tableaux suivants :
Tableau 1. Effet de différentes stratégies d'intégration SE sur les taux d'erreur du ResNet-50 dans la tâche de classification ImageNet
| Stratégie | Taux d'erreur Top-1 | Taux d'erreur Top-5 |
|---|---|---|
| SE | 22.28 | 6.03 |
| SE-PRE | 22.23 | 6.00 |
| SE-POST | 22.78 | 6.35 |
| Identité SE | 22.20 | 6.15 |
Tableau 2. Effet de l'introduction du bloc SE après la couche de convolution spatiale 3x3 dans un bloc résiduel
| Conception | Taux d'erreur Top-1 | Taux d'erreur Top-5 | GFLOPs | Paramètres |
|---|---|---|---|---|
| SE | 22.28 | 6.03 | 3.87 | 28,1 M |
| SE-3×3 | 22.48 | 6.02 | 3.86 | 25,8M |
Comme nous pouvons le voir dans le Tableau 1, chaque configuration sauf SE-POST a fourni une performance similaire et cohérente. Comme le montre le Tableau 2, les auteurs ont en outre expérimenté l'insertion du bloc SE après la convolution spatiale dans le bloc résiduel. Puisque la convolution spatiale 3×3 a un nombre de canaux plus réduit, le surcoût en paramètres et en FLOPs est beaucoup moindre. Bien qu'elle soit capable de fournir des performances similaires par rapport à la configuration SE par défaut, les auteurs n'ont fourni aucune déclaration concluante sur la configuration la plus favorable et ont conservé « SE » comme configuration d'intégration par défaut.
Par chance, les auteurs répondent à la question de savoir comment intégrer des blocs SE dans des architectures existantes.
Module SE-ResNet
Dans un réseau résiduel, le bloc Squeeze-Excitation est inséré après la dernière couche convolutionnelle, dans le bloc précédant l'addition du résidu dans la connexion de saut. L'intuition derrière cela est de garder la branche de la connexion de saut aussi propre que possible pour faciliter l'apprentissage de l'identité.
Module SE-Inception
Cependant, dans un réseau Inception, en raison de l'absence de connexions de saut, le bloc SE est inséré dans chaque bloc Inception après la dernière couche convolutionnelle.
Dans la figure suivante du papier, les auteurs montrent les architectures ResNet-50 et ResNext-50 modifiées avec un module SE dans chaque bloc.
Conceptions Architecturales Basées sur SE
Les auteurs ont étudié en profondeur la stratégie d'intégration du bloc SE dans les 4 différentes étapes d'un ResNet-50. Les résultats sont présentés dans le tableau suivant.
| Stage | Taux d'erreur Top-1 | Taux d'erreur Top-5 | GFLOPs | Paramètres |
|---|---|---|---|---|
| ResNet-50 | 23.30 | 6.55 | 3.86 | 25,6M |
| SE Étape 2 | 23.03 | 6.48 | 3.86 | 25,6 M |
| SE Étape 3 | 23.04 | 6.32 | 3.86 | 25,7 M |
| SE Stade 4 | 22.68 | 6.22 | 3.86 | 26,4 M |
| SE Tout | 22.28 | 6.03 | 3.87 | 28,1 M |
Code
Le dépôt de code officiel associé à l'article peut être trouvé ici. Cependant, le code est structuré en Caffe—un framework moins populaire de nos jours. Jetons un œil aux versions PyTorch et TensorFlow du module.
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 * scalerMBConv dans Efficient Nets
Certaines des œuvres les plus influentes qui incorporent le bloc Squeeze-Excitation sont celles de MobileNet v2 et Efficient Nets, qui utilisent toutes deux le bloc résiduel inversé mobile (MBConv). Efficient Nets ajoutent également un bloc Squeeze-Excitation.
Blocs MBConv dans les Efficient Nets
Dans le MBConv, le bloc Squeeze-Excitation est placé avant la dernière couche convolutionnelle, après la convolution spatiale dans le bloc. Cela en fait plus une partie intégrante qu'un ajout, pour lequel il était initialement prévu. Les auteurs de SE-Net avaient mené des études d'ablation et avaient également testé cette méthode d'intégration, mais ils ont opté pour la configuration par défaut consistant à ajouter un bloc SE après la dernière convolution 1×1. Les Efficient Nets sont considérés comme à la pointe de la technologie (SOTA) dans de nombreuses tâches, allant de la classification d'images sur le jeu de données standard ImageNet-1k à la détection d'objets sur le jeu de données MS-COCO. Cela témoigne de l'importance de l'attention des canaux et de l'efficacité des blocs Squeeze Excitation.
Repères
Les auteurs fournissent des résultats approfondis sur différentes tâches telles que la classification d'images, la classification de scènes et la détection d'objets, sur des ensembles de données standard compétitifs comme ImageNet, MS-COCO et Places-365. Le tableau suivant présente l'efficacité et les avantages de l'utilisation des modules SE dans les tâches mentionnées ci-dessus :
Tâche de classification CIFAR-10
| Architecture | Vanille | variante SE |
|---|---|---|
| ResNet-110 | 6.37 | 5.21 |
| ResNet-164 | 5.46 | 4.39 |
| WRN-16-8 | 4.27 | 3.88 |
| Shake-Shake 26 2x96d + Découpe | 2.56 | 2.12 |
La métrique utilisée pour la comparaison ici est l'erreur de classification. Les auteurs ont également ajouté une forme d'augmentation de données, à savoir Cutout dans le réseau Shake-Shake, pour confirmer si l'amélioration des performances obtenue en utilisant le module SE est cohérente avec l'utilisation de différentes techniques d'amélioration des performances telles que celle de l'augmentation de données.
Tâche de classification CIFAR-100
| Architecture | Vanille | variante SE |
|---|---|---|
| ResNet-110 | 26.88 | 23.85 |
| ResNet-164 | 24.33 | 21.31 |
| WRN-16-8 | 20.43 | 19.14 |
| Shake-Shake 26 2x96d + Découpe | 15.85 | 15.41 |
Tâche de classification ImageNet-1k
Comparaison des performances de classification ImageNet pour les architectures profondes standard
Comparaison des performances de classification ImageNet pour les architectures mobiles légères
Dynamiques de formation
Courbes d'entraînement de différents réseaux avec et sans Squeeze Excitation (SE).
Comme montré dans les graphiques ci-dessus, les réseaux équipés de modules Squeeze-and-Excitation montrent une courbe améliorée constante, ce qui conduit ainsi à une meilleure généralisation et à des performances plus élevées.
Tâche de classification de scènes sur le jeu de données Places-365
| Architecture | Taux d'erreur Top-1 | Taux d'erreur Top-5 |
|---|---|---|
| Places-365-CNN | 41.07 | 11.48 |
| ResNet-152 | 41.15 | 11.61 |
| SE-ResNet-152 | 40.37 | 11.01 |
Tâche de détection d'objets sur le jeu de données MS-COCO utilisant un Faster RCNN
| Épine dorsale | 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 |
Défauts
Bien que l'article soit révolutionnaire en soi, il existe certains défauts énumérés dans la structure et certaines stratégies de conception non concluantes.
- La méthode est assez coûteuse et ajoute un nombre significatif de paramètres et de FLOPS par rapport au modèle de base. Bien que dans l'ensemble, cette surcharge puisse être très minimale, il existe de nombreuses nouvelles approches visant à fournir une attention par canal à un coût extrêmement faible qui ont mieux performé que les SENets, par exemple ECANet (publié à CVPR 2020).
- Bien que l'attention par canal semble être efficace en termes de paramètres et de surcharge en FLOPs, un défaut majeur est l'opération de mise à l'échelle où le vecteur de canal pondéré est diffusé et appliqué/multiplié élément par élément au tenseur d'entrée. Ce tenseur intermédiaire diffusé a le même espace dimensionnel que celui de l'entrée, ce qui entraîne une augmentation importante de la complexité mémoire. Cela rend le processus d'entraînement plus lent et plus gourmand en mémoire.
- Pour réduire la complexité computationnelle, il existe une structure en goulot d'étranglement dans le MLP du module d'excitation du bloc, où le nombre de canaux est réduit selon un ratio de réduction spécifié. Cela entraîne une perte d'information et est donc sous-optimal.
- Puisque SENet se concentre uniquement sur la fourniture d'une attention par canal en utilisant des descripteurs de caractéristiques globaux dédiés, qui dans ce cas sont le Global Average Pooling (GAP), il y a une perte d'information et l'attention fournie est ponctuelle. Cela signifie que tous les pixels sont mappés de manière uniforme dans le domaine spatial d'une carte de caractéristiques, et donc ne font pas de distinction entre les pixels importants ou déterminants pour la classe et ceux qui font partie de l'arrière-plan ou ne contiennent pas d'informations utiles. Ainsi, l'importance/nécessité de l'attention spatiale est justifiée pour être couplée avec l'attention par canal. L'un des exemples principaux de cela est CBAM (publié à l'ECCV 2018).
- Il existe des stratégies de conception non concluantes concernant SENet. Les auteurs ont déclaré que cela dépasse le cadre de l'article de comprendre quel serait le réglage optimal, ce qui inclut la stratégie d'intégration positionnelle pour les modules SE et le rapport de réduction à utiliser dans le MLP.
Références
- Réseaux Squeeze-and-Excitation, TPAMI 2018.
- CBAM : Module d'Attention par Bloc Convolutif, ECCV 2018.
- ECA-Net : Attention Efficace sur les Canaux pour les Réseaux de Neurones Convolutionnels Profonds, CVPR 2020.
- Dépôt original de SENet.












