Назад
214

Эволюция свёрточных нейросетей на раз, два, три

214

🔸 2012 год: AlexNet

Справка

До 2012 года в CV доминировали классические методы машинного обучения на базе ручных признаков (например, HOG, SIFT, SURF) и классических неглубоких моделей (SVM, Random Forest). Свёрточные нейросети (CNN), известные ещё с 90-х (LeNet-5), считались тяжёлыми для обучения на больших изображениях и показывали слабые результаты на сложных датасетах.

AlexNet — архитектура, которая показала преимущество глубокого обучения признаков на ImageNet / ILSVRC.

Архитектура

AlexNet — глубокая свёрточная нейросеть (CNN) из:

  • 5 свёрточных слоёв (Convolutional Layers) для извлечения признаков;
  • 3 полносвязных слоёв (Fully-Connected Layers) для классификации.

Архитектура в деталях (в оригинальной реализации на двух GPU — GTX 580 с 3GB памяти каждая):

Детальная конфигурация

  1. Conv1: в статье сеть обучалась на случайных кропах 224×224, вырезанных из изображений, предварительно приведённых к 256×256, а в популярных реализациях AlexNet часто встречается вход 227×227, что связано с техническими деталями расчёта размера карт признаков после первой свёртки 11×11 со stride 4;
  2. Conv2: Фильтры 5×5, шаг (stride) 1;
  3. Conv3, Conv4, Conv5: Фильтры 3×3, шаг (stride) 1. Слой Conv3 соединён со всеми выходами Conv2, слои 3, 4 и 5 следуют подряд без пулинга;
  4. FC6, FC7: по 4096 нейронов;
  5. FC8 (Output): softmax на 1000 классов ImageNet.

Количество параметров сети

~60 миллионов.

Ключевые технические решения

Успех AlexNet за счёт глубины и комбинации инженерных решений, получивших широкое распространение.

Функция активации ReLU (Rectified Linear Unit):

  • Формула: f(x) = max(0, x);

  • Цель: Замена «стандартных» на тот момент Tanh и Sigmoid;

  • Результат: Уменьшалась проблема насыщения (saturation), характерная для saturating nonlinearities. У классических функций (Tanh, Sigmoid) при больших входных значениях производная стремится к нулю, что останавливает обучение. Функция ReLU оказалась полезной: на графике видно, что сеть с ReLU достигает целевой ошибки на датасете CIFAR-10 в 6 раз быстрее, чем аналогичная сеть с Tanh.

Обучение на нескольких GPU:

  • Контекст: памяти одной видеокарты GTX 580 (3 ГБ) не хватает для такой большой сети;
  • Решение: авторы реализовали параллельное обучение на двух GPU. Сеть разделена на два потока, а обмен данными (коммуникация) происходит только на определенных слоях (Conv3, FC6, FC7, FC8). Это позволило увеличить количество фильтров и глубину сети.

Overlapping Max Pooling (Пулинг с перекрытием):

  • Контекст: отличие от традиционного пулинга (где шаг равен размеру окна), здесь использовалось окно 3×3 с шагом 2;
  • Решение: перекрываются, что снижает top-1 и top-5 error на 0.4% и 0.3% соответственно, также такие модели труднее переобучить.

LRN (Local Response Normalization):

  • Схема работы: нормализация происходит не по пространству картинки (соседним пикселям), а «вглубь» — по каналам в одной конкретной пространственной координате.
  • Суть механизма: вдохновлён нейробиологическим принципом «латерального торможения». Если один из свёрточных фильтров выдаёт очень сильный отклик (например, нашёл очень яркую границу), алгоритм математически подавляет (штрафует) отклики остальных фильтров в этой же точке. Это заставляет разные фильтры учить более разнообразные признаки, а не реагировать на один и тот же яркий кусок изображения;
  • Примечание: В AlexNet LRN дала небольшой прирост качества. Авторы указывают снижение top-1 и top-5 error на 1.4% и 1.2% соответственно. Но уже в VGG они отказались от LRN, которая не улучшала качество на их архитектурах и увеличивала вычислительную стоимость. В более поздних архитектурах, как ResNet, роль стабилизации обучения во многом перешла к Batch Normalization.

Борьба с переобучением

60 миллионов параметров сети создаёт существенный риск переобучения. Для борьбы с ним использовались два метода.

Dropout:

  • Справка: применялся в первых двух полносвязных слоях (вероятность 0.5);
  • Схема работы: нейроны случайным образом «выключаются» при каждой итерации обучения. Это вынуждает сеть выучивать более надёжные, избыточные признаки, не полагаясь на конкретные нейроны.

Аугментация данных (Data Augmentation): Данные аугментировались «на лету» на CPU, пока GPU обучал сеть. Это позволило увеличить обучающую выборку.

  • Геометрические данные: случайные кропы 224×224 из 256×256 и горизонтальные отражения;

  • Цветовые (PCA Color Augmentation): авторы проанализировали значения всех пикселей в обучающей выборке ImageNet и вычислили главные компоненты (основные оси изменения цвета). В процессе обучения они добавляли к пикселям картинок небольшие случайные значения вдоль этих осей. Алгоритм слегка сдвигал баланс белого и интенсивность освещения на изображениях. Это позволило сделать сеть невосприимчивой к изменениям цвета и освещения объекта.

Результаты

Соревнование ILSVRC-2012

Для оценки качества моделей на соревновании ImageNet используется метрика Top-5 Error: алгоритм выдаёт 5 наиболее вероятных классов для изображения. Если есть правильный класс — ответ считается верным. Ошибка — в случае, если правильного ответа нет ни в одном из 5 вариантов.

Сравнительная таблица результатов (по данным статьи):

Рисунок 4. В ILSVRC-2012 ансамбль из 7 CNN дал 15.3% top-5 error на test set против 26.2% у второго места. AlexNet показала, что глубокие свёрточные сети (CNN) применимы для сложных задач CV, а не только для распознания цифр (MNIST)

Сложности

AlexNet столкнулась с рядом вызовов, характерных для 2012 года.

  • Огромное число параметров (~60 млн):
    • Такое количество весов приводило к риску переобучения (overfitting);
    • Именно поэтому авторам пришлось внедрять регуляризацию (Dropout 0.5) и аугментацию данных, без которых сеть просто «запоминала» обучающую выборку и не училась обобщать.
  • Вычислительные ограничения и время обучения:
    • Обучение заняло 5-6 дней на двух видеокартах GTX 580 (3GB);
    • Авторы использовали свою GPU-реализацию и распространяли код / parameter files через cuda-convnet
  • Важность глубины (Ablation Study):
    • В статье авторы провели эксперимент: «Что будет, если убрать один свёрточный слой?»
    • Результат: Удаление любого свёрточного слоя приводило к ухудшению качества. Это подтвердило гипотезу — именно глубина сети (deep architecture) критически важна для извлечения иерархии сложных признаков.

Практические инсайты

