A ConvNet for the 2020s

본 연구는 디자인 공간들(The Design Spaces)을 재시험하고 순수한 ConvNet이 달성할 수 있는 것의 한계를 시험합니다.
Inc Lomin's avatar
Oct 11, 2022
A ConvNet for the 2020s
notion image

초록

ViTs는 SOTA 이미지 분류 모델로 ConvNets를 대체(Superseded)했지만 기본 ViTs는 Object Detection과 Semantic Segmentation과 같은 일반적인 Computer Vision 태스크에 적용되기 어려웠습니다.
Swin Transformer와 같이 여러 ConvNet을 재도입한(Reintroduced) 계층적 트랜스포머는 트랜스포머를 일반 Vision Backbone으로 실용적으로 사용할 수 있게 하고 다양한 Vision 작업에서 놀라운 성능을 입증했습니다.
하지만 이러한 하이브리드 방식의 효과는 여전히 컨볼루션에 내재된 귀납적 편향(Inductive Biase)보다는 트랜스포머의 내재적 우월성(Intrinsic Superiority)에 크게 기인합니다.
본 연구는 디자인 공간들(The Design Spaces)을 재시험하고 순수한 ConvNet이 달성할 수 있는 것의 한계를 시험합니다.
비전 Transformer 설계를 향해 표준 ResNet을 점진적으로 "현대화(Modernize)"하고, 그 과정에서 성능 차이에 기여하는 몇 가지 핵심 구성요소를 발견합니다.
이 연구의 결과는 ConvNeXt라는 순수 ConvNet 모델 제품군입니다. 표준 ConvNet 모듈로 구성된 ConvNeXts는 정확도 및 확장성 측면에서 Transformer와 경쟁하여 ImageNet Top-1의 정확도를 87.8% 달성하고 표준 ConvNet의 단순성과 효율성을 유지하면서 COCO Detection 및 ADE20K Segmentation에서 Swin Transformer를 능가합니다.

도입

ConvNets는 다방면의 Computer Vision 응용에 ConvNets가 잘 맞을수 있도록 여러 내재된 귀납적 편향(Inductive Biases)를 가지고 있습니다.
가장 중요한 귀납적 편향은 평행이동 불변량(Translation Equivariance)으로, 이는 Object Detection과 같은 태스크에서 필요한 속성입니다.
또한 ConvNets는 Sliding Window 방식을 사용할 때, 연산들이 공유되기 때문에 본질적으로(Inherently) 효과적입니다.
2010년대 Region-Based Detectors가 시각 인식 시스템에서 ConvNets를 근본적인 Building Block으로 올려놓았을 때, NLP는 다른 방식의 길을 걸어왔습니다. Transformers가 RNN 계열을 대체하여 지배적인 Backbone 구조가 되었습니다.
notion image
언어 도메인과 Vision 도메인 간의 관심 영역의 차이에도 불구하고, 두 개의 흐름은 ViTs(Vision Transformer)의 출현으로 2020년에 하나로 수렴하였습니다.
하나의 이미지를 하나의 Patches 시퀀스로 분할하는 초기 Patchify 레이어를 제외하고, ViT는 이미지 한정이 아닌 귀납적 편향을 도입하였고, 기존 NLP Transformer에서 최소한의 변경만 만들었습니다.
ViT의 한 가지 중요한 점은 확장 방식(Scaling Behavior)입니다. 커다란 모델과 데이터셋 크기의 도움으로, Transformers는 큰 격차로(Significant Margin) 표준 ResNet을 능가하게 되었습니다.
2010년 대 Computer Vision 태스크의 솔루션들은 Sliding Window와 Fully Convolutional 패러다임에 의존해왔는데, 이러한 ConvNets의 귀납적 편향이 없는 기본 ViT 모델은 일반적 Vision Backbone으로 채택되기는 쉽지 않았습니다.
가장 큰 걸림돌은 ViT의 Global Attention 구조인데, 이는 입력 크기에 대한 제곱의 복잡도를 가집니다. 이로 인해 ViT는 ImageNet 분류에 적합할 수 있지만, 고해상도 입력들은 다루기 어려워(Intractable)집니다.
계층적 Transformers는 이러한 간극을 매우기 위한 하이브리드 방식을 사용합니다. Sliding Window 전략을 Transformers에 재도입했고, 그 덕분에 Transformers는 ConvNets와 더 비슷하게 행동할 수 있게 되었습니다.
notion image
Swin Transformer은 획기적인 연구로, 트랜스포머가 일반 비전 Backbone으로 사용될 수 있음을 최초로 보여주었고, 이미지 분류 이상의 컴퓨터 비전 태스크에서 SOTA 성능을 내었습니다.
Swin Transformer의 성공으로 알 수 있는 것은 Convolution의 본질이 성능과 무관하지 않는다는 것입니다.
이러한 관점에서, 컴퓨터 비전에서의 많은 트랜스포머의 연구 방향은 Convolution을 채용하는 것을 목표로 하고 있습니다. 물론 이러한 시도는 Cost가 듭니다. 단순한 Sliding Window Self-Attention 구현은 매우 비싸며, Cyclic Shifting과 같은 발전된 방법은 속도가 최적화 될 순 있지만 시스템의 구조는 더 복잡해집니다.
반면 ConvNet은 이미 필요한 속성들을 만족하고 있습니다.
ConvNet이 활기를 잃어가는 유일한 이유는 계층적 트랜스포머가 많은 비전 태스크에서 ConvNet을 능가하기 때문이며, 이 성능 차이는 Multi-Head Self-Attention을 가진 트랜스포머의 우월한 Scaling Behavior 때문입니다.
ConvNet과 계층적 트랜스포머는 점점 달라지면서도 비슷해집니다. 두 가지 모두 비슷한 귀납적 편향을 가지지만, 학습 방식과 Macro/Micro 레벨의 모델 구조가 매우 다릅니다.
본 논문은 ConvNets와 트랜스포머의 구조적 차이를 조사하면서 네트워크 성능 비교를 혼란스럽게 만드는 요소가 무엇인지 확인합니다. ViT 이전과 ViT 이후의 ConvNet 사이의 간극을 연결하는 것이 목표이며 순수한 ConvNet의 한계를 시험해보는 것이 목표입니다.
이를 위해, 표준 ResNet부터 시작하며 저자는 점차 모델을 현대화하여 계층적 비전 트랜스포머의 구성으로 만듭니다.
본 논문의 연구 방향은 트랜스포머의 구조 결정(Design Decisions)이 ConvNet의 성능에 영향을 미치는지에 기인합니다.
저자는 트랜스포머와 ConvNet의 성능 차이를 주는 몇 가지 핵심 요소를 찾았고, 이를 통해 ConvNeXt라는 순수한 ConvNets 군을 만들었습니다. ConvNeXt는 표준 ConvNet으로 구축되었으며 Accuracy, Scalability 그리고 주요 벤치마크에서의 Robustness에 대해서 트랜스포머와 충분히 비견됩니다. ConvNeXt는 표준 ConvNet의 효율성을 유지하며 학습과 평가에서 Fully-Convolutional 특성이 구현을 매우 쉽게 만듭니다.

