새소식

반응형
Vision AI/Paper review

[논문 읽기] A ConvNeXt for the 2020s - 2020년대를 위한 convolutional neural network

  • -
반응형

https://arxiv.org/abs/2201.03545

 

A ConvNet for the 2020s

The "Roaring 20s" of visual recognition began with the introduction of Vision Transformers (ViTs), which quickly superseded ConvNets as the state-of-the-art image classification model. A vanilla ViT, on the other hand, faces difficulties when applied to ge

arxiv.org

 

CNN은 Sliding window를 활용하여 local, global 정보를 둘 다 가지고 가는 전략의 네트워크임.

이는 Inductive bias의 효과를 낼 수 있었고, 이미지에서 좋은 성능을 내며 이미지분야에서 발전되었음.

이후에 Vision transformer(ViT)가 이미지 분야까지 들어오게 되었고, ResNet의 성능을 넘어섰음.

하지만 transformer도 단점이 있었음.

  • 데이터가 많을수록 성능이 좋다는것
  • 모든 패치에 대해 attention을 구하기 때문에 이미지사이즈가 클수록 계산량이 제곱으로 증가하기 때문에 느리다는 것

그래서 나온 모델이 Swin Transformer(Shifted Window Transformer)이며, 이 모델은 Transformer에서 CNN의 sliding window로 이미지의 부분적인 관련성을 획득하는 부분을 따서 만든 모델임.

이는 결국 Transformer가 발전하긴 했지만 결국 CNN의 장점을 가지고 있지 않아서 inductive bias 문제를 해결하기 위해서는 예전으로 회귀한다는 것을 시사함.

이 논문은 pure ConvNet이 달성할 수 있는 한계를 테스트하며, ResNet50을 base로 하여 transformer의 최신 구조를 참고하여 CNN의 성능을 점차적으로 높여본 연구임.

모델이름은 ConvNext

논문에서는 FLOPs가 비슷한 ResNet50, Swin-T(tiny)를 비교하면서 진행됨

ConvNext는 현대화된 학습기술을 적용했고, 모델 디자인 순서는 다음 순서와 같음.

디자인과 디자인에 따른 성능결과도 같이 기술함.

1. Training techniques (76.1% > 78.8%, 4.4G FLOPs > 4.4G FLOPs)

  • Epoch 90 > epoch 300
  • AdamW optimizer
  • Augmentation : Mixup, Cutmix, RandAugment, Random Erasing, regularization schemes including Stochastic Depth, Label Smoothing

2. macro design

  • 계산비율변경 (78.8% > 79.4%, 4.1G FLOPs > 4.5G FLOPs)
    • Swin-T에서는 1:1:3:1의 비율로 Swin block 수가 정의되어 있음.
    • 기존 ResNet50에서는 3:4:6:3 비율로 residual black 수가 사용됨.
    • 최신 트렌드에 따라 3:3:9:3 비율로 변경하여 정확도를 향상시킴
  • "패치스럽게, Patchify" (79.4% > 79.5%, 4.5G FLOPs > 4.4G FLOPs)
    • ResNet은 stem 부분에서 7x7 filter, 2 strides, max pooling으로 4배 다운샘플링함.
    • Swin-T는 4x4 patch 단위로 나눠놓음.
    • ResNet의 stem 부분을 패치스럽게 하기 위해 4x4 filter, 4 strides를 사용하였음.
     

3. ResNeXt

  • ResNeXt 스럽게, ResNeXt-ify (79.5% > 80.5%, 4.4G FLOPs > 5.3G FLOPs)
    • 위 그림의 왼쪽은 ResNet, 오른쪽은 ResNeXt 구조임.
    • ResNeXt의 메인 아이디어는 인풋의 채널수를 32개 path로 쪼개서 각자 연산을 하고 다시 concatenate 하는 groupped convolution을 사용함.
    • 이 아이디어를 확장해서 채널수만큼 쪼개서 depthwise convolution을 적용해 연산량을 대폭 줄였음.
    • 추가적으로 Swin-T와 채널을 맞추기 위해 width를 64에서 96으로 증가시킴
      • ResNet의 첫번째 block의 width가 64이고, 이를 Swin-T의 width와 맞춘다는 것을 의미

4. inverted bottleneck (80.5% > 80.6%, 5.3G FLOPs > 4.6G FLOPs)

  • (a)는 기존 ResNet의 bottleneck, (b)는 inverted bottleneck, (c)는 (a)의 depthwise conv layer를 위로 이동한 모습
  • Transformer block에서 이미 inverted bottleneck을 사용하고 있음.
  • 그래서 ConvNeXt에도 사용하였는데 성능도 올라가고 FLOPs도 많이 감소하였음.

 

 

 

 

 

 