AlexNet не изобрела все компоненты с нуля, но именно она задала тренд на их совместное использование.

  • Смена парадигмы: фокус исследований сместился от классических методов (SVM, HOG, SIFT) к решению задач компьютерного зрения с помощью CNN;
  • Стандартизация архитектурных блоков:
    • ReLU вместо Tanh / Sigmoid: теперь стандарт для глубоких сетей, позволяющий преодолевать проблему насыщения и значительно ускорять сходимость сетей на этапе обучения;
    • Dropout и аугментация: обязательные практики для регуляризации больших моделей. До AlexNet они существовали, но именно здесь была показана их критическая необходимость для обучения глубоких архитектур на больших данных.

Актуальность AlexNet сегодня

Сегодня AlexNet практически не используется в продакшене (её заменили ResNet, EfficientNet, Vision Transformers), так как она вычислительно избыточна для своей точности 🙁

🔸 2014 год: VGGNet

Справка

После успеха AlexNet в 2012 году сообщество машинного обучения и CV начало активно экспериментировать с глубиной CNN-архитектур. В своей статье авторы VGG поставили цель — изучить, как именно глубина сети влияет на точность классификации при фиксированном размере рецептивного поля.

Авторы VGG пошли по строгой последовательности блоков. Несмотря на простую концепцию, подходы VGGNet заложили основу для многих последующих исследований.

Команда заняла 1-е место в localisation и 2-е место в classification на ILSVRC-2014.

Архитектура

  1. Использование свёрток 3×3 (Receptive Field): минимально возможные фильтры, способные захватывать простейшие признаки. Stride = 1, Padding = 1 (размер картинки не меняется после свёртки). Это один из главных выводов статьи. Авторы эмпирически показали пользу глубоких стеков из маленьких 3×3 свёрток, а математически объяснили через receptive field и количество параметров.
    • Поле восприятия: стек из трёх свёрток 3×3 имеет такое же эффективное поле восприятия (receptive field), как одна свёртка 7×7;
    • Почему 3×3 лучше?
      • Больше нелинейности: вместо одной функции активации (как в случае с фильтром 7×7), сигнал проходит через три ReLU (после каждой свёртки 3×3). Это позволяет сети извлекать более сложные и нелинейные зависимости из данных;
      • Меньше параметров: предположим, что вход и выход имеют одинаковое число каналов C.
        Количество параметров для одного слоя 7×7:
        \(1 * (7^2 * C^2) = 49C^2\)
        Количество параметров для трёх слоёв 3×3:
        \(3 * (3^2 * C^2) = 27C^2\)
        Итог: Использование трёх слоёв 3×3 снижает количество параметров на 44%, сохраняя идентичное поле восприятия (7×7 пикселей).
  2. Свёртки 1×1: в конфигурации C из статьи авторы добавляли 1×1 свёртки, чтобы увеличить нелинейность без изменения рецептивного поля. Важно отметить: это не та стандартная VGG-16, которую чаще всего используют на практике; классическая VGG-16 обычно соответствует configuration D.

Авторы показали — добавление слоёв свёртки 1×1 (между обычными слоями) позволяет увеличить нелинейность сети и улучшить точность, практически не увеличивая вычислительную нагрузку. Это линейное преобразование каналов, за которым следует функция активации ReLU. В статье авторы сравнили две сети глубиной 13 слоёв (конфигурации «B» и «C» из оригинальной таблицы 2):

КонфигурацияНаличие 1×1Top-1 ErrorTop-5 Error
Config BНет28.7%9.9%
Config CЕсть28.1%9.4%
Config DНет27.0%8.8%

Мы видим, что конфигурация «C» превосходит «B», однако «D» превосходит «C». Следовательно, дополнительная нелинейность 1×1 полезна, но последовательные 3×3-свёртки дают более качественный результат.

  1. Max Pooling 2×2: Stride 2. Уменьшает пространственную размерность (ширину и высоту) карт признаков ровно в два раза;
  2. Активация: ReLU используется после каждого свёрточного слоя (вместо применявшихся ранее классических Tanh или Sigmoid);
  3. Отказ от Local Response Normalization (LRN): в AlexNet использовалась LRN-нормализация, но авторы VGG отдельно проверили её влияние и пришли к выводу — она не улучшает качество на их архитектурах, зато увеличивает потребление памяти и вычислительную стоимость. Поэтому в VGGNet LRN не используется. Важно отметить: в оригинальной VGG ещё нет Batch Normalization — BatchNorm станет стандартным элементом уже в более поздних архитектурах, например, в ResNet.

Из-за важности инициализации авторы сначала обучали конфигурацию «А», а затем использовали её веса для инициализации первых 4 conv и последних 3 FC слоёв более глубоких сетей.

Сравнение популярных конфигураций

Авторы представили несколько версий VGG, но наиболее известными стали VGG-16 и VGG-19 — конфигурации «D» и «Е» из оригинальной статьи.

МодельКонфигурация в статьеКол-во слоёв (Conv + FC)Параметры (млн)Top-5 Error на ImageNet val
VGG-16Config D13 Conv + 3 FC = 16~138 млн7.2%
VGG-19Config E16 Conv + 3 FC = 19~144 млн7.1%

Протокол оценки: эти значения соответствуют лучшему single-model результату валидации при multi-crop + dense evaluation на трёх масштабах. Если использовать только dense evaluation на трёх масштабах, обе модели дают около 7.5% Top-5 Error на validation set.

Главный вывод авторов: переход от 16 к 19 слоям даёт небольшой прирост. Поэтому VGG-16 стала особенно популярной на практике: она почти не уступает VGG-19 по качеству, но немного легче.

VGG-16

Результаты соревнования ILSVRC-2014

Модель (Команда)Top-5 Error на test setПодход
GoogLeNet (Google)6.7%22 слоя, Inception-модули с параллельными ветками
VGGNet (Oxford)7.3%16-19 слоёв, строго последовательная архитектура из маленьких 3×3 свёрток

Здесь речь уже не о validation set из таблицы выше, а об официальном результате соревнования ILSVRC-2014 на test set. Команда VGG заняла 2-е место в classification и 1-е место в localisation. При этом в исследовательском сообществе, несмотря на победу GoogLeNet, VGG стала более популярным базовым решением благодаря линейной и легко воспроизводимой структуре.

Сложности

  • Большое количество параметров:
    • У VGG-16 138 млн параметров (у победителя того года GoogLeNet — всего 7 млн, а у современного ResNet-50 — около 25 млн);
    • Значительная доля из них (около 120 млн) приходится на три первых полносвязных слоя (FC).
  • Вычислительная сложность: модель «требует» ресурсов. Например, только веса модели VGG-16 занимают около 528 МБ в памяти (формат float32), а веса, например, GoogLeNet — около 28 МБ.
  • Ограничения при увеличении глубины: ошибка снижается при увеличении глубины до 19 весовых слоёв, после чего эффект насыщается; при этом они более глубокие модели могут быть полезны на крупных датасетах. Эта фундаментальная проблема прямой архитектуры (plain architecture) стала пределом для VGG, который через год обошли авторы ResNet с помощью skip-connections.

