본문 바로가기
Computer Vision

ConvNext 논문 리뷰

by pnnote 2023. 8. 17.
반응형

2022년에 페이스북에서 A ConvNet for the 2020s (ConvNext) 라는 논문을 발표했다. CNN이 이미지 인식 분야에서 아주 뛰어난 기술이었지만 Vision Transformer의 등장으로 CNN의 성능을 뛰어넘게 되면서 Transformer 기반의 이미지 처리에 대한 연구가 활발히 진행되고 있다. 이 논문은 Transformer가 아닌 순수 CNN을 기반으로 Vision Transformer(ViT), Swin Transformer를 뛰어넘는 ConvNext라는 모델을 제안한다.

 

Modernizing a ConvNet: a Roadmap

논문에서는 ResNet-50/ResNet-200을 시작점으로하여 다양한 기법을 적용해서 성능을 향상시킨다.

 

그림 1. roadmap

 

그림 1에서 남색 바는 ResNet-50을 기반으로 적용한 것이고, 회색 바는 ResNet-200을 기반으로 한것이다. 논문에서 적용한 기술은 크게 5가지로 나눌 수 있다. 1) macro design, 2) ResNeXt, 3) inverted bottleneck, 4)
large kernel size, and 5) various layer-wise micro designs 이다. 

 

Training Techniques

네트워크 아키텍쳐 디자인 외에 학습 절차도 성능에 영향알 꽤 미친다. optimizer는 AdamW를 사용하고 Mixup, Cutmix, RandAugment, Random Erasing과 같은 데이터 augmentation 기법을 사용한다. 그리고 Stochastic Depth와 Label Smoothing과 같은 regularization 기법을 사용한다. 이런식으로 학습 과정과 관련된 기법을 적용했을 때 ResNet-50 모델 성능이 76.1% 에서 78.8%로 2.7% 상승했다고 한다.

 

Macro Design

이 논문에서는 Swin Transformer의 macro network를 분석하여 각 단계마다 다른 feature map resolution을 사용하는 multi-stage design을 사용하며, 각 단계에서의 compute ratio와 초기 네트워크 구조(stem cell 구조라고 함)를 특별히 고려하는 설계 방식을 채택한다.

 

ResNet에서는 각 stage에 대한 계산분포는 경험/실험적으로 설계되었다. res4 단계는 특히 무거운 계산을 수행하는데, 이것은 14x14 특징 맵에서 객체 검출과 같은 하류 작업(downstream tasks)에 적합하도록 설계되었다. Swin Transformers(Swin-T)는 ResNet과 유사한 원칙을 따르지만, 단계별 계산 비율이 조금 다르게 1:1:3:1로 설정되었다. 더 큰 Swin Transformers의 경우, 이 비율은 1:1:9:1로 설정된다. 이 논문에서는 ResNet-50의 각 단계에서 블록 수를 (3, 4, 6, 3)에서 (3, 3, 9, 3)으로 조정하여, Swin-T와의 FLOPs(실수 연산 수)을 일치시켰다. 이 변경으로 모델의 정확도가 78.8%에서 79.4%로 향상되었다.

 

ResNeXt-ify

더 나은 성능을 위해 ResNeXt의 아이디어를 도입했다. 핵심 구성 요소는 convolution filter가 서로 다른 그룹으로 분리되는 group convolution이다. ResNeXt의 기본 원칙은 "더 많은 그룹을 사용하고 너비를 확장"하는 것이다.

 

Large Kernel Sizes

일반적으로 CNN에서는 작은 커널 크기 (예: 3x3)를 사용하는 것이 표준이다(VGGNet 스타일). 이것은 현대 GPU에서 효율적으로 구현될 수 있기 때문인데, 이 논문에서는 큰 커널 크기를 다시 고려하여 global receptive field를 갖는 Vision Transformers의 일부 성질을 CNN에 적용해본다. 큰 커널을 탐색하기 위한 첫 단계로 depthwise convolution layer의 위치를 올리는 것을 고려하는데 이것은 Transformers에서도 볼 수 있는 디자인 결정이다. 복잡하고 비효율적인 모듈 (예: MSA, 큰 커널 conv)은 채널 수가 적게, 효율적인 1x1 레이어는 무거운 연산을 수행한다. 이 중간 단계는 FLOPs를 4.1G로 줄이며, 성능은 일시적으로 79.9%로 감소하게되는데 큰 커널 크기를 3, 5, 7, 9, 11 등 다양하게 실험한 결과, 네트워크의 성능은 79.9% (3x3)에서 80.6% (7x7)로 상승하며, 네트워크의 FLOPs는 대체로 동일하게 유지된다. 따라서 논문에서는 각 블록에 7x7 크기의 depthwise conv를 사용한다.

 

Micro Design

