본문 바로가기
Deep Learning/[논문] Paper Review

Grad-CAM: Visual Explanations from Deep Networks via Gradient-based Localization

by a._muj 2023. 8. 13.
728x90
반응형

CAM(Class Activation Maps) 이란?

Global Max Pooling(GMP) vs Global Average Pooling(GAP)

: 전체 영역 내에서 가장 큰 값을 사용하는 방법을 Global Max Pooling(GMP)라고 함

: 반면, 모든 값을 고려하여 평균값을 사용하는 방법을 Global Average Pooling(GAP)이라고 함

 

: 보통 CNN의 구조에서는마지막 feature map을 flatten하여 1차원 벡터로 만든 뒤 이를 Fully Connected Netowork를 통과하여 softmax로 classification을 했었음.

: 이 FC layer는 parameter의 개수를 매우 커지도록 만들기 때문에 overfitting 위험이 증가할 수 있고, Feature map(pooling이전)에 존재하는 object들의 위치정보가 손실된다는 단점이 존재.

 

: CAM은 flatten을 하지 않고, 이를 Global Average Pooling으로 대체함

: overfitting을 방지할 수 있는 regularization의 역할을 하며, 위치정보를 손실하지 않을 수 있도록 함

: 위 그림에서는 총 4개의 Feature Map이 존재하므로 총 4개의 특징변수가 생성됨

: <CAM을 사용하기 위한 architecture> GAP + softmax layer로 연결 ⇒ class 확률 계산

 

Class Activation Mapping

: 각 feature map과 feature map이 특정 class로 분류될 가중치(w)를 곱해서 합하면 좌표 별 (x,y) 특정 클래스에 대한 영향력 계산할 수 있음 ⇒ 이걸 바로 CAM이라고 부름

: 각 클래스에 대해 CAM을 적용하면 이미지에서 클래스에 영향을 주는 좌표을 추출할 수 있음

: 마지막 convolution layer에서의 CAM을 시각화했기 때문에, 최종 CAM을 처음 input image와 같은 크기로 unsampling하면, input image내에서 class c(개)와 관련되어있는 영역이 어디인지 확인할 수 있음

 

Learning Deep Features for Discriminative Localization

<CAM의 주요 특징>

  • Weakly-supervised object localization: Object Classification만을 위해 학습된 CNN 모델이 이미지를 classify + localization 까지 볼 수 있다.
  • Visualizing CNNs
    : Global Average Pooling을 사용하여 CAM을 시각화한 이미지
  • : 각 이미지들에 대해 classify하면서도 object들이 위치하는 영역도 찾아낼 수 있음을 볼 수 있음

 

 

1 INTRODUCTION

: 모델을 해석할 때에는 Simplicity와 Interpretability사이의 tradeoff 관계가 있음.

: 즉, 모델이 간단할수록 해석은 용이해지고 모델이 복잡할수록 해석은 어려워지기 때문에 모델의 accuracy를 잃지 않으면서 해석하기 위해서는 이 둘 사이의 적정점을 찾는 것이 중요함

ex) 모델의 학습이 실패한 경우, 잘못된 출력을 내보냈을 때 왜 모델이 이런 결과를 냈을까 or 어디가 잘못됐지 라는 설명이 가능해야 하는데 그러지 못한다는 거임 ⇒ “Black box”

: 이 논문은 모델이 예측한 내용을 왜 예측했는지, 왜 그렇게 예측했는지 설명할 수 있는 능력을 가져야 한다고 말하고 있음

: 투명한 모델을 구축해야 우리가 모델을 신뢰하고 이해할 수 있기 때문!

➡️ “Black Box”의 내부를 알아보자!

what makes a good visual explannation?

  1. Class discriminative: 다른 클래스를 구분할 수 있어야 함
  1. High-resolution: 충분히 object를 판별할 수 있고 특징을 알아낼 수 있어야 함

: 왼) 특징들은 잘 보여주지만 class 구별은 잘 하지 못함

: 오) 클래스 구분도 잘해줌

➡️ cat class의 경우, cat 지역을 강조하고 dog 지역은 강조하지 않음

➡️ 고양이의 줄무늬도 강조해서 특정 고양이의 종을 예측하는 것에 대한 정보도 알게 해줌

