Vision Transformer – основы для инженеров видео-ИИ: от ViT до ViViT, Video Swin и Hiera

Автор: Николай СапуновОбновлено: август 202635 мин чтения
Содержание статьи +

TL;DR

Vision Transformer – сокращённо ViT – это архитектура, которая в 2020–2024 годах заняла место свёрточных сетей в роли стандартного backbone для серьёзной работы с компьютерным зрением. ViT берёт изображение, режет его на сетку небольших квадратных патчей (обычно 16×16 пикселей), превращает каждый патч в вектор одним линейным проектированием и подаёт получившуюся последовательность в тот же Transformer-энкодер, который лежит в основе больших языковых моделей. Для видео в продакшене важны три прямых расширения: ViViT и TimeSformer (2021) открыли эру pure-attention для пространственно-временных данных, Video Swin Transformer (2021) принёс иерархическое window-внимание, благодаря которому стало возможно обрабатывать видео в высоком разрешении, а Hiera (2023, ICML Oral) вынес обратно специфичные для зрения компоненты и в 2026 году является самым быстрым точным video-backbone в открытых весах. Эта статья проводит нетехнического читателя через то, как работает ViT, почему он обогнал CNN, как видео-варианты расширяют его и какую модель выбрать при отгрузке фичи в видео-продукт в 2026.

Зачем Это Нужно Знать

Почти в каждой современной модели компьютерного зрения, которую ваша команда отгружает в продакшен, внутри сидит Vision Transformer. Детектор, который вы выбрали в уроке про production-линейку YOLO, имеет Transformer-backbone или Transformer-neck. Open-vocabulary детектор из урока про Grounding DINO – это ViT от начала до конца. Модель сегментации из урока про SAM 2 использует Hiera-backbone. Видео-VLM, которые классифицируют сцены, описывают клипы и отвечают на вопросы про поток, начинаются с ViT-энкодера изображения. Если вы не понимаете архитектуру, вы не можете рассуждать, почему одна модель быстрая, а другая медленная, почему одной нужен миллиард примеров для обучения, а другая работает с тысячей, и почему команда инженеров спорит про размер патча, разрешение и embedding-размерность, как будто это важные ручки. Это действительно важные ручки. Этот primer – фундамент под всеми уроками Phase 2, всеми multimodal-уроками Phase 4 и всеми генеративными уроками Phase 5. Это также самая чистая ментальная модель, которую мы знаем, для объяснения «foundation model для зрения» на языке, доступном продакт-менеджеру или основателю.

Ментальная Модель – Изображение Это Последовательность Патчей

До ViT каждая серьёзная модель работы с изображениями была свёрточной нейронной сетью – CNN. CNN протаскивают маленькие фильтры по изображению, схлопывая признаки во всё более мелкие сетки, пока всё изображение не сжимается в один вектор. В архитектуру встроены два сильных индуктивных байаса: локальность, предположение, что соседние пиксели связаны друг с другом, и эквивариантность к сдвигу, предположение, что объект – это один и тот же объект независимо от того, появляется ли он в левом верхнем углу или в правом нижнем. Эти байасы хороши. Они же и потолок – они ограничивают, что модели разрешено выучить.

Статья Vision Transformer, опубликованная Алексеем Досовицким и коллегами из Google Research в 2020 году под названием «An Image is Worth 16×16 Words», задала вопрос: что будет, если убрать эти байасы и дать модели учиться с нуля? Рецепт почти неприлично прост. Берёте изображение, например 224×224 пикселя. Режете его на сетку патчей 16×16 – получается 14 патчей в ширину и 14 в высоту, всего 196 патчей. Сплющиваете каждый патч в вектор из 768 чисел (16 × 16 × 3 канала). Умножаете каждый вектор на обучаемую матрицу, чтобы спроецировать его в embedding-пространство – обычно 768-мерный вектор. Прибавляете обучаемое position embedding к каждому патчу, чтобы модель знала, откуда в изображении пришёл патч. Прикрепляете в начало последовательности специальный обучаемый «class token» – его финальный вывод будет общим представлением изображения. Подаёте все 197 токенов в стандартный Transformer-энкодер, ровно тот же, что используется в языковых моделях. На выходе берёте вектор class-токена и прогоняете его через маленькую классификационную голову.

