새소식

Computer Vision

[논문 리뷰] InternImage: Exploring Large-Scale Vision Foundation Models with Deformable Convolutions

  • -

오늘 리뷰할 논문은 InternImage 입니다. InternImage는 Deformable Convolution을 ViT와 같은 구조에 적용시켜 성능을 향상시킨 논문으로 최근 Classification, Object Detection, Segmentation 등 여러 CV 분야에서 SOTA의 성능을 보이는 모델입니다.

 

https://arxiv.org/pdf/2211.05778.pdf

 

최근 ViT는 큰 파라미터를 기반으로 한 모델로 CNN보다 뛰어난 성능을 보여줬습니다. 그러나 저자는 이것이 CNN의 한계가 아닌 아키텍쳐의 설계 및 대규모 데이터셋과 파라미터의 차이일 뿐이라고 주장합니다. CNN이 ViT를 따라잡기 위해서는 다음 두가지에 대한 해결책이 필요합니다.

 

  • ViT의 Multi-head Self-Attention은 Long Range Dependency와 Adaptive Spatial Aggregation(적응형 공간 집계)라는 2가지 특징을 가집니다. 이를통해 대규모 데이터에 대해 더 잘 학습할수 있습니다.
  • ViT는 MHSA 외에도 Layer Normalization, Feed Forward Network, GELU등의 고급 아키텍쳐를 가지고 있습니다. 

위 그림은 Core Operator에 대한 비교를 나타내는데 global Attention은 큰 컴퓨팅 성능이 필요하며, local Attention은 long-range dependency가 부족합니다. 31x31 kernel과 같은 큰 사이즈의 Convolution은 이같은 단점을 충족하지만 adaptive statial aggregation을 충족하지 못합니다. 즉 Resolution이 큰 사이즈의 영상과 작은 사이즈의 영상에서 다르게 작용할 수 있습니다. 마지막으로 Deformable Convolution을 사용한 Dynamic Kernel은 모든 부분에서 유연하게 작용합니다.

 

저자는 이를 해결하기 위한 CNN 기반의 foundation model 설계를 제안했습니다. Dofrmable Convolution을 기반으로 하는 Transformer와 비슷한 형태의 Block을 설계하여 InternImage라는 새로운 BackBone 네트워크를 제안합니다. 이때 Deformable Convolution은 다음 3가지의 특징을 가지게 됩니다.

 

  1. 데이터에 대한 적절한 receptive field를 학습하는 Offset.
  2. Offset과 Modulation Scalar는 입력 데이터에 따라 adaptive 하게 조정되기 때문에 ViT 처럼 Adaptive Spatial Aggregation이 가능.
  3. Deformable Convolution의 Window는 3x3이기 때문에 ViT와 같은 높은 Cost를 가지지 않습니다.

 

이를 통해 InternImage는 더 적은 매개변수로 ViT나 Swin Transformer와 같은 SOTA 모델을 능가하는 성능을 보여주었습니다.

Deformable Convolution V3

Convolution vs. MHSA

Convolution과 MHSA은 다음과 같은 차이점을 가지고 있습니다.

  • Long Range Dependency: 3x3 Convolution과 같은 일반적인 CNN은 MHSA에 비해 receptive field가 상당히 작습니다. 따라서 매우 deep한 model일 지라도 ViT와 같은 Long Range Dependency를 가지는데에는 한계가 있습니다.
  • Adaptive Spatial Aggregation: CNN은 ViT에 비해 매우 편향적입니다. 따라서 더 빠르게 수렴되고 훈련 데이터 양도 더 적게 필요합니다. 그러나 이것이 대규모의 데이터에 대한 pattern을 학습할 때 한계를 가지게 되는 이유이기도 합니다.

 

Revisiting DCN v2

Convolution이 MHSA의 성능을 따라잡기 위해서는 위의 두가지(Long Range Dependency, Adaptive Spatial Aggregation)를 필요로 합니다. 저자는 DCNv2를 통해 이를 해결했다고 합니다. DCNv2는 $x \in \mathbb{R}^{C \times H \times W}$연산을 하는 픽셀 위치 $p_{0}$에 대해 다음과 같은 수식을 따릅니다:

 

$y(p _{0} )= \sum\limits_{k=1} ^{K} w _{k} m _{k} x(p _{0} +p _{k} + \triangle  p _{k} ) \tag{1}$

 

$K$는 전체 샘플링 포인트 수를, $k$는 각 샘플링 포인트입니다. $w_{k}$는 각 포인트에 대한 weight이며 $m_{k}$는 modulation scalar입니다. $(w_{k} \in \mathbb{R}^{C \times C})$

 

