[논문리뷰] Grad-CAM

Updated:

Grad-CAM 논문 & 코드 리뷰

논문, Github
머신러닝 projectz: Class Activation Map (CAM) 논문 요약/리뷰

My Preview

CAM (Class Activation Map)

  • CAM이란 CNN이 특정 클라스 이미지를 그 클라스라고 예측하게 한 그 이미지 내의 위치 정보를 의미한다.
  • 마지막 컨볼루션을 FC-layer로 바꾸는 대신에, Global Average Pooling을 적용하면, 별다른 추가 지도학습 없이 CNN이 특정 위치들을 구별하도록 만들 수 있다.
  • CAM을 통해 특정 클라스 이미지의 Heat Map을 생성할 수 있다. 이 Heat Map을 통해 CNN이 어떻게 그 이미지를 특정 클라스로 예측했는지를 이해할 수 있다.
  • 마지막 conv layer를 FC layer로 Flatten하지 않고, Global Average Pooling을 통해 새로운 weight들을 만들어낸다. 마지막 conv layer가 총 n개의 channel로 이루어져 있다면, 각각의 채널들은 GAP를 통해 하나의 weight 값으로 나타내고, 총 n개의 weight들이 생긴다. 그리고 마지막에 softmax 함수로 연결돼 이 weight들도 back prop을 통해 학습을 시키는 것이다. N개의 weight이 생겼다면, CAM은 이 weight들을 마지막 n개의 conv layer들과 weighted sum을 해주면, 하나의 특정 클라스 이미지의 Heat Map이 나오게 된다.

  • Heat map visualization
    • 입력 이미지에 대한 class activation heat map을 만드는데 CAM은 특정 출력 클래스에 대해 입력 이미지의 모든 위치를 계산한 2D 점수 그리드로서 클래스의 각 위치가 얼마나 중요한지 알려준다.
    • 입력 이미지 => conv layer에 있는 feature map의 출력을 추출한 뒤 feature map의 모든 채널 출력에 채널에 대한 클래스의 gradient 평균을 구한다.

Global Avg Pooling vs. Global Max Pooling

GAP 네트워크가 특정 object의 전체적인 분포를 구분하도록 돕는다.
GMP 가장 높은 특정 분포들만 구분할 수 있도록 돕는다.

=> classification에서는 성능 비슷, localization에선 GAP가 더 성능이 좋다.

Leave a comment