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 предложена трехэтапная архитектура:
- использовать сверточные слои для извлечения признаков низкого уровня
- используйте блоки Residual Swin Transformer + сверточные слои для извлечения высокоуровневых функций
- агрегировать признаки низкого и высокого уровня (чтобы переобучить и сбалансировать информацию как с низких, так и с высоких частот) и передать в сверточный уровень для целей реконструкции. В примере задачи сверхвысокого разрешения слои реконструкции представляют собой субпиксельные сверточные слои.
Как насчет результатов?
Вот несколько качественных сравнений из статьи, демонстрирующих очень многообещающие результаты в задачах сверхвысокого разрешения и шумоподавления, превосходящие современные методы, такие как ESRGA, BM3D и DnCNN.
Чтобы проверить исходный код, см. официальный репозиторий авторов на Github.