Contribution

  1. Grad-CAM : Class-discriminative한 localization technique으로, 시각화를 통해 모델이 실패했을 때의 진단 또한 가능(왜 실패했을까에 대한 설명이 가능하다는 것임)
  1. Top-performing classification, captioning, VQA 등 다양한 downstream work에 적용 가능함
  • ※ Top-performing classification, captioning, VQA ?

    : Top-performing classification: 이미지나 데이터를 입력으로 받아 클래스 레이블을 예측하는 모델.

    : captioning: 이미지나 비디오에 대한 설명을 생성하는 모델.

    : VQA (Visual Question Answering): 이미지에 대한 질문에 대한 답변을 생성하는 모델.

  1. Human study를 수행해서 Grad-CAM이 class-discriminative 있고, 신뢰를 돕는데 도움이 되도록 함.⇒ 훈련되지 않은 일반인(이 분야 모르는 사람)도 모델을 봤을 때, 강한’ 모델과 ‘약한’ 모델을 구분할 수 있음을 보여줌 (아, 이 모델은 구분을 잘 하는 모델이구나 혹은 학습이 잘된 모델이구나~ 아, 이 모델은 뭔진 모르겠지만 성능이 별로인 모델이구나)

2 RELATED WORK

<기존 연구들의 방법과 한계점들을 소개함 ⇒ 이를 바탕으로 발전시키고자 함>

1. Visualizing CNNs.

  1. ‘pixel’ 단위의 영향력(중요성)을 시각화 하려는 연구가 많았으나, class-discriminative 하지 않음

     ➡️ 각 cat과 dog 예측에도 불구하고, feature map 상 두 개의 클래스가 구분되지 않음

  1. 또 다른 연구로는 특정 유닛(뉴런)이 활성화될 때 어떤 입력 이미지가 생성될 수 있는지를 알아내고자 했음

    ➡️ high resolution + class-discriminative 지만, single image에 대해서가 아니라 모델 전반을 시각화 한다는 한계점을 지녔음

2. Assessing Model Trust.

: [Why Should I Trust You?] 라는 논문에서 모델에 대한 신뢰성을 연구하는 것을 보면서, 이 개념에 영감을 받아 본 논문은 Human study를 통해 Grad-CAM 시각화를 평가하였음

➡️ Grad-CAM이 자동화된 시스템을 평가하고 신뢰할 수 있는 도구로서 중요한 역할을 할 수 있음

3. Aligning Gradient-based Importances.

: [Choose your neuron] 라는 논문에서 gradient에 기반한 neuron importance를 인간의 class specific domain-knowledge에 연결하고 새로운 class에 대한 분류기 학습

➡️ gradient 기반의 중요성을 Grad-CAM에 적용하고자 함

4. Weakly-Supervised localization.

: class label만을 사용해서 이미지 내의 객체를 localize 하는 가장 관련있는 방식이 CAM(Class Activation Map)

: CNN의 마지막 feature map을 GAP한 뒤, 가중치(w)를 각각 곱해서 class score을 계산

: 각 w를 feature map과 선형 결합해서 class activation map을 얻을 수 있고, 이를 통해 class score에 대한 feature map의 중요성(영향력)을 시각화할 수 있음

CAM의 최대 단점: conv feature map → GAP → softmax 의 architecture로만 구성되어야 CAM을 사용할 수 있었음. 즉, 모델을 재구성 해야 한다는 단점이 존재했다.

➡️ 따라서, 이 논문은 architecture를 수정/재구성할 필요 없이 사용하는 “gradient 방식”을 도입함

 


3 Grad-CAM

3-1) Grad-CAM

: CNN에서 얕은 층은 low-level feature을 읽고, 깊은 층으로 갈수록 semantic class-specific 정보를 읽음

: Grad-CAM은 CNN의 마지막 layer로 흐르는 gradient를 이용해 모델의 예측에 각 뉴런이 미치는 영향(=중요성)을 파악함

: 왜? 마지막인가, 마지막 layer가 많은 정보를 지니고 있기 때문에.

: 물론 모든 layer에 대해서도 영향력 파악 가능(gradient를 활용하는 것이기 때문에 다 가능) (하지만, 앞에서는 의미가 별로 없겠죠? - 정보가 별로 없기 때문에)

3-1-0) Overall Architecture

3-1-1) Importance of each feature map

: y^c(class score-softmax 전단계)를 feature map으로 미분

: i,y는 각 해당 픽셀 위치값

: k는 몇 번 째 feature map인지

➡️ 즉, y^c를 해당 피처맵 A의 각 픽셀로 미분한 후에, GAP를 하면, 중요도 가중치를 얻게 됨

= k번째 피처맵이 y^c라는 score map에 미치는 영향력을 의미

= 모델의 예측(y)에 어느 feature map(k)가 평균적으로 어느 정도의 영향을 미쳤는가를 의미함

※ y^c는 꼭 class score일 필요 없이 미분 가능한 downstream task면 된다고 함

 

3-2-2) Weighted Combination

: 위에서 구한 가중치(영향력)에 k번째 feature map을 곱해준 후 합친 후, ReLU 사용

