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

2

Tobigs1415 Image Semina

목록 보기
16/16

투빅스 14기 서아라

1. Introduction

  • 딥러닝은 우수한 성능을 가지고 있지만 해석이 어렵다는 단점이 있음.

  • 모델이 해석력을 갖춘다는 것의 의미:

    • 모델의 성능이 좋은 경우 : 모델에 대한 신뢰도를 높여주는 역할
    • 모델의 성능이 좋지 않은 경우 : 실패한 이유를 바탕으로 모델의 성능을 높일 수 있는 발판
  • 이러한 문제를 해결하기 위해 CAM이라는 방법이 고안

    • Image classification model이 image의 어떤 부분을 보고 그러한 판단을 하게 된 것인지를 알려주는 기술
    • 모델의 구조 변경이 필요하므로 이미 학습한 모델이 구조를 변경한 후에 재학습이 필요
    • 구조를 변경함으로써 성능이 미미하게 하락
  • Grad-CAM

    • 모델의 구조를 변경하지 않으면서 CAM을 사용할 수 있는 방법
  • Summary

    • 모델의 구조를 변경하지 않으면서 객체의 위치를 추출하는 방법인 Grad-CAM 을 제시
    • 높은 해상도의 이미지에서 분류에 영향을 주는 pixel을 추출하는 방법인 Guided Grad-CAM 제시
    • 이미지에서 오분류 확률을 높이는 지역을 추출할 수 있는 새로운 해석 방식을 제시

2. CAM

  • 목표 : 이미지 분류 문제를 학습한 모델을 이용하여 분류를 할 때 모델은 이미지의 어느 부분을 보는지를 표시한 Class Activation MAP을 추출
    • 이는 학습된 모델의 weight와 이미지를 모델에 넣어 생성된 feature map을 이용하여 만들 수 있음

  • 일반적인 CNN 구조는 Convolutional layer가 몇 장 있고, Fully-connected layer가 따라 붙는 구조
  • CAM 계산을 위해서는 Convolutional layer 이후를 Global Average Pooling (GAP) 레이어로 바꾸어야 함

  • GAP의 계산 방법


3. Grad-CAM

  • CAM의 일반화된 기술이라고 볼 수 있음

    • CAM보다 더 많은 CNN 모델에 적용할 수 있음
      • (1) CNNs with fully-connected layer
      • (2) CNNs used for structured output (e.g. captioning)
      • (3) CNNs used in tasks with multi-model inputs (e.g. VQA) or reinforcement learning
  • Network Architecture에 대한 수정 없이 Gradient signal을 이용하여 feature map을 결합하는 새로운 방법

    • Grad-CAM은 CNN 마지막 convolutional layer으로 흐르는 gradient 정보를 사용하여 각 뉴런에 특정 관심의 결정을 위해 중요도 값을 할당(마지막 convolutional layer 말고 어떠한 layer에도 적용이 가능)
  • Gradient의 의미?

    • hidden layer가 없는 경우, 각 input 노드는 output 노드에 하나의 weight를 통해 영향을 줌
    • 또한 이 path를 통해 Gradient 가 역전파 됨

  • hidden layer가 추가되면, 각 input 노드는 모든 hidden layer의 노드를 거쳐 output 노드에 영향을 줌
  • Gradient 또한 모든 hidden layer를 거쳐 역전파됨

  • Gradient는 Class C에 대해 Input K가 주는 영향력이라고 말할 수 있음

  • Grad-CAM에서 weights에 해당하는 gradient

  • Grad-CAM에서 정의한 를 다시 풀어쓰면 아래와 같음

  • 이미지에서 특정 클래스에 긍정적인 영향을 미치는 부분에만 관심이 있으므로 ReLU 비선형 함수를 적용하여 Grad-CAM을 구성

  • CAM의 수식

  • Grad-CAM의 수식

  • Grad-CAM 도식 설명

  • 𝐶𝐴𝑀에서 제안한 𝐺𝑙𝑜𝑏𝑎𝑙 𝐴𝑣𝑒𝑟𝑎𝑔𝑒 𝑃𝑜𝑜𝑙𝑖𝑛𝑔(𝐺𝐴𝑃)가 적용된 구조에서 𝐺𝑟𝑎𝑑−𝐶𝐴𝑀을 구하는 것과 𝐶𝐴𝑀을 구하는 것은 동일

  • 즉 𝐶𝐴𝑀은 특정 구조에서 𝐺𝑟𝑎𝑑−𝐶𝐴𝑀을 구하는 방법으로 해석할 수 있으므로 𝐺𝑟𝑎𝑑−𝐶𝐴𝑀은 𝐶𝐴𝑀의 일반화 방법

