Революционные сети компьютерного зрения, которые НЕ основаны на CNN. V2 еще больше улучшила V1 и превзошла сети SOTA по точности и скорости. Полное объяснение.

Зачем нужны трансформеры в компьютерном зрении?

Трансформеры широко используются в операциях, связанных с обработкой естественного языка (Natural Language Processing. NLP), а в последнее время также часто применяются во многих задачах компьютерного зрения, поскольку они моделируют глобальные и действующие на дальнем расстоянии связи, а также семантическую информацию изображений лучше, чем CNN, поскольку последняя является более локализованной.

Swin Transformer (V1)

В 2021 году Лю (Liu) и др. предложили Swin (Shifted WINdow — Сдвинутое окно) Transformer — трансформер общего назначения, адаптированный под задачи компьютерного зрения (общее назначение означает, что он подходит для различных задач компьютерного зрения, таких как семантическая сегментация и классификация изображений), который достиг более высоких показателей, чем популярные ViT (Vision Transformer от Google) и self-attention архитектуры на основе CNN.

Почему он лучше? Ответ, по сути, кроется в инновационной конструкции "Shifted Window", как показано на рис. 1. Это основной строительный блок Swin Transformer.

Рис. 1: Иллюстрация конструкции сдвинутого окна (из статьи Swin Transformer).
Рис. 1: Иллюстрация конструкции сдвинутого окна (из статьи Swin Transformer).

Процедура

Во-первых, для входного изображения (или карты признаков) сеть создает локальное окно. По умолчанию размер окна должен быть равен 1/4 размера изображения (как это показано красными рамками на рис. 1).

Во-вторых, в смещенном окне делаются дальнейшие разделения для создания более мелких патчей. Обычно это 4x4x3=16x3=48 патчей, 3 — количество каналов в RGB-изображении. Каждый патч рассматривается в качестве "токена" (в NLP, например, токенами в предложении "I disliked games — Мне не понравились игры" могут быть ['I', 'dis', 'liked', 'games']). Затем слой линейного эмбеддинга преобразует каждый токен в эмбеддинг-вектор, чтобы трансформер смог его понять.

Рис. 2: Два последовательных блока Swin Transformer (из статьи Swin Transformer).
Рис. 2: Два последовательных блока Swin Transformer (из статьи Swin Transformer).

В-третьих, эмбеддинги подаются в два последовательных блока Swin Transformer, как показано на рис. 2. На рисунке приведено несколько сокращенных модулей:

  • LN: нормализация слоя.

  • W-MSA: Обычное оконное множественное внутреннее внимание (multi-headed self-attention).

  • SW-MSA: множественное внутреннее внимание со сдвинутым окном.

  • MLP: многослойный перцептрон (несколько полностью связанных слоев).

Для модуля SW-MSA, который также является операцией слоя (l+1), показанного справа на рис. 1, используется другая схема разделения, как показано на рис. 3 ниже.

Рис. 3: Вторая схема функционирования Shifted Window. Области под одной буквой и раскраской (синий, зеленый и желтый) являются одинаковыми (реплики).
Рис. 3: Вторая схема функционирования Shifted Window. Области под одной буквой и раскраской (синий, зеленый и желтый) являются одинаковыми (реплики).

Две схемы разделения окон работают вместе, чтобы осуществить связи между соседними окнами, и это оказалось эффективным для различных задач.

На рис. 4 показано, как рассчитывается self-attention. По сравнению с обычным self-attention, единственным отличием является добавление матрицы смещения "B" формы (mm, mm), где m*m — количество патчей в окне.

B здесь представляет относительное положение патчей, поэтому позиционная информация по патчам также закодирована в модели.

Рис. 4: Расчет self-attention в Swin Transformer
Рис. 4: Расчет self-attention в Swin Transformer

Сравнение с Vision Transformer

На рис. 5 показан обычный строительный блок vision Transformer. Как видите, строительный блок Swin Transformer и обычного vision Transformer во многом схожи по вводу (Norm = LN). Их различия заключаются в механизмах self-attention (Swin Transformer использует Shifted Window с модифицированным self-attention) и Swin Transformer использует две конфигурации окон для входного изображения.