논문에서는 micro scale 단에서 다양한 아키텍처 차이를 조사한다. 여기서 수행된 조사는 대부분은 layer 수준에서 이루어지며 특정 활성화 함수와 정규화 레이어의 선택에 중점을 둔다.

 

다양한 활성화 함수들이 개발되었으나 Rectified Linear Unit (ReLU)는 여전히 간단하고 효율적이기 때문에 CNN에서 널리 사용된다. ReLU는 원래의 Transformer 논문에서도 활성화 함수로 사용되었다. Gaussian Error Linear Unit (GELU)는 ReLU의 부드러운 변형으로 볼 수 있으며, Google의 BERT, OpenAI의 GPT-2 등 최신 Transformers에서 사용되고 있다. 이 논문에서도 ConvNet에서 ReLU를 GELU로 대체하였으나, 정확도는 변경되지 않았다(80.6%로 유지됨).

 

Transformer와 ResNet 블록 사이의 미세한 차이 중 하나는 Transformer가 더 적은 활성화 함수를 가지고 있다는 것이다. Transformer 블록을 생각해보면, MLP 블록 내에 활성화 함수가 하나만 존재하는데, 이와 달리 ConvNets에서는 일반적으로 각 컨볼루션 레이어, 1x1 컨볼루션 레이어를 포함하여, 각 레이어 다음에 활성화 함수를 추가하는 것이 일반적이다. 이 연구에서는 이러한 전략을 유지하면 성능이 어떻게 변하는지 조사한다. 그림 2에서 보여지는 것처럼, 연구자들은 두 개의 1x1 레이어 사이에 하나를 남기고 잔여 블록에서 모든 GELU 레이어를 제거하여 Transformer 블록의 스타일을 사용한다. 이 과정은 결과를 0.7% 향상시켜 81.3%로 만들어, 실질적으로 Swin-T의 성능과 일치시킨다.

 

그림 2. Block Design

 

Transformer 블록들은 일반적으로 더 적은 수의 정규화 레이어를 가지고 있다. 여기서는 두 개의 BatchNorm (BN) 레이어를 제거하고, conv 1x1 레이어 전에 오직 하나의 BN 레이어만 남긴다. 이 변경은 성능을 더욱 향상시켜 81.4%로 만들며 Swin-T의 결과를 초과한다. 실험적으로 블록 시작 시점에 하나의 추가적인 BN 레이어를 추가해도 성능이 향상되지 않는다는 것을 발견했다고 한다.

 

BatchNorm (BN)은 ConvNets에서 중요한 구성 요소다. 이는 수렴을 개선하고 과적합을 줄이는 데 도움이 되는데 하지만 BN는 모델 성능에 해로운 영향을 미칠 수 있는 많은 복잡한 요소들을 가지고 있다. 여러 다른 정규화 기법을 개발하는 시도들이 있었지만, BN이 대부분의 비전 작업에서 선호하는 옵션으로 남아 있다. 반면 더 간단한 Layer Normalization (LN)은 Transformer에서 사용되어 다양한 애플리케이션 시나리오에서 좋은 성능을 보인다. 원래의 ResNet에서 BN을 LN으로 직접 대체하면 성능이 최적이 아닐 것이나 이 연구에서는 네트워크 아키텍처와 훈련 기법의 모든 수정을 고려하여 LN의 사용이 BN 대신 어떤 영향을 미치는지 재검토한다. 연구자들은 ConvNet 모델이 LN을 사용하여 훈련하는 데 어려움을 겪지 않으며 실제로 성능이 약간 향상되어 81.5%의 정확도를 달성했다고 한다.

 

논문에서는 ResNet과 Swin Transformer의 다운샘플링(downsampling) 메커니즘을 분석하였는데, ResNet에서는 각 스테이지(stage)의 시작에서 공간적 다운샘플링이 수행된다. 이것은 stride가 2인 3x3 conv 레이어와, shortcut connection에서 stride가 2인 1x1 conv 레이어를 사용하여 이루어진다. Swin Transformer에서는 각 스테이지 사이에 별도의 다운샘플링 레이어가 추가된다. ConvNeXt는 Swin Transformer와 유사한 전략을 탐구하여 이를 위해 공간적 다운샘플링을 수행하는데 stride가 2인 2x2 conv 레이어를 사용한다.

 

별도의 다운샘플링 레이어를 도입한 후, 훈련이 수렴하지 않는 현상(diverged training)이 발생했다고 하는데
이 문제를 해결하기 위해 공간 해상도가 변경되는 위치에 정규화 레이어를 추가하는 것이 훈련을 안정화하는 데 도움이 되었다고 한다. Swin Transformer에서 사용된 것과 유사하게, 다운샘플링 레이어 전, stem 후, 그리고 최종 글로벌 평균 풀링 후에 Layer Normalization (LN) 레이어를 추가한다. 이러한 변경을 통해 정확도를 82.0%로 향상시켜 Swin-T의 81.3%를 크게 상회했다고 한다.

 

 

반응형