Это вся архитектура. Никаких свёрток. Никакого pooling. Никакой специальной vision-машинерии. Изображение трактуется как последовательность из 196 токенов, и тот же Transformer-энкодер, который обрабатывает предложение из 196 слов, может обрабатывать эту последовательность. Число яркости – то, что инженеры называют «patch embedding», – это простыми словами 768-числовое резюме одного 16×16-патча картинки.

Рисунок 1. Рецепт Vision Transformer: изображение режется на патчи, патчи становятся токенами, токены проходят через обычный Transformer-энкодер, а финальный embedding class-токена представляет всё изображение.

Цифры сошлись. ViT-Base – 12 слоёв, embedding-размерность 768, 12 attention-голов, 86 миллионов параметров – сравнялся с лучшими CNN-бейзлайнами на ImageNet при обучении с нуля. ViT-Large – 24 слоя, 1024 dim, 16 голов, 307M параметров – обогнал. ViT-Huge – 32 слоя, 1280 dim, 16 голов, 632M параметров – превзошёл state of the art от EfficientNet на ImageNet с явным отрывом, поставил новые топовые результаты на CIFAR-100 и бенчмарке VTAB и потребовал меньше compute для обучения, чем CNN, которую он сместил. Единственный нюанс – данные: ViT нужно было увидеть примерно 300 миллионов размеченных изображений (датасет JFT-300M, который был внутри Google), чтобы обогнать CNN. При обучении на стандартных 1,3 миллиона ImageNet ViT проигрывал сравнимому ResNet. CNN была лучше на малых данных; ViT – лучше на масштабе.

Почему Механизм Внимания – Это Вся Суть

Причина, по которой ViT обгоняет CNN на масштабе, – это механизм внимания. Свёртка 16×16 за раз видит только 16 пикселей; чтобы смешать информацию с одной стороны изображения на другую, CNN приходится складывать много слоёв, каждый из которых смешивает соседние патчи чуть дальше. Информация из угла в угол распространяется медленно. Слой self-attention в сердце каждого Transformer-блока делает другое: каждый патч может напрямую обращаться к каждому другому патчу за один слой. Патч номер 1 – левый верхний угол – может за один шаг спросить «насколько я связан с патчем 196 – правым нижним углом?» и получить обученный вес. Связи на длинных дистанциях, на построение которых CNN тратит двенадцать слоёв, у Transformer доступны уже на первом слое.

Сам механизм – это взвешенное среднее. Для каждой пары токенов модель вычисляет три вектора – query, key и value, – и attention-скор от токена A к токену B – это скалярное произведение query A и key B, делённое на квадратный корень из embedding-размерности и пропущенное через softmax. Результат – распределение вероятностей, которое говорит «куда смотреть при построении следующего представления?». Новое представление токена A – это взвешенная softmax-ом сумма value-векторов всех остальных токенов. Сложите эту операцию двенадцать раз, и модель построит богатое глобальное представление изображения.

Цена – стоимость. Self-attention квадратично растёт с количеством токенов: изображение 224×224 при размере патча 16 даёт 196 токенов – комфортно; изображение 1024×1024 при размере патча 16 даёт 4 096 токенов, и attention-матрица содержит 16,7 миллиона записей. Это стена, которая мотивирует каждый архитектурный вариант ниже.

Почему ViT Обогнал CNN – И Где CNN Всё Ещё Выигрывает

Два эффекта позволяют ViT вырваться вперёд. Первый: отсутствие индуктивного байаса становится преимуществом на масштабе. Когда датасет маленький, встроенные предположения помогают – CNN не нужно учить локальность с нуля. Когда датасет огромный, эти встроенные предположения – потолок: модель сама бы выучила локальность, а затем выучила формы, которые CNN не видит, но только если есть достаточно данных. В статье ViT 2020 года это сказано прямо: при достаточном количестве данных масштаб обучения побеждает индуктивный байас. Второй эффект: глобальное receptive field механизма внимания даёт каждому слою доступ ко всему изображению. У CNN эффективное receptive field растёт слой за слоем; у ViT оно равно всему изображению уже на первом слое.

