[논문리뷰] 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