Search
💗

CBAM: Convolutional Block Attention Module(ECCV 2018)

Introduction

최근 연구들의 주된 연구들의 네트워크에서 중요한 요소들은 : depth, width, cardinality(group conv)
( 2018년임을 주의 )
LeNet의 Residual style Network→ 더 깊고 풍부한 representation
VGGNet : 같은 shape의 블록 쌓기 → fair results
ResNet : skip connection을 통해 같은 thopology의 residual blocks를 쌓음
GoogleNet : width 또한 모델의 성능향상에 중요한 요소임을 보여줌
[6]에서는 ResNet에서 width를 증가시키고, 28 레이어에 width를 증가시킨 모델이 1001레이어의 ResNet보다 뛰어남을 보여줌
Xception, ResNeXt : cardinality 증가 →파라미터의 증가 없이 다른 두 요소 ( width , depth )보다 stronger representation을 보여줌
우리는 다른 방면으로 접근 : attention
attention : 어디에 집중해야하느냐를 알려줄 뿐 아니라 representation of interests를 향상시킴
따라서 new network module CBAM을 소개
convolution 연산 은 cross-channel과 공간 정보를 함께 혼합하여 유익한 feature을 추출하기 때문에, channel과 spatial axes라는 두 가지 주요 차원에서 의미 있는 feature을 강조하기 위해 모듈을 채택합니다.
무시할만한 작은 연산량으로 채널 / 공간에 대한 attention map을 생성해 input featuremap에 곱함으로써 모델이 어디에 집중해야하는지 정보를 제공해준다!

Related Works

...

Convolutional Block Attention Module

전체적 플로우를 간단히 그림으로 나타내면 다음과 같다
간단히 식으로 나타내면
\bigotimes : element-wise multiplication
multiplication 동안에는 attention values are bradcasted(copied) : 즉 Cx1x1의 channel attention 을 input featuremap에 곱해주기 위해 CxHxW로 값을 복사해준다는 뜻. 각 채널은 모두 같은 값을 갖고 있을 것이다
(1xHxW의 spatial attention의 경우에도 마찬가지. 이 때는 채널방향으로 복사해줄 것이다)

Channel Attention Module

average pooling과 maxpooling으로 두개의 다른 spatial context description Favgc,FmaxcF^c_{avg}, F^c_{max} 를 뽑아내고, 각각 공유되는 하나의 MLP를 거친다음 더해진 후 sigmoid function을 거쳐 channel attention McM_c 가 된다
\bigoplus 는 element-wise summation 이다
MLP의 hidden layer는 1개로,
W0W_0 이후에는 ReLU activation이 있다.

Spatial Attention Module

피쳐간의 inter-spatial relationship을 통해 spatial attention map을 생성한다
이를 위해 채널방향으로 average pooling / max pooling을 진행하고 (채널방향) concatenate한다
여기에 7x7 conv연산으로 spatial attention map을 생성한다
ResBlock에 이를 적용한 그림은 다음과 같다
convolution을 거친 피쳐맵에 CBAM을 적용하고, shortcut을 더한다