Актуальность VGGNet

Для задач классификации VGG сейчас используется редко (слишком тяжёлая). Однако она нашла своё место применения в других областях:

  • Feature Extractor (извлечение признаков): VGG извлекает детализированные карты признаков на разных пространственных уровнях. Исторически она стала стандартной «замороженной» основой для первых версий алгоритмов детекции объектов (например, в оригинальной архитектуре SSD300).
  • Perceptual Loss / Content Loss (GAN и Style Transfer):
    • В задачах генерации изображений стандартная метрика MSE (Mean Squared Error) сравнивает картинки попиксельно. Это приводит к усреднению значений пикселей и потере высокочастотных деталей — изображения получаются размытыми;
    • Вместо сравнения пикселей оригинальное и сгенерированное изображения пропускаются через предобученную сеть VGG. Метрика ошибки вычисляется между картами признаков, извлечёнными из внутренних слоёв VGG. Это заставляет генератор сохранять структуру, границы и текстуры объектов, а не просто угадывать точный цвет пикселя.

🔸 2015 год: ResNet

  • Создатели: Microsoft Research (Kaiming He, Xiangyu Zhang, Shaoqing Ren, Jian Sun)
  • Оригинальная статья: «Deep Residual Learning for Image Recognition” — CVPR 2016 (представлено в декабре 2015, опубликовано в 2016)

Проблема деградации (Degradation Problem)

  • В теории: увеличение глубины сети должно снижать ошибку (ведь глубокая сеть всегда может скопировать результат более мелкой, просто выучив тождественное преобразование на дополнительных слоях);
  • На практике: графики обучения из статьи показали обратное. При простом добавлении слоёв (Plain Networks) ошибка на обучающей и тестовой выборках начинала расти. Это не было следствием переобучения (overfitting), так как ошибка росла и на тренировочном датасете. Авторы сделали вывод — традиционным сетям (без дополнительных связей) крайне сложно оптимизироваться при увеличении глубины.

Архитектура

Ключевое нововведениеResidual Block (остаточный блок) со Skip Connection.

Главная идея здесь — обучать остаточное отображение F(x) при наличии shortcut connection. Для этого ввели прямую связь (skip connection), которая передаёт входной сигнал x в конец блока без изменений.

Внутри блока слои учат не итоговое представление, а «остаток» (разницу между входом и нужным выходом):

\(F(x) = H(x) — x\)

Итоговый выход:

\(y = F(x) + x\)

Математика процесса

  • Обозначим желаемое отображение как H(x);
  • Введём Skip Connection (прямую связь), которая передаёт x дальше без изменений;
  • Слои внутри блока теперь учат функцию F(x) = H(x) − x;
  • Итоговый выход блока: y = F(x) + x;
  • F(x) — само преобразование (несколько свёрток + активаций);
  • x — исходный вход (identity mapping, shortcut-connection).

Причины решения проблемы

  1. Динамическая глубина: если блок не нужен, сети достаточно выучить преобразование, близкое к нулевому остатку, и тогда выход блока будет близок к identity mapping;
  2. Сглаживание ландшафта функции потерь: исследования (Li et al., 2018) показали, как skip connections не делают задачу «выпуклой» в строгом математическом смысле, но эмпирически упрощают оптимизацию. В визуализациях loss landscape residual-сети выглядят более гладкими и менее «рваными», чем plain networks. Это упрощает поиск хорошего решения при обучении очень глубоких сетей.
  1. Прохождение градиента: при обратном распространении ошибки (backpropagation) производная суммы \(y = F(x) + x\) даёт \((1 + \dfrac{dF}{dx})\). Shortcut connections улучшают прохождение сигнала и заметно упрощают оптимизацию глубоких сетей; в статье основная проблема — degradation problem, а не классическое vanishing gradients;
  2. Batch Normalization (BN): ResNet активно использует BN после каждой свёртки и перед активацией. Это стало стандартом!

В статье представлены варианты от 18 до 152 слоев. Для глубоких сетей (50+) структура блока меняется для экономии ресурсов.

Типы блоков

Basic Block (ResNet-18/34):

  • Conv(3×3) → BN → ReLU → Conv(3×3) → BN →+ x → ReLU
  • Слева — обычный блок, а справа —residual:

Bottleneck Block (ResNet-50/101/152):

  • Bottleneck («бутылочное горлышко»): 1×1 (сжатие размерности) → 3×3 (основная свёртка) → 1×1 (восстановление размерности);
  • пример: вход 256 каналов. Сжимаем до 64 (Conv 1×1), делаем дорогую свёртку 3×3 на 64 каналах, разжимаем обратно до 256 (Conv 1×1);
  • выгода: позволяет строить очень глубокие сети, удерживая количество параметров в разумных пределах;
  • слева — стандартный проход, справа — с использованием Conv 1×1 для сопоставления размерностей.

Сводная таблица (ImageNet)

Производительность: ResNet-152 (11.3 млрд FLOPs) имеет меньшую вычислительную сложность, чем VGG-16/19 (15.3/19.6 млрд FLOPs).

Пример архитектуры (Resnet-18):

Сложности

  • Пиковое потребление памяти активациями: минус ResNet — при росте глубины увеличиваются память под активации и стоимость обучения. Сами skip connections обычно бюджетные, но глубокая сеть требует больше памяти, а projection shortcuts добавляют параметры и вычисления;
  • Предел глубины (1000+ слоев): авторы пробовали обучить ResNet-1202. Она показала результат хуже, чем ResNet-110. Причина в переобучении (Overfitting). При слишком большой глубине на маленьком датасете (CIFAR-10) сеть начинает переобучаться, несмотря на residual blocks.
МодельГлубина (слои)Ошибка (Error)
ResNet-1101106.43%
ResNet-120212027.93%

В сообществе активно обсуждалось, действительно ли ResNet учится полезному в глубине или просто успешно оптимизирует близкие к identity функции, фактически «обходя» глубокие слои.

Некоторые исследователи отмечали, что при изучении идеи residual-блоков возникало ощущение: «оно не должно работать так просто». Однако практика показала эффективность подхода, несмотря на неинтуитивность идеи на первый взгляд.

Актуальность ResNet

  • Надёжный старт: сегодня архитектуры семейства ResNet остаются базовым решением для старта работы над задачами CV. Конкретная версия (ResNet-18, 34, 50) выбирается исходя из вычислительных ограничений проекта;
  • Фундаментальность идеи: skip connections (или его прямые вариации) — база практически для всех последующих знаковых архитектур как в компьютерном зрении, так и в глубоком обучении в целом.

🔸2017-2019 годы: MobileNet (версии v1, v2, v3)

  • Создатели: Google Research (A. Howard, M. Sandler, et al.)
Версии и развитие идеи

🔸 MobileNet v1 (2017)

Проблема