Где CNN всё ещё выигрывают в 2026: на малых датасетах, на малых моделях, на edge-устройствах с жёстким бюджетом задержки и на задачах, где эквивариантность к сдвигу – реальное ограничение (например, медицинская визуализация, где модель должна реагировать одинаково на признак независимо от его положения). EfficientNet и ConvNeXt остаются сильными бейзлайнами ниже отметки в 100 миллионов параметров. Правильная формулировка сегодня не «Transformer заменил CNN»; правильно – «Transformer заменил CNN на масштабе». Для развёртывания, которое работает на телефоне с бюджетом инференса 50 мс, маленькая CNN часто всё ещё выигрывает. Для развёртывания, работающего в облачном GPU с бюджетом 200 мс и пользой от предобучения на сотнях миллионов изображений, выигрывает ViT.

СвойствоCNN (например, ResNet, EfficientNet)ViT
Индуктивный байасЛокальность + эквивариантность к сдвигуНет – выучивается из данных
Receptive field на слойЛокальное (ядра 3×3, 5×5, 7×7)Глобальное (каждый токен видит каждый токен)
Поведение на малых данныхОтличное – байасы помогаютПлохое – нужны миллионы примеров
Поведение на больших данныхВыходит на платоПродолжает улучшаться
Throughput на edgeСильное (зрелые кернелы)Улучшается, но исторически медленнее
Память на высоком разрешенииУправляемаяКвадратичная по количеству токенов – дорого

Математика Токенов – Проговорённая Вслух

Пройдём по числам для ViT-Base на изображении 224×224, потому что арифметика – самый чистый способ внутренне усвоить, что происходит.

RGB-изображение 224×224 – это тензор формы (224, 224, 3) – всего 150 528 чисел. Размер патча 16×16. Сетка: 224 / 16 = 14 патчей в ширину и 14 в высоту, всего 14 × 14 = 196 патчей. Каждый патч сплющивается в вектор из 16 × 16 × 3 = 768 чисел.

Patch embedding – это одно линейное проектирование, обученная матрица формы (768, 768), которое отображает каждый вектор патча в 768-мерный embedding. Это 196 × 768 = 150 528 чисел, входящих в Transformer. Модель также добавляет в начало обучаемый [CLS] токен (один 768-мерный вектор) и прибавляет обучаемые position embeddings формы (197, 768). Transformer-энкодер получает тензор формы (197, 768).

У ViT-Base 12 Transformer-энкодер-блоков. В каждом блоке multi-head self-attention с 12 головами размерности 64 (потому что 768 / 12 = 64), и feed-forward слой со скрытой размерностью 3072 (стандартное 4× расширение). Общее число параметров – примерно 86 миллионов.

Стоимость одного self-attention слоя над 197 токенами – 197 × 197 × 768 ≈ 30 миллионов умножений-сложений на одну голову, помноженные на 12 голов – около 360 миллионов операций на слой только на attention. На 12 слоёв это 4,3 миллиарда attention-операций. Feed-forward слои добавляют примерно столько же. От начала до конца один прямой проход через ViT-Base на изображении 224×224 – около 17 GFLOPs.

Теперь масштабируем до изображения 1024×1024 при том же размере патча. Сетка становится 64 × 64 = 4 096 патчей. Стоимость attention на слой становится 4 096 × 4 096 × 768 ≈ 12,9 миллиарда операций на одну голову – 35× стоимости случая 224×224 только для attention. Это та квадратичная стена, о которой мы говорим. Почти каждая архитектура ниже была изобретена, чтобы её обойти.

Размер Патча, Разрешение И Ручки, Которые Реально Важны

Три инженерные ручки доминируют в каждом решении о развёртывании ViT: размер патча, входное разрешение и embedding-размерность. Они выглядят небольшими. Это те три числа, которые решают, отгрузится ли ваша фича на 60 FPS или на 6 FPS.

Размер патча контролирует, насколько агрессивно модель уменьшает дискретизацию. ViT-Base/16 использует патчи 16×16 и выдаёт 196 токенов из изображения 224×224. ViT-Base/14 использует патчи 14×14 и выдаёт 256 токенов. Меньший патч – больше токенов, более тонкие признаки, квадратично большая стоимость attention и обычно лучшая точность на dense-задачах вроде сегментации. Больший патч (32×32) уменьшает количество токенов в 4× и стоимость attention в 16× ценой детализации.

Входное разрешение важно, потому что количество токенов растёт как квадрат разрешения. Переход от 224×224 к 384×384 – рутинное повышение для точности – утраивает число токенов с 196 до 576 и увеличивает стоимость attention в 9×. Переход к 1024×1024 приведёт вас к стене.

