공돌이 공룡의 서재

[논문 리뷰] CBAM : Convolutional Block Attention Module 본문

딥러닝/Model

[논문 리뷰] CBAM : Convolutional Block Attention Module

구름위의공룡 2021. 8. 25. 20:39

CBAM: Convolutional Block Attention Module

https://arxiv.org/abs/1807.06521 

 

KAIST 연구실에서 나온 논문이다. 글을 쓰는 시점에 인용수가 2천을 넘어섰다. 멋있고 부럽다.

무튼 이 논문은 아직 ViT처럼 Transformer에 vision분야에서 쓰이기 전이다. attention을 어떤 의미로 해석할 수 있는지, pooling 연산은 어떻게 해석할 수 있는지, 등에 대해 잘 알 수 있는 논문이다.

 

CNN operation에 대한 깊은 이해가 있으면, 논문을 더 잘 읽을 수 있을 것 같다. 여기 참고


[1] Introduction

 

지금까지 나왔던 CNN-base 모델들을 언급하며, 중요한 요소 몇 가지에 대해 설명하고 있다.

 

1) Depth: LeNet ▶ VGGNet ▶ ResNet 으로 발전하며, 모델이 깊어질수록 성능이 더 좋아짐.

2) Width: GoogleNet, WideResNet 등의 모델에서, channel을 증가시키면 성능이 더 좋아짐.

3) Cardinality : Xception, ResNeXt 등의 모델에서, block 수 자체를 늘리면 성능이 더 좋아짐.

 

ResNet block vs WIdeResNet block
ResNet block vs ResNeXt block

 

위의 3개 요소외에 다른 중요한 요소로 attention을 언급하고 있다. 논문에서 정의하는 attention을 보자.

Attention not only tells where to focus, it also improves the representations of interests.

정리하면 attention을 통해 image에서 어떤 요소에 좀 더 집중을 해야 하는지를 학습할 수 있으며 집중해야 하는 부분의 representation을 더 잘 학습시킬 수 있다는 것이다.

 

Convolution operation이 cross-channel 정보와 spatial 정보를 혼합해서 feature를 추출하기 때문에, channel 축에서 의미 있는 정보와 spatial 축에서 의미 있는 정보를 추출할 수 있는 모델을 만들자는 것이 이 논문의 취지다.

 

이를 통해 각 channel 축과 spatial 축에서 어디서, 무엇을 집중해야 하는지를 학습하게 된다고 소개하고 있다.

 

논문의 contribution이라 하면 기존에 있는 CNN base model들에 도입될 수 있다는 점, 도입되면 성능이 좀 더 좋아진다는 것이다.

 


[2] Convolution Block Attention Module : Architecture overview

 

Model Overview
Model summarize

위에 있는 모델을 수식적으로는 아래 식처럼 나타낼 수 있다. X는 여기서 element-wise multiplication을 의미한다. channel attention module과 spatial attention module 각각으로 나눠진다. 이를 동시에 처리하기보단 위의 그림처럼 channel 먼저 하고, spatial을 적용하는 것이 실험 결과 성능이 더 좋다고 한다. 이제 각각 attention module을 어떻게 처리하고 있는지를 살펴보자.

 


[3] Channel Attention Module

 

feature에서 채널간 관계를 이용해서 channel attention을 만든다. feature map에서 각 channel은 하나의 feature detector라고 고려할 수 있고, 이를 생각하면 channel attention은 image에서 어디에 집중할지와 관련 있다.

 

feature map의 각 channel을 하나의 detector라고 하는 것은 그 수만큼 filter를 사용한다는 것이고, 더 많은 weight들로 학습하는 것이기 때문이다. 위 Introduction에서 언급한 Channel이 왜 중요한지도 설명이 된다.

 

우선은 feature map의 spatial dimension을 maxpool과 avgpool을 이용해서 압축한다.  

Feature map의 HxWx1 이미지 하나에 대한 결과가  pooling 결과의 1칸에 해당한다.

여기서 max pooling의 경우 distinctive feature에 대한 단서를 모을 수 있다고 설명하고 있다. 논문에는 따로 설명이 없지만 반대로 average pooling은 전체적인 값들을 골고루 고려한다고 볼 수 있겠다. 다음에 각각을 shared MLP에 통과시켜서 값을 얻고, 이 둘을 더한 다음 sigmoid를 취한 결과가 Channel attention modulel이 된다.

 

MLP의 경우 가운데 있는 layer는 연산량을 좀 더 효율적으로 하기 위해 노드 수를 reduction ratio만큼 줄인다.

 

이렇게 얻은 결과와 입력 feature map을 곱한다.


 [4] Spatial Attention Module

위의 결과로 channel-refined feature map이 얻어졌다. 이 모듈에서는 우선 channel dimension을 압축시킨다. 여기서도 max pooling과 avg pooling 두 가지를 모두 사용한다.

하나의 픽셀에 대해 각 channel들, 즉 feature detector들이 갖고 있는 정보가 있을 텐데 그중에서 distinctive 한 값과 평균적인 값 2가지를 고려한다고 볼 수 있다. pooling 결과들을 channel axis로 붙이고, ((2 xHxW)가 된다.) 7x7 convolution layer를 적용한 다음 sigmoid를 통과시켜 spatial attention module을 얻는다.

 

 


이전에 살펴본 Transformer나 seq2seq with attention와는 다르게 key query value 개념도 없고, 오로지 pooling과 연산하는 방향으로 해결했다. 그럼 이런 결과를 attention이라고 볼 수 있을까?라는 고민을 좀 했었다. 

 

pooling을 통해서 feature map의 어떠한 unique 한 특징들(max = distinctive value, avg = global value)을 추출한다고 볼 수 있다. 추가로 들어간 mlp나 conv layer에서 weight를 학습하기 때문에, 이 결과들을 feature와 blend 할수록 전체적인 feature와 distinctive 한 feature들에 대한 연산들이 더 많이 이뤄지게 되므로(집중하게 되므로), attention이라고 볼 수 있겠다.

 

 


[5] Experiment & Conclusion

 

각 구성 요소들의 역할에 대한 설명도 충분한데, 이들이 실제로 얼마나 효과가 있는지도 상세하게 나와있어서 내용이 쉽게 받아들여지는 논문이다. 결과들을 살펴보자.

channel module만 추가했을 때와 spatial module만 추가했을 때, 그리고 pooling 연산을 avg와 max 둘 다 썼을 때, 등으로 구분되어 있다. CBAM module을 통해 기존보다 성능이 좀 더 나아졌음을 볼 수 있다.

위 실험으론, spatial attention module에서 왜 7x7 크기의 convolution을 하는지를 설명하고 있다. 공간적으로 어떤 것이 더 중요한지를 찾기 위해선 (적절한 attention 정보를 찾기 위해선) broad view가 더 필요하다고 볼 수 있어서, receptive field를 더 크게 할 수 있는 7x7 필터를 쓴다고 한다.

 


사실 지금 시점에서는 더 좋은 모델들이 많이 나오긴 했지만, 그래도 일반인들이 transformer기반 모델들이나 parameter수가 많은 모델들을 training 하기에는 어려울 것 같다. 그런 면에서 좀 더 성능을 높일 수 있게 튜닝시킬 module로 눈여겨볼 만하다. 그리고 논문 자체에서 pooling들의 효과와 convolution operation을 깊게 다루고 있어서 좋은 공부가 되었다.

Comments