К 2017 году глубокие сети (VGG, ResNet) достигли высокой точности, но их инференс на мобильных устройствах был затруднён из-за высоких требований к памяти и вычислительной мощности. Существующие легковесные архитектуры (например, SqueezeNet) фокусировались в первую очередь на сокращении количества параметров, но на практике оставались недостаточно быстрыми. MobileNet v1 разрабатывалась специально для решения этой задачи: обеспечить эффективный инференс (низкую задержку) на мобильных и встраиваемых устройствах при сохранении высокой точности распознавания.

Архитектура

Ключевой строительный блок архитектуры — Depthwise Separable Convolution.

Стандартная свёртка выполняет две задачи одновременно: фильтрует пространственные признаки и комбинирует каналы. Авторы MobileNet разделили этот процесс на два независимых этапа:

  1. Filtering (фильтрация): Depthwise-свёртка применяет один фильтр (обычно 3×3) к каждому входному каналу по отдельности, не смешивая их;
  2. Combine (комбинирование): Pointwise-свёртка (1×1) линейно комбинирует выходы depthwise-слоя для создания новых признаков:

Разделение на два этапа даёт существенный выигрыш в вычислениях. Отношение вычислительной сложности такой свёртки к стандартной выражается строгой формулой:

\(\frac{D_K * D_K * M * D_F * D_F + M * N * D_F * D_F}{D_K * D_K * M * N * D_F * D_F} = \frac{1}{N} + \frac{1}{D^2_K}\)

где \(D_K\) — пространственный размер ядра (обычно — 3), M — число входных каналов, N — число выходных каналов, \(D_F\)— пространственный размер карты признаков.

При использовании стандартного ядра 3×3 (\(D_K\) = 3) и достаточно большом количестве выходных каналов N (когда слагаемое 1 / N стремится к нулю), это математически сокращает количество вычислений в 8-9 раз по сравнению со стандартной свёрткой.

Для вычисления обычной свёртки с помощью быстрого матричного умножения (GEMM) данные необходимо перегруппировать в памяти с дублированием значений (операция im2col). Это создаёт оверхед по памяти и времени. Однако свёртки 1×1 (которые составляют основу Pointwise) не требуют im2col и вычисляются напрямую высокооптимизированными алгоритмами GEMM. В MobileNet v1 около 75% параметров и 95% времени вычислений (Mult-Adds) приходятся именно на эти быстрые 1×1 pointwise-свёртки, что обеспечивает реальное ускорение на устройстве, а не только «на бумаге».

Архитектура строится из начальной стандартной свёртки, за которой следуют блоки depthwise separable свёрток.

Для адаптации сети под конкретные ограничения устройства (память или процессор) авторы ввели два гиперпараметра:

  • Коэффициент ширины α (Width Multiplier): равномерно уменьшает количество каналов на каждом слое. В статье используются стандартные значения: 1.0, 0.75, 0.5 и 0.25. Вычислительная сложность и количество параметров падают квадратично (примерно на \(α^2\));
  • Коэффициент разрешения ρ (Resolution Multiplier): задаёт размер входного изображения. В статье используются разрешения: 224, 192, 160 и 128. Вычислительная сложность падает пропорционально \(ρ^2\).

Эти параметры позволяют инженерам регулировать размер сети под конкретную задачу. Официальные цифры из оригинальной статьи подтверждают гибкость:

  • MobileNet (1.0, 224×224): 569 млн Mult-Adds, точность Top-1: 70.6%;
  • MobileNet (0.5, 160×160): 76 млн Mult-Adds, точность Top-1: 60.2%

Достижение поставленной цели

  • Авторам удалось успешно решить задачу инференса на мобильных устройствах. Согласно таблице 8 из статьи, MobileNet v1 показала точность, сопоставимую с популярной и тяжёлой VGG-16 (70.6% против 71.5% на ImageNet). При этом модель Google в 32 раза меньше по количеству параметров (4.2 млн против 138 млн) и требовала в 27 раз меньше вычислений (569 млн Mult-Adds против 15.3 млрд). Это позволило запускать глубокие нейросети на смартфонах без критической просадки в качестве;
  • MobileNetV1 может использоваться как основа для других прикладных задач, но в рамках этого выпуска важно другое: компактная CNN сохраняет приемлемую точность ImageNet-классификации при резком снижении числа параметров и операций.

Архитектурные ограничения

  1. Проблема ReLU в узких слоях: использование нелинейности ReLU после слоёв с небольшим числом каналов приводит к безвозвратной потере информации. ReLU обнуляет отрицательные значения, и если размерность (число каналов) невелика, это разрушает полезное многообразие признаков (manifold of interest). Позже авторы подробно разберут это в статье про MobileNet v2;
  2. Потеря информации: особенности обучения (и применения ReLU без skip connections) могут приводить к потере полезной информации. Поэтому в MobileNetV2 авторы убрали нелинейность на выходе узкого слоя и ввели linear bottlenecks. Обе проблемы будут решены в следующей версии архитектуры.

🔸 MobileNet v2 (2018)

Мотивация и предпосылки (Manifold Collapse)

Авторы статьи исследовали, как нейросеть преобразует данные. Изображения формируют внутри сети так называемое «многообразие интересов» (manifold of interest). Авторы показывают следующее:

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

Вывод: сжатая информация (bottleneck) должна передаваться без нелинейности. А применять ReLU безопасно только после искусственного расширения @ числа каналов.

Архитектура

Inverted Residual Block В отличие от классического блока ResNet, который сжимает данные, делает свёртку и затем расширяет, в MobileNetV2 логика «перевёрнута»:

  • Expansion (расширение): входной узкий слой расширяется свёрткой 1×1 в t раз (обычно t=6). Здесь применяется ReLU6;
  • Depthwise: в этом широком пространстве применяется ресурсоэффективная пространственная свёртка 3×3 (с ReLU6);
  • Projection (проекция): широкий тензор сжимается обратно в узкий с помощью свёртки 1×1.

Вычисления производятся в безопасном широком пространстве, а между блоками передаются компактные (узкие) данные, что сильно экономит оперативную память устройства.

Использование ReLU6: функция \(y = min(max(0,x),6)\) используется для лучшей совместимости с низкобитным инференсом (наследие из предыдущих мобильных архитектур).

Linear Bottlenecks Следуя выводам о потере информации (manifold collapse), авторы убрали нелинейность (ReLU) в конце каждого блока. Последняя свёртка 1×1 (Projection), которая сжимает количество каналов, является строго линейной. Это позволяет передавать компактное представление признаков в следующий блок без искажений и потерь — они возникли бы при использовании ReLU на узком тензоре.

Skip-connections между узкими слоями Shortcut (прямая связь) добавляется только между линейными bottleneck-слоями (если совпадают размерности). Это гарантирует, что само «многообразие» (полезная информация) передаётся по сети напрямую, а расширенные блоки (expansion) вычисляют сложные нелинейные преобразования над этим многообразием.