Embedding-размерность контролирует ёмкость модели. ViT-Tiny использует 192, ViT-Small – 384, ViT-Base – 768, ViT-Large – 1024, ViT-Huge – 1280, ViT-G – 1408. Удвоение embedding-размерности примерно учетверяет параметры feed-forward слоёв и удваивает стоимость attention на голову.

На практике правильная комбинация зависит от того, что вы делаете. Для real-time инференса на edge: ViT-Tiny/16 или ViT-Small/16 при разрешении 224×224. Для максимальной точности в облаке на малых изображениях: ViT-Large/14 при 384×384. Для dense-предсказания (сегментация, backbone детекции): ViT-Base/16 при 512×512 или выше, с иерархическими расширениями, описанными ниже. Желание выбрать огромную модель в высоком разрешении – то, что подталкивает большинство команд к иерархическим и windowed-вариантам.

От Изображения К Видео – Почему Простого ViT Недостаточно

Видео – это стопка изображений плюс измерение времени. Умножение количества токенов на 16 кадров клипа – типичная длина входа для модели распознавания действий – превращает 196 токенов в 3 136. Attention-матрица растёт в 256×. Бросьте в модель 1-минутный клип на 30 кадрах в секунду, и вы окажетесь далеко за пределом, в котором GPU может удержать attention-матрицу в памяти.

Должно произойти две вещи для видео. Первое: модель должна понимать временные связи – число яркости в позиции (10, 20) кадра 5 должно быть связано с числом яркости в позиции (10, 20) кадра 6, даже если в сплющенной последовательности токенов они в совершенно разных местах. Второе: стоимость attention над пространством × временем должна уменьшиться на порядки.

Литература по video-Transformer по сути – это список факторизаций и трюков локальности, которые решают эти две проблемы. Четыре подхода ниже – это те четыре, с которыми вы реально встречаетесь в продакшене.

ViViT – Рецепт Чистого Transformer Для Видео

ViViT опубликовали Anurag Arnab и коллеги из Google в марте 2021 года, через шесть месяцев после оригинального ViT. В статье представлены четыре варианта модели. Вариант 1 – Spatio-temporal attention – грубый бейзлайн: tubelet-патчи (3-D блоки, скажем, 16 × 16 × 2 вокселя) становятся токенами, и энкодер обращается ко всем им совместно. Самый точный, но самый дорогой. Вариант 2 – Factorised encoder – сначала запускает пространственный Transformer на каждый кадр, затем малый временной Transformer, принимающий покадровые [CLS] токены. Вариант 3 – Factorised self-attention – чередует пространственный и временной attention в одном блоке. Вариант 4 – Factorised dot-product attention – разделяет сами attention-головы на пространственные и временные.

Две практические победы – Вариант 2 и использование tubelet-патчей. Tubelet-патчи заменяют покадровые 2-D патчи на 3-D блоки, охватывающие несколько кадров, что значит, что модель видит маленький кусочек временного контекста внутри каждого токена. Факторизация Варианта 2 урезает стоимость полного spatio-temporal attention на порядок на длинных клипах, теряя лишь небольшую долю точности.

ViViT-L/16, обученный на бенчмарке распознавания действий Kinetics-400 – 400 классов действий, 240 000 обучающих клипов, – достигает 81,3% top-1 точности. Kinetics-600 поднимает её до 83,5%, а Something-Something v2 – бенчмарк, специально разработанный для проверки временного рассуждения – достигает 65,4%. Это state-of-the-art числа 2021 года, и они до сих пор являются точкой отсчёта для подхода «pure attention для видео».

TimeSformer – Divided Attention

TimeSformer опубликовали за два месяца до ViViT – Gedas Bertasius, Heng Wang и Lorenzo Torresani из Facebook AI Research. Контрибьюшен – divided attention: вместо совместного attention над пространством и временем модель чередует слои – один слой обращается только вдоль оси времени (связывая одну и ту же пространственную позицию между кадрами), следующий – только вдоль пространственных осей (связывая разные позиции внутри одного кадра). Два attention-слоя складываются, и результат – глобальное spatio-temporal покрытие за одну четверть до одной десятой стоимости совместного attention.