ConvNet을 현대화하기

ResNet부터 트랜스포머를 닮은 ConvNet까지의 궤적을 그려봅니다.
두 개의 모델 크기를 FLOPs 관점에서 고려합니다. 하나는 ResNet-50/Swin-T 체제로 FLOPs는 이며, 나머지는 ResNet-200/Swin-B 체제로 FLOPs가 입니다.
본 논문은 Swin Transformer로부터의 다른 레벨의 구조를 조사하고 따라가면서 네트워크의 간결성은 표준 ConvNet처럼 유지합니다.
실험의 시작은 ResNet-50 모델입니다. Vision Transformer를 학습시킬 때 사용한 학습 기술로 ResNet을 학습시켰고, 오리지널 ResNet-50보다 많은 성능 개선을 이루었습니다. 이 ResNet을 베이스라인으로 삼습니다.
notion image
그 후 디자인 결정의 시리즈를 연구하는데 이를 요약하면 1) Macro 디자인, 2) ResNeXt, 3) Inverted Bottleneck, 4) 큰 커널 크기 그리고 5) 다양한 Layer-Wise Micro 디자인입니다.
위 표를 보면 각 과정과 그 결과가 있는데, 본 실험이 네트워크 현대화의 각 단계를 달성했음을 알 수 있습니다.
네트워크 복잡도가 최종 성능과 깊은 연관이 있기 때문에, FLOPs는 실험의 과정을 통해 대략적으로 조정될 수 있었습니다.

학습 기법

