이번에는 이미지 처리에 관련된 모델이 제대로 작동하고 있는지 획기적으로 파악할 수 있으며 각종 관련 모델들에 시각화로 사용하고 있는 기법인 Class Activation MAP 을 소개하고자 한다.
설명할 논문은 다음과 같으며 실험보다는 원리에 집중하여 작성하였다.
- CAM : (2016 CVPR) Learning Deep Features for Discriminative Localization
- Grad-CAM : (2017 ICCV) Grad-CAM: Visual Explanations from Deep Networks via Gradient-Based Localization
1. CAM
본 논문은 처음으로 class activation map을 제안하였으며 GAP(Global Average Pooling)레이어를 사용하여 클래스에 특정한 activation map을 추출한다.
Q1. 본 논문은 어떤 원리를 사용할까? : Class Activation Mapping
일반적으로 CNN모델의 last convolution layer의 특징맵은 모든 분류 클래스에 대한 특징맵(feature map)을 추출하게 된다.
이는 convolution 레이어가 모델의 특징을 추출한 후, 이를 토대로 fully connected 레이어가 클래스를 분류하기 때문이다. FC레이어는 모든 분류에 대한 특징맵에서 클래스와 관련된 feature의 가중치를 높이고 그외의 가중치는 낮추는 방식으로 학습을 진행하게 된다.
그렇다면 모든 분류 클래스에 대한 특징맵에서 원하는 특정 클래스에 대한 특징맵만을 추출할 수는 없을까?
본 논문에서는 GAP레이어(Global Average Pooling layer)를 활용하여 모든 클래스에 대한 특징맵에서 클래스를 특정한 특징맵을 추출할 수 있음을 증명하였다.
GAP레이어를 사용하는 이유는 무엇일까?
GAP은 마지막 합성곱 레이어에서 각 차원의 특징맵에서 평균을 내어 weight을 생성한다. 이는 역으로 GAP의 각 가중치를 각 차원의 특징맵에 곱하면 자연스럽게 영향을 많이 준 feature은 큰값을, 적게 준 feature은 작은 값을 갖게 됨을 의미한다.
본 논문에서는 이를 $F_k = \sum_{x,y}f_k(x, y)$ (특징맵의 변수)라 부르고 있다.
풀링방식에는 GAP뿐만 아니라 GMP(Global Max Pooling)방식 또한 존재하나 GMP는 가장 영향을 주는 값 외에 이미지 전체의 영향을 식별하기가 어려워 CAM 생성에 적합하지 않았다고 서술되어 있다.
사실 CAM 논문에서 클래스를 특정하는 기법은 가장 처음에 제안된 CAM 논문임에도 잘 쓰이지 않는 이유가 된다.
클래스를 특정할 때 GAP 레이어의 출력을 사용하다보니 GAP을 사용하는 모델 외에는 사용할 수가 없다.
어떻게든 사용하려면 기존 모델에 GAP 레이어를 추가하는 방안(last convolution layer 다음에 GAP+1fc layer+softmax layer로 classifer를 재 구성한다.)이 있긴 하나.. 이는 모델을 변형하게 될 뿐만아니라 기존의 가중치와도 달라지게 되어 실제 모델과 달라진다는 문제가 발생한다.
Q2. GAP을 이용해서 대체 어떻게 클래스를 특정하는걸까? CAM 과정
- GAP의 한 유닛 k의 변수값은 $F_k = \sum_{x,y}f_k(x,y)$ 와 같고, $w_k^c$는 유닛 k에 대하여 클래스와 연관된 가중치 값이다.
- 클래스에 대해 softmax의 입력값 $S_c$은 $S_c = \sum_{k}w^c_k\sum_{x,y}f_k(x,y) = \sum_{x,y}\sum_kw_k^cf_k(x,y)$와 동일하게 되며 softmax의 출력값인 $P_c는 \frac {exp(S_c)}{\sum_cexp(S_c)}$ 가 된다.
- $S_c$을 각 (x, y) 좌표로 세분화해서 살펴보면 결국 $\sum_{x,y}$를 제외한 $\sum_kw_k^cf_k(x,y)$ 은 좌표 (x,y)에 대한 class의 score를 살펴볼 수 있게된다. 본 논문에서는 클래스 c에 대한 class activation map을 $M_c(x, y)$로 정의하고 있다. $M_c(x,y) = \sum_k w_k^c f_k(x,y)$
- 입력 이미지의 크기로 CAM을 upsampling하면 class-activation된 이미지를 표시하는 결과를 확인할 수 있다.
2. Grad-CAM
Q3. CAM 기법의 한계
위에서 언급했다시피 CAM은 classifier의 구조가 GAP, fully-connected layer, softmax layer로 이루어져야만 특징맵의 클래스를 특정할 수 있다는 단점이 있었다. 물론 모델의 classifier 구조를 위의 3개의 레이어로 재구성하여 CAM을 추출할 수도 있겠지만 이는 실제 모델의 가중치를 잃어버리는 결과를 낳기 때문에 정확한 class activation map이라고 보기엔 어렵다.
또한 결국 마지막 레이어는 softmax 레이어가 되어야하므로 이미지 분류작업이 아닌 image captioning, visual question answering 등의 다양한 분야에는 적용할 수 없다는 한계도 있었다.
Q4. Grad-CAM은 어떤 원리로 동작하며 기존 CAM과 어떤 점이 다를까?
Grad-CAM은 모델의 구조가 한정된다는 CAM의 단점을 보완하였으며 더 나아가 이미지 분류모델뿐만 아니라 softmax 레이어가 존재하지 않는 분야에서도 동작하도록 gradient를 활용하는 방법을 제안한다.
Q4:: 1. Using Gradient Information : softmax 레이어 대체
Grad-CAM은 마지막 레이어(softmax layer) 전 레이어 $y^c$에서 마지막 합성곱 레이어 $A^k$까지 backpropagation하여 gradient를 얻는 것으로 GAP레이어와 softmax레이어의 조합을 통한 weight값 없이도 클래스를 특정할 수 있도록 하였다.
Q4:: 2. No GAP : 수식으로 GAP 레이어를 대체
Grad-CAM은 특징맵 $A^k$의 한 $A^i$의 (x, y)를 모두 합하여 평균을 내는 것으로 GAP 레이어를 쓰지 않고도 동일한 성능을 내도록 하였음.
Q4:: 3. ReLU를 통한 의미있는 지역 확대
$\sum_k a^c_kA^k$ 에 ReLU를 씌우는 것으로 긍정적인 gradient 값만 남기도록 하였다.
'논문 스터디 > ML attack' 카테고리의 다른 글
[2020 EMNLP, NLP black-box attack] BERT-Attack Adversarial Attack Against BERT Using BERT (0) | 2023.06.03 |
---|---|
[AAAI 2020, NLP black-box attack] TextFooler (1) | 2023.05.16 |
[2017 NIPS] Attention is All You Need 리뷰 (1) | 2022.10.04 |
[AML Defence][2019 CVPR] Feature Denoising for Improving Adversarial Robustness 논문 리뷰 (0) | 2021.08.22 |
[AML Defence][2018 ICLR] Defense-GAN 논문 리뷰 (0) | 2021.04.03 |