Заявленные числа TimeSformer – 82,2% top-1 на Kinetics-400 и 80,7% на Kinetics-600. Модель вышла в трёх размерах – base, large и HR (высокое разрешение), и вариант large HR, обученный на Kinetics-600, поставил state of the art на тот момент. Reference-имплементация – на github.com/facebookresearch/TimeSformer под CC BY-NC лицензией (внимание – некоммерческая, прочитайте перед отгрузкой). Паттерн divided-attention широко скопирован; вы увидите его и внутри более новых моделей.

Video Swin Transformer – Иерархическое Window-Внимание

Swin Transformer – Shifted Window image-модель – опубликовали Ze Liu и коллеги из Microsoft в 2021 году. Самый важный для продакшена контрибьюшен – window-based attention со сдвинутыми окнами. Вместо того чтобы позволять каждому токену обращаться к каждому, Swin разбивает сетку токенов на непересекающиеся окна, скажем, 7×7 токенов, и применяет attention внутри каждого окна. Информация утекает между окнами через сдвиг разбиения окон на половину окна каждый второй слой. Стоимость attention падает с квадратичной по числу токенов до линейной, потому что per-window attention – константной стоимости, а число окон растёт линейно. Модель также иерархическая: между стадиями она объединяет токены для формирования пирамиды признаков так же, как это делает CNN, что делает Swin готовым backbone для dense-задач вроде детекции и сегментации.

Video Swin Transformer, опубликованный вскоре после той же командой, распространяет рецепт на время: окна становятся 3-D блоками, скажем, 8 × 7 × 7 токенов (8 кадров × 7 × 7 пространственно), и shifted-window трюк применяется и в пространстве, и во времени. На Kinetics-400 Video Swin-L достигает 84,9% top-1; на Something-Something v2 – 69,6%. Доминирующий практический факт – иерархическая пирамида признаков: Video Swin встаёт туда, куда встал бы FPN-style backbone, поэтому он несколько лет был дефолтным video-backbone для downstream-задач вроде временной локализации и dense-сегментации видео. Swin V2 вышел в 2022 с настройками масштабирования, поднявшими общее число параметров до 3 миллиардов и поддержавшими очень высокое разрешение.

Hiera – Отрезаем Bells And Whistles

К 2023 году поле годами накладывало vision-специфичные настройки поверх простого ViT – иерархические пирамиды, shifted windows, relative positional biases, свёрточные стволы, обученное downsampling. Каждая деталь улучшала свой бенчмарк. Вместе они делали модели медленнее, чем им следовало бы быть. Hiera, опубликованная на ICML 2023 (Oral) Chaitanya Ryali и коллегами из Meta FAIR с соавторами из Georgia Tech и Johns Hopkins, задала очевидный вопрос: что будет, если вынуть все эти настройки обратно и дать модели выучить то, что нужно, через задачу предобучения Masked Autoencoder (MAE)?

Рецепт: начать с иерархического ViT (чтобы сохранить multi-scale пирамиду признаков, нужную downstream-задачам), убрать каждое vision-специфичное дополнение – никаких shifted windows, никаких relative positional biases, никаких свёрточных ядер в patch embedding, – и предобучить с MAE, где модель должна реконструировать замаскированные патчи изображения. MAE-предобучение даёт модели неявные приоритеты локальности и эквивариантности к сдвигу из данных, вместо того чтобы запекать эти приоритеты в архитектуру. Результат – архитектура, которая проще и быстрее всех предыдущих иерархических ViT, и при этом точнее.

Числа поразительны. Hiera в 2,4× быстрее MViTv2 на изображениях и в 5,1× быстрее на видео. На Kinetics-400 Hiera-L обгоняет каждую предыдущую модель в своём классе; на Kinetics-600 и Kinetics-700 ставит новые state-of-the-art числа. Reference-имплементация – на github.com/facebookresearch/hiera под лицензией Apache 2.0, по-настоящему дружественной коммерции. Hiera также – это визуальный backbone, который питает SAM 2 (модель сегментации из урока про SAM 2), а это самое сильное продакшен-одобрение, которое архитектура может получить.

Рисунок 2. Четыре семейства видео Vision Transformer, которые имеют значение в 2026 году. Hiera – самый быстрый точный вариант для новых проектов; Video Swin остаётся дефолтом во многих downstream-task backbones; ViViT и TimeSformer – канонические reference-статьи.

VideoMAE И Вопрос Предобучения