4. Guided Grad-CAM

  • 𝐺𝑟𝑎𝑑−𝐶𝐴𝑀은 이미지에서 클래스에 영향을 미치는 부분을 찾아낼 수 있지만 𝐶𝑁𝑁 𝑙𝑎𝑦𝑒𝑟의 𝑓𝑒𝑎𝑡𝑢𝑟𝑒 𝑚𝑎𝑝에 기초하여 추출되므로 𝐶𝐴𝑀 이미지는 원래 이미지보다 해상도가 낮다는 단점이 있음

  • 𝐺𝑢𝑖𝑑𝑒𝑑 𝐺𝑟𝑎𝑑−𝐶𝐴𝑀 : 원래 이미지와 같은 해상도에서 이미지에 영향을 미치는 부분을 시각화해줌

  • 𝐺𝑢𝑖𝑑𝑒𝑑 𝐵𝑎𝑐𝑘𝑝𝑟𝑜𝑝𝑎𝑔𝑎𝑡𝑖𝑜𝑛

  • 𝑅𝑒𝐿𝑢 𝑙𝑎𝑦𝑒𝑟를 거쳐 𝑏𝑎𝑐𝑘𝑝𝑟𝑜𝑝𝑎𝑔𝑎𝑡𝑖𝑛𝑔할 때, 음의 𝑔𝑟𝑎𝑑𝑖𝑒𝑛𝑡를 없애며 시각화.
    직관적으로 뉴런에 의해 탐지되는 픽셀을 알아보기 위함

  • 𝐺𝑟𝑎𝑑−𝐶𝐴𝑀
    쉽게 물체를 localize할 수 있지만 heatmap이 coarse하여(원래 Image보다 해상도가 낮음) 왜 네트워크가 특정 물체를 해당 클래스로 분류하였는지 알기 어려움

  • 𝐺𝑢𝑖𝑑𝑒𝑑 𝐺𝑟𝑎𝑑−𝐶𝐴𝑀
    두 방법론의 장점을 결합하기 휘아혀 Guided backpropagation과 Grad-CAM을 element-wise 곱하여 시각화를 진행

5. Counterfactural

  • 𝐺𝑟𝑎𝑑−𝐶𝐴𝑀을 통해 추출된 부분 이외에 네트워크의 예측에 영향을 미치는 부분을 논문에서는 𝐶𝑜𝑢𝑛𝑡𝑒𝑟𝑓𝑎𝑐𝑡𝑢𝑎𝑙 라고 함

  • 즉, 특정 클래스로 분류할 때 방해가 되는 부분을 Counterfactual라고 함.

  • Counterfactual는 Grad-CAM의 식을 변경하여 추출할 수 있음.

6. Conclusion

  • 𝐶𝐴𝑀 논문은 구조적 변경이 필요하기 때문에 사용하기 어려웠으나 (𝑒𝑥. 𝐺𝑜𝑜𝑔𝑙𝑒𝑁𝑒𝑡, 𝑉𝐺𝐺) 이에 대한 해결책을 제시해줌

  • 𝐶𝑁𝑁이 들어간 새로운 모델을 개발했을때 모델의 성능 평가 뿐만아니라 시각화를 통해 𝑖𝑛𝑠𝑖𝑔ℎ𝑡를 얻을 수 있어 활용성이 높음

Reference

