-
[Review] A ConvNet for the 2020sMachine Learning/Computer Vision 2022. 1. 31. 18:30
* [ArXiv 2022] "A Convnet for the 2020s" 논문을 한국어로 번역&정리한 포스트입니다.
A ConvNet for the 2020s (2022)
Zhuang Liu, Hanzi Mao Chao-Yuan Wu, Chrsistoph Feichtenhofer, Trevor Darrell, Saining Xie
Abstract
- visual recognition의 2020년은 ViT와 함께 시작되어 빠르게 기존의 state-of-the-art였던 ConvNet 기반 모델들을 뛰어넘었습니다. 하지만 ViT는 일반적인 컴퓨터 비전 태스크에 적용하기 힘들다는 어려움에 직면하였는데, 계층 트랜스포머 ( Swin Transformers) 는 ConvNet의 prior ( Sliding Window strategy )를 적용하여 트랜스포머가 일반적인 비전 분야의 backbone으로 사용 가능함을 보이며 넓은 범위의 비전 태스크에서 놀라운 성능을 보여주게 됩니다.
- 하지만 트랜스포머가 가지는 효율성은 convolution의 귀납적 편향 ( inductive bias )이 가진 한계점이라기 보다는 트랜스포머의 내재된 우월성(intirinsic superiority)으로 인한 것으로 보아야 합니다.
- 본 논문에서는 표준 ResNet을 점진적으로 ‘근대화’하여 성능의 차이를 만드는 주요 요소들을 발견하고, 그 결과로 만들어진 모델을 ConvNeXt로 이름 지었는데, ConvNeXts는 일반적인 ConvNet이 가지는 효율성과 심플함을 그대로 유지하면서도, 정확도와 scalability에서 트랜스포머와 맞먹는 성능을 보여주며, object detection과 semantic segmentation에서도 좋은 성능을 보입니다.
1. Introduction
- 2010년대 ConvNets을 통해 딥러닝은 큰 발전을 이루었으며, 이 기간동안 이미지 인식은 feature를 엔지니어링 하는 문제에서 arcitecture를 설계하는 문제로 인식이 옮겨가게 됩니다.
- ConvNets이 기본적으로 내재된 귀납적 편향 ( inductive bias ) 들을 가지고 있는데, translation equivariance와 같은 성질이 대표적이며 이 같은 특징은 object detection과 같은 task에서 필수적입니다. region-based detector들이 소개되면서 ConvNets은 이미지 처리에서 가장 기초가 되는 모델로서의 위치를 더욱 확실시 하게 됩니다.
- 동시에 자연어 처리 분야에서 네트워크의 구조는 전혀 다른 길을 가고 있었는데, 트랜스포머가 rnn을 대체하고 가장 주로 쓰이는 backbone구조로 자리잡게 됩니다. 각자 다른 길을 가던 자연어 처리와 이미지 처리 분야의 두 흐름은 2020년, Vision Transformer의 등장과 함께 합쳐지게 됩니다. 이를 통해 네트워크 구조 디자인의 양상이 크게 변하게 됩니다.
- 모델 가장 앞 쪽의 ‘patchify’ layer(이미지를 일련의 패치들로 split하는 layer)를 제외하고 ViT는 이미지에 맞는 inductive bias를 사용하지 않고, 기존 트랜스포머의 구조를 크게 바꾸지도 않았습니다. ViT가 집중한 것은 scaling behavior로 거대한 모델과 데이터셋을 통해, 기존의 ResNet기반 모델의 성능을 크게 뛰어넘었습니다. 하지만 ViT는 image classification에서만 위와 같은 성능을 보여주었습니다. 많은 비전 분야의 해결책들은 Sliding Window와 ConvNet이 가지는 inductive bias에 의존하고 있었고, inductive bias가 없는 vanilla ViT는 일반적인 비전 분야의 backbone이 되기에는 많은 문제에 직면하게 됩니다.
- 계층 트랜스포머 ( Hierachical Transformer )는 hybrid 방식을 통해 그 차이를 좁히고자합니다. Sliding Window 전략이 다시 트랜스포머에 도입되었고, 트랜스포머를 ConvNet과 비슷하게 동작하도록 합니다. Swin Transformer는 최초로 트랜스포머가 일반적인 vision분야의 backbone으로 사용 가능함을 보였고, 다양한 분야에서 state-of-the-art의 성능을 기록합니다. Swin Transformer의 성공과 빠른 적용은 다음과 같은 점을 시사합니다.
- 이와 같은 관점에서 많은 연구가 convolution을 다시 트랜스포머에 가져오고자 시도되었지만, 속도 관점에서 문제가 되거나, 속도가 최적화 된다하더라도 system이 지나치게 복잡해지는 문제가 있었습니다.
- 이러한 시도들이 이루고자 하는 특징들을 ConvNet이 훨씬 더 군더더기 없는 방식으로 이미 가지고 있다는 것이 아이러니한 일입니다. ConvNets이 뒤로 밀려나고 있는 이유는 트랜스포머가 많은 분야에서 더 좋은 성능을 보이고 있기 때문이고, 성능의 차이는 multi-head self-attention을 주축으로 한 트랜스포머의 더 나은 확장성 때문입니다.
- ConvNet과 계층 트랜스포머, Swin Transformer는 비슷한 inductive bias를 가지고 있지만, 학습 절차나 macro/micro 레벨의 디자인 구조에서 다른 점들을 가지고 있습니다. 본 논문에서는 이러한 차이를 좁혀 ConvNet이 도달할 수 있는 성능의 한계를 테스트하였습니다.
- 이를 위해 2015년의 표준 ResNet을 향상된 절차(improved procedure)로 학습하였습니다. 구조를 순차적으로 Swin Transformer와 가까워지도록 modernize 합니다. 이 과정에서 성능의 차이를 만드는 몇가지 요소를 발견하였으며 최종 모델을 ConvNeXt로 이름 지었습니다. ConvNeXt는 ConvNet의 효율성을 유지한채로 구조를 구현하기 쉬운 단순한 구조를 가지고 있습니다. 저자는 이번 연구를 통해 트랜스포머가 더 우월하다는 일반적인 믿음에 도전하고 convolution의 중요성에 대해 다시 생각해 보기를 바란다고 합니다.
2. Modernizing a ConvNet: a Roadmap
- ConvNet과 Swin Transformer의 정확한 비교를 위해 model의 FLOPs를 기준으로 모델의 scale을 비교합니다. 4.5 x 10^9 가량의 FLOPs 을 가진 ResNet-50과 Swin-T(Tiny) 모델을 비교하면서 성능을 평가합니다.
- High level 관점에서 ConvNet의 심플함을 유지한 채로 Swin Transformer의 디자인을 다양한 레벨에서 따라가는 것이 논문의 목적입니다. ResNet-50 모델에서 시작하여 먼저 비슷한 학습 테크닉을 적용하여 original ResNet-50 보다 훨씬 향상된 성능을 얻었고, 이를 baseline으로 하여 일련의 디자인 선택을 적용하였으며 구체적으로는 다음 다섯가지 step을 적용하여 성능을 향상 시켰습니다.
- macro design
- ResNeXt
- inverted bottleneck
- large kernel size
- various layer-wise micro design
- 각 Network Modernization 단계에 따른 성능의 향상 추이는 아래 그림과 같습니다.
2.1 Training Techniques
- network 구조외에도 training techniques 또한 최종 성능에 영향을 미칩니다. ViT는 새로운 모듈과 구조적 디자인 선택 외에도 다른 학습 테크닉을 소개했는데, 구체적으로는 optimization 전략과 hyperparameter 세팅을 포함합니다.
- DeiT와 Swin Transformer를 참고하여 다음과 같은 학습 테크닉을 적용하였습니다.
- Training Epochs 90 → 300
- AdamW optimizer
- Data Augmentation : Mixup, Cutmix, RandAugment, Random Erasing
- Regularization : Stochastic Depth, Label Smoothing.
- 위 방식들을 적용하여 original ResNet-50 보다 2.7% 향상된 성능을 보였습니다. 이를 통해 전통적인 ConvNet과 Vision Transformer의 성능 차이의 많은 부분이 training techinques에서 기인하였음을 알 수 있습니다. 모든 정확도는 3개의 random seed들로부터 학습한 성능을 평균낸 결과입니다.
2.2 Macro Design
- 다음은 Swin Transformer의 큼직한(Macro) 디자인 선택을 분석하였습니다. Swin Transformer는 ConvNet의 multi-stage 디자인을 채용하였는데, 각 스테이지는 다른 feature map resolution(Feature map의 output size)을 가지고 있습니다. 이 부분에서는 다음 두 가지 디자인 선택사항을 고려하였습니다.
Changing stage compute ratio
- ResNet의 stage별 계산 비율은 실험적으로 선택된 것입니다. 14x14 크기 resolution의 feature map에서 동작하는 “heavy res4”는 object detection과 같은 task에 적합한도록 설정되어있습니다.
- Swin-T는 비슷한 원칙을 따르면서 1:1:3:1의 비율을 사용하였습니다. 이를 따라서 각 stage의 block 수를 (3, 4, 6, 3) → (3, 3, 9, 3)으로 변경하였고 78.8% → 79.4%(0.6%)로 성능이 향상되었으며, 더 최적의 디자인이 존재할 가능성이 높습니다.
Changing stem to “Patchify”
- Stem cell 디자인은 인풋으로 들어온 네트워크의 첫부분에서 어떻게 처리될지에 대해 다룹니다. 이미지가 가지고 있는 불필요한 중복으로 인해, 일반적인 stem cell은 이미지를 적절한 크기의 feature map으로 downsample하며 이는 ConvNet과 Vision Transformer가 공통적으로 가지고 있습니다.
- 일반적인 ResNet은 stride2, 7x7 convolution에 이어지는 max pool layer를 통해 이미지를 4x downsamplin하는데 반해, Vision Transformer는 더 공격적인 patchify 전략을 stem cell에서 사용합니다. 더 큰 kernel size와 non-overlapping convolution이 stem cell에 사용되는데 Swin Transformer도 비슷한 전략을 사용하지만 size 4의 더 작은 patch로 이미지를 나누는데 이는 multi-stage 구조에 적합하도록 하기 위함입니다.
- ResNet의 stem cell을 4x4, stride 4의 patchify 구조로 바꾸었을 때 성능은 소폭(+0.1%) 향상되지만 큰 차이가 있는건 아닙니다. 이는 ResNet의 stem cell이 성능을 유지한 채로 더욱 단순한 patchify로 대체될 수 있음을 시사합니다.
2.3. ResNeXt-ify
- vanilla ResNet보다 더 나은 FLOPs/accuracy trade-off를 보여주는 ResNeXt의 아이디어인 group convolution을 채용합니다. ResNeXt의 중요 원칙은 “더 많은 group을 사용하고, Width를 확장하라" 입니다. ResNeXt는 bottleneck layer에서 group convolution을 적용하여 계산량을 획기적으로 줄였지만, 그 만큼 커진 loss를 충당하기 위해 width를 넓히는 방식을 도입하였습니다.
- 본 논문에서는 grouped convolution의 극단적인 예인 depthwise convolution을 사용합니다. MobileNet과 Xception 논문으로 유명해진 이 방식은 group의 수가 채널의 수와 같기 때문에 depthwise convolution으로 불립니다. 주목할만한 점은 채널 단위로 적용되는 self-attention의 weighted sum operation이 정보를 spatial dimension내에서만 교환한다는 점에서 detphwise convolution과 비슷하다는 점입니다.
- Depthwise convolution을 통해 계산량을 줄이고 network의 width를 swin-T와 동일하도록 올려주었을 때(64→96), 79.5%→80.5(+1.0%)의 성능 향상을 보였습니다.
2.4 Inverted Bottleneck
- Transformer block의 중요 디자인중 하나가 바로 inverted bottleneck입니다. mlp block의 hidden dimension의 크기가 input 보다 4배가 큰 구조를 뜻하며, 이는 MobileNetV2에서 ConvNet에도 적용되었습니다. 이 구조를 적용하여 FLOPs을 줄이면서도 성능이 0.1% 향상되는 모습을 보였습니다.
2.5 Large Kernel Sizes
- 이번에는 large convolution kernels에 집중해봅니다. Vision Transformer의 가장 구별되는 측면은 그들로 하여금 각 layer가 global receptive field를 가지도록 하는 non-local sef-attention입니다. VGGNet이후 대부분의 ConvNet들은 3x3의 커널 사이즈를 사용하였지만, Swin Transformer는 7x7의 큰 window size를 사용하였습니다.
Moving up detphwise conv layer.
- large kernel을 도입하기 전에 먼저 depthwise conv layer를 각 blcok의 첫단으로 이동시켰습니다. 이러한 디자인 선택은 Transformer에서도 확인 됩니다(Multi-head Self Attention block이 MLP blcok 앞 단에 위치).
- Inverted bottleneck을 사용할 때, 이는 더 일반적인 디자인 선택이 됩니다. - 복잡하고/비효율적인 모듈(MSA, large-kernel conv)로 하여금 더 적은 채널을 가지도록 하고, 효율적인 dense 1x1 layer에서 heavy lifting을 하도록 합니다. ( 더 큰 채널 size에서 효율적인 layer가 적용된다는 뜻인 듯 ) 이 과정에서 FLOPs은 줄어들지만, 일시적으로 성능이 79.9%(-0.7%)가량 떨어집니다.
Increasing the kernel size.
- 위와 같이 세팅(Moving up depthwise conv layers)이 되고나서야, large kernel-sized convolution의 효과가 두드러집니다. 3, 5, 7, 9, 11 다섯 가지의 커널 사이즈를 테스트 하였고, 7x7에서 가장 큰 성능 향상 (80.6%)을 보이며, 그 보다 큰 사이즈에서는 성능 향상을 보이지 못하며 더 큰 capacity를 가진 ResNet-200기반 모델에서도 동일한 양상을 보여줍니다.
2.6 Micro Design
- 이 부분에서는 좀 더 정밀한 부분에서 구조의 차이를 살펴봅니다. 이 부분에서는 activation function과 normalization layer에 집중해봅니다.
Replacing ReLU with GELU.
- 자연어 처리와 비전분야의 차이점 중 하나는 어떤 activation 함수를 사용하는가 입니다. ConvNet에서는 Rectified Liniear Unit(ReLU)가 그 단순함과 효율성으로 인해 주로 사용되었고 original 트랜스포머에서도 사용되었습니다. ReLU의 smoother variant 중 하나인 Gaussian Error Linear Unit(GELU)는 구글의 BERT나 OpenAI의 GPT-2모델 및 ViT에 사용되었습니다. 성능의 변화는 없지만 GELU 또한 ReLU를 대체하여 ConvNet에 사용할 수 있음을 확인하였습니다.
Fewer activation functions.
- 트랜스포머 block과 ResNet blcok 사이의 작은 차이는 트랜스포머가 더 적은 activation을 가지고 있다는 점입니다. 트랜스포머는 MLP layer 앞에 단 하나의 activation fucntion만이 존재합니다. 그에 반해 ConvNet은 각 convolutional layer마다 activation function이 붙는 것이 일반적입니다. 이와 같은 전략을 도입하여 두개의 1x1 layers 사이를 제외하고 activation function을 제거하였고 +0.7%의 성능 향상을 보였습니다.
- 81.3%의 성능은 Swin-T의 성능과 일치합니다.
Fewer normalization layers.
- 트랜스포머 block은 또한 더 적은 normalization layer를 가지고 있습니다. 본 논문에서 두 개의 BatchNorm layer를 없애고, 1x1 conv layer전에 하나만 남겨두었습니다. 이는 +0.1%의 성능 향상을 가져와 Swin-T의 성능을 넘어서게 됩니다.
- 심지어 트랜스포머 block 보다 더 적은 normalization 수를 가지고 있으며, 실험적으로 하나의 BN layer를 block이 첫 부분에 추가하는 것이 성능을 향상시키지 않음을 확인하였습니다.
Substituting BN with LN
- BatchNorm은 수렴성을 향상시키고 overfitting을 감소시켜주는 ConvNet의 필수 요소입니다. 하지만 BN은 성능에 악영향을 끼칠수 있는 많은 복잡성 또한 가지고 있습니다. 이 때문에 BN을 대체하기 위한 normalization 기법들이 제시 되었지만 BN은 여전히 많은 비전 task에서 선호받아왔습니다.
- 더 간단한 Layer Normalization이 트랜스포머에 적용되었고, 다양한 적용 시나리오에서 좋은 성능을 보였습니다. 직접적으로 LN으로 BN을 대체하는 것은 최적이 아닌 성능을 야기합니다[Group Normalization, ECCV 2018]. 본 논문에서는 우리의 ConvNet 모델이 LN을 사용하는데 크게 어려움을 겪지 않고, 약간의 성능 향상을 보임을 확인하였습니다.
Separate down sampling layers
- ResNet에서 공간적인 downsampling은 각 stage의 첫번째 residual blcok에서 stride 2의 3x3 conv를 통해 이루어졌습니다. Swin Transformer는 stage 사이에서 별개의 downsampling layer를 추가하였고, 이와 비슷한 전략으로 2x2, stride 2의 conv layer를 통한 개별적인 downsampling 기법을 도입하였습니다.
- 이러한 수정은 놀랍게도 학습 과정에서 발산이 일어나도록 하였고, 추가적인 연구를 통해 공간적인 해상도가 변할때마다 normalization을 해주는 것이 학습을 안정시켜주는 것을 확인하였습니다. 각 downsampling layer들 다음에, stem layer 전에 normalization을 추가하였고, 이를 통해 82.0%의 성능을 보였으며, 이는 Swin-T의 81.3%을 크게 뛰어넘는 결과입니다.
Closing remarks.
- 여기까지가 ConvNeXt를 발견하기 위해 진행된 과정입니다. 주목할만한 점은 “위에서 언급된 모든 디자인 선택지들 중에 새로운 것은 없다는 사실(None of the design options discussed thus far is novel)"입니다. 각 요소들은 지금까지 따로 연구되었지만, 종합적으로 적용되지는 않았습니다.
- ConvNeXt 모델은 Swin Transformer와 동일한 FLOPs, parameter 수, throughput, memory 사용량을 지니고 있지만, Swin Transformer처럼 복잡한 module을 필요로 하지 않습니다.
- 하지만 아직 완전히 설득력을 갖춘 것은 아닙니다. 지금까지의 탐구는 작은 scale에서의 성능에 머물러 있는 반면, Vision Transformer의 특출난 점은 큰 모델, 큰 데이터셋에서 보여주는 scaling behavior기 때문입니다. 또한 object detection과 semantic segmentation과 같은 task에서도 좋은 성능을 보여주는지에 대해서도 검증할 예정입니다.
Evaluation & Scaling
Conclusions
- 2020년대에 들어서, 비전 트랜스포머, 특히Swin Transformer는 일반적인 vision backbone을 위해 선호되는 선택으로서 ConvNet의 자리를 차지하였습니다. Vision Transformer가 ConvNet에 비해 더 정확하고, 효율적이며, scalable하다는 일반적인 믿음이 퍼져있는 상황에서, 본 논문에서 제안한 순수 ConvNet인 ConvNeXt는 ConvNet이 가지는 단순성과 효율성을 유지한 채로 Swin Transformer와 경쟁할만한 성능을 보여주었습니다.
- 놀라운 점은 ConvNeXt 모델 자체가 완전히 새로운 것이 아니라는 점에 있습니다. 많은 디자인 선택들이 그동안 각각 연구되었지만, 한꺼번에 적용되진 않았습니다.
- We hope that the new results reported in this study will challenge several widely held views and prompt people to rethink the importance of convolution in computer vision.
연구 과제 적용 결과
- 1D UWB 신호 기반 Ojbect Detection 모델에 Backbone + Encoder를 ConvNeXt 모델로 대체하여 성능 향상 확인.
'Machine Learning > Computer Vision' 카테고리의 다른 글
[Lab Seminar] A ConvNet for the 2020s (ConvNeXt) (0) 2022.01.27 [Lab Seminar] Instance Semgentation (0) 2022.01.09 [Lab Seminar] End-to-End Object Detection With Transformers (0) 2022.01.09