-
[CAM] Class Activation MapPaper Review/Computer Vision 2021. 12. 29. 14:04
# CAM
기존의 CNN 모델은 이미지 내 feature를 통해 classfication을 수행한다. 하지만, CAM을 통해 출력의 결과를 시각화하여 실제 모델이 각 클래스 별로 이미지의 어떤 부분을 보고 classification을 수행했는지 알 수 있다. 이를 Class Activation Map, CAM 이라고 한다.
그림처럼 input의 어느 부분을 통해 분류를 했는지 파악할 수 있다. CAM을 사용하면 주어진 이미지에서 예측된 class score를 시각화하여 CNN이 탐지한 객체를 확인할 수 있다.
# Model
기존의 CNN 과정에서 input의 위치 정보를 convolution 과정에서 활용하지만 fully-connected layer를 지나면서 결국 flatten 과정을 거치게 된다. 따라서 CAM은 fc 대신 Global Average Pooling, GAP를 사용한다. 이를 통해 파라미터의 수를 조금 더 줄일 수 있고, 위치 정보를 그대로 사용할 수 있다.
# Global Average Pooling (GAP)
GAP layer는 입력이미지의 feature map의 모든 값의 평균을 출력으로 내보낸다. Max Pooling을 사용하는 GMP는 한 부분만 식별하지만 GAP는 네트워크의 전체 범위를 활용하여 더 나은 시각화 결과를 보여준다. 또한 feature map의 크기와 상관없이 채널 개수의 해당하는 가중치와 출력값이 출력된다. 이 때 feature map의 채널 수가 분류해야되는 class의 수로 맞춘다. 따라서, 채널 개수 만큼의 가중치를 통해 하나의 특정 분류의 이미지의 히트맵을 출력한다. GAP을 통해서 파라미터의 수를 줄일 수 있고 결과적으로 과적합도 방지할 수 있다.
GMP(GLobal Maximum Pooling)을 사용해도 되지만 GMP는 object detection을 포인트로 잡고, GAP는 object의 위치를 전체 범위로 잡는다. GAP가 더 좋은 시각화를 보여주기 때문에 논문에서는 GAP를 많이 활용한다.
CNN 과정에서 뒤로 갈수록 broad한 범위의 정보를 갖는 feature map을 만들어내기 때문에, 이미지 전체 중 특정 영역을 찾기 위해 GAP는 마지막 Conv layer 뒤에 붙게 된다.
# Class Activation Map
f_k : Conv layer를 거쳐서 얻은 feature map
f_k(x,y) : k번째 feature 이미지 값 중 (x,y)에 위치한 값
w_k^c : f_k(x,y)에서 특정 class c로 가는 weight
먼저 f_k(x,y)에 각 class에 대한 가중치를 곱해주면 k개 만큼의 히트맵을 얻을 수 있다. 이후 이 히트맵들을 모두 pixel-wise sum을 해주어 하나의 히트맵을 출력(CAM)한다. 따라서, class c에 대한 activation map은 M_c(x,y)는 아래 식과 같다.
M_c(x,y)는 (x, y) 위치한 값이 class c로 분류되는데 미치는 중요도를 나타내게 된다.
즉, class c로 분류될 확률를 구할 때 곱해지는 각각의 weight들을 feature map에 곱해주고 이들을 합쳐 어떻게 feature map을 c라고 분류했는지 알 수 있다. 이런 CAM의 특징은 class마다 계산할 수 있고 각각의 heatmap을 얻을 수 있다.
# Examples of CAM
- 다른 모델과 비슷한 성능을 보여주지만 파라미터 수를 줄여 연산량을 크게 낮추었다.
- image의 위치정보를 그대로 활용한다.
- 어느 부분이 분류에 영향을 미쳤는지 알 수 있다.
- output을 확인하기 전에 전체 feature map을 종합해서 어떻게 나올지 미리 보여주는 방법이다.
# Limitation
CAM은 Global Average Pooling을 사용해야만 하는 한계점을 가지고 있다. 따라서 GAP 이후에 fine tuning을 진행해야 하고 마지막 Conv layer에서만 CAM을 추출할 수 있다. 이후의 Grad-CAM 같은 알고리즘을 통해 개선된다고 한다.
https://openaccess.thecvf.com/content_cvpr_2016/html/Zhou_Learning_Deep_Features_CVPR_2016_paper.html
'Paper Review > Computer Vision' 카테고리의 다른 글