학습 방법 또한 성능에 영향을 미칩니다. Vision Transformer이 새로운 모듈과 모델 디자인 결정을 가져왔을뿐만 아니라, 새로운 학습 기법(e.g. AdamW)을 가져왔습니다. 이는 대부분 최적화 전략과 관련있으며 하이퍼파라미터 세팅과 연관되있습니다. 따라서 본 논문의 첫번째 실험 단계는 베이스라인 모델(ResNet-50/200)을 Vision Transformer 학습 방법으로 학습시키는 것입니다.
본 연구의 학습 방식은 DeiT와 Swin Transformer의 방식과 유사합니다. 오리지널 ResNet의 학습 에폭은 90이지만 300에폭까지 확장시킵니다. 최적화기는 AdamW를, Augmentation은 Mixup, Cutmix, RandAugment, Random Erasing 그리고 Stochastic Depth와 Label Smoothing을 포함하는 Regularization 방식을 사용합니다.
이 자체로 ResNet-50의 성능(Accuracy)은 76.1%에서 78.8%로 증가되었습니다. 이는 성능 차이의 큰 비중을 차지하는 것이 학습 기법임을 암시합니다. 여기서의 성능들은 다른 랜덤 시드를 가지는 3개 모델의 평균값입니다.
앞으로의 학습은 위와 같은 방식으로 진행합니다.

Macro 디자인

Swin Transformer는 ConvNets를 따라하여 Multi-Stage 디자인을 사용합니다. 각 스테이지는 다른 피쳐맵 해상도를 가집니다.
여기에 두 가지 디자인 고려사항이 있는데 이는 1) 스테이지 연산 비율, 2) Stem Cell 구조입니다.

스테이지 연산 비율 변경

원본 ResNet의 스테이지 간 연산 분포의 디자인은 매우 경험적(Empirical)입니다. 무거운 res4 스테이지는 원래 Detector Head가 피쳐맵에서 연산되는 객체 탐지와 같은 다운스트림 태스크에서 경쟁력을 가지기 위함이었습니다.
반면 Swin-T는 간단한 원칙을 따랐지만 1:1:3:1이라는 살짝 다른 스테이지 연산 비율을 가집니다.
큰 Swin Transformer는 이 비율이 1:1:9:1입니다. 이 디자인을 따라하면서, ResNet-50의 (3,4,6,3)이라는 각 스테이지에서의 블록 수를 (3,3,9,3s)로 조정했습니다. 이는 Swin-T의 FLOPs와 맞춰집니다.
이 방법은 모델 정확도를 78.8%에서 79.4%로 성능을 개선시킵니다.
앞으로의 모델은 위와 같은 비율을 사용합니다.

줄기(Stem)을 Patchify로 변경

일반적으로 Stem Cell 디자인은 네트워크의 초기에 입력 이미지가 어떻게 처리되는지를 고려합니다. 일반 이미지에 내제된 불필요한 중복(Redundancy) 때문에 보통의 Stem Cell은 공격적으로 입력 이미지를 Downsample하여 표준 ConvNets와 Vision Transformer에 적합한 피쳐맵 크기로 만듭니다.
표준 ResNet의 Stem Cell은 Stride 2의 Convolution 레이어를 포함하며, 그 뒤에 Max Pool 하나가 따릅니다. 그 결과 입력 이미지의 1/4 크기로 Downsampling 됩니다.
Vision Transformers에서 더 공격적인 Patchify 전략은 Stem Cell로써 작용하며 이는 큰 커널 크기(Kernel Size=14 or 16)와 Non-Overlapping Convolution에 대응됩니다.
Swin Transformer는 빗스한 Patchify 레이어를 사용하지만 크기 4의 더 작은 패치를 사용하여 모델의 Multi-Stage 구조를 수용합니다.
저자는 ResNet 스타일의 Stem Cell을 Stride 4를 가지는 크기의 Convolutional 레이어를 사용해 Patchify 레이어로 교체합니다.
정확도는 79.4%에서 79.5%로 개선됩니다. 이는 ResNet의 Stem Cell이 간단한 Patchify 레이어로 교체되어도 됨을 뜻합니다.
앞으로의 모델은 위와 같은 Patchify Stem을 사용합니다.

ResNeXt-ify

ResNeXt 방식은 ResNet보다 더 나은 FLOPs/Accuracy Trade-Off를 가집니다. 핵심 요소는 Grouped Convolution으로 Convolutional 필터가 다른 그룹들로 분리됩니다.
ResNeXt의 원칙은 더 많은 그룹을 사용하고 너비(Width)를 넓히는 것입니다. 더 정확히는, ResNeXt는 Bottleneck안의 Conv 레이어에 대해 Grouped Convolution을 사용합니다.
이로 인해 FLOPs는 크게 줄어들며, 확장된 네트워크 너비는 수용량 손실(Capacity Loss)을 보충을 합니다.
본 논문은 Depthwise Convolution을 사용합니다. 이는 Grouped Convolution의 특별 케이스로 그룹 수가 채널 수와 동일한 경우입니다. Depthwise Conv는 MobileNet과 Xception에서 사용된 방식입니다. Depthwise Convolution은 Self-Attention의 가중합 연산(Weighted Sum Operation)과 유사하며 이는 채널 단위로 연산합니다. 즉, Spatial Dimension안에서만 정보가 섞입니다.
Depthwise Convolution을 사용하는 것이 효과적으로 FLOPs를 줄였고 Accuracy도 줄였습니다. ResNeXt 전략을 따르면서 네트워크 너비를 Swin-T의 채널 수와 동일하게 만들었습니다. 이를 통해 네트워크 성능은 80.5%로 올랐으며 FLOPs 또한 증가하였습니다.
앞으로의 모델은 ResNeXt의 구조를 차용합니다.