Вход (Input)Операция (Operator)Коэфф. расширения (t)Каналы (c)Повторения (n)Stride (s)
224x224x3conv2d3212
112x112x32bottleneck11611
112x112x16bottleneck62422
56x56x24bottleneck63232
28x28x32bottleneck66442
14x14x64bottleneck69631
14x14x96bottleneck616032
7x7x160bottleneck632011
7x7x320conv2d 1×1128011
7x7x1280avgpool 7×71
1x1x1280conv2d 1×1k

Хотя MobileNetV2 также активно использовалась как базовая модель для детекции и сегментации, в этой статье мы остаёмся в рамках классификационных CNN. Для нашей линии эволюции важнее другое: MobileNetV2 показала, что inverted residuals и linear bottlenecks позволяют улучшить баланс accuracy / parameters / MACs, по сравнению с MobileNetV1.

Итоги
Преимущество новой архитектуры видно в прямом сравнении на датасете ImageNet (разрешение 224):

  • MobileNetV1: точность 70.6% при 569 млн MACs и 4.2 млн параметров;
  • MobileNetV2: точность 72.0% при 300 млн MACs и 3.4 млн параметров. Модель Top-1 Accuracy Количество параметров Multiply-Adds (MACs) CPU Latency (Google Pixel 1) MobileNetV1 70.6% 4.2 млн 569 млн 113 ms MobileNetV2 72.0% 3.4 млн 300 млн 75 ms

Архитектура V2 превзошла предшественника по точности, сократив количество вычислительных операций почти в два раза!

Архитектурные ограничения

Интенсивное использование skip-connections и дробление операций на большое количество мелких слоёв (расширение, глубинная свёртка, проекция) увеличивает Memory Access Cost (затраты на чтение / запись в памяти). Авторы отмечают, что на некоторых устройствах реальная скорость может не падать прямо пропорционально количеству MACs именно из-за издержек на обращение к памяти.

Практические инсайты

Предложенный в статье паттерн «Inverted Residual + Linear Bottleneck» получил в последующей литературе устоявшееся название MBConv (MobileNet Block). Он стал одним из ключевых строительных блоков эффективных CNN и лёг в основу MnasNet и EfficientNet.

🔸 MobileNet v3 (2019)

Мотивация и подход к разработке

Опыт предыдущих версий показал — ручной дизайн архитектур достигает своего предела. Кроме того, оптимизация только количества операций (FLOPs/MACs) не всегда линейно коррелирует с реальной скоростью инференса на устройстве, так как не учитывает затраты на доступ к памяти (Memory Access Cost) и специфику конвейеров мобильных процессоров.

В MobileNetV3 авторы полностью сменили парадигму: вместо ручного конструирования блоков они применили автоматизированный поиск архитектуры (NAS), оптимизируя сеть под метрики конкретного мобильного процессора.

Архитектура

Автоматизированный поиск (Hardware-aware NAS + NetAdapt):
архитектура получена путем последовательного применения двух алгоритмов поиска.

  1. Platform-aware NAS: ищет глобальную структуру сети (макроархитектуру) — оптимальное количество блоков, их типы и размеры ядер свёрток, используя RNN-контроллер. Оптимизация идёт на основе реальной задержки на телефоне Google Pixel;
  2. NetAdapt: алгоритм локальной оптимизации (микроархитектуры). Он пошагово урезает количество каналов в отдельных слоях. Если урезание канала снижает задержку без существенного падения точности, изменение сохраняется.

Обновлённый Inverted Residual Block с Squeeze-and-Excitation: в основе блок из v2, но с интеграцией механизма Squeeze-and-Excitation (SE).

  • Особенность: SE-модуль не после блока, а внутри residual-слоя, применяемый к расширенным картам признаков (после depthwise свёртки);
  • Оптимизация SE: для ускорения вычислений внутри модуля SE размерность скрытого слоя была зафиксирована на 1/4 от числа каналов расширения.

Новые функции активации: hard-swish (h-swish) и hard-sigmoid: функция swish \((x * σ(x))\) даёт прирост точности, но вычисление классической сигмоиды (σ) крайне ресурсоёмко на мобильных устройствах. Авторы заменили её на кусочно-линейную аппроксимацию.

\(h-swish(x) = x * \dfrac{ReLU6(x + 3)}{6}\)

Аналогично для SE-модулей была введена:

\(h-sigmoid(x) = \dfrac{ReLU6(x + 3)}{6}\)

Почему это важно: Использование ReLU6 хорошо поддерживается мобильными фреймворками, а деление на 6 можно реализовать как умножение на константу или часть оптимизированного fused-оператора. Поэтому h-swish и h-sigmoid значительно дешевле для мобильного инференса, чем полноценные Swish и Sigmoid.

Оптимизация вычислительно дорогих слоёв (Redesigning Expensive Layers): последние слои сети (до и после Global Average Pooling) занимают непропорционально много времени.

  • Решение: авторы перенесли слой проекции и финальные вычисления после операции Global Average Pooling (GAP);
  • Результат: финальные свёртки 1×1 применяются к тензору размером 1×1 (вместо 7×7). Согласно статье, только это архитектурное изменение сократило общую задержку на 7 миллисекунд (около 11% от всего времени инференса) без потери точности!

Архитектуры и результаты

В результате поиска были представлены две базовые версии.

Важно отметить: latency-цифры для MobileNetV2 в статьях MobileNetV2 и MobileNetV3 могут немного отличаться, потому что измерялись в разных экспериментальных сетапах и версиях runtime. Поэтому внутри блока MobileNetV3 мы сравниваем модели именно по таблице из статьи MobileNetV3: в этом протоколе MobileNetV2 1.0 имеет реальную задержку 64 ms, а MobileNetV3-Large — 51 ms на Pixel 1.

АрхитектураTop-1 AccuracyParamsMultiply-Adds (MAdd)Latency (Pixel 1)
MobileNetV2 1.072.0%3.4M300M64 ms
MobileNetV3-Small67.4%2.5M56M15.8 ms
MobileNetV3-Large75.2%5.4M219M51 ms

Итак, MobileNetV3-Large превосходит V2 по точности на 3.2%, при этом работает на 20% быстрее (по задержке на устройстве).

Хотя MobileNetV3 также применялась как базовая модель для детекции и сегментации, в этой статье мы остаёмся в рамках классификационных CNN. Для нашей линии эволюции важнее другое: MobileNetV3 показала переход от простого уменьшения FLOPs к более практичной оптимизации под реальную мобильную задержку. Архитектура сочетает platform-aware NAS, NetAdapt, squeeze-and-excitation, Hard-Swish / Hard-Sigmoid и переработанные последние слои классификатора, чтобы улучшить баланс между точностью, размером модели и скоростью на мобильных CPU.