Vision Transformer голодны до данных, и размеченного видео для обучения с нуля никогда не хватает. Ответ поля – self-supervised предобучение на огромных неразмеченных корпусах видео. Доминирующий рецепт – Masked Autoencoders for Video – VideoMAE, опубликован на NeurIPS 2022 Zhan Tong и коллегами из Tsinghua. Идея проста. Берём клип из 16 кадров, делим каждый кадр на патчи 16×16, случайно маскируем 90–95% патчей по пространству и времени, подаём оставшиеся 5–10% патчей в ViT-энкодер и просим малый декодер реконструировать замаскированные пиксели. Энкодер должен выучить, как выглядит видео, чтобы это сделать.

Соотношение маскирования важно. Image MAE хорошо работает при 75% маскирования; video MAE работает лучше при 90–95% маскирования, потому что соседние кадры в основном избыточны. Модель вынуждена предсказывать замаскированные патчи из временно удалённого контекста – это и есть тот сигнал обучения, который вам нужен.

Числа VideoMAE на backbone ViT-Base: 81,5% top-1 на Kinetics-400 после self-supervised предобучения на самом Kinetics-400 (без внешних размеченных данных). VideoMAE-V2, опубликованный в 2023, масштабируется до ViT с миллиардом параметров и стратегией dual masking, достигая 90,0% top-1 на Kinetics-400, 89,9% на Kinetics-600, 68,7% на Something-Something v1 и 77,0% на v2. Это foundation-model числа – они на или около вершины каждого публичного leaderboard и достигнуты без использования ни одного внешне-размеченного видео, помимо обучающей выборки самого бенчмарка.

Практический вывод: если вы обучаете модель понимания видео в 2026 году на своих данных, вы почти наверняка стартуете с публично опубликованного checkpoint VideoMAE-V2 или Hiera-MAE, а затем fine-tune-ите на своих метках. Стартовать со случайной инициализации на доменном видео-датасете в, скажем, 50 000 клипов – почти никогда не правильное решение.

DINO, DINOv2 И DINOv3 – Самосупервизия Без Реконструкции

Другое большое self-supervised семейство – DINO – self-DIstillation with NO labels – опубликованное Mathilde Caron и коллегами из Meta FAIR в 2021. Вместо реконструкции замаскированных патчей DINO обучает сеть-ученика совпадать с выходом сети-учителя, которая является экспоненциальным скользящим средним прошлых учеников. Обе сети видят разные аугментированные виды одного изображения и должны выдавать один и тот же embedding. Модель учит представление без меток, только из ограничения, что два аугментированных вида одного изображения должны лежать embedding-близко.

DINOv2 (2023, Maxime Oquab и коллеги из Meta) масштабировал рецепт на 142 миллиона курированных изображений и выдал самый сильный open-weights image-энкодер своей эпохи. DINOv3 (август 2025, Oriane Siméoni и коллеги из Meta) масштабировал ещё дальше: 1,7 миллиарда изображений, 1,1 миллиарда параметров в самой большой модели, новая функция потерь Gram Anchoring для стабилизации dense feature maps, деградирующих в длинных тренировочных запусках. На ImageNet linear-probe классификации DINOv3 достигает 88,4% top-1, обгоняя 87,3% DINOv2. На семантической сегментации PASCAL VOC DINOv3 – 86,6 mean IoU против 83,1 у DINOv2.

Почему это важно для видео: признаки DINO-семейства исключительно хороши на dense задачах – сегментация, глубина, трекинг, всё, чему нужно полезное представление на каждый пиксель, – и они переносятся на видео через извлечение признаков покадрово и обучение малой temporal-головы поверх. DINOv2 и DINOv3 – MIT-лицензированы для коммерческого использования и являются самыми сильными off-the-shelf vision-backbone, доступными, когда у вас нет размеченных данных в вашем домене.

Где Vision Transformer Живут В Продакшен-Системе 2026 Года

Vision Transformer живут везде в современном видео-ИИ стеке, почти всегда в роли backbone – первой сети в пайплайне, которая превращает пиксели в признаки, – а не в роли отдельной модели. Вот карта.

В детекции объектов тренд – заменять CNN-backbone на ViT-backbone в более точном тире. RT-DETR (описан в уроке про open-vocabulary детекцию) – это чистый Transformer-детектор. YOLO-style детекторы всё чаще используют Transformer-модули в своих neck'ах. Grounding DINO и OWLv2 – open-vocabulary детекторы – это Transformer-backbone с приделанным сверху text-энкодером.

