Компьютерное зрение
Modern Architectures
Предварительные знания
- Эволюция CNN от LeNet до ResNet: residual connections и bottleneck-блоки (cv-04)
- BatchNorm, свёртки 1x1 и идея уменьшения числа параметров
- Базовое представление о self-attention для понимания Vision Transformer
Compound Scaling и возвращение ConvNeXt
К 2019 году у области был рецепт точности: складывать всё больше слоёв, как показали VGG (Simonyan and Zisserman, 2014) и ResNet (He, Zhang, Ren, and Sun из Microsoft, 2015), тогда как GoogLeNet/Inception (Szegedy et al., 2014) показал, что более умные блоки способны сократить вычисления. Открытым оставался вопрос, как масштабировать сеть эффективно. Mingxing Tan и Quoc V. Le из Google ответили на него с EfficientNet в 2019 году, предложив compound scaling, который балансирует глубину, ширину и разрешение входа единым коэффициентом. EfficientNet-B7 достиг state-of-the-art точности на ImageNet, используя примерно в 8 раз меньше параметров, чем сопоставимые модели. Когда в 2020 году появились Vision Transformers и казалось, что они вот-вот вытеснят свёрточные сети, статья 2022 года модернизировала обычный ResNet приёмами обучения и архитектурными решениями эпохи трансформеров и назвала результат ConvNeXt. ConvNeXt сравнялся с ViT или превзошёл его на большинстве бенчмарков, показав, что у свёртки ещё есть куда расти.
2019 год. Google Brain. EfficientNet-B7 достигает SOTA на ImageNet - в 8 раз меньше параметров, чем конкуренты сравнимой точности. Следующий год: ViT обгоняет все CNN - но только при 300M изображениях. 2022: ConvNeXt берёт рецепт трансформеров, применяет к CNN - и снова выигрывает у ViT на большинстве задач. Три года переосмыслили, что такое хорошая архитектура для зрения.
- **Google Lens**: MobileNet backbone для real-time recognition прямо на устройстве - без отправки запроса на сервер
- **Tesla Autopilot**: EfficientDet (EfficientNet backbone) для object detection на 8 камерах одновременно с latency < 100 мс
- **Meta content moderation**: ConvNeXt-XXL обрабатывает 100 млн изображений в день - конкурент ViT без квадратичного attention
- **Apple Face ID**: MobileNet-based архитектура на Neural Engine за < 1 мс - батарея не садится, тепловыделение минимально
EfficientNet: compound scaling и MBConv
2019 год. Google Brain. ImageNet SOTA. EfficientNet-B7 бьёт все предыдущие модели, имея в 8 раз меньше параметров, чем аналоги. Идея - **compound scaling**: масштабировать глубину, ширину и разрешение одновременно, удерживая их соотношение фиксированным через коэффициент phi. Прежде сети масштабировали по одной оси: ResNet добавлял слои, WideResNet расширял каналы. EfficientNet показал - совместное масштабирование даёт лучший accuracy/FLOPS trade-off.
**Compound scaling law** (упрощённо): depth = alpha^phi, width = beta^phi, resolution = gamma^phi. alpha, beta, gamma находят grid search-ом при phi=1, затем масштабируют phi для B1-B7. Ключевое ограничение: alpha * beta^2 * gamma^2 = 2, чтобы FLOPS при каждом шаге удваивались предсказуемо.
**MBConv (Mobile Inverted Bottleneck + Squeeze-and-Excitation)** - базовый блок EfficientNet. Сначала расширяет каналы (expand ratio 6x), затем применяет depthwise conv, затем сжимает обратно. SE-блок добавляет channel-wise attention: global average pooling -> FC(C/r) -> FC(C) -> sigmoid -> масштабирование.
Что такое compound scaling в EfficientNet, и почему простое добавление слоёв (как в ResNet) даёт худший результат при том же бюджете FLOPS?
MobileNet: depthwise separable convolutions для устройств
MobileNetV3-Small: 5.4М параметров, 2.5 МБ. ResNet-50: 25М параметров, 100 МБ. На iPhone MobileNet работает в 20 мс. ResNet-50 - в 200 мс. Мобильный CV требует другой математики. Идея - **depthwise separable convolution**: разбить стандартную свёртку на два шага. Стандартная свёртка H*W*C_in*C_out*K*K операций. Depthwise: H*W*C_in*K*K (каждый канал отдельно). Pointwise 1x1: H*W*C_in*C_out. Итого: в 8-9 раз меньше при K=3.
**MobileNetV3** найден через **Neural Architecture Search (NAS)** - автоматический перебор архитектур с reinforcement learning. Ручной дизайн заменён оптимизатором. Важные детали v3: **Hard Swish** вместо ReLU6 (x * relu6(x+3) / 6, аппроксимация Swish без exp), **h-sigmoid** для SE-блока (вместо sigmoid), и se_ratio=0.25.
Почему depthwise separable convolution быстрее стандартной при одинаковых входных и выходных размерностях?
ConvNeXt: CNN, переписанная по рецепту Transformer
2022 год. Facebook FAIR. Парадокс: **ConvNeXt** - это CNN, которая скопировала всё хорошее из Transformer. Patch embedding 4x4 (non-overlapping), depthwise 7x7 conv, inverted bottleneck, LayerNorm вместо BatchNorm, GELU вместо ReLU, меньше активаций и нормализаций. Результат - CNN снова обогнала ViT на большинстве задач. Вывод: преимущество трансформеров - не attention, а набор engineering деталей, переносимых в CNN.
**Почему 7x7 depthwise conv?** Equivalent к window attention 7x7 в Swin Transformer. Большое рецептивное поле на одном слое, но с линейной - не квадратичной - сложностью по числу токенов. Это одно из ключевых отличий ConvNeXt от ResNet (3x3 conv).
ConvNeXt заменил BatchNorm на LayerNorm. Почему это важно для достижения паритета с Vision Transformer?
Vision Transformer: патчи как токены
2020 год. Google Brain. ViT выиграл у CNN на ImageNet. Но предупреждение в заголовке статьи: 'при достаточном количестве данных'. Архитектура проста: изображение 224x224 нарезается на патчи 16x16 (196 патчей). Каждый патч линейно проецируется в вектор (patch embedding). Добавляются позиционные эмбеддинги и специальный [CLS] токен. Дальше - стандартный Transformer Encoder. Никаких свёрток, никаких пулингов. Только self-attention и MLP.
**Критический нюанс по данным:** ViT-L обученный на ImageNet-1k (1.2M изображений) уступает ResNet-50. Тот же ViT-L, обученный на JFT-300M (300M изображений), превосходит всё. CNN имеют встроенные **индуктивные смещения**: трансляционная инвариантность (свёртки), локальность (маленькие ядра). Трансформер учит их с нуля из данных - нужно намного больше примеров.
**Ключевые улучшения ViT:** DeiT (Facebook, 2021) - знаниевая дистилляция с CNN-учителем, обучение на ImageNet-1k без JFT. Swin Transformer (Microsoft, 2021) - shifted window attention, иерархические признаки (как в ResNet), линейная сложность по разрешению. Именно Swin стал основой для object detection и segmentation задач в трансформерную эпоху.
Трансформеры всегда лучше CNN для задач Computer Vision
ViT превосходит CNN при предобучении на сотнях миллионов изображений. При датасетах до 10M изображений ConvNeXt и EfficientNet остаются конкурентными или лучше - они используют встроенные индуктивные смещения, которые трансформеру нужно выучить из данных
DeiT (2021) показал: ViT-B без JFT-300M уступает EfficientNet-B7 на ImageNet-1k. Swin частично решил проблему иерархией и локальными окнами, но для специализированных датасетов (медицина, промышленность) с <100K изображений CNN всё ещё часто выигрывают
Почему ViT требует намного больше обучающих данных, чем ResNet, для достижения сравнимой точности?
Ключевые идеи
- **EfficientNet**: compound scaling (глубина + ширина + разрешение одновременно) + MBConv с SE-вниманием = лучший accuracy/FLOPS trade-off на момент выхода
- **MobileNet**: depthwise separable convolution сокращает FLOPS в 8-9 раз при K=3; NAS нашёл Hard Swish и оптимальные блоки для Neural Engine
- **ConvNeXt**: CNN с trансформерными деталями (7x7 dw, LayerNorm, GELU, inverted bottleneck) бьёт ViT на большинстве benchmarks без quadratic attention
- **ViT**: патчи вместо пикселей, self-attention вместо свёрток - выигрывает при 100M+ изображений; Swin добавил иерархию и линейную сложность
Связанные темы
Темы, на которых строятся или которые расширяют современные архитектуры:
- CNN Architectures: от LeNet до ResNet — EfficientNet, MobileNet и ConvNeXt строятся на принципах ResNet: residual connections, bottleneck блоки, BatchNorm
- Deep Learning: трансформеры — ViT и Swin используют стандартный transformer encoder из dl-05 - attention, positional embeddings, LayerNorm
- Оценка моделей ML — Выбор архитектуры зависит от метрик из ml-05: accuracy/latency/memory trade-off на конкретном железе
Вопросы для размышления
- ConvNeXt скопировал engineering детали из Transformer (LayerNorm, GELU, 7x7 окно) и обогнал ViT. Что это говорит о природе преимущества трансформеров - в attention механизме или в engineering деталях?
- MobileNet разработан NAS-ом, а не инженерами вручную. Если NAS находит лучшие архитектуры - зачем изучать принципы дизайна (compound scaling, depthwise separable)?
- ViT требует 300M изображений для преимущества над CNN, но ConvNeXt конкурентен уже на 1M. Как это меняет выбор архитектуры для медицинской диагностики с 10,000 размеченных снимков?