티스토리 뷰

개인적으로 논문 스터디를 진행 후 정리한 노션(Notion) 내용을 기반하여 정리한 글입니다.

 

논문 링크 : https://openaccess.thecvf.com/content_ICCV_2017/papers/Selvaraju_Grad-CAM_Visual_Explanations_ICCV_2017_paper.pdf


CAM 방식과의 차이점을 강조한 글이므로 논문 전체적인 리뷰가 담겨있지 않습니다.

 

출처 : Grad-CAM: Visual Explanations from Deep Networks via Gradient-based Localization 2017 ICCV

Convolutional Layer를 거치면서 원래 Feature extraction이 되고 공간 정보를 얻게 됨

  • FC Layer를 거치면서 다 손실됨, 왜? 일자로 펴버리는 Flatten 작업을 거치는 셈이니까
  • CAM을 할 때는, GAP를 해서 일자로 안 펴고 공간 정보를 모아버렸음
  • But, 그 때는 classification에도 GAP한 결과가 들어가니까, 그것이 classification accuracy도 낮아지고 localizability를 높이기엔 역부족 (trade-off 관계)

 

이 논문에서의 Intuition은 다음과 같다.

아!😮 마지막 Layer가 많은 정보를 얻는 구나!

그렇다면 마지막 Layer로부터 무언가를 하면 되겠군!

 

  • Grad-CAM은 아무튼 모든 Layer에서 다 적용가능, 왜냐면 Gradient-weighted CAM이니까! (Gradient를 갖고 하는 것이기 때문에 모든 Layer에서 가능하다. 기존의 CAM 방식은 모든 Layer에 final layer에만 적용가능)
  • 하지만, 이 논문에서는 마지막 Layer(output layer)에서 적용하는 걸 기준으로 정리함

출처 : Grad-CAM: Visual Explanations from Deep Networks via Gradient-based Localization 2017 ICCV

  • The Class-Discriminative Localization Map (Grad-CAM)의 표현
  • Width u, height v로 된 heatmap
  • Class c에 대하여 판단한 activation map

Before softmax, gradient of the score for class c, c라고 예측한 score에 대한 gradient를 계산함

$y^c$ : class c라고 예측한 score

$A^k$ : Feature Map Activation of a convolutional layer (K개의 feature map이 있음 ⇒ 그 중 k번째)

$A^k_{ij}$ : k번째 Feature map activation에서 (i, j) location

$\partial{y^c}\over\partial{A^k}$ : Gradient w,r,t feature map activation

$\alpha^c_k = {1\over{Z}}\sum_{i}\sum_{j} {\partial{y^c}\over\partial{A^k_{ij}}}$ : neuron importance weights ⇒ Feature map activation에 해당하는 gradient를 gap함

⇒ 무슨 뜻일까?

⇒ i, j에 위치한 높에 대해서 gradient 구하고 그걸 다 더해!(u x v 크기의 이미지대로) 그리고 나눈다는 것 (Z는 u x v의 크기를 대변한다)

 

Gradients flowing back are global-average-pooled ⇒ neuron importance weights 구함

 

$Y^c$ : class c에 해당하는 score 만든다.

출처 : Grad-CAM: Visual Explanations from Deep Networks via Gradient-based Localization 2017 ICCV

이미지 하나를 넣어(모델의 Input) → 마지막 convolutional layer까지 와서 Output을 출력함

→ k개의 feature map을 만들어서 → k개에 (i, j)의 값들 더해서 GAP하고 class c에 대해서 weight랑 곱해서 다 더해 ⇒ class c라고 예측하는 score 구하기 (class 개수만큼 score가 쭉 있는 상태)

 

$F^k$ : GAP output

$w^c_k$ : class feature weights

출처 : Grad-CAM: Visual Explanations from Deep Networks via Gradient-based Localization 2017 ICCV

 

수식이 많아서 어렵다고 느낄 수도 있지만, 첫 사진부터 내려오자면, GAP output은 $F^k$에 저장되고 Gap output에 따른 Score값을 $Y^c$에 저장한다.

 

이에 대한 Backpropagatino 과정처럼 미분하여 class feature의 weights를 도출하는 과정이다.

한 마디로 정리하자면 다음과 같다.

 

Input image를 넣었을 때, 이 input image가 class c에 속한다는 것을 알려주는 k번째 layer의 weight($w^c_k$)들은 클래스 c에 속한다고 말한 score($Y^c$)를 feature map의 모든 픽셀($i$, $j$)로 미분한 값($\partial Y^c/\partial A^k_{ij}$)들을 모두 더한 것과 같다는 뜻이다.

 

Guided Grad-CAM : 히트맵은 이미지의 특성을 상세하기 확인하기는 어렵기 때문, 이를 제안했다.

Fine-grained data에 대해서 Grad-CAM을 적용하기 위해서 Guided Backpropagation이랑 합침!

그렇다면, Guided Backpropagation이란? 시각화 방식!

 

기존의 Deconvnet의 weight propagation에서 $f^l_i$의 값이 양수인 경우만을 취하는 것이 guided backpropagation이다.

Counterfactual Explanations

⇒ 우리가 강아지를 예측할 때 가장 부정적으로 영향주는 놈 찾는 것

 

이 말 또한, 단지 음수만 취하여 ReLU 함수를 통과시키겠다는 것이다. 원래 '-1 -1 1'로 feature map weight가 주어졌다면 -를 취하면 '1 1 -1'이 되어 ReLU를 통과시키면 '1 1 0'이 된다. 그러면 '강아지'라고 '예측하는 것에 도움을 주지 않는 부분'이 자연스레 남는다. 이것이 $L^c_{Counterfactual}$이다.


Additioal Opinion (Subjective)

(1) 어찌보면 주어진 것들을 잘 사용하였으며, 최근의 XAI application에도 Gram-CAM을 사용하기도 하는 것을 보아 좋은 방법을 제안했다고 생각한다.

(2) 하지만 논문 중 다음과 같은 Table이 있다.

출처 : Grad-CAM: Visual Explanations from Deep Networks via Gradient-based Localization 2017 ICCV

  • Classification과 Localization이 trade-off 관계라는 것은 잘 알겠다. 하지만, 이것이 의미 있는 방향인지 궁금하다.
  • 왜냐하면, Localization, 즉 XAI가 필요한 이유는 인공지능이 판단한 결과가 왜 그런 판단을 했는 지, 근거가 필요한 Task가 많기 때문에이라고 생각한다. 하지만, Classification 성능이 좋지 않으면 아무리 설명을 잘한들 그것이 의미 있는 방향일까? 잘 모르겠다.
  • 정리하자면, Localization의 수치가 중요하려면, 어떤 곳을 Discriminative region으로 봤는 지 보여주기 전에 Classification부터 잘 해야하는 것이 나의 주관적인 의견이다.
댓글
«   2024/11   »
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
Total
Today
Yesterday
최근에 올라온 글