이번에는 Saliency Map Visualisation을 통해서 시각화를 하는 방법을 알아볼 것이다.
"Deep Inside Convolutional Networks: Visualizing Image Classification Models and Saliency Maps" 라는 논문이다.
논문 원문은 https://arxiv.org/abs/1312.6034
Deep Inside Convolutional Networks: Visualising Image Classification Models and Saliency Maps
This paper addresses the visualisation of image classification models, learnt using deep Convolutional Networks (ConvNets). We consider two visualisation techniques, based on computing the gradient of the class score with respect to the input image. The fi
arxiv.org
Sailency Map이란?
Saliency Map은 각 pixel에서의 gradient 값들을 싹 모아서 표시해놓은 지도이다. 원본 이미지랑 동일한 사이즈이며, gradient들을 모아놓았다고 보면 된다.
Positive Gradient 일수록 output에 더 많은 영향력을 행사했다는 의미이며, output이 class score일 경우 이 이미지가 특정 class에 소속되는 데에 가장 큰 영향력을 발휘한 부분이 바로 Positive gradient 부분, 즉 위의 이미지를 예로 들면 밝은 부분일 것이다.
Method
논문에서 말하는 Method는 2가지가 있다.
1. Class Model Visualisation
2. Image-Specific Class Saliency Visualisation
1번은 class에 대한 global한 view를 볼 수 있는 방법이고, 2번은 이미지의 어떤 부분이 classification을 이끌었는 지에 대한 local한 view를 보여주는 방법이다.
Class Model Visualisation
이 방법은 어떤 class에 대한 "Prototype"을 만들어주는 느낌의 방법론이다. 좀 더 자세히 논문을 통해서 보자.
영어가 많이 나오는데, 메인이 되는 수식을 보면, 어떤 이미지를 찾는게 목표이다.
어떤 이미지냐? 바로 저 Sc(I) 값을 가장 크게 만들어주는 이미지 I를 찾는 것이 목표이다.
Class Model Visualisation의 과정을 하나하나 살펴보자.
1. Initialization
이미지 I를 baseline image부터 시작할 건데, 이 baseline image는 zero image이거나 random noise로 초기에 할당해준다. 논문에서는 zero image로 시작하는데, 저자들의 ConvNet이 zero-centered image data로 훈련되었기 때문이다. (위의 "We initializaed the optimisation with the zero image" 라고 적혀있는 부분 참조)
2. Optimization Objective 정의하기
메인이 되는 수식에서 볼 수 있듯이, 저 class score인 Sc(I)를 maximize 하는 것이 우리의 optimization objective이다. 처음에 초기화된 zero image를 모델에 넣으면 classification score가 나올텐데, 여기서 계속 gradient ascent를 하면서 iteratively하게 zero image를 조정해나가면서 sailency map을 만드는 것이다.
3. Gradient Ascent
Backpropagation으로 Sc(I)에 대한 이미지의 gradient를 계산한 후, gradient ascent를 통해 초기의 zero image를 점차 바꿔나간다. 그 과정을 수식으로 보면 다음과 같다:
이렇게 I_new가 계속 갱신되어가면서 class prototype이 만들어지는 것이다.
4. 마지막 처리
이렇게 optimized된 결과물에다가 training set의 이미지를 평균낸 mean image를 더해준다. 이렇게 하면 좀 더 realistic한, class를 대표한 이미지를 얻을 수 있다고 저자들은 말한다. 여기서 이미지 평균낸 mean image는, 특정 class의 평균 이미지가 아니라 전체 데이터셋을 평균낸 mean image이다.
Image-Specific Class Sailency Visualisation
특정 이미지가 주어졌을 때 어떤 픽셀이 가장 classification에 큰 영향력을 발휘했는지, 그 이미지의 어떤 픽셀이 그 이미지로 하여금 특정 class에 속할지는 가장 크게 결정하는지를 알아볼 수 있는 방법이다.
Class Model Visualisation에서는 zero image에서부터 새로운 이미지를 합성하는 반면, 여기서는 주어진 이미지 I의 특정 부분을 highlight하는 방법이다. 당연히 특정 부분은, 그 이미지로 하여금 특정 class c에 분류될 수 있게 하는데에 가장 큰 역할을 한 부분이다.
Sailency Visualisation을 구하는 과정은 다음과 같다.
1. 먼저 class score인 Sc(I)를 구한다.
2. Sc(I)에 대한 이미지 I의 derivative를 구하고, 이를 arrange하면
3. Sailency Visualisation Map이 나온다.
논문과 함께 보자.
1번 항목인 "먼저 class score인 Sc(I)를 구한다" 에 대해서 저자들은 우선 간단한 예시와 함께 시작하는데,
어떤 이미지가 class C에 속할 점수인 Sc(I)를 linear model로 가정한다면, 자연스럽게 우리는 저기 w term을 가중치라고 생각할 수 있다. 우리가 원하는 "중요도"를 w를 통해 알 수 있는 것이다.
하지만 Deep Neural Net은 I에 대한 highly non-linear function이다(Neural Net은 기본적으로 복잡한 non-linear 관계를 모델링하고 싶을 때 사용한다). 그래서 first-order taylor expansion으로 근사시킬 것이다.
이렇게 해서 우리가 관심있는 derivative w를 얻는다.
w를 얻은 후, 이 w 벡터의 element들을 다시 이미지와 똑같은 규격으로 재정렬해서 sailency map을 얻는다. h(i,j)는 재정렬할 인덱스를 뜻한다.
Results
다음은 이미지와 그 sailency map이다.
Relation to DeConvolution Networks
저자들은 Deconvolution과의 관계성도 잠깐 설명하는데, 핵심은 ReLU를 제외하고는 feature map reconstruction이 DeConv를 통해서 derivative를 구하는 것과 equivalent 하다고 설명한다.
그렇기에 DeConvolution의 일종의 generalisation으로 본다고 설명한다.
결론
이렇게 gradient를 통해서 sailency map을 구할 수 있고, 어떤 부분이 이미지에서 중요한지까지 볼 수 있게 되었다. 하지만 결과물들을 보면, 인간의 눈으로 봤을 때는 주요 특징점이 잘 부각되지 않는다는 단점이 있다. 이를 약간 해결해주는 SmoothGrad 논문으로 다시 찾아오도록 하겠다.
'Explainable AI' 카테고리의 다른 글
[논문리뷰] Layer-wise Relevance Backpropagation (LRP) (0) | 2025.03.26 |
---|---|
[논문리뷰] SmoothGrad: Removing noise by adding noise (0) | 2025.03.26 |
[논문리뷰] Activation Maximization (0) | 2025.03.25 |
[논문리뷰] Neural Additive Models: Interpretable Machine Learning with Neural Nets (0) | 2024.09.05 |
Generalized Additive Models(GAMs) (0) | 2024.09.04 |