$m_{k}$는 DCNv2에서 나온 개념인데 [0,1] 사이의 값을 가지며 공간적인 값의 범위를 특정하게 됩니다. 따라서 원하지 않는 부위의 공간에 대한 값을 인식하지 않도록 하여 학습을 효과적으로 할수 있도록 도와줍니다.

modulation scalar는 offset을 통해 추출됩니다. 따라서 DCNv2의 offset은 3N의 channel을 가집니다.

 

DCNv2는 $p_{k}$라는 flexible한 위치정보를 통해 Long Range Dependency를 충족하였고 $p_{k}$와 $m_{k}$의 값을 통해 Adaptive Spatial Aggregation을 해결하였습니다. 따라서 MHSA과 유사한 특성을 가지며 이를 통해 대규모 CNN기반 foundation model의 설계가 가능하다는 것을 증명할 수 있습니다.

 

Extending DCNv2 for Vision Foundation Models

DCNv2는 원래 일반적인 Convolution의 weight를 가져와 fine tuning을 합니다. 하지만 이것은 scratch부터 훈련하는 ViT같은 대규모 비전모델에는 적합하지 못합니다. 따라서 저자는 DCNv2를 다음과 같이 확장했습니다.

 

  • CNN은 각위치에 대해 독립적인 가중치를 가지고 있기 때문에(channel의 개수, point의 개수마다 독립적임) 대규모 모델에서 효율적이지 못합니다. 저자는 Separable Covolution에서 아이디어를 차용하여 Weight인 $w_{k}$를 depthwise와 pointwise로 분리합니다. depth에 대한 부분은 $m_{k}$, point에 대한 부분은 $w$가 담당하게 됩니다.

이게 무슨 뜻일까 고민을 했었는데 논문을 구현한 Official Implementation의 Issue를 보면 모든 Point가 같은 weight를 공유한다고 나와있습니다.

 

https://github.com/OpenGVLab/InternImage/issues/3

 

I don't understand this shared weight in the article, can you explain it in detail, please? · Issue #3 · OpenGVLab/InternImage

To remedy this problem, we borrow the idea from the separable convolution [56] and detach the original convolution weights wk into depth-wise and point-wise parts, where the depth-wise part is resp...

github.com

이것을 보고 제가 이해한 바로는 pointwise에대한 $w$ 공유 즉 각 point들은 $w$를 공유하며 depthwise에 대한 $m_{k}$ 공유 즉 channel별로 같은 $m_{k}$를 공유한다는 것 같습니다. 그렇기 때문에 수식에서도 $w, m_{k}$(w는 모든 point에 대해 같은 weight를 가지기 때문에 k값이 없고 반대로 $m_{k}$는 k끼리는 값을 공유하지 않기 때문에 k값이 있습니다.)를 구분지은 것 같습니다. (주관적인 해석입니다..)

 

참고로 Separable Convolution은 Depthwise와 Pointwise를 합친 Convolution입니다. 

Depthwise Separable Convolution

 

  • DCN에 multi-group 메커니즘을 도입합니다. 총 G번의 Group Convolution을 수행하여 여러 spatial Aggregation Pattern을 학습할 수 있습니다. Group Convolution은 Channel을 G개의 Group으로 나누어 Convolution을 수행한뒤 합치는 기법입니다. 참고로 G의 수가 Channel의 수와 같아지면 결국 Depthwise Convolution과 같아지게됩니다.

 

Convolution vs Group Convolution

 

  • Modulation Scalar를 정규화 합니다. 원래 Modulation Scalar는 Sigmoid로 [0,1] 값을 가지게 됩니다. 이 때 각각 고유의 값을 가지게 되므로 합계가 안정적이지 않아 학습이 불안정해집니다. 따라서 Sigmoid로 정규화 된 각 값들을 Softmax로 전체 합이 1이 되도록 정규화를 하여 안정화합니다.

 

$y(p_{0})=\sum\limits^{G}_{g=1}\sum\limits^{K}_{k=1}w_{g}m_{gk}x_{g}(p_{0}+p_{k}+\triangle p_{gk} \tag{2})$

 

