Sobes.tech
Junior — Senior
22

Как работают Squeeze-and-Excitation блоки?

Companies where asked
ВТБВТБ
GenStack
АТОМ

Answer from AI

sobes.tech AI

Squeeze-and-Excitation (SE) блоки — это архитектурный элемент нейронных сетей, который улучшает представление признаков, адаптивно перенастраивая важность каналов в сверточных слоях.

Принцип работы:

  1. Squeeze (сжатие) — глобальное усреднение по пространственным измерениям (ширина и высота), чтобы получить вектор, отражающий глобальную информацию каждого канала.

  2. Excitation (возбуждение) — этот вектор пропускается через небольшой многослойный перцептрон (обычно два слоя с активацией ReLU и сигмоидой), который вычисляет коэффициенты важности для каждого канала.

  3. Масштабирование — исходные каналы умножаются на соответствующие коэффициенты, усиливая или ослабляя их вклад.

Это позволяет сети фокусироваться на наиболее информативных признаках и улучшает качество обучения и обобщения.

Пример на PyTorch:

import torch
import torch.nn as nn

class SEBlock(nn.Module):
    def __init__(self, channels, reduction=16):
        super(SEBlock, self).__init__()
        self.squeeze = nn.AdaptiveAvgPool2d(1)
        self.excitation = nn.Sequential(
            nn.Linear(channels, channels // reduction),
            nn.ReLU(inplace=True),
            nn.Linear(channels // reduction, channels),
            nn.Sigmoid()
        )

    def forward(self, x):
        b, c, _, _ = x.size()
        y = self.squeeze(x).view(b, c)
        y = self.excitation(y).view(b, c, 1, 1)
        return x * y

SE блоки широко применяются в современных архитектурах для повышения эффективности и точности моделей компьютерного зрения.