: 예를 들어, 곱한 값이 음수의 값을 지닌다면, 그 값은 제외하고 양수 부분만 가지고 시각화를 하겠다

: 즉, 우리는 개에 대한 label을 classification 해야 하는데, 음수 값이라면 사람 or 배경에 대한 피처맵을 말하는 것임.

 

3-2-3) Weighted Combination

: 왼쪽) 기존 CAM의 수식 , 가중치 x GAP한 feature map

: 가운데) k번째 피처맵에 대해 각 픽셀의 합을 가중 평균한 값

: 오른쪽) 대체한 결과 식

: 왼쪽) Y^c class score을 F^k 피처맵의 평균으로 미분한 값

: 가운데) F^k를 A^k에 대해 미분하면 1/Z만 남음. 이를 왼쪽에 대입하면 오른쪽과 같은 식이 됨

: 오른쪽) 이 때, Y^c를 대입해서 F^k에 대해 미분 최종 식을 구함

: 왼쪽) 각 픽셀에 대해 연산

… 미안합니다… 마지막 가서 이해를 못했어요 (왜 저 합이 Z인 것인가..)

➡️ 결과적으로 얘가 말하고 싶었던 건 CAM 방식과 같다는 것임

 

: CNN의 마지막에 GAP 방식을 사용하면 결과적으로 CAM과 같음 (= 논문에서는 CAM의 generalization이라고 말함)

: Grad-CAM은 gradient 기반으로 weight를 구하기 때문에, GAP이 없는 어떠한 구조에서도 visualization이 가능함

(CAM은 GAP 통해서 weight를 구하는 반면, Grad-CAM은 gradient(역전파)통해서 구함))

 


3-2) Guided Grad-CAM

: Grad-CAM은 class 구분(class-discriminative)이 가능하며 예측된 관련 이미지 지역을 찾아낼 수는 있으나, pixel-space gradient visualization은 어려움

: 즉, 왜 tiger cat으로 예측했는지를 알아낼 수 없음.

  • Guided Backpropagation

: backpropation 하기전에 feature map에서 0 이하인 부분을 제거 함으로써 positive value만을 이용하여 backpropagation value를 추출

: 음수에 해당하는 gradient를 사용하지 않음으로써 깨끗한 이미지를 추출하는 방법

: class-discriminative는 하지 않으나, 특징들은(고양이 줄무늬, 귀, 눈)에 대한 정보는 잘 나타냄

 

➡️ Grad-CAM + Guided Backprop = Guided Grad-CAM

왼쪽 부분이 Guided Grad-CAM을 나타낸 것

: Guided Backprop과 Grad-CAM 간 element-wise 곱을 통해 합성

: Guided Backprop은 픽셀 단위여서 input 크기와 동일한 반면, Grad-CAM은 feature map 단위이기 때문에, 크기를 맞춰주기 위해 bilinear interpolation으로 up-sampling 해줌

: 저 두 개를 곱셈해주면 Guided Grad-CAM이 됨


3-3) Counterfactual Explanations

: Grad-CAM을 약간 수정하여 네트워크의 예측을 변경시키는 영역을 강조하는 설명을 얻을 수 있음

: 위와 동일하게, 설명력을 중시하는 느낌이고 이러한 피처맵이 왜 부정적으로 영향을 끼치는지에 알고자 할 때 사용하는 식임

: 고양이를 예측할 때, 가장 부정적으로 영향을 주는 친구 찾는 것

: -1, -1, 1로 feature map wieght가 주어졌을 때, -1을 취하고 ReLU 통과시키면 1,1,0이 됨

: 결국, 고양이라고 예측하는 것에 도움을 주지 않는 부분만이 남게 되는 것임

 

4 Evaluating Localization Ability

Weakly-Supervised Segmentation

 

Diagnosing Image Classification CNNs with Grad-CAM

: VGG-16이 분류를 실패한 케이스들에 대해 실제 라벨과 예측된 라벨의 Guided Grad-CAM을 그려본 결과

: 잘못된 예측을 파악하는데 도움이 됨

 

Image Captioning

: 이미지에 대한 설명에 초점을 맞춰 시각화 한 모습

 

Visual Question Answering

: VQA pipeline은 이미지를 처리하기 위한 CNN과 question을 위한 RNN language model로 이뤄져 있음

: 이미지와 질문은 일반적으로 answer를 예측하는 것

 

 

 

<참고>

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

https://hellopotatoworld.tistory.com/18

https://joungheekim.github.io/2020/09/29/paper-review/

https://jays0606.tistory.com/4

https://minimin2.tistory.com/39

https://www.youtube.com/watch?v=uA5rIr79I0o&t=1514s

https://esinfam99.tistory.com/15

https://sotudy.tistory.com/19

728x90
반응형