CNN visualization6 - grad CAM -

1. motivation

 

ResNet과 GoogleNet은 이미 CAM구조를 가지고 있어서 상관없는데

 

AlexNet은 global average pooling이 아닌 flatten을 사용했고 fully connected layer도 2개나 사용

 

이것을 억지로 CAM 구조로 바꾸고 사용한다면 모델 구조가 바뀌면서 parameter size가 호환이 안될 수 있는 문제부터

 

재학습까지 해야하고 결과적으로 전체적인 모형 성능이 떨어질 수 있

 

AlexNet의 기본구조

 

그래서 특별히 구조를 변경하지도 않고 재학습도 하지 않으면서 CAM을 뽑는 괴물같은 방법이 등장했다

 

image를 넣으면 CAM처럼 어디 보고 고양이나 개를 판별했는지 heatmap을 그려준다

 

당연하지만 guided backpropagation saliency map보다 해석하기도 좋다

 

Grad CAM의 예시

 

guided backpropagation saliency map은 사실 한눈에 보기가 힘들어

 

 

2. idea

 

backbone가 CNN이면 마지막 task가 어떤 것이든지 간에 무조건 가능하다

 

어떻게 가능했을까?

 

CAM의 수식에서 채널별 feature map을 채널별 가중치로 weighted sum을 했는데 이 가중치를 어떻게 구해야할지 고민했다

 

관심있는 class의 score를, 관심가지는 activation map까지만 backpropagation하여 얻은 gradient인 $\frac{\partial y^{c}}{\partial f_{k}(x,y)}$ 구한다

 

$\frac{\partial y^{c}}{\partial f_{k}(x,y)}$는 feature map pixel인 x,y별로 gradient가 존재하는데

 

global average pooling을 하여 그 채널의 전체 가중치로 한다.

 

 

앞에서 난 feature map을 $f_{k}(x,y)$로 표현했어서 헷갈리지마라고 그랬음

 

grad CAM이란 해당 activation map과 가중치의 가중결합에 ReLU를 통과시킨 것으로 정의된다

 

 

ReLU를 왜 썼을까?에 대해서 실험적으로 해보니까 좋아서라는 것이 보통 정석이고

 

relu를 사용하여 class를 판단하는데 positive influence를 가지는 양수부분만 가져온다는 점에서 해석할수도 있는데

 

relu를 쓰지 않는다면 class 판단에 negative influence pixel까지 고려한다는 점에서 쓸데없이 너무 많은 정보를 고려하지 않도록,

 

그러니까 negative influence pixel은 다른 category에 영향을 미치는 정보인데

 

굳이 현재 class 판단에 고려할 필요가 없다는 생각에 제외하면서 localization 능력을 올려주는 효과가 있다고 볼 수 있다

 

3. 응용

 

뒷단의 task가 image classification이든 image captioning이든 object detection이든 무엇이든지 간에 반드시 유도할 수 있다

 

심지어 CAM은 마지막 단 layer의 feature map이 집중하는 정보만 파악할 수 있었는데 grad CAM은 관심있는 어떠한 layer에서도 가능하다

 

guided backpropagation saliency map과 혼용해서 쓰기도 한다.

 

guided backpropagation map이 sharp하면서 class를 구분하는 능력이 조금 떨어지는데

 

grad cam은 smooth하면서 class를 구분하는데 민감한 정보를 제공한다

 

같이 사용하여 sharp하면서 class 구분에 민감한 정보를 모두 제공하기를 원하는 것

 

 

그냥 guided backpropagation saliency map보다 훨씬 멋진 정보를 준다

 

 

4. scouter

 

grad CAM을 더욱 개선하여 모델이 왜 특정 class로 판단했는지 뿐만 아니라 왜 다른 class로는 판단하지 않았는지 이유까지 보여줌

 

 

왜 그렇게 판단했는지, 왜 다른 것으로는 판단하지 않았는지 이유에 대해 집중하는 부분을 grad cam처럼 heat map으로 표시

 

 

5. GAN으로의 응용

 

어떤 물체 생성하는 것에 특히 중요한 contribution하는 것을 찾을 수 있다면 그것을 control하면 쉽게 생성할 수 있다

 

 

문이 없는데 문을 담당하는 부분을 찾으면 그 공간에 masking하고 생성하라하면 알아서 생성해준다고?

 

 

6. 결론

 

CNN 내부는 weight 수치만 바라보면 해석이 불가능한데 조금만 만져주면 해석 가능한 정보들을 볼 수 있었다

 

학습때 의도하진 않았으나 모형은 사람도 공감할만한, 심지어 마치 사람처럼 지식을 알아서 학습한다

 

눈으로 보면서 해석이 가능하다면 그것의 응용은 무궁무진하다. 남들이 못하는 창의적인 것도 할 수 있지 않을까?

 

 

TAGS.

Comments