Inverted Bottleneck

notion image
모든 트랜스포머 블록은 Inverted Bottleneck을 생성합니다. 즉, MLP 블록의 은닉 차원은 입력 차원에 비해 4배 더 넓습니다. 이 트랜스포머의 디자인은 ConvNet에서 사용된 확장 비율 4를 가진 Inverted Bottleneck과 연결되어있습니다. 이 아이디어는 MobileNetV2에서 사용되었고, 발전된 ConvNet 모델들에 아주 큰 이득을 주었습니다.
notion image
위 그림에서 (a)에서 (b)가 위에서 말한 구성입니다. Depthwise Convolution 레이어에서 FLOPs가 증가하지만 이 변화가 전체 네트워크의 FLOPs를 4.6G로 줄입니다. 이는 Downsampling Residual Block의 Shortcut Conv 레이어에서의 큰 FLOPs 감소 덕분입니다.
이 방식은 성능을 살짝 개선하여 80.5%에서 80.6%이 됩니다. ResNet-200/Swin-B 정책에서는 더 큰 이득을 얻어 81.9%에서 82.6%이 되며 FLOPs는 줄어들었습니다.
앞으로의 실험에서는 Inverted Bottleneck 구조를 사용합니다.

큰 커널 크기

Vision Transformer의 Non-Local Self-Attention은 각 레이어가 Global Receptive Field를 가지게합니다.
큰 커널 크기는 예전 ConvNets에서 사용됐었지만, 최적의 표준은 작은 커널 크기()의 Conv 레이어를 쌓는 것입니다. 이는 현대 GPUs에서 효율적인 하드웨어 구현체를 가집니다.
비록 Swin Transformer가 Self-Attention 블록에 Local Window를 재도입했지만, Window 크기는 최소 으로, ResNeXt의 커널 크기인 보다 훨씬 더 큽니다.

커널 크기 키우기

큰 커널 크기의 Convolution을 채용하는 것의 이점은 큽니다. 본 논문은 여러 개의 커널 크기를 실험했는데(3,5,7,9,11), 네트워크 성능은 79.9%()에서 80.6%()으로 증가했고 네트워크의 FLOPs는 거의 유지되었습니다.
추가적으로 큰 커널 크기의 이점은 에서 포화상태에 이릅니다. 이는 큰 Capacitiy 모델에서도 확인되었습니다. ResNet-200 정책 모델은 을 넘어서는 커널 크기에서는 이득이 없었습니다.
앞으로의 실험에서는 모든 블록에서 Depthwise Conv를 사용합니다.
이제 Vision Transformer의 디자인 결정의 중요한 부분은 ConvNet 인스턴스화로 매핑되었다고 볼 수 있습니다.

Micro 구조

Micro 규모는 주로 레이어 레벨의 디자인을 말하며 주로 활성화 함수와 Normalization 레이어를 말합니다.

ReLU 대신 GELU

Rectified Linear Unit(ReLU)가 ConvNet에서 주로 사용되었던 이유는 Simpicity와 효율성 때문입니다.
Gaussian Error Linear Unit(GELU)는 ReLU의 부드러운 변형체 생각해볼 수 있으며, 대부분의 발전된 트랜스포머, 구글의 BERT, OpenAI의 GPT-2 그리고 ViT 등에서 사용됩니다.
저자는 비록 Accuracy가 변하지 않지만 ReLU를 GELU로 대체할 수 있다고 생각합니다.

더 적은 활성화 함수

