새소식

딥러닝, 머신러닝/논문리뷰

Scaling Up Your Kernels to 31x31: Revisiting Large Kernel Design in CNNs 논문리뷰

  • -

한줄요약 : 일반적으로 사용되는 커널 사이즈인 3x3을 31x31까지 늘려서 CNN 성능을 ViT와 거의 유사할 정도로 향상시켰다. 

 

Abstract

  • 저자는 ViT의 최근 발전에 영감을 받아 작은 사이즈의 커널을 여러 개 쌓아 사용하는 것보다, 몇 개의 큰 컨볼루션 커널을 사용하는 게 더 강력한 패러다임이 될 수 있음을 증명했다.
  • 일반적 커널 사이즈 3x3과 달리 31x31의 커널 사이즈를 사용한 RepLKNet을 제안함
  • 성능 : ImageNet 87.8% top-1 정확도, ADE20K 56%의 mIoU
  • 작은 커널사이즈를 가진 CNN보다 큰 커널 사이즈를 가진 CNN이 훨씬 더 넓고 효과적인 receptive field와 더 높은 shape bias를 가진다.

 

Introduction

  • 현재 비전에서 ViT가 높은 성능을 보이고 있는 이유 : 일부는 MHSA 때문이라고도 하지만, 이 논문의 저자는 더 큰 receptive field를 구축하는 방법에 초점을 맞추고 있다. ViT에서 MHSA는 큰 사이즈의 커널을 사용하므로, 단일 MHSA 계층의 각 출력은 더 넓은 영역에서 정보를 수집할 수 있다. 반면, CNN에서는 일반적으로 큰 사이즈의 커널을 사용하지 않고, 많은 작은 사이즈(ex. 3x3)를 쌓은 스택을 사용하여 receptive field를 확장하고 있다. 
  • 제안하는 아키텍처 (RepLKNet) : Swin Transformer의 매크로 아키텍처를 따르며, 몇 가지 수정과 함께 MHSA을 큰 깊이별(depth-wise) 컨볼루션으로 대체한다. 
  • 이러한 커널 디자인이 다운스트림 작업(대규모 데이터셋 사전 학습 후 fine-tuning)에서 더 강력하다. 제안된 아키텍처는 COCO detection, ADE20K Segmentation에서 4.4%, 6.1%만큼 ResNext-101 또는 ResNet101 백본을 능가하는 성능을 보였다. 또는 Swin Transformer보다 우수한 성능이 나오지만, 추론 속도는 더 빨랐다. 

 

Related Work

  • Models with Large Kernels : 대부분 CNN 모델에서는 Large Kernel 모델이 별로 인기가 없고, 최근 Swin Transformer에서는 window size를 7에서 12로 이동된 attention을 사용하여 공간 패턴을 캡처할 것을 제안했다. 이는 대형 커널로의 변형으로도 볼 수 있다. GFNet은 매우 큰 커널을 도입하지만 기존 CNN에 비해 더 많은 속성을 탐색하지 않고, Swin-L 이상의 강력한 baseline에서 모델을 평가하지 않았다. 그래서 큰 커널 CNN이 Transformer만큼 잘 확장될 수 있는지 여부는 아직 확신할 수 없다.
    * ConvMixer : 9x9의 컨볼루션을 사용해서 ViT 또는 MLP의 Mixer 구성 요소를 대체한다. 이러한 작업은 우수한 성능을 보여주지만 31x31과 같은 훨씬 더 큰 컨볼루션의 이점을 보여주지는 못한다.
  • Model Scaling Techniques : CNN에서 기존의 scaling 접근 방식은 일반적으로 모델 깊이, 너비, 입력 해상도, 병목 비율 및 그룹 너비에 중점을 두고 있다. 여기서 커널 사이즈는 일반적으로 고려사항이 아니다.
  • Structural Re-parameterization : 매개변수의 변환을 통해 모델 구조를 동등하게 변환하는 방법론. 그 예로 RepVGG는 VGG-like 모델의 추론시간에 맞추고, ResNet style의 shortcut을 구성했다. 학습이 어려운 실제의 VGG-like 모델과 달리 이러한 방법은 모델이 만족스러운 성능에 도달하는 데 도움이 되었다. 이 논문에서는 이러한 방법을 사용해서 비교적 작은 (3x3, 5x5) 커널을 매우 큰 커널에 추가한다. 이러한 방식으로 작은 규모의 패턴을 포착할 수 있는 매우 큰 커널을 만들어 모델의 성능을 향상시킨다.

 

