Mécanisme d'attention du canal d'attention Réseaux de compression et d'excitation

Réseaux de compression et d'excitation

Heure de sortie: 2017

Idée basique

Améliorez la capacité expressive du modèle de réseau en modélisant avec précision la relation entre les différents canaux de la fonction de convolution.
L'auteur propose un mécanisme qui permet au modèle de réseau de calibrer les fonctionnalités, de sorte que le réseau puisse amplifier de manière sélective des canaux de caractéristiques précieux à partir d'informations globales et supprimer les canaux de caractéristiques inutiles .
Insérez la description de l'image ici

étape

Insérez la description de l'image ici

  1. La première est l'opération Squeeze. Nous effectuons une compression d'entités le long de la dimension spatiale et transformons chaque canal d'entités bidimensionnel en un nombre réel. Ce nombre réel a un champ réceptif global dans une certaine mesure, ainsi que la dimension en sortie et le canal d'entités en entrée Match de nombre. Il caractérise la distribution globale de la réponse sur le canal caractéristique, et permet à la couche proche de l'entrée d'obtenir le champ récepteur global, ce qui est très utile dans de nombreuses tâches.
    Autrement dit, utilisez le regroupement moyen global pour la taille du lot ∗ C ∗ H ∗ W taille du lot * C * H * Wb a t c h s i z eCHW est compressé entaille de lot ∗ C ∗ 1 ∗ 1 taille de lot * C * 1 * 1b a t c h s i z eC11

  2. La seconde est l'opération d'excitation, qui est un mécanisme similaire à la porte dans le réseau neuronal récurrent. Un poids est généré pour chaque canal de caractéristiques via le paramètre w, où le paramètre w est appris pour modéliser explicitement la corrélation entre les canaux de caractéristiques.
    À propos de la taille du lot ∗ C ∗ 1 ∗ 1 taille du lot * C * 1 * 1b a t c h s i z eC11 Le vecteur est entré dans la structure Bottleneck composée de deux couches entièrement connectées pour modéliser la corrélation entre les canaux et produire le même nombre de poids que les entités en entrée. Nous réduisons d'abord la dimension de l'entité à 1/16 de l'entrée, puis après l'activation de ReLu, elle est remise à niveau à la dimension d'origine via une couche entièrement connectée. Les avantages de le faire par rapport à l'utilisation directe d'une couche entièrement connectée sont les suivants:
    1) il a plus de non-linéarité et peut mieux s'adapter à la corrélation complexe entre les canaux;
    2) la quantité de paramètres et de calculs est considérablement réduite
    Passer ensuite une porte sigmoïde pour obtenir un poids normalisé entre 0 et 1

  3. Enfin, il y a une opération de repondération. Nous considérons le poids de la sortie de l'Excitation comme l'importance de chaque canal de fonction après la sélection de fonction, puis pondérons le canal de fonction précédent par canal par multiplication pour terminer l'appariement dans la dimension du canal. Réétalonnage des caractéristiques originales.
    Autrement dit, la carte des caractéristiques d'origine est pondérée par canal

from torch import nn


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)

Article de référence

Je suppose que tu aimes

Origine blog.csdn.net/weixin_42764932/article/details/112227689
conseillé
Classement