HANA : Have A Nice AI

모두를 위한, 하나를 위한 AI

실용적인 AI/Metric Learning

[번외] Metric Learning을 위한 딥러닝 - CBAM(Conv Block Attention Module)

KM-Hana 2021. 3. 3. 20:08

*크롬으로 보시는 걸 추천드립니다*

 

3. Metric Learning을 위한 딥러닝 - 번외 편

   - Attention

arxiv.org/pdf/1807.06521.pdf

CBAM(Convolutional Block Attention Module) 논문을 중심으로 소개드리고자 합니다.

 

CGD 논문 소개[ kmhana.tistory.com/19?category=842461 ] 이후,

어떤 Metric Learning관련 논문을 소개해 드릴까 고민하던 중에 

CBAM(Convolutional Block Attention Module) 논문을 선정했습니다.

 

이전에 소개해 드린 Learning Loss for Active Learning 논문을 쓴 루닛(Lunit)에서

kmhana.tistory.com/10?category=838050

 

Active Learning을 위한 딥러닝 - Learning Loss for Active Learning

kmhana.tistory.com/4?category=838050 Active Learning 이란 - 기본 dsgissin.github.io/DiscriminativeActiveLearning/about/ About An introduction to the active learning framework, from classical algorit..

kmhana.tistory.com

Attention기반의 CNN모델인, CBAM이라는 좋은 논문을 발표했습니다

 

 

뜬금없이 왜 Attetion기반의 논문을 가지고 오냐라는 의문이 드실 수 있을 겁니다.

 

하지만, Metric Learning에서 가장 중요한 요소 중에 하나는 "어떻게 Feature를 잘 뽑을까?"입니다.

중요한 부분을 더 집중해서 학습하기 위한 방법인, CBAM은 Metric Learning의 관점에서도

흥미로운 논문입니다.

 

감사하게도, blog.lunit.io/2018/08/30/bam-and-cbam-self-attention-modules-for-cnn/ 블로그에 정리해주셨습니다.

CBAM에 대한 간단한 개념은, 위에 사이트에서 보셔도 좋을 거 같습니다.

  ※ 논문의 저자가 직접 논문을 설명(소개)한 자료를 보는 건 언제나 좋습니다!

 

저는 Metric Learning 관점을 추가하여, 소개를 드리려고 합니다!


종합 : ⭐⭐⭐

1. 논문 중요도 : 5점

2. 실용성 : 3점

설명 : 모델이 집중해야 할 중요한 부분을 더 집중해서 학습할 수 있도록 도와주는 모듈

   - 딥러닝의 설명력이 향상됨

   - 간단한 모듈 추가를 통해서, Feature의 집중도를 높일 수 있다.

   - End-to-End 학습이 가능하다.

   - 단, 정확도와 같은 성능을 높이는 것이 목적일 경우, 조금 후순위일 수 있음.

 

( * 개인적인 의견이며, 제 리뷰를 보시는 분들에 도움드리기 위한 참고 정도로 봐주세요)

CBAM 의의

딥러닝이 중요한 부분에 더 집중하자! 

   1. 간단한 두 가지 모듈(Channel Attention , Spatial Attention)을 추가하여, 

      중간(Intermediate) Feature를 효과적으로 강조 및 억제

      → 약간의 parameter의 추가로, 효율적이며 효과적이다!

 

   2. 여러 CNN 모델에 쉽게 적용할 수 있음

      → Classification 뿐만 아니라, Detection Task에서도 효과적임

      

   3. End-to-End 학습이 가능

 

Attention 메커니즘 소개

  ○ CNN의 구성 요소 : 

     1. Depth : Layer의 수

     2. Width : Filter의 수

     3. Cardinality : 병렬 Block ( Ex. ResNext, Xception)

        - Stronger Representation : Cardinality > Width, Depth

        - Cardinality가 Parameter를 절약할 수 있을 뿐만 아니라, 강력하 표현력을 제공

    ▶ 새로운 요소로 "Attention" 대해서 다룸 ( ※ 사람의 Visual System 중 "주의력"은 재밌는 주제) 

 

  ○ Attention : 

     1. 어디에(Where) 집중해야 하는지 알려줌 

     2. 표현력을 높임 : 중요한 Feature는 집중 + 비중요 Feature는 억제

 

  ○ CBAM의 특징

     1. Cross-channel과 Spatial Information을 혼합함 → ChannelSpatial 축에 대해서 의미 있는 Feature를 강조

     2. Channel은 "What"에 대해서 학습

     3. Spatial은 "Where"에 대해서 학습

    ▶ 두 정보(Channel, Spatial)는 서로 보완적인 역할

 

  ○ Attention mechanism 기본

     - 논문 BAM[arxiv.org/pdf/1704.06904.pdf]과 SENet[arxiv.org/pdf/1709.01507.pdf]에서 다루어지기 시작함

     - BAM : Encoder-Decoder 스타일의 Attention Module을 사용

       ※ BAM - Attention Module 구조

더보기

※ BAM - Attention Module 구조 

blog.lunit.io/2018/08/30/bam-and-cbam-self-attention-modules-for-cnn/

     - Sqeeze-and-Excitation : Glabal Average Pooling을 통해, Channel-wise attention 계산

       ※ Sqeeze-and-Excitation - Attention Module 구조

