В последние годы трансформеры, которые изначально были разработаны для обработки естественного языка, становятся все более важными в таких областях компьютерного зрения, как обнаружение объектов, сегментация изображений и т.д., опережая традиционные архитектуры, основанные только на сверточных слоях.
Среди наиболее известных архитектур трансформеров можно назвать Google ViT или Microsoft Swin Transformer, которые доминируют в обнаружении объектов и сегментации естественных изображений. Эти две архитектуры являются лишь одним из примеров многих работ, которые были сделаны для того, чтобы адаптировать трансформеры к обработке естественных изображений.
Недавно FAIR представила ConvNeXt [1], которая заново исследует пространства проектирования и проверяет пределы того, чего может достичь исключительно ConvNet. Благодаря своему опыту они нашли способ модернизировать сеть, основанную исключительно на свертке, чтобы превзойти сети на основе трансформеров, и таким образом вернуть величие сверточным сетям.
Модернизация сети ConvNet: дорожная карта
[1] представляет дорожную карту из пяти частей для преобразования стандартного ResNet в трансформер шаг за шагом, которые мы рассмотрим в следующих подразделах.
Макродизайн
В первой части дорожной карты автор вносит два первоначальных изменения в исходную архитектуру ResNet-50, как показано в таблице ниже,
Во-первых, они изменяют количество блоков на каждом этапе свертки. Как мы можем заметить из таблицы, в оригинальной архитектуре ResNet-50 количество блоков распределяется в соответствии с соотношением (3, 4, 6, 3) в 4 этапа. Авторы предложили принять многоступенчатую идею, выводя различные значения разрешений на каждом этапе, подобно Swin Transformer с соотношением, равным 1:1:3:1.
Поэтому ConvNeXt следует этому соотношению и перераспределяет количество блоков свертки на (3, 3, 9, 3), что приводит к улучшению точности модели на 0,6% до 79,4%.
Второе изменение, которое они вносят, предполагает изменение дизайна начального блока свертки, в оригинальной архитектуре ResNet-50, где со входа пробрасывается слой свертки 7x7 с шагом 2 плюс операция max-pooling, которая понижает дискретизацию входного изображения с коэффициентом 4.
Они заменяют этот первый блок свертки, используя тот же подход, что и в Swin Transformer, используя неперекрывающуюся свертку 4х4 с шагом 4 для воспроизведения операций нарезки патчей ViT, что приводит к улучшению точности модели еще на 0,1%, которая теперь достигает 79,5%.
ResNeXt-ify
В этой части дорожной карты авторы предложили использовать некоторые основные идеи ResNeXt [2], которая характеризуется лучшим компромиссом между точностью и вычислениями, чем традиционная ResNet, благодаря использованию сгруппированной свертки, при этом увеличивая ширину сети для компенсации потери мощности модели.
[1] использует свертку по глубине, делая количество групп равным количеству входных каналов, поэтому каждое ядро свертки обрабатывает один канал и смешивает информацию только в пространственном измерении, чтобы получить эффект, подобный механизму внутреннего внимания (self-attention), в результате чего точность модели повысилась на 1% до 80,5%.
Инвертирование слоя узкого места
Авторы создают инвертированное узкое место, сравнимое с MobileNetV2, в котором скрытая размерность блока MLP в четыре раза больше входной размерности.
Хотя FLOPs глубокого сверточного слоя увеличивается после такого реверса, FLOPs всей сети падает из-за эффекта даунсэмплинга остаточного блока, что приводит к увеличению точности на 0,1 процента.
Увеличение ядра свертки
В этой части авторы обсуждают влияние различной ширины ядра свертки на производительность модели. Однако после реверсирования слоя узкого места и увеличения размерности сверточного слоя, увеличение непосредственно ядра свертки значительно увеличит количество параметров, поэтому они сдвигают вверх положение глубинного слоя Conv ((b) - на рисунке выше), временно снижая точность модели до 79,9%.
Они использовали различные размеры ядра свертки от 3x3 до 11x11, и достигли оптимальной точности 80,6% для ядра свертки размером 7x7.
Микродизайн
Наконец, авторы рассматривают влияние функций активации и нормализации на производительность модели.
Сначала они попытались заменить традиционную функцию активации ReLU на более мягкую версию, такую как GELU, что не улучшило точность модели. Затем они пробуют аналогичный подход к блоку Transformer, используя функции активации только в блоках MLP, поэтому функция активации GELU применяется только между двумя слоями 1x1, что приводит к увеличению точности модели на 0,7% и, наконец, достигает 81,3%.
Количество слоев нормализации также было сокращено, а слой Batch Normalization был замещен на слой Batch Normalization, в результате чего точность увеличилась на 0,1%, и теперь она достигла 81,5%.
Структура одного блока ConvNeXt показана ниже,
ConvNeXt примерно сопоставима с Swin Transformer во всех масштабах с точки зрения количества параметров, пропускной способности и использования памяти. Преимущество ConvNeXt в том, что она не требует дополнительных структур, таких как включение механизмов внимания к смещению окна, сдвига относительного позиционирования и так далее.
Заключение
Они оценили ConvNeXts с помощью различных задач по видению, таких как классификация ImageNet, обнаружение/сегментация объектов на COCO и семантическая сегментация, достигая сравнимой или лучшей производительности, чем SwinTransformer.
Данная работа способствует тому, чтобы ученые пересмотрели значимость свертки в компьютерном зрении.
Приглашаем на ближайший открытый урок в OTUS «Anomaly Detection». На занятии рассмотрим следующие вопросы: постановка задачи, нахождение аномалий в разных распределениях, SVD-feature extraction, Autoencoder, PaDiM. Регистрация по ссылке.