본문 바로가기
Deep Learning/papers

[논문 리뷰] Grad-CAM: Visual Explanations from Deep Networks via Gradient-based Localization

by 룰루셩 2020. 11. 13.

[논문 리뷰] Grad-CAM: Visual Explanations from Deep Networks via Gradient-based Localization

 

안녕하세요. 이번에 제가 읽은 논문은 Grad-CAM 기술을 소개한 논문입니다. 

논문은 여기를 눌러 확인해주세요.

이번에도 유튜브 PR 영상을 보고 공부했습니다.

 

본 포스트에서는 Grad-CAM이 무엇인지에 대해 설명한 부분까지만 리뷰하도록 하겠습니다.


Interpretability matters

딥러닝은 우수한 성능을 가지고 있지만 직관적인 구성요소로 분해할 수 없기 때문에 해석하기 어렵습니다.

 

우리가 구축한 모델로 예측할 때, 예측하는 이유를 설명할 수 있는 능력, 즉 해석력을 갖춘다면 우리는 모델이 틀렸을때나 맞췄을 때에 모두 도움이 될 것입니다. 모델이 틀렸을 때는 왜 실패했는지, 잘 맞추는 모델일 때는 이 모델을 얼마나 신뢰할 수 있는지에 대해서 알 수 있을 것입니다.

 

학습 표현을 시각화하고 해석하기 위한 몇 가지 기법들이 개발되었습니다.

 

그 중 우리가 이번에 살펴볼 것은 "Gradient-weighted Class Activation Mapping(Grad-CAM)이라는 기법입니다. 우리는 이 기법을 사용하여 우리가 구축한 모델이 학습되는 과정을 시각화할 것입니다.   

 

특히 Grad-CAM은 이미지의 어느 부분이 CNN을 최종 분류 결정으로 이끌었는지 이해하는데 유용합니다.

 

 

CAM과 비교

기존에 CAM이라는 기술이 있었습니다.

 

CAM은 softmax layer 바로 앞에서 피쳐 맵을 요구하기 때문에 예측 직전에 convolution 맵을 통한 global average pooling을 수행하는 특정 종류의 CNN 아키텍쳐에만 적용이 됐습니다. (Convolutional feature map → global average pooing (GAP)→ softmax layer)

일반 네트워크에 비해 낮은 정확도를 달성할 수 이썩나 다른 작업에는 적용할 수 없었습니다.

 

Grad-CAM은 CAM의 일반화라고 볼 수 있습니다.

CAM과 비교했을때 Grad-CAM에 적용할 수 있는 CNN 모델 범위가 더 커집니다.

(1) CNNs with fully-connected layer (e.g. VGG)

(2) CNNs used for structured output (e.g. captioning)

(3) CNNs used in tasks with multi-model inputs (e.g. VQA) or reinforcement learning

 

 

Grad-CAM

네트워크 아키텍쳐에 어떤 수정도 필요 없는 Gradient signal을 이용하여 feature map을 결합하는 새로운 방법입니다.

 

Grad-CAM은 CNN 마지막 convolutional layer으로 흐르는 gradient 정보를 사용하여 각 뉴런에 특정 관심의 결정을 위해 중요도 값을 할당합니다. 여기서 마지막 convolutional layer라고 했지만 어떤 layer에도 적용 가능합니다.

 

먼저 논문에 나와있는 그림을 제가 다시 그려서 설명해보도록 하겠습니다.

 

- 어떤 그림을 c라고 예측했다고 했을때 예측 score를 $y^c$라고 합시다. 이 $y^c$를 우리가 보려고 하는 convolutional의 feature map(우리는 마지막 convolutional layer)까지 backpropagation 할 것입니다. 즉, $y^c$를 각 피쳐들의 픽셀들로 미분합니다. 그 다음 global average pooling을 하면 이는 각 피쳐맵의 픽셀들이 $y^c$로 예측하는데 얼마나 중요한 영향을 미쳤느냐를 의미하는 weight 입니다. 앞에서 구한 weight를 각 feature map과 선형결합하면 히트맵이 그려집니다. 선형결합에 ReLU를 적용하여 관심 class에 positive한 영향을 주는 feature map만 가져옵니다. Grad-CAM은 gradient를 이용하여 weight를 구하기 때문에 어떤 레이어에든 적용할 수 있습니다.