G는 Groups의 수이며 $w_{g}$는 Group으로 나뉜 각각의 Weight입니다. 이때 $w_{g} \in \mathbb{R}^{C \times C'}$인데 $(C'=C/G)$ $C \times C'$인 이유는 output channel $C$에 대해 각 Group별 channel 만큼 계산하므로 $C'$ 만큼 곱해주기 때문입니다. $m_{gk}, \triangle p_{gk}$는 group별, point 별로 다른 값을 지닙니다. $x_{g} \in \mathbb{R}^{C' \times H \times W}$는 Slicing 된 feature map입니다.

 

InternImage Model

저자는 DCNv3를 효과적으로 사용하기 위해 Block 형태의 Foundation Model인 InternImage를 제안했습니다.

 

Basic Block

Architecture of InternImage

보시는바와 같이 InternImage의 기본 구조는 ViT와 같은 Transformer와 매우 비슷합니다. 이때 self-Attention 대신 3x3 DCNv3를 Core Operator로 사용하고 일반적인 CNN BackBone과는 다르게 Layer Normalization, Feed Forward Network를 사용합니다.

 

Stem & Downsampling Layers

Stem Layer는 Hierarchical feature를 얻기위해 쓰이며 Input Resolution을 4배 감소시킵니다. stride 2, padding 1인 3x3 Convolution, LN, GELU가 각각 2번씩 쓰이며 한번지날때마다 Resolution이 절반으로 감소합니다. Downsampling Layer는  Stem Layer와 똑같은 Convolution을 사용하고 LN이 한개있습니다. Stem과 마찬가지로 Resolution을 절반으로 감소시킵니다.

 

Stacking Rules

InternImage의 i번째 블록에 대한 HyperParameter은 다음과 같습니다.

 

  • $C_{i}$: i번째 stage에 대한 Channel 수
  • $G_{i}$: i번째 stage에 대한 DCNv3의 Group 수
  • $L_{i}$: i번째 stage에 대한 basic block의 수

InternImage는 총 4가지 stage로 이뤄져있기 때문에 12개의 HyperParameter가 있습니다. 너무 많기 때문에 이를 통제할 몇가지 규칙을 만들었습니다.

 

  1. 마지막 3단계의 채널개수는 첫번째 채널개수($C_{1}$)에 의해 결정됩니다.
  2. 각 stage의 그룹개수($G_{i}$)는 채널개수($C_{i}$)에 의해 결정됩니다. ($G_{i}=C_{i}/C'$)
  3. Stage의 블록의 수는 "AABA" 패턴을 가집니다. 즉 1,2,4 Stage의 블록 수가 같습니다.
  4. 3 Stage 블록의 수가 가장 많습니다.

위 룰을 적용하면 ($C_{1}, C', L_{1}, L_{3}$)의 4가지만 사용하여 모든 HyperParameter를 결정할 수 있습니다.

총 3000만개의 파라미터를 가지는 기본모델에  $C_{1}$을 {48, 64, 80}, $L_{1}$을 {1,2,3,4,5}, $C'$을 {16, 32}로 사용하여 훈련하였습니다. 즉 3x5x2=30개의 모델들로 범위를 축소시켰고, ImageNet에서 평가하여 최고의 모델 (각각 64, 16, 4, 18을 사용한 모델)을 찾을 수 있었습니다.

 

각 HyperParameter 별 성능

Scaling Rules

저자는 EfficientNet에서 영감을 받아 파라미터 Scaling에 대한 규칙도 추가했습니다. (EfficientNet은 모델의 Depth, Wide, Input Image Resolution의 상관관계에 따라 가장 효율적인 값들을 수식으로 찾아내는 논문입니다.)

 

모델의 깊이(D)는 Stacking Rule에 따라 $3L_{1}+L_{3}$이고 모델의 너비(W)는 $C_{1}$입니다. ($C_{1}$일때 feature의 크기가 가장 크기 때문입니다.) 이때 $\alpha, \beta, \phi$를 사용하여 D와 W를 조정합니다. 수식은 다음과 같습니다.

  • $D'=\alpha^{\phi}D$
  • $C'_{1}=\beta^{\phi}C_{1}$
  • $(\alpha \ge 1, \beta \ge 1 \ and \ \alpha\beta^{1.99} \approx 2.)$

1.99는 InternImage에서만 사용한 값입니다. (모델 너비를 2배 늘이고 깊이를 일정하게 유지합니다.) 실험적으로 $\alpha=1.09, \beta=1.36$일때 최적의 값을 보였으며 이를 기반으로 하는 InternImage-T/S/B/L/XL를 설계했습니다. 여기에 더해 Large Model인 InternImage-H는 파라미터의 수가 무려 10억5개이며 Group에 대한 차원 $C'=32$로 변경했습니다.

'Computer Vision' 카테고리의 다른 글

[논문 리뷰] Deformable Convolutional Networks  (0) 2023.03.18
Contents

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

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