Vision Transformer (ViT) завоевал огромное внимание и успех с момента своего рождения в 2020 году. Одним из важных вариантов ViT является Swin Transformer, в котором используются иерархические размеры патчей и локальное само-внимание для решения многомасштабных и проблема вычислительной сложности на изображениях с высоким разрешением.

Сегодня я анализирую документ ICCV 2021 года, используя Swin Transformer для целей шумоподавления изображения: SwinIR: Восстановление изображения с помощью Swin Transformer.

Во-первых, давайте освежим нашу память о ViT.

Бумага Vision Transformer была впервые выпущена в 2020 году и с тех пор завоевала большую репутацию. Он решает проблему преобразования задачи компьютерного зрения в задачу, решаемую преобразователем (раньше это было только НЛП).

ViT берет изображение и делит его на 16*16 фрагментов. Каждый патч, после выравнивания и линейной проекции, служит встраиванием токена с предшествующим вложением токена класса и далее вводится в кодировщик Transformer.

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

Чем отличается Swin Transformer?

Вместо использования размера патча 16 * 16 Swin Transformer использует иерархический размер патча, сначала начиная с 4 * 4 (с 3 каналами RGB размер элемента составляет 4 * 4 * 3 = 48), затем постепенно объединяя соседние патчи. для встраивания контекстной информации.

Однако, поскольку трансформер использует самообслуживание, которое вычисляет связь между каждым токеном (или, в контексте ViT, патчем) и всеми остальными токенами, иерархическая схема разделения патчей значительно увеличила бы вычислительную сложность. Вот почему введено смещенное разбиение окна — как показано на правом рисунке ниже, вместо того, чтобы подсчитывать внимание для всего изображения, Swin Transformer вместо этого подсчитывает собственное внимание только для одного и того же окна и сдвигает разбиение окна на последовательные блоки Swin Transformer.

Как использовать Swin Transformer для шумоподавления изображений?

В документе SwinIR предложена трехэтапная архитектура:

  1. использовать сверточные слои для извлечения признаков низкого уровня
  2. используйте блоки Residual Swin Transformer + сверточные слои для извлечения высокоуровневых функций
  3. агрегировать признаки низкого и высокого уровня (чтобы переобучить и сбалансировать информацию как с низких, так и с высоких частот) и передать в сверточный уровень для целей реконструкции. В примере задачи сверхвысокого разрешения слои реконструкции представляют собой субпиксельные сверточные слои.

Как насчет результатов?

Вот несколько качественных сравнений из статьи, демонстрирующих очень многообещающие результаты в задачах сверхвысокого разрешения и шумоподавления, превосходящие современные методы, такие как ESRGA, BM3D и DnCNN.

Чтобы проверить исходный код, см. официальный репозиторий авторов на Github.