CNN visualization3 - occlusion map & backpropagation saliency map

1. occlusion map

 

1-1) motivation

 

이제부터는 모형이 특정 입력을 어떻게 바라보고 출력을 내는지 알아볼 것

 

saliency test라는 것은 각 이미지의 class를 판정하기 위해 모델이 중요하게 생각하는 부분들을 알아보는 과정

 

 

1-2) occlusion map

 

주어진 코끼리 이미지에서 occlusion patch라는 것으로 가려서 모델에 넣어줌

 

동일한 코끼리 이미지를 서로 다른 occlusion patch로 가렸을 때 각각이 코끼리라고 분류할 조건부 확률을 구해본다면

 

 

 

당연하지만 코끼리로 판단하는데 중요한 부분을 가릴수록 코끼리라고 할 확률이 떨어진다

 

occlusion patch로 어디를 가리느냐에 따라 score가 다르다.

 

중요한 부분을 가리면 score가 급격하게 떨어지고 큰 영향이 없는 배경화면을 가리면 score가 덜 감소한다

 

occlusion patch의 위치에 따라 변하는 score를 heatmap으로 나타낸 것이 occlusion map이다

 

score가 낮은 곳이 occlusion map이 class를 판정하는데 중요한 부분을 가렸다는 것이므로 오히려 더 중요하다는것을 기억해야한다.

 

 

score가 낮은 빨간색 부분이 class를 판정하는데 중요하다는 것

 

 

2. backpropagation saliency map

 

2-1) motivation

 

앞에서 class visualization이 임의의 이미지를 주어 모형이 특정 class를 어떻게 상상하는지 파악했다면

 

이번에는 random image가 아니라 특정 image가 어떻게 해석이 되는지 궁금하다는 것이다.

 

주어진 특정 이미지를 classification해보고 최종 결론에 어떤 부분이 결정적으로 영향을 미쳤는지 파악하고 싶음

 

 

흰색 부분들이 이미지 class 판단에 결정적으로 영향을 미친 것이다

 

 

2-2) 알고리즘

 

특정 입력 이미지의 class score를 구함

 

개별 pixel별로 입력단까지 backpropagation하여 gradient 크기를 구한다

 

gradient 크기의 제곱이나 절댓값(gradient 방향을 제거하겠다는 것 같음)을 구하여 각 pixel gradient의 절대적 크기를 하나의 map으로 나타낸다

 

이렇게 구한 map을 보통 saliency map이라고 부르는 것 같다

 

gradient의 절대적인 크기가 크다는 것은 물체 안팎으로 pixel 변화가 크다는 것으로 물체의 class를 인식하는데 중요하다는 것이다.

 

여러번 반복하여 누적 gradient map도 가능하다

TAGS.

Comments