https://arxiv.org/pdf/1610.02391.pdf
https://sotudy.tistory.com/19
https://joungheekim.github.io/2020/10/14/paper-review/
https://velog.io/@tobigs_xai/CAM-Grad-CAM-Grad-CAMpp#2-4-guided-grad-cam
https://tyami.github.io/deep%20learning/CNN-visualization-Grad-CAM/

profile
2021 투빅스 14, 15기 이미지 세미나입니다😀

2개의 댓글

투빅스 14기 김민경

  • 기존 해석력을 갖춘 딥러닝 모델 CAM은 global average pooing (GAP)을 사용하기 때문에 모델의 구조 변경이 필요하므로 이미 학습한 모델이 구조를 변경한 후에 재학습이 필요하다. 이렇게 구조를 변경함으로써 성능이 미미하게 하락하기도 한다.
  • 그래서 모델의 구조를 변경하지 않으면서 CAM을 사용할 수 있는 방법으로 Grad-CAM을 제안한다. (Grad-CAM은 CAM의 일반화된 기술이라고 볼 수 있다.)
  • 학습된 모델의 weights를 이용한 CAM(GAP 사용)과 달리, Grad-CAM은 Gradient 정보를 이용하여 feature map을 결합하는 새로운 방법이다. (논문에서는 CNN 마지막 convolutional layer으로 흐르는 Gradient 정보)
  • Grad-CAM의 계산 과정은 다음과 같다.
  1. Convolutional layer -> Fully-connected layer -> 타겟 클래스 예측 score ycy^c를 얻는다.
  2. ycy^c를 각 피처들의 픽셀들(AijkA^k_{ij})로 편미분한다.
  3. GAP을 적용 => αkc\alpha^c_{k}를 구한다. (채널 kk가 타겟 클래스 cc를 예측하는데 미친 중요도)\
  4. αkc\alpha^c_{k}과 대응되는 피처맵의 선형결합 계산하고 ReLU 함수를 적용해서 positive 값만 갖는 피처맵만 가져온다. = 타겟 클래스 cc에 대한 Grad-CAM값
  • 그리고 원래 이미지와 같은 해상도에서 이미지에 영향을 미치는 부분을 Guided Grad-CAM을 적용함으로써 시각화할 수 있다. (Guided backpropagation과 Grad-CAM을 'element-wise 곱')

기존의 CAM의 한계를 보완하면서 다양한 CNN기반 모델 구조에도 적용할 수 있도록 한 Grad-CAM은 앞으로 확장 가능성이 기대됩니다. 딥러닝 모델의 해석력을 점점 요구하고 있는 요즘, 매우 유익한 논문 리뷰였습니다. 감사합니다:)

답글 달기
comment-user-thumbnail
2021년 7월 21일

14기 김상현

이번 강의는 Grad-CAM에 대한 강의로 서아라님께서 진행해주셨습니다.

  • 딥러닝은 성능이 우수한 반면 해석이 어렵다는 단점이 존재한다. 해석을 위해 CAM이라는 방법을 고안. CAM은 convolution layer들 이후 global average pooling(GAP)을 통해 얻는 값들을 이용해 GAP 직전의 feature map을 weight sum을 이용해 이미지 분류에서 중요한 부분을 포착한다.
  • CAM의 경우 GAP 구조를 사용하지 않으면 사용이 불가능하다는 단점이 존재하여 이를 극복하기 위해 gradient를 이용한 Grad-GAM 제안
  • Grad-GAM은 특정 layer에 역전파로 각 뉴런에 전달되는 gradient로 중요도 값을 할당하여 feature map에 weigth sum을 적용
  • Guided back propagation과 원본의 resolution으로 resize된 Grad-CAM 결과를 이용해 Guided Grad-CAM을 얻을 수 있고, 원래 이미지와 같은 해상도에서 이미지에 영향을 미치는 부분을 시각화할 수 있다.
  • 모델의 성능 평가 뿐만 아니라 시각화를 통해 insight를 얻을 수 있어 활용성이 높다.

Grad-CAM에 대해 자세하게 설명해주셨고, 특히 CAM에 대해 먼저 설명해주셔서 더욱 자세하게 이해할 수 있었습니다.
유익한 강의 감사합니다!

답글 달기