(*제가 이곳 저곳 보면서 이해한걸 적었습니다.)

 

 

원래 CAM Score을 구하는 수식을 먼저 봅시다.

  • $w^c_k$: c Class 예측하는 k번째 Feature Map에 대한 weight

 

원래는 GAP를 사용해서 $w^c_k$를 구해줄 수 있었는데 Grad-CAM에서 GAP를 사용하지 않으려고 하니, 

Feature Map 별 Weight를 사용하지 못하게 되었습니다.

그래서 Weight를 정의하는 방식을 바꾸자는 것이 Grad-CAM의 접근법입니다.

gradient를 통해 기울기를 구하자고 생각합니다.

 

 

① gradients via backprop

$y^c$를 $A^k$로 미분해줍니다.

$${\partial{y^c}}\over {\partial{A^k}}$$

 

  • $y^c$: the score for class c
  • $A^k$: target CNN layer의 k 번째 채널의 feature map
  • $A_{i,j}$: Feature Map 내 i, j 위치 값
  • Z: Feature Map 픽셀의 수

이 $y^c$를 우리가 보려고 하는 convolutional 의 feature map까지 backpropagation합니다. 즉, $y^c$를 각 feature map들의 픽셀로 미분합니다. 

feature map $A^k$에 대하여 미분하면 $A^k$의 가중치를 알 수 있습니다. (=$\alpha$)

 

 

 

② $\alpha^c_k$

$\alpha^c_k$에서 ①번 부분은 gradient가 전파되고 있는 최종 convolution layer까지 활성함수에 대한 연속적인 매트릭스 곱과 관련된 것입니다. 따라서 이 weight $\alpha^c_k$는 A로부터 deep network downstream의 부분적인 선형화를 나타내며, 대상 클래스 c에 대한 k채널의 feature map의 중요도를 나타냅니다.  

추가설명을 하자면, $\alpha^c_k$①을 global average pooling한 것입니다. 이는 각 피쳐맵들의 픽셀들이 $y^c$를 예측하는데 얼마나 중요한 영향을 미쳤느냐를 의미하는 weight입니다.

※이 부분은 맞게 이해한건지 모르겠습니다. 혹시 보시면서 잘못된 부분이 있으면 댓글로 남겨주시면 감사하겠습니다.

 

 

 

 

③ ReLU

다음으로 앞에서 구한 weight인 ②를 각 feature map과 선형결합하면 히트맵을 그릴 수 있습니다.

우리는 관심등급에 positive(+)한 영향을 미치는 특징, 즉 $y^c$를 증가시키기 위해 강도를 증가시켜야하는 픽셀에만 관심이 있기 때문에 linear combination of map에 ReLU를 적용하는 것입니다. 다시말해 ReLU를 이용하여 양의 영향을 갖는  feature map만 가져옵니다.

(가중치가 음수일 경우 모델이 예측한 class가 아닌 다른 class라고 예측하는데 중요한 정보임을 의미합니다. 그래서 ReLU를 사용하여 양수 gradient에 대해서만 시각화합니다.)

 

 

그 다음에 각 Feature별 heatmap을 그려서 동일 위치 Pixel별 합을 구해 어떤 부분을 예측 원인으로 판단합니다.

 

 

 

요약하자면 Grad-CAM은 CAM을 일반화시킨 것이며, gradients를 통해 weight를 구합니다. gradient를 사용하여 weight를 구하기 때문에 CNN 모형에 GAP가 포함되지 않아도, 어떤 구조가 되어도 class-discriminative한 visualization이 가능하게 됩니다.

 

 


 

이렇게 Grad-CAM에 관한 포스팅을 마치겠습니다.

내용 중 제가 잘못 이해하고 있는 부분이 있으면 댓글로 남겨주시면 수정하겠습니다. 감사합니다.

 

참고

[1] Ramprasaath R. Selvaraju, Grad-CAM: Visual Explanations from Deep Networks via Gradient-based Localization

[2] PR-0PR-053: Grad-CAM: Visual Explanations from Deep Networks via Gradient-based Localization

[3] dmqm.korea.ac.kr/activity/seminar/274

[4] https://velog.io/@tobigs_xai/CAM-Grad-CAM-Grad-CAMpp

댓글