Grad-CAM

윤민식·2021년 9월 17일
0

https://www.secmem.org/blog/2020/01/17/gradcam/

CAM (Class Activation Map)

  • 많은 Image Classification 모델들은 여러 층의 Conv layer를 거친 후, Fully-connected layer를 통해서 classification을 진행한다.
    • 반면에 CAM은 Conv layer를 거친 후 GAP(Global Average Pooling)을 사용한 후 마지막으로 하나의 Fully-connected layer를 사용한다.
    • GAP은 Average Pooling Layer에서 kernel size가 layer의 input size와 동일한 경우로, Network in Network 논문에서 파라미터 개수를 줄여 오버피팅을 방지하기 위한 아이디어로 제안되었다.
      • 특정 카테고리에 대한 부분을 효과적으로 localization 하는데 사용할 수 있다는것도 보였다.
  • 단점
    • 가장 큰 단점은 바로 Global Average Pooling layer가 반드시 필요하다는 점
    • 마지막 Conv layer 뒤에 GAP을 붙여서 다시 fine-tuning 해야 한다는 문제가 생기고 약간의 성능 감소를 동반하는 문제
    • 또한 같은 이유로 마지막 layer에 대해서만 CAM 결과를 얻을 수 있다.

Grad-CAM

  • gradient를 이용하여 Global Average Pooling에 의존하지 않는 아이디어를 제안
  • 기존 모델의 구조 수정 없이 CAM 결과를 얻을 수 있다.
  • Grad-CAM과 CAM의 계산 결과는 같다.
  • forward_hook과 backward_hook을 추가해서 관철하려는 Conv layer의 output과 gradient를 구한다.
  • Grad-CAM의 활용
    • Weakly-supervised Localization
      • Object의 위치를 따로 학습하지 않고 Classification task에 대해서만 학습해도 CAM이 class와 관련된 부분을 대략적으로 찾아낼 수 있다.
    • Counterfactual Explanations
      • 고양이와 관련된 그림이 주어졌을때 어떤 부분을 보고 고양이로 판단했는지, 반대로 개라고 판단하지 않은 이유는 무엇인지 분석할 수 있다.

고려사항

  • 사용자에게 피드백을 줄 정도로 정확하게 Localization이 될지?
  • 실시간으로 피드백을 주려면 속도도 빨라야 하는데 계산속도가 어떻게 될지?

참고자료

0개의 댓글