В сегментации SAM 2 (модель сегментации из урока про SAM 2) использует Hiera-backbone – video Vision Transformer – в качестве image-энкодера. Memory-модуль, позволяющий ему трекать объекты через окклюзии, сам по себе Transformer.

В классификации изображений и видео весь слой foundation-моделей – это ViT. EVA-02 и SigLIP 2 – это ViT-based image-энкодеры, используемые внутри почти каждой свежей vision-language модели. DINOv2 и DINOv3 – ViT image-энкодеры, используемые как feature-экстракторы для почти каждой dense-prediction задачи.

В vision-language моделях – multimodal-моделях из Phase 4 – vision-энкодер всегда ViT, почти всегда с определённым размером патча, согласованным с token-бюджетом языковой модели. LLaVA, Qwen-VL, Pixtral, InternVL, Florence-2 и каждая frontier-grade VLM используют ViT image-токенайзер для конвертации пикселей в токены, которые может прочитать языковая модель.

В генеративном видео – Phase 5 – diffusion-UNet'ы, питающие Sora, Veo, Kling, Runway, Pika и Luma, используют Transformer-блоки для spatio-temporal attention-слоёв, смешивающих кадр и время. Open-weights генеративные модели видео (HunyuanVideo, CogVideoX, Mochi, LTX-Video, Wan) аналогичны.

В real-time видеозвонках – Phase 6 – Transformer-модели сегментации питают background blur и replacement (описано в уроке про MediaPipe Selfie Segmentation). Лёгкие варианты ViT начинают заменять старые MobileNet-style модели в браузер-развёрнутых WebGPU-пайплайнах.

Ошибки При Отгрузке ViT-Backbone В Видео-Продукты

Мы отгрузили или оценили Vision Transformer-backbone примерно в двадцати продакшен видео-фичах в Фора Софт, в основном в видеонаблюдении, телемедицине, конференциях и OTT. Четыре ошибки ниже всплывают снова и снова.

Ошибка 1: квадратичный attention кусается на высоком разрешении. Самый частый сюрприз в развёртывании ViT – стоимость инференса модели раздувается, когда команда решает «запустим его на 4K». Изображение 4K – это примерно 18 миллионов пикселей; при размере патча 16 это даёт 73 000 токенов на кадр; attention-матрица содержит 5,3 миллиарда записей. Модель, бежавшая на 30 FPS на 224×224, бежит меньше чем на 1 FPS. Лечение – использовать иерархическую модель (Swin, Hiera), которая не делает глобальное attention, или запустить модель на уменьшённом изображении и спроецировать результат обратно.

Ошибка 2: position embeddings привязаны к входному разрешению. Оригинальный ViT учит фиксированную сетку position embeddings – например, 14×14 для изображения 224×224. Когда вы меняете входное разрешение, embeddings приходится интерполировать, что обычно работает, но иногда деградирует производительность. Современные варианты (RoPE, sinusoidal, relative) справляются с изменением разрешения более изящно. Прочитайте документацию модели, прежде чем менять входное разрешение.

Ошибка 3: малые данные + простой ViT = нет переноса. Если вы обучаете простой ViT-Base на ваших доменных видеоданных в 10 000 клипов с нуля, вы получите результаты хуже, чем у ResNet-50. ViT нужен масштаб. Выход – стартовать с предобученного checkpoint – DINOv2, DINOv3, VideoMAE-V2, Hiera, SigLIP 2 – и fine-tune-ить. Мы не видели проекта, в котором обучение ViT с нуля было бы правильным решением.

Ошибка 4: edge-развёртывание сложнее, чем edge-развёртывание CNN. Vision Transformer исторически отставали от CNN на edge-устройствах, потому что кернелы для attention менее зрелые в TensorRT, CoreML и TensorFlow Lite, чем кернелы для свёртки. Разрыв быстро сокращается – TensorRT теперь имеет хорошую поддержку ViT, CoreML от Apple имеет явные ViT-оптимизации, а архитектуры вроде EfficientFormer были спроектированы специально для edge. Но «я разверну ViT-L на телефоне» – всё ещё намного более рискованная инженерная ставка, чем «я разверну MobileNet на телефоне». Тестируйте экспорт-путь рано.