더보기

 Sqeeze-and-Excitation - Attention Module 구조

  ○ CBAM의 개선점

    1) BAM과의 차이 :

       - BAM의 단점 : 3D Feature Map을 한 번에 계산  

       - CBAM에서는 BAM처럼 3D Feature Map을 한번에 계산하는 하지 않음

       - Channel과 Spatial Attention으로 분해했다.

       - 분해를 통하여, 추가로 필요한 자원이 훨씬 적어 효율적이게 됨

 

    2) SE와의 차이 : 

       - SE의 단점 : Spatial에 대한 고려가 없음

       - Global Average Pooling과 Glabal Max Pooling을 함께 사용 ( Channel Attation 시)

       - CBAM에서는 Spatial Attention을 추가로 고려함

CBAM 구성

  ○ CBAM 수식 

$$ \mathbf{F}^{'}= \mathbf{M}_{c} \left ( \mathbf{F} \right ) \otimes \mathbf{F}, $$

$$ \mathbf{F}^{''}= \mathbf{M}_{s} ( \mathbf{F}^{'} ) \otimes \mathbf{F}^{'} $$

       - \( \mathbf{F} \in \mathbb{R}^{C \times H \times W } \) : Intermediate Feature map

       - \( \mathbf{M}_{c} \in \mathbb{R}^{C \times 1 \times 1 } \) : 1D channel attention map

       - \( \otimes \) : element-wise multiplication 

 

  ○ Channel attention module 구조

    1) Channel Attention 특징 :       

       -Feature 간의 inter-channel relationship을 통해, channel attention 생성  

       - 각 Feature map은 Feature detector이므로, channel attention은 의미 있는 'What'에 집중함

 

    2) Channel Attention 기본 구성 :

       - 계산의 효율성을 위해, Spatial dimension을 압축

       - GAP(global average pooling)만 사용하던 기존과 다르게 Global Max Pooling 추가하여 병렬 구성

        ※ 이전 블로그 Metric Learning 파트[kmhana.tistory.com/19]에서도,

            GAP과 MAC의 병렬 구성이 효과적인 것을 알 수 있었다.

       - GAP과 MAC의 병렬 구성시, 더 좋은 성능임을 확인함

      3) Channel Attention 세부 수식 :

       - MLP(Shared Network)를 통해, Attention map을 생성

       - MLP hidden size : \( \mathbb{R}^{C/r \times  1 \times 1} \) ( \(r \) 은 reduction ratio으로 16 고정)

       - \( \sigma  \) : sigmoid function

       - \( \mathbf{W}_{0} \) 다음에 ReLU 적용함 

   ※ CBAM의 MLP 코드

더보기

※ CBAM의 MLP 코드

https://github.com/Jongchan/attention-module/blob/master/MODELS/cbam.py

    ○ Spatial attention module 구조

     1) Spatial Attention 특징 :

       - Feature간의 inter-spatial relationship을 통해, channel attention 생성  

       - Channel attention을 보완하기 위해서, 'Where'에 집중함

 

    2) Spatial Attention 기본구성 :

       - Average Pooling과 Max Pooling을 channel 축(Axis)으로 적용함

         : C x H x W → (1 x H x W) x 2로 변환됨

       - Channel 축으로 적용된 pooling은 영역 정보를 효과적으로 강조함

       - 압축된 channel에 7x7 Conv Layer를 적용하여 Spatial Attention map 생성

       - BAM 논문처럼 1x1 Conv를 활용한 channel 압축보다, pooling을 활용했을 때가 더 성능이 좋음

       - Channel 정보가 압축된 Feature를 Concat 할 때, 3x3 Conv 보다 7x7의 성능이 더 좋음

         : 큰 Receptive Field가 공간적으로 중요한 Region을 찾음

 

     3) Spatial Attention 세부 수식 :

       - \( f^{7 \times 7 }\) : 7x7 Conv layer

       - \( \sigma  \) : sigmoid function

       ※ BAM 논문에서는 Dilation Conv layer를 사용하여, 더 넓은 Region을 커버함

 

    ○ CBAM 최종 구조

 

       - Attention Module 배치 : Sequential > 병렬 

       - Attention Module 순서 : Channel Sptial > Sptial → Channel 

CBAM 실험 결과

     1) 여러 CNN Architecture(ResNet)에 적용 가능함

       - 대부분의 ResNet 계열의 Architecture에서, CBAM을 추가했을 경우에 성능이 향상됨

     2) Feature를 더 잘 활용 및 학습

       - Grad-CAM을 활용한 시각화 실험 진행 

       - CBAM이 Target 객체(Object)에 대해서, 더 잘 학습하며 Feature를 더 잘 활용함을, 추측할 수 있음

     3) Detection Task에서도 적용 가능하며, 더 좋은 성능을 보임


마치며

   - CBAM과 같은 Attention 계열이 더 좋은 Feature를 학습할 수 있다는 것을 알 수 있음

   - 특히, CBAM은 Target Object에 대해서 더 잘 집중하도록 유도함

   - Metric Learning에서 Feature의 활용은 매우 중요하며, CBAM이 Metric Learning에 도움을 줄 수 있음

   - 이미 Google의 DELF라는 논문은 Attetion을 적용하였으며,

     Metric Learning과 Attention에 결합과 관련된 연구가 지속될 것으로 예상함

Google의 DELF 논문에서의, Attetion 활용 예시