*크롬으로 보시는 걸 추천드립니다*
3. Metric Learning을 위한 딥러닝 - 번외 편
- Attention
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
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을 혼합함 → Channel과 Spatial 축에 대해서 의미 있는 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 구조
- 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 코드
○ 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에 결합과 관련된 연구가 지속될 것으로 예상함
'실용적인 AI > Metric Learning' 카테고리의 다른 글
Metric Learning을 위한 딥러닝 - CGD(Combination Global Descriptors) (1) | 2021.02.20 |
---|---|
Metric Learning 이란 - Feature 추출 (0) | 2021.02.12 |
Metric Learning 이란 - 학습 방법(Loss) (0) | 2021.02.05 |
[번외 - 논문요약] Deep Face Recognition : A Survey - ① (0) | 2021.02.02 |
Metric Learning(Image Retrieval) 이란? - 기본 (5) | 2021.02.02 |