Ключевые достижения архитектуры

  • Переход от оптимизации косвенных метрик (FLOPs) к прямой оптимизации задержки на целевом оборудовании (Hardware-aware NAS);
  • Эффективное использование кусочно-линейных аппроксимаций (h-swish, h-sigmoid) для ускорения инференса и подготовки модели к int-квантованию;
  • Комбинирование машинного поиска (NAS) и ручных инсайтов инженеров (редизайн «хвоста» сети) дало прирост производительности.

Архитектурные ограничения

  • Аппаратная специфичность: так как NAS оптимизировал модель на основе реальных замеров задержки конкретных процессоров (Snapdragon на Google Pixel), её преимущество может быть менее выраженным при переносе на другое железо или инференс-движок;
  • Утрата однородности (Heterogeneity): в отличие от MobileNetV1 и V2, которые строились из повторения одинаковых блоков, архитектура V3 крайне неоднородна. Сеть чередует ядра 3×3 и 5×5, включает или выключает SE-блоки и меняет функции активации (h-swish или ReLU) от слоя к слою;
  • Усложнение инференс-движков: поддержка «зоопарка» разных операций внутри одной сети требует более сложной реализации на стороне фреймворков для вывода на устройстве, чтобы эффективно утилизировать кэш и регистры процессора.

Практические инсайты

  • Синтез лучших практик: MobileNetV3 не просто предложила новый слой, а успешно объединила и оптимизировала главные архитектурные находки предыдущих лет — Inverted Residuals (из V2), платформозависимый NAS (из MnasNet, 2018) и механизм внимания Squeeze-and-Excitation (из SENet, 2017), адаптировав последний под мобильные ограничения;
  • Адаптация под квантование: переход от классических нелинейностей к кусочно-линейным функциям (h-swish, h-sigmoid) показал, что модели могут сохранять высокую выразительную способность, оставаясь при этом дружелюбными к целочисленному квантованию (int8);
  • Влияние на индустрию: парадигма проектирования MobileNetV3 («сначала задаём пространство поиска из эффективных блоков, затем ищем архитектуру под конкретный бюджет железа») окончательно закрепилась в индустрии и в том же 2019 году легла в основу другого знаменитого семейства сетей — EfficientNet (которое также использует базовый паттерн MBConv + SE).

Эволюция архитектур MobileNet

  • MobileNetV1 (2017): базовая алгоритмическая оптимизация. Замена стандартных свёрток на глубинно-разделимые (Depthwise Separable Convolutions) и введение гиперпараметров масштабирования (width и resolution multipliers). Это позволило кратно снизить количество вычислений (FLOPs) и параметров;
  • MobileNetV2 (2018): архитектурная оптимизация и борьба с потерей информации. Решение проблемы коллапса многообразия (manifold collapse) за счёт введения перевёрнутых остаточных блоков (Inverted Residuals) и отказа от нелинейностей в узких слоях (Linear Bottlenecks). Результат: рост точности и снижение нагрузки на память (Memory Access Cost);
  • MobileNetV3 (2019): аппаратно-ориентированная оптимизация. Переход от ручного дизайна к автоматизированному поиску (Hardware-aware NAS + NetAdapt) с прямой минимизацией задержки на целевых процессорах. Адаптация механизма внимания (SE) и введение вычислительно дешёвых функций активации (h-swish, h-sigmoid) для эффективного квантования (int8).

Значение для индустрии

  1. Семейство MobileNet стандартизировало подход к разработке легковесных нейросетей. Предложенные концепции (в частности, паттерн MBConv) стали ключевыми паттернами эффективных CNN и легли в основу EfficientNet;
  2. Снижение вычислительной сложности позволило перенести инференс сложных задач компьютерного зрения (многоклассовая детекция объектов, семантическая сегментация в реальном времени) с облачных серверов непосредственно на edge-устройства (смартфоны, IoT-датчики, встраиваемые системы), обеспечивая приватность данных и независимость от интернет-соединения.

🔸2019 год: EfficientNet (версии B0-B7)

Проблема одномерного масштабирования

Авторы эмпирически исследовали масштабирование сети по одному из трёх измерений (глубине d, ширине w и разрешению r).

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

Вывод: для повышения эффективности необходимо синхронно масштабировать все три измерения, балансируя их между собой. Из этого рождается метод Compound Scaling.

Архитектура

EfficientNet-B0: вместо ручной сборки авторы использовали многокритериальный нейросетевой поиск (NAS), оптимизируя одновременно точность (Accuracy) и количество операций (FLOPs);

Структура блока MBConv в EfficientNet:

Expansion (1×1 Conv): расширение узкого входа (коэффициент расширения t=1 или t=6);

Depthwise Conv: пространственная свёртка (ядра 3×3 или 5×5);

Squeeze-and-Excitation (SE): механизм внимания по каналам;

Активация Swish (SiLU): гладкая нелинейность (x * σ(x)), заменяющая ReLU/ReLU6

  • MobileNetV3 использовал Hard-Swish (аппроксимацию), потому что настоящий Swish с экспонентой был медленным на мобильных CPU;
  • EfficientNet использовал полноценный Swish (x * σ(x)), что хорошо работает по качеству, но менее дружелюбно к мобильным CPU, чем hard-swish в MobileNetV3. В MobileNetV3 hard-swish выбран именно как более дешёвая для мобильного инференса аппроксимация.

Projection (1×1 Conv): сужение количества каналов (linear bottleneck);

Регуляризация: Stochastic Depth (выкидывание блока с вероятностью p) + Skip-connection (если шаг s=1 и размерности совпадают)

Compound Scaling (комбинированное масштабирование):
Авторы предложили использовать единый коэффициент масштабирования ϕ для равномерного увеличения сети
\(d=α^ϕ\)
\(w=β^ϕ\)
\(r=γ^ϕ\)
При этом накладывается строгое ограничение на вычислительные ресурсы:
\(α⋅β^2⋅γ^2≈2,(α≥1,β≥1,γ≥1)\)
Откуда квадраты? В стандартных свёрточных сетях количество вычислений (FLOPs) растёт пропорционально глубине (d), но квадратично зависит от ширины (w) и разрешения входа (r). Ограничение \(α⋅β^2⋅γ^2≈2\) гарантирует, что при увеличении ϕ на единицу, общее число FLOPs возрастает ровно в 2 раза. Поиск констант (Шаг 1): Зафиксировав ϕ = 1, авторы провели grid search для базовой сети B0 и нашли оптимальные коэффициенты:

  • α = 1.2 (глубина);
  • β = 1.1 (ширина);
  • γ = 1.15 (разрешение);
  • Проверка условия: \(1.2*(1.1)^2*(1.15)^2≈1.92≈2\)

Генерация семейства (Шаг 2): Зафиксировав найденные константы α, β, γ, авторы увеличивали коэффициент ϕ для создания более крупных сетей (от B1 до B7).

Семейство EfficientNet B0-B7: результат compound scaling — линейка B0-B7, где при переходе от B0 к B7 растут глубина, ширина и входное разрешение согласно формуле; FLOPs и параметры растут экспоненциально; точность растёт, но с убывающей отдачей;