Guidelines of Applying Large Convolutions

CNN에 큰 컨볼루션을 적용하면 일반적으로 성능, 속도가 저하된다. 이 섹션에서는 대형 커널을 효과적으로 사용하기 위한 5개의 가이드라인을 제공한다.

 

1. large depth-wise convolutions can be efficient in practice.

  • large-kernel 컨볼루션의 FLOPS(계산 비용) 증가 문제 : DW(Depth-wise) 컨볼루션 적용으로 해결 가능. 기존의 DW 3x3 커널의 경우는 DW 컨볼루션이 비효율적이지만, 커널 크기가 커지면 계산 밀도가 증가해서 효율적 처리가 가능하다.

2. identity shortcut is vital especially for networks with very large kernels.

  • 커널 사이즈가 클수록 shortcut을 사용하는 게 정확도 향상에 더 큰 영향을 미친다.
    (아래 이미지 : 3x3 커널의 경우 68.67%->71.76%, 13x13 커널의 경우 53.98%->72.53%)
    * 큰 커널의 CNN은 shortcut 없이는 네트워크가 local 세부 정보를 캡쳐하기 어렵다는 것도 관찰됨. shortcut은 모델을 서로 다른 receptive field를 가진 수많은 모델로 구성된 암시적 앙상블로 만들어준다. 그래서 소규모 패턴도 캡처할 수 있고, 훨씬 더 큰 receptive field의 이점도 얻을 수 있게 해준다.

3. re-parameterizing [30] with small kernels helps to make up the optimization issue.

  • MobileNet V2의 3x3 레이어를 각각 9x9, 13x13으로 교체하고 선택적으로 Structual Reparameterization 방법론을 채택한다. 큰 레이어와 평행한 3x3 레이어를 구성한 다음, Batch Normaliztion(BN) 후 출력을 합산한다(아래 그림 2). 이러한 간단한 재매개변수화를 통해 커널 크기를 늘려도 성능이 저하되지 않도록 한다. 
    * ViT는 특히 소규모 데이터셋에서 최적화 문제가 있다. 일반적인 해결 방법은 convolutional prior를 도입하는 것이다. 예를 들어 DW 3x3 convolution을 각 self-attention block에 추가하는 것인데, 이 논문의 방법과 유사하다. 이러한 방법은 일반적을 잃지 않고 소규모 데이터셋에서 더 쉽게 최적화가 될 수 있도록 해준다. ViT와 유사하게 사전 훈련 데이터셋이 7300만개의 이미지로 증가할 때, 재매개변수화는 성능 저하 없이 생략이 가능하다.

 

 

4. large convolutions boost downstream tasks much more than ImageNet classification

  • 표3에서 보면, ImageNet보다 Cityscapes 데이터셋에서의 성능 향상이 크고, 위의 표5를 봐도 ADE20K에서의 성능 향상이 더 크다. 이러한 현상은 Downstream task에서 매우 다른 성능을 가질 수 있음을 나타낸다(성능 개선).
    * 이러한 현상의 원인
    1) 큰 커널 디자인은 ERF(Effective Receptive Fields)를 크게 증가시킨다. 많은 작업에서 큰 ERF를 의미하는 "contextual" 정보가 Object Detection, semantic segmentation과 같은 많은 다운스트림 작업에서 중요하다는 걸 보여주었다. (큰 커널 디자인이 이런 정보들을 더 잘 캐치한다는 것)
    2) 큰 커널 디자인이 네트워크에 더 많은 shape bias(편향)을 기여하기 때문이다. 인간은 질감(texture)보다는 주로 모양을 기반으로 물체를 인식하므로, 모양 편향이 강한 모델은 다운스트림 작업을 더 잘 진행할 수 있다. 

