Vision Transformers: мост к трансформерам

Свёртки — не единственный способ видеть. Архитектура трансформеров, покорившая текст, пришла и в компьютерное зрение.

Vision Transformer (ViT) — модель, которая применяет к изображению механизм трансформера: режет картинку на патчи и обрабатывает их как последовательность, через self-attention.

Идея: картинка как последовательность патчей

Трансформеры созданы для последовательностей (слов в предложении). Чтобы скормить им картинку, ViT делает простой трюк: режет изображение на сетку маленьких квадратов — патчей (например, 16×16 пикселей). Каждый патч «разворачивается» в вектор — получается последовательность «слов-патчей», как предложение из кусочков картинки. Дальше работает обычный трансформер.

Картинка 224x224
   -> режем на патчи 16x16
   -> получаем 14*14 = 196 патчей
   -> каждый патч -> вектор («токен»)
   -> последовательность из 196 токенов -> в трансформер

Главное отличие от CNN: внимание

Свёртка по своей природе локальна: ядро видит только маленькую окрестность, и лишь глубокие слои постепенно охватывают всю картинку. Трансформер работает иначе — через self-attention каждый патч сразу может «посмотреть» на любой другой патч, даже на противоположном краю картинки. Это даёт глобальный контекст с самого начала: связать левый верхний угол с правым нижним ViT может в первом же слое.

CNNViT
Базовая операциясвёртка (локальная)self-attention (глобальная)
Контекстрастёт с глубинойглобальный сразу
Данныеучится и на среднихнужно очень много данных
Встроенные допущениялокальность, инвариантностьпочти нет (учит из данных)

Цена гибкости

У CNN встроено сильное допущение: соседние пиксели связаны, признак можно искать по всей картинке (инвариантность к сдвигу). Это помогает учиться даже на умеренных данных. ViT таких допущений почти не имеет — он гибче, но за гибкость платит аппетитом к данным: на маленьких датасетах ViT проигрывает CNN, а вот на огромных (сотни миллионов картинок) — обгоняет. Поэтому ViT почти всегда применяют через transfer learning: берут предобученный на гигантском датасете.

Зачем это знать

ViT — важный мост: та же архитектура трансформера теперь лежит и в основе языковых моделей (LLM), и в зрении. Это открыло дорогу мультимодальным моделям, которые работают с картинками и текстом одновременно (например, по описанию находят объект на фото). Современное CV всё больше движется в сторону трансформеров и мультимодальности.

Итог

  • ViT режет картинку на патчи и обрабатывает их как последовательность токенов.
  • Self-attention даёт глобальный контекст сразу, в отличие от локальной свёртки.
  • ViT гибче CNN, но требует очень много данных — обычно через transfer learning.
  • Та же архитектура объединяет зрение и язык — путь к мультимодальным моделям.
Проверьте себя
1. Как ViT превращает картинку во вход для трансформера?
AПереводит её в текст
BРежет на патчи (например, 16×16), каждый превращает в вектор-токен и подаёт как последовательность
CСчитает гистограмму яркости
DПрименяет свёртку Собеля
2. В чём ключевое отличие self-attention в ViT от свёртки в CNN?
ASelf-attention работает только с серым
BSelf-attention даёт глобальный контекст сразу — любой патч может посмотреть на любой другой, тогда как свёртка локальна
CСвёртка видит всю картинку сразу, а attention — нет
DМежду ними нет разницы
3. Почему ViT обычно применяют через transfer learning?
AОн не умеет обучаться
BУ ViT мало встроенных допущений, поэтому он требует очень много данных; предобучение на гигантском датасете это компенсирует
CViT нельзя дообучать
DViT работает только на CPU
Поддержать проект