Результаты масштабирования (Семейство B0-B7): эффективность подхода демонстрируется в сравнении с популярными архитектурами того времени (ResNet, Inception, GPipe).

Вывод: EfficientNet-B7 достигает сопоставимой или чуть более высокой точности, чем GPipe, при существенно меньшем числе параметров и более быстром инференсе.

Важные моменты:

  • При фиксированной точности EfficientNet даёт ощутимый выигрыш по параметрам / FLOPs относительно типичных ResNet / Inception того времени;
  • Модели EfficientNet хорошо переносились на другие датасеты и долго оставались сильной точкой сравнения для задач переноса обучения, например CIFAR-100, Flowers, Cars и др.

Режим обучения

Высокая точность EfficientNet объясняется не только архитектурой, но и современным (на 2019 год) пайплайном обучения. Согласно оригинальной статье, авторы использовали:

  • Оптимизатор RMSProp с экспоненциальным затуханием learning rate (decay 0.9);
  • Swish активацию (x * σ(x)) и Squeeze-and-Excitation блоки во всей сети;
  • Регуляризацию: Stochastic Depth с survival probability 0.8; Dropout, который растёт от 0.2 для B0 до 0.5 для B7; AutoAugment (политики аугментации, найденные алгоритмом).

Эта комбинация делает EfficientNet довольно чувствительным к качеству реализации — воспроизвести результаты «с точностью до десятых процента» иногда бывает непросто 🙂

Архитектурные ограничения

  • Memory-bound vs Compute-bound: глубинные свёртки (depthwise) и большое расширение каналов сильно снижают математические операции (FLOPs), но приводят к фрагментации доступа к памяти. На специализированных ускорителях (GPU/TPU) EfficientNet часто утилизирует вычислительные блоки хуже, чем классические сети типа ResNet;
  • Субоптимальность равномерного масштабирования: Compound Scaling предполагает одинаковое увеличение всех этапов сети. В более поздних работах (например, EfficientNetV2, 2021) было показано, что это не оптимум: выгоднее наращивать глубину только на поздних стадиях (где разрешение признаков мало) и ограничивать рост разрешения входа для ускорения инференса;
  • Зависимость от режима обучения: EfficientNet сильно раскрывается при больших батчах, хорошей аугментации, корректной регуляризации и близком к авторскому расписании learning rate. При более слабом режиме обучения модель может не воспроизводить заявленные результаты. Для небольших датасетов / ресурсов иногда проще взять более «просто обучаемую» основу (ResNet/ConvNeXt/NFNet).

Историческое значение

EfficientNet формализовал процесс масштабирования свёрточных сетей. Вместо эмпирического «наращивания слоёв» исследователи получили строгую математическую модель α, β, γ.

EfficientNet стал одним из главных ориентиров для CNN по соотношению accuracy / compute и оставался важной точкой сравнения до перехода фокуса индустрии к ViT-подобным архитектурам.

🔸2022 год: ConvNeXt

  • Создатели: Facebook AI Research, UC Berkeley (Zhuang Liu, Hanzi Mao et al.)
  • Оригинальная статья: «A ConvNet for the 2020s” — CVPR 2022

Справка

К 2020-2021 годам в компьютерном зрении резко вырос интерес к Vision Transformers. После появления ViT и Swin Transformer стало казаться, что будущее компьютерного зрения за transformer-based архитектурами, а классические CNN постепенно уходят на второй план. Однако авторы ConvNeXt поставили важный вопрос: действительно ли Transformers выигрывают только из-за self-attention, или часть их преимущества связана с современным режимом обучения, масштабированием и архитектурными деталями, которые можно перенести обратно в CNN?

ConvNeXt — это аккуратный эксперимент. Взять классическую ResNet-подобную CNN и постепенно модернизировать её в сторону современных Vision Transformers, но не добавлять attention. Итоговая архитектура остаётся чистой ConvNet: ConvNeXt не использует self-attention, shifted windows или relative position bias, как Swin Transformer. Вместо этого она сохраняет свёрточную природу, но заимствует несколько удачных архитектурных принципов из эпохи Vision Transformers.

Основная проблема

До ConvNeXt сравнение CNN и Vision Transformers часто было не совсем честным. Классические CNN обычно сравнивали в более старом режиме обучения:

  • SGD;
  • 90 epochs;
  • Более простые аугментации;
  • BatchNorm;
  • ReLU;
  • Стандартные ResNet-блоки.

А современные Vision Transformers обучались уже в другом режиме:

  • AdamW;
  • 300 epochs;
  • Mixup;
  • CutMix;
  • RandAugment;
  • Random Erasing;
  • Label Smoothing;
  • Stochastic Depth.

Авторы ConvNeXt сначала построили базовую точку сравнения: взяли ResNet-50 и обучили её в современном режиме, похожем на тот, который использовался для DeiT и Swin Transformer.

Результат: качество ResNet-50 выросло с 76.1% до 78.8% точности Top-1 на ImageNet-1K.

Вывод: часть отставания классических CNN от Vision Transformers объяснялась не только архитектурой, но и тем, что CNN часто обучали по «старым» правилам.

Изменения в архитектуре ResNet:

Авторы пошагово модернизировали ResNet и измерили, какой вклад даёт каждое изменение.

  1. Современный режим обучения Первый шаг не касался архитектуры. Авторы просто обучили ResNet-50 в более современном режиме, близком к тому, как обучали DeiT и Swin Transformer.

Это сразу дало прирост:

Модель / режим обученияImageNet-1K Top-1 Accuracy
ResNet-50, классический режим обучения76.1%
ResNet-50, современный режим обучения78.8%

Это важный момент для всей истории CNN: иногда архитектура кажется устаревшей не потому, что она плохая, а потому что её сравнивают с новыми моделями при устаревшем режиме обучения!

  1. Изменение распределения блоков по стадиям
  2. Классическая ResNet-50 использует распределение блоков: (3, 4, 6, 3) ConvNeXt меняет его на: (3, 3, 9, 3)

Так больше вычислений переносится в третью стадию, что ближе к дизайну Swin Transformer.

ШагИзменениеTop-1 Accuracy
ResNet-50 + современное обучениеБазовая точка78.8%
Stage ratio 3-3-9-3Перераспределение глубины по стадиям79.4%
  1. Patchify Stem

В ResNet начало сети устроено так: 7×7 Conv, stride 2 → MaxPool

В ConvNeXt авторы заменяют его на более простой вариант: 4×4 Conv, stride 4

Это не превращает ConvNeXt в Transformer: изображение не подаётся в self-attention как последовательность токенов. Просто начальное уменьшение разрешения становится похожим на patch embedding в Vision Transformers.

ШагИзменениеTop-1 Accuracy
Stage ratio 3-3-9-3Предыдущий шаг79.4%
Patchify stem4×4 Conv, stride 479.5%
  1. Depthwise Convolution

В обычной свёртке одновременно смешиваются:

  • Пространственная информация;

  • Канальная информация.