Рис. 5: Строительный блок для vision Transformer (трансформера зрения).
Рис. 5: Строительный блок для vision Transformer (трансформера зрения).

Кроме того, стандартные архитектуры трансформеров ищут взаимосвязи между токеном (патчем изображения) и ВСЕМИ другими токенами (патчами изображения) во всем изображении, что приводит к чрезвычайно дорогостоящим вычислениям, особенно для больших картинок.

Однако Swin Transformer использует конструкцию Shifted Window, которая ищет связи только между токенами в оконной области, используя две разные конфигурации окон для установления соединений между окнами и сдвигая окна, чтобы инкапсулировать все изображение. Таким образом, эффективность вычислений значительно повышается.

Swin Transformer (V2)

Прежде чем подробно рассказать о Swin Transformer V2, следует разобраться в недостатках Swin Transformer V1.

Рис. 6: Сравнение между Swin Transformer V1 и V2.
Рис. 6: Сравнение между Swin Transformer V1 и V2.

Нестабильное обучение

Это в значительной степени вызвано тем, что сетевых активаций на более поздних уровнях модели значительно больше, чем в ранних, из-за того, что выходные данные остатка снова напрямую добавляются в основную ветвь, что приводит к нестабильному обучению.

Для решения первой проблемы слой нормализации (Layer Normalization, LN) перемещается с начала в конец блока остатка, как показано на рис. 6. Более того, масштабированное косинусное внимание (scaled cosine attention) заменяет версию self-attention в V1 с матричным умножением, чтобы сделать модель абсолютно нечувствительной к величине (большому количеству) активаций.

Рис. 7: Модуль self-attention на основе косинуса.
Рис. 7: Модуль self-attention на основе косинуса.

Два решения первой проблемы успешно улучшили стабильность обучения и точность модели для больших размеров.

Несоответствие размеров изображений при предварительном и последующем обучении

Размеры изображений для предварительного обучения и точной настройки (последующего обучения) сильно отличаются. В настоящее время широко практикуется наивное изменение размеров с помощью бикубической интерполяции. Однако этого недостаточно.

Для решения этой проблемы авторы использовали новую систему координат — логарифмически разнесенные координаты (log-spaced coordinates), заменив ими прежние линейные. Поэтому перед подачей в сеть изображения сначала преобразуются в эту новую систему координат. Новая система координат значительно сократила разрыв между предварительным обучением и точной настройкой расхождения в размерах изображений, что объясняется самой природой логарифмической функции.

Кроме того, для решения проблемы высокого потребления памяти GPU в результате увеличения масштаба сети, был реализован ряд методов, включая нулевой оптимизатор, чекпойнт активации и последовательное вычисление self-attention (это не будет описано в данной статье).

Статистика моделей

Таблица 1: Статистика моделей для Swin Transformer V1 и V2 и некоторых популярных трансформеров компьютерного зрения.
Таблица 1: Статистика моделей для Swin Transformer V1 и V2 и некоторых популярных трансформеров компьютерного зрения.

Как видно из таблицы, предложены два варианта V1 и три варианта V2 различных размеров. V2 успешно улучшил производительность V1 и достиг результатов, близких к SOTA, обеспечив более эффективные вычисления на ImageNet.


Хотите стать специалистом по компьютерному зрению и глубокому обучению? Сделайте свои первые шаги, а если вы уже опытный специалист, то узнайте, как перейти с PyTorch 1.x на 2.0. Приглашаем всех желающих на открытое занятие, на котором мы обсудим, что нового принес фреймворк PyTorch 2.0 в сферу компьютерного зрения и глубокого обучения. Вы узнаете:

  • Как начать использовать PyTorch для обучения своих нейронных сетей

  • Что нового в PyTorch 2.0 и чем он отличается от 1.x

  • Как ускорить и оптимизировать свою нейросеть при помощи одной строчки кода

  • Как перейти с PyTorch 1.x на 2.0

  • Как ускорить трансформеры HuggingFace при помощи PyTorch Transformer API

Записаться на занятие можно на странице курса «Компьютерное зрение».

Комментарии (0)