트랜스포머와 ResNet 블록의 한 가지 마이너한 차이는 트랜스포머가 더 적은 활성화 함수를 가진다는 것입니다.
Key/Query/Value 선형 임베딩 레이어, 사영(Projection) 레이어, 그리고 MLP 블록 내의 2개의 선형 레이어를 가진 트랜스포머 블록을 생각해봅니다. MLP 블록 내에는 오직 1개의 활성화 함수가 있습니다.
이에 비해, 컨볼루션 층을 포함하여 각 컨볼루션 층에 활성화 기능을 추가하는 것이 일반적입니다.
notion image
위 그림에서처럼 저자는 트랜스포머 블록 스타일을 따라가려고 모든 GELU 레이어를 Residual Block에서 제거하고 오직 두 개의 레이어 사이에 1개의 GELU를 남겨놓았습니다.
이 처리가 성능을 0.7%를 올려 81.3%가 되며 이는 Swin-T의 성능과 동등합니다.
앞으로의 실험에서는 각 블록에 하나의 GELU 활성화 함수를 사용합니다.

더 적은 Normalization 레이어

트랜스포머 블록은 더 적은 Normalization 레이어를 갖습니다. 따라서 저자는 2개의 BatchNorm(BN) 레이어를 제거하고 Conv 레이어 전에 오직 한 개의 BN 레이어만 남겨 놓습니다. 이는 성능을 81.4%로 올리며 Swin-T의 성능을 뛰어넘습니다.
트랜스포머보다 더 적은 블록 당 Normalization 레이어를 가지며, 실험적으로 블록의 시작부분에 추가적인 BN 레이어를 놓는 것이 성능 개선에 도움이 되지 않는다는 것을 밝혔습니다.

BN을 LN으로 대체

BatchNorm은 ConvNet의 중요한 요소로, 수렴을 개선하고 과적합을 줄입니다. 하지만 BN 또한 많은 복잡함(Intricacies)을 가지는데 이는 모델 성능에 해로운 영향을 끼칠 수 있습니다. 그럼에도 BN을 비전 태스크에서 사용해왔던 것은 다른 옵션들보다 더 좋은 성능을 냈기 때문입니다.
간단한 Layer Normalization(LN)은 많은 트랜스포머에서 사용되었고, 다른 응용분야에 걸쳐 좋은 성능을 내왔습니다.
오리지널 ResNet의 BN을 LN으로 직접적으로 대체하는 것은 차선(Suboptimal)의 성능을 냅니다. 하지만 네트워크 구조와 학습 기술의 변경을 통해 LN으로 BN을 대체하는 것을 다시 시도해볼 수 있습니다.
본 논문의 ConvNet 모델이 LN으로 학습하는 것에 어려움을 겪지 않는다는 것을 알아냈고, 성능이 개선되어 Accuracy가 81.5%가 되었습니다.
앞으로의 실험에서는 각 Residual Block에서 Normalization 기법으로 하나의 LayerNorm을 사용합니다.

Separate Downsampling 레이어

ResNet에서, 각 스테이지의 시작 지점에서 Residual Block의 Stride 2를 가지는 Conv 레이어(그리고 Shortcut Connection의 Stride 2의 Conv 레이어)를 통해 Spatial Downsampling이 수행됩니다.
Swin Transformer는 Separate Downsampling 레이어가 각 스테이지 사이에 추가되어있습니다.
저자는 비슷한 전략으로 Stride 2의 Conv 레이어로 Spatial Downsampling을 합니다. 이 변경으로 Diverged Training이 됩니다.
추가 실험으로 공간 해상도가 달라지는 곳마다 Normalization 레이어를 추가하는 것이 학습을 안정화 시키는 것을 알아냈습니다.
Swin Transformer에서도 몇개의 LN 레이어가 사용되었습니다. 각 Downsampling 레이어 전에 1개, Stem 이후에 1개, 그리고 마지막 Global Average Pooling 후에 1개의 LN이 사용됩니다.
위의 SeparateDownsampling 레이어로 Accuracy는 82.0%가 되어 Swin-T의 81.3%을 크게 넘었습니다.
앞으로의 실험에서 Separate Downsampling 레이어를 사용합니다.
이것으로 최종 모델이 완성이 되었고, 이를 ConvNeXt라 부릅니다.

마무리 발언(Closing Remarks)

ConvNeXt는 ImageNet-1K 분류에서 Swin Transformer를 능가했습니다. 또한 알아두어야 할 것은 이러한 디자인 옵션들은 모두 새로운 것이 하나도 없다는 것입니다. 모든 옵션들은 독립적으로 연구되었고, 통합적으로 연구된적이 없을 뿐입니다.
ConvNeXt 모델은 Swin Transformer와 대략 같은 FLOPs, 파라미터 수, 처리량(Throughput) 그리고 메모리 사용량을 갖으면서 Shifted Window Attention이나 Relative Position Biases와 같은 특별한 모듈을 필요로하지 않습니다.
Share article