5. large kernel size (80.6% > 80.6%, 4.6G FLOPs > 4.1G FLOPs)

  • (b)의 inverted bottleneck 구조를 적용했는데, Swin-T에 비교하면 MLP block 안에서 MSP를 수행하는 것이 된다.
  • 그래서 저자들은 inverted block을 Swin-T의 구조를 적용하여 (c)처럼 MSA를 먼저 수행하여 MLP를 수행하는 구조로 자연스럽게 변환했다. (정확히 이해를 아직 못함)
  • 그리고 3,5,7,9,11 kernel size 실험 중에 7이 제일 좋아 7x7을 사용했다.

6. micro design

  • ReLU to GELU (80.5% > 80.5%, 4.1G FLOPs > 4.1G FLOPs)
    • CNN에서 ReLU가 많이 사용되었지만 최근의 Transformer에서는 거의 GELU를 사용하였기 때문에 모든 활성화 함수를 GELU로 사용했다.
  • Fewer activation functions (80.5% > 81.3%, 4.1G FLOPs > 4.1G FLOPs)
    • Convnet은 conv > batch norm > activation이 공식화 되어있지만, transformer는 적은 activation function을 사용한다.
    • 이런 전략을 가져오기 위해 ConvNeXt에서는 그림(c)의 두개의 1x1 conv 사이에 하나의 GELU를 사용하였고, 성능을 향상했다.
  • Fewer normalization layers (81.3% > 81.4%, 4.1G FLOPs > 4.1G FLOPs)
    • Transformer에서는 batch norm도 MSA, MLP 앞에서만 수행한다.
    • ConvNeXt에서는 (c)에서 첫번째와 두번째 블록 사이에 batch norm을 적용하였다.
    • 벌써 Swin-T의 81.3%을 넘어섰다.
  • Substituting BN with LN (81.4% > 81.5%, 4.1G FLOPs > 4.1G FLOPs)
    • Batch norm은 overfitting을 방지하는 차원에서 CNN에서 사용되었다.
    • Transformer에서는 Batch norm이 아닌 Layer Normalization으로 높은 성능을 내고 있다.
    • ResNet에 LN을 바로 적용하면 성능이 떨어지지만 modern techniques을 적용한 ConvNeXt에서는 0.1% 향상되었다.
     

  • Separate downsampling layers (81.5% > 82.0%, 4.1G FLOPs > 4.4G FLOPs)
    • ResNet에서는 각 stage의 시작마다 shortcut connection을 위해 downsampling을 진행한다. (추가적인 layer가 있는 것이 아님)
    • Swin transformer에서는 downsampling layer가 따로 있기 때문에 ConvNeXt에서도 downsampling을 위한 layer를 추가했다.
    • 단순 레이어만 추가했을 땐 학습이 발산되어 LN을 추가하여 안정화했다.
     

Swin Transformer 와 비교하면 조금씩 ConvNeXt가 성능이 더 좋다.

ViT는 inductive bias가 적기 때문에 데이터를 많이 넣었을 때 성능이 좋다고 알려져 있다. 하지만 잘 디자인된 ConvNeXt는 이에 뒤지지 않고 오히려 넘어서는 성능을 보여준다.

ConvNeXt는 pure ConvNet으로 이루어졌고, Swin Transformer의 imagenet-1k 성능을 충분히 넘어섰다.

또한, 여기에 적용된 기술들은 새로운 것이 아니라 지난 몇년동안 나온 기술을 종합하여 이뤄낸 성과라고 기술하고 있다.

고찰

1. Transformer 라고 해서 반드시 좋은 것은 아닌 것 같다. 우리의 상황에서 맞는 모델을 찾는 생각이 필요하다.

2. Inductive bias는 데이터가 많지 않은 상황에서는 오히려 성능에 도움이 되는 것 같다.

3. Inductive bias가 안 좋은 것이라고만 생각했는데 꼭 그런것은 아닌 듯 하다.

4. Swin Transformer 도 결국 ViT가 갖고 있지 않은 inductive bias를 CNN의 inductive bias를 얻는 기술을 차용하여 이미지에서 좋은 성능을 내고 있는 모델이다.

  • 이 논문은 매우 imagenet 벤치마크 데이터셋의 결과론적인 실험 논문이라 우리 데이터에서 좋은 성능을 보여줄지는 잘 모르겠다.
    • Imagenet 데이터셋에서 잘 동작하지만 나의 imbalanced dataset에서는 좋은 결과를 보여주지 못했다. balanced dataset 에서만 효과가 있는 것일까?
반응형
Contents

포스팅 주소를 복사했습니다

이 글이 도움이 되었다면 공감과 광고 클릭 부탁드립니다~