Рисунок 3. Четыре ошибки, которые мы заново открываем при отгрузке ViT-backbone в видео-продукты.

Выбор Правильного Backbone – Прохождение По Решениям

Дерево решений, которое мы используем в Фора Софт, состоит из четырёх вопросов.

Первый вопрос: что у вас за задача? Для классификации изображений по фиксированной таксономии: маленький ViT (Tiny или Small), предобученный DINOv2 или DINOv3, fine-tuned на ваших метках. Для сегментации: SAM 2 (Hiera-backbone) – дефолт, с DINOv3 + малой головой как альтернатива, когда нужен пайплайн в одну модель. Для детекции: RT-DETR или YOLO с Transformer-neck, в зависимости от того, нужен ли open-vocabulary (Grounding DINO) или fixed-vocabulary (YOLO). Для классификации видео: Hiera-MAE или VideoMAE-V2 предобученные, fine-tuned на ваших метках действий. Для vision-language: выбирайте VLM, а не backbone, – VLM поставляется со своим визуальным энкодером.

Второй вопрос: какой у вас бюджет задержки? Меньше 50 мс на edge: ViT-Tiny или ViT-Small при 224×224, с протестированным экспортом в TensorRT или CoreML. 50–200 мс в облаке: ViT-Base или ViT-Large при 224×224 или 384×384. 200 мс+ для batch-обработки: что угодно вплоть до ViT-Huge при 384×384 или выше.

Третий вопрос: сколько у вас размеченных данных? Меньше 10 000 примеров: стартуйте с предобученного DINOv3 / Hiera / VideoMAE-V2 checkpoint и fine-tune только голову, заморозив backbone. От 10 000 до 100 000: fine-tune голову и последние несколько слоёв backbone. Больше 100 000: полное fine-tuning backbone с низким learning rate. Никогда не обучайте ViT с нуля на доменном датасете, если у вас нет хотя бы миллиона примеров и research-grade compute-бюджета.

Четвёртый вопрос: какая лицензия вам нужна? Apache 2.0 или MIT (Hiera, Swin, DINOv2, DINOv3, EVA-02, SigLIP 2): безопасны для любого коммерческого использования. Non-commercial (reference-код TimeSformer, некоторые Meta-internal форки): нужна юридическая проверка перед отгрузкой. ImageBind и определённые Meta-датасеты ещё ограничительнее – читайте лицензии.

Где Тут Фора Софт

Большинство видео-фич, которые мы отгружаем в Фора Софт, начинаются с предобученного Vision Transformer в роли backbone. В видеонаблюдении мы используем ViT-based open-vocabulary детекторы и SAM 2 для сегментации; в телемедицине мы используем DINOv3 для локализации зон симптомов и Hiera-MAE для классификации действий, когда камера видит процедуру; в видеоконференциях мы используем лёгкие варианты ViT в WebGPU-пайплайне для фоновой сегментации; в OTT мы используем Video Swin и Hiera для content-aware encoding решений и классификации сцен на архивных материалах. Мы не обучаем ViT с нуля – мы fine-tune-им с публичных Apache или MIT checkpoint. Выбор архитектуры редко является узким местом; дата-пайплайн, стратегия разметки и экспорт-путь в deployment-runtime – это где проекты живут или умирают.

Ключевые Выводы

  • Vision Transformer режет изображение на патчи 16×16, трактует каждый патч как токен и прогоняет последовательность через стандартный Transformer-энкодер.
  • ViT обгоняет CNN на масштабе, потому что attention глобальное с первого слоя и индуктивные байасы не ограничивают, что модель может выучить.
  • Для видео имеют значение четыре расширения: ViViT, TimeSformer, Video Swin и Hiera – Hiera является дефолтом 2026 года.
  • Self-supervised предобучение через VideoMAE-V2 или DINOv3 – то, как каждая современная ViT-модель видео получает свои веса.
  • Квадратичный attention кусается на высоком разрешении – выбирайте иерархическую модель (Swin, Hiera) или уменьшайте разрешение.
  • Никогда не обучайте ViT с нуля на маленьком доменном датасете; всегда fine-tune-ите с публичного checkpoint.

Что Почитать Дальше

Строите такую систему?

Подберём параметры кодирования под ваш контент и посчитаем стоимость доставки до старта разработки.