티스토리 뷰
[논문 리뷰🐱🏍] Grad-CAM: Visual Explanations from Deep Networks via Gradient-based Localization 2017 ICCV
ESin99 2021. 11. 20. 22:22개인적으로 논문 스터디를 진행 후 정리한 노션(Notion) 내용을 기반하여 정리한 글입니다.
CAM 방식과의 차이점을 강조한 글이므로 논문 전체적인 리뷰가 담겨있지 않습니다.
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)에서 적용하는 걸 기준으로 정리함
- 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 만든다.
이미지 하나를 넣어(모델의 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
수식이 많아서 어렵다고 느낄 수도 있지만, 첫 사진부터 내려오자면, 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이 있다.
- Classification과 Localization이 trade-off 관계라는 것은 잘 알겠다. 하지만, 이것이 의미 있는 방향인지 궁금하다.
- 왜냐하면, Localization, 즉 XAI가 필요한 이유는 인공지능이 판단한 결과가 왜 그런 판단을 했는 지, 근거가 필요한 Task가 많기 때문에이라고 생각한다. 하지만, Classification 성능이 좋지 않으면 아무리 설명을 잘한들 그것이 의미 있는 방향일까? 잘 모르겠다.
- 정리하자면, Localization의 수치가 중요하려면, 어떤 곳을 Discriminative region으로 봤는 지 보여주기 전에 Classification부터 잘 해야하는 것이 나의 주관적인 의견이다.
'Machine Learning 👥 > XAI' 카테고리의 다른 글
[논문 리뷰🐱🏍] SmoothGrad: Removing noise by adding noise 2017 ICML (0) | 2021.11.20 |
---|---|
[논문 리뷰🐱🏍] CAM : Learning Deep Featrues for Discriminative Localization 2016 CVPR (0) | 2021.11.20 |