안녕하세요, 오늘 읽은 논문은 CBAM(2018), Convolutional Block Attention Module 입니다.
일반적으로 CNN 모델의 성능을 향상시키는 방법은 depth, width, cardinality 세 가지 요소가 있습니다. depth는 층을 의미하고, width는 필터 수를 의미하며 cardinality는 xepction과 resnext에서 제안된 group convolution에서 group의 수를 의미합니다.
CBAM은 위 세가지 요소를 제외하고 attention module을 사용하여 모델의 성능을 향상시킵니다. channel attention module과 spatial attention module로 구성되어 있으며, 각각의 attention module은 채널과 공간 각각에 대한 attention map을 생성합니다. 생성한 attention map을 input feature map에 곱하여 필요없는 정보는 억제하고 중요한 정보는 강조합니다. CBAM은 무시할만한 작은 연산량으로 CNN 구조에 적용할 수 있도록 설계되었습니다. 또한 여러 모델에 적용하여 해당 모델의 성능이 향상되는 것을 실험으로 증명합니다.
정리하자면 CBAM은 input feature에서 채널, 공간 정보에 대한 attention map을 생성하여 input feature map에 곱하여 모델이 어디에 집중해야 하는지에 대한 정보를 제공합니다. 채널별 가중치를 계산하는 SENet과 공간 픽셀별 가중치를 계산하는 residual attention network의 개념을 통합한 것으로 생각해볼 수 있습니다. 참고로 SENet은 적은 연산량으로 채널별 가중치를 계산하여 현재도 많이 이용하고 있지만, residual attention network의 연산량은 상당하여 이용하지 않고 있습니다.
CBAM(Convolutional Block Attention Module)
위 그림처럼 CBAM은 channel attention module과 spatial attention module로 이루어져 있습니다. channel attention module은 input feature에서 1D channel attention map을 생성합니다.
생성한 1D channel attention map에 input feature을 곱하여 F`를 생성합니다.
spatial attention module은 F`를 입력 받아 2D spatial attention map을 생성합니다.
생성한 2D spatial attention map을 F`에 곱하여 F``를 생성합니다.
최종적으로 F``는 attention이 적용되어 중요한 정보를 강조하고, 불필요한 noise를 억제한 feature map이 됩니다.
이제 각 모듈을 자세히 살펴보겠습니다.
Channel Attention Module
channel attention module은 input feature F의 내부 채널 관계를 활용하여 channel attention map을 생성합니다. chnnel attention은 주어진 입력값에서 무엇이 중요한지 집중합니다. 효과적으로 계산하기 위해 input feature map의 spatial 차원을 1x1로 압축합니다. 즉 Cx1x1가 되는 것입니다. 또한 spatial 정보를 통합하기 위해 average pooling과 max pooling을 적용합니다. 두 pooling 연산을 함께 사용하면 성능이 향상됩니다.
Channel Attention module의 동작 원리는 ave pooling과 max pooling을 모두 사용하여 feature map의 공간 정보를 통합하여 F_avg와 F_max를 생성합니다. 각각의 F_avg와 F_max를 MLP에 전달하여 각각의 attention map을 생성한 후에 둘을 더해여 최종 channel attention map을 생성합니다.
Spatial attention module
Spatial attention module은 어디에 중요한 정보가 있는지 집중하도록 합니다. channel attention map과 input feature map을 곱하여 생성한 F`에서 채널을 축으로 Maxpool과 Avgpool을 적용해 생성한 1xHxW의 F_avg와 F_max 두 값을 concatenate 합니다. 여기에 7x7 conv 연산을 적용하여 spatial attention map을 생성합니다.
Performance
grad-cam 적용 결과
참고자료