В ConvNeXt эти процессы разделяются:
  • Depthwise convolution отвечает за смешивание пространственной информации;

  • 1×1 convolution отвечает за смешивание каналов.
Это похоже на идею Transformer-блока, где spatial / token mixing и смешивание каналов разделены концептуально. Но в ConvNeXt смешивание пространственной информации делается не attention-механизмом, а обычной depthwise convolution.

Сама идея depthwise convolution уже встречалась в MobileNet, но ConvNeXt использует её не как мобильную оптимизацию, а как способ разделить пространственное и канальное смешивание внутри современной большой CNN.

Чтобы компенсировать снижение вычислений, авторы также увеличивают ширину сети. Это даёт заметный прирост качества.

ШагИзменениеTop-1 Accuracy
Patchify stemПредыдущий шаг79.5%
Depthwise conv + увеличение шириныРазделение spatial и channel mixing80.5%
  1. Inverted Bottleneck

Классический ResNet bottleneck работает по принципу:

1×1 Conv: сжать каналы → 3×3 Conv → 1×1 Conv: восстановить каналы

ConvNeXt использует противоположный принцип — inverted bottleneck:

Depthwise Conv → 1×1 Conv: расширить каналы → GELU → 1×1 Conv: вернуть каналы обратно

То есть внутри блока число каналов сначала увеличивается примерно в 4 раза, а затем возвращается обратно. Это напоминает MobileNetV2, а также MLP-блоки в Vision Transformers, где внутреннее представление шире входного.

ШагИзменениеTop-1 Accuracy
Depthwise conv + увеличение шириныПредыдущий шаг80.5%
Inverted bottleneckРасширение каналов внутри блока80.6%
  1. Большие 7×7 ядра

После VGG долгое время в CNN доминировала идея маленьких 3×3 свёрток. Но в эпоху Vision Transformers снова вырос интерес к большему receptive field. Например, Swin Transformer работает с локальными окнами 7×7. ConvNeXt переносит эту идею обратно в CNN: вместо 3×3 depthwise convolution используется 7×7 depthwise convolution.

Авторы проверяли разные размеры ядер: 3×3, 5×5, 7×7, 9×9 и 11×11. Лучший баланс был найден на 7×7: качество выросло с 79.9% до 80.6%, а дальнейшее увеличение ядра уже не давало заметного прироста.

Важно: это не обычная дорогая 7×7 convolution по всем каналам. Это именно 7×7 depthwise convolution, поэтому вычислительная стоимость остаётся приемлемой.

  1. GELU, LayerNorm и меньше операций внутри блока

Классический CNN-блок часто выглядит как повторение: Conv → BatchNorm → ReLU В ConvNeXt блок делают более похожим на Transformer-style block:

  • ReLU заменяется на GELU;Вместо нескольких активаций остаётся только одна GELU внутри блока;Число normalization layers уменьшается;BatchNorm заменяется на LayerNorm;Downsampling выносится в отдельные слои между стадиями
Главная мысль: ConvNeXt-блок выглядит «по-трансформерному» с точки зрения дизайна, но вместо self-attention использует большую depthwise convolution.

Вывод: в пошаговом эксперименте итоговая модель достигает 82.0% Top-1, а финальная ConvNeXt-T из основной таблицы результатов — 82.1% Top-1 на ImageNet-1K.

МодельРазрешениеПараметрыFLOPsImageNet-1K Top-1 Accuracy
Swin-T224×22428M4.5G81.3%
ConvNeXt-T224×22429M4.5G82.1%
Swin-S224×22450M8.7G83.0%
ConvNeXt-S224×22450M8.7G83.1%
Swin-B224×22488M15.4G83.5%
ConvNeXt-B224×22489M15.4G83.8%
Swin-B384×38488M47.1G84.5%
ConvNeXt-B384×38489M45.0G85.1%

Основные версии ConvNeXt

МодельChannels по стадиямBlocks по стадиямПараметрыFLOPsImageNet-1K Top-1 Accuracy
ConvNeXt-T96, 192, 384, 7683, 3, 9, 329M4.5G82.1%
ConvNeXt-S96, 192, 384, 7683, 3, 27, 350M8.7G83.1%
ConvNeXt-B128, 256, 512, 10243, 3, 27, 389M15.4G83.8%
ConvNeXt-L192, 384, 768, 15363, 3, 27, 3198M34.4G84.3%

При предварительном обучении на ImageNet-22K и последующем дообучении на ImageNet-1K качество становится ещё выше. Например, ConvNeXt-XL при разрешении 384×384 достигает 87.8% точности Top-1.

Важность архитектуры

  1. Вернула CNN в дискуссию после взлёта Vision Transformers. Она показала, что свёрточные сети не устарели, если их модернизировать;
  2. Отделила эффект архитектуры от эффекта режима обучения. Уже один современный режим обучения поднял ResNet-50 с 76.1% до 78.8% точности Top-1;
  3. Показала, что идеи можно переносить между семействами архитектур. Patchify stem, LayerNorm, GELU, inverted bottleneck и крупные локальные окна можно адаптировать к CNN без добавления self-attention;
  4. Сохранила простоту ConvNet. В ней нет shifted window attention, relative position bias и других специализированных transformer-модулей;
  5. Стала сильной современной CNN-базой для классификации. ConvNeXt показывает — после EfficientNet развитие классификационных CNN не остановилось!

Сложности

  • ConvNeXt-T не является ультралёгкой мобильной моделью. Даже самая маленькая основная версия имеет около 29M параметров и 4.5G FLOPs. Это, скорее, сильная универсальная основа для CV-моделей, чем MobileNet-подобная архитектура для смартфонов;
  • Depthwise convolution не всегда даёт пропорциональный выигрыш в реальной скорости. FLOPs могут быть низкими, но реальная задержка зависит от конкретного железа, фреймворка и оптимизации операций;
  • Успех ConvNeXt сильно связан с современным режимом обучения. Это не только архитектура, но и режим обучения — AdamW, длинное обучение, сильные аугментации и регуляризация;
  • ConvNeXt не доказывает, что CNN «лучше Transformers» в общем случае. Современные CNN всё ещё могут быть конкурентоспособными, если использовать современный дизайн и честный режим обучения.

Актуальность

ConvNeXt важна как пример современной ConvNet — свёрточной сети, спроектированной уже после появления Vision Transformers.

Сегодня её можно рассматривать как:

  • сильную базовую модель для классификации;
  • пример обновления классических CNN под реалии 2020-х;
  • мост между эпохой ResNet / EfficientNet и Vision Transformers;
  • сильный аргумент в пользу того, что свёртки всё ещё остаются конкурентоспособным инструментом в компьютерном зрении.

Телеграм-канал

DeepSchool

Короткие посты по теории ML/DL, полезные
библиотеки и фреймворки, вопросы с собеседований
и советы, которые помогут в работе

Открыть Телеграм

Увидели ошибку?

Напишите нам в Telegram!