5. large kernel (e.g., 13×13) is useful even on small feature maps (e.g., 7×7).

  • 7x7 feature map을 가지는 MobileNet V2의 마지막 단계에서 DW 컨볼루션을 7x7 또는 13x13으로 확대한 실험으로 봤을 때, 커널 크기를 늘려도 그보다 작은 feature map에 잘 작동이 되고, 커널 크기를 더 늘리면 다운스트림 작업에서 성능이 더 향상되는 걸 볼 수 있다.

 

RepLKNet: a Large-Kernel Architecture

1. Architecture Specification (아키텍처 명세)

  • Stem : 시작 레이어. 다운스트림 예측 작업에서 고성능을 목표로 하기 때문에 처음에는 여러 conv layer로 더 많은 세부 정보를 캡처할 수 있도록 한다. 
  • Stage 1-4 : shortcut(guideline 1), DW large kernel(guideline 2)를 사용하는 여러 RepLK 블록이 포함되도록 한다. 일반적인 관행으로 DW conv 전후에 1x1 conv를 사용한다. 채널 전반에 걸쳐 더 많은 비선형성과 정보 통신을 제공하기 위해 1x1 layer를 사용해서 깊이를 늘린다.
  • Transition Block : stage 사이에 배치되며, 먼저 1x1 conv로 채널 차원을 증가시킨 뒤 DW 3x3 conv로 2x 다운샘플링을 수행한다. 

 

2. Making Large Kernels Even Larger

  • 표5(가이드라인 4)에서 다양한 커널 크기를 설정한 상태의 실험 결과를 확인할 수 있다. ImageNet에서 커널 크기를 3에서 13으로 늘리면 정확도가 향상되지만, 더 크게 만들어도 별로 개선되지 않는다. 그러나 ADE20K에서는 13에서 31로 확장하면 더 높은 mIoU를 가져온다. 앞서 언근한 모델을 RepLKNet-31B(Base)라 하고, C=[192, 384, 768, 1536]인 더 넓은 모델을 RepLKNet32L(Large)라 하여 비교한다. 

3. ImageNet Classification

4. Semantic Segmentation

  • 사전 학습된 모델을 Cityscapes 및 ADE20K의 백본으로 사용한다. (표7, 표8)
  • Cityscapes : Swin-B보다 상당한 격차로 뛰어난 성능을 보이고, ImageNet22K에 사전 학습된 Swin-L보다도 뛰어난 성능이 나온다. 
  • ADE20K : 1K, 22K 사전 학습 모두에서 Swin-B 능가함. 

5. Object Detection

  • 고급 기술을 사용하지 않고 백본만 교체한 실험. 성능도 더 우수하고, 더 적은 수의 매개변수와 더 낮은 FLOPs임.

 

Discussion

1. Large-Kernel CNNs have Larger ERF than Deep Small-Kernel Models

  • 저자는 더 큰 receptive field를 얻는다는 점에서 하나의 큰 커널이 많은 작은 커널보다 훨씬 더 효과적이라고 주장하고 있다.  그 이유는 다음과 같고, 예시는 논문에 기재된 ResNet과 RepLKNet과의 비교를 통해 알 수 있다.
    1) Effective Receptive Field(ERF) 이론에 따르면 ERF의 크기는 K(커널 크기)에 따라 선형적으로 증가하지만 L(깊이에 따라서는 곡선형(sub-linearly)으로 커진다.
    2) 깊이가 증가하면 최적화가 어려워진다.

 

2. Large-kernel Models are More Similar to Human in Shape Bias

  • 아래 그림은 RepLKNet이 Swin보다 shape bias가 더 높은 걸 보여준다.

 

Limitations

  • 표6을 보면, large kernel 디자인은 데이터 및 모델의 규모가 증가함에 따라 Swin Transformer에 뒤쳐지기 시작한다(다운스트림 점수는 비슷함). 이러한 격차가 어디서 비롯된 것인지는 분명하지 않지만, 이를 보완하기 위한 방법을 찾고 있다. (ex. ConvNeXt와 같은 더 강력한 baseline 활용)

 

 

참고자료

https://arxiv.org/pdf/2203.06717v2.pdf

 

Contents

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

이 글이 도움이 되었다면 공감 부탁드립니다.