2023 Summer Session/CV Team 2
[3주차 / 임종우 / 논문리뷰] Deep Inside Convolutional Networks: Visualising Image Classification Models and Saliency Maps
imngooh
2023. 7. 23. 01:04
작성자 : 17기 임종우
- Image Classification을 위한 Convolutional neural network가 어떻게 동작하는지 시각적으로 확인하고자 하는 시도
- Convnet을 이용하여 특정 Class score를 최대화 하는 input Image를 생성해보기
- Class score에 대한 Input image의 gradient 계산, saliency map을 표현하여 어떤 pixel이 classification에 가장 큰 영향을 끼치는지 확인
Abstract
- 해당 논문에서는 image classification을 위한 convnet들의 시각화에 대해 조명한다.
- 이를 위해 input image에 대한 class score의 gradient를 계산하여 이를 기반으로 한 두가지 시각화 기법을 제안한다.
- 첫번째는 class score를 최대화하는 이미지를 생성하는 것이며, 이를 통해 convnet에 의해 포착된 class의 시각화가 어떤 형태인지 파악할 수 있다.
- 두번째는 class saliency map을 계산하는 방법이다. saliency map은 주어진 이미지와 class에 대해 특정하게 만들어진다. saliency map을 통해서는 classification을 위한 convnet을 통해 weakly supervised object segmentation을 해낼 수도 있다는 것을 알아낼 수 있다.
- 마지막으로, gradient 기반의 convnet 시각화 방법들과 deconvolutional network의 관계에 대해서 정립한다.
Introduction
- convolutional network가 딥러닝에서 이미지 인식에 많이 사용되고 있으므로, 해당 모델 내부에서의 이미지의 모습을 이해하는 것이 하나의 과제로 떠오름
- 기존 연구에서, Image space에서의 gradient ascent 방법을 활용하여 특정 뉴런의 활성도를 최대화하는 input image를 찾아내는 시각화를 사용한 바 있다.
- 다만 해당 방법은 비지도학습 딥러닝 모델의 숨겨진 feature를 시각화해보기 위해 사용했었다.
- 최근에는 convnet의 시각화가 중요한 문제로 떠오르면서, deconvolutional network를 통해 convnet의 layer를 시각화해 이해해보고자 하는 시도가 진행되어왔다.
- 이 논문에서는, Imagenet 데이터에 대해 사전학습된 image classification convnet에 대해 시각화하는 법을 다룬다. 이를 통해
- 섹션 2에서 supervised convnet classification model이 input image에 대한 수치적 최적화를 통해 이해할 수 있도록 시각화 될 수 있음을 보이고(앞서 언급한 gradient ascent 방법 활용)
- 섹션 3에서 주어진 이미지 내의 주어진 class에 대한 spatial support를 계산하는 방법(saleincy map)을 제안하며
- 섹션 4에서 위와 같은 gradeint based 방법이 deconvolutional network를 통한 시각화의 과정과 어떤 관계가 있는지 살펴본다.
2. Class Model Visulaization
- 앞으로 다룰 내용은 image classification을 위해 학습된 convolutional neural network를 시각화하는 기술에 대한 것이다.
- 만약 Convnet을 통해 특정 class를 가지는 이미지를 생성한다면, 그것이 바로 convnet을 시각화한 것이라고 할 수 있을 것이다.
- idea : classificaiton에서는 주어진 이미지에 대해 classification을 위해 class score를 계산하여 class를 예측하였다면, 그 반대로 주어진 class에 대해 큰 class score를 image를 만들어낸다면?
- 해당 방법을 수식적으로 접근한다.
- Sc(I)가 이미지 I에 대하여 class c의 score라고 하자.
- 우리의 목표는 $Sc(I)$가 최대가 되는 Image $I$라고 하였다. 이를 L2-regularized image를 찾는다고 생각하면 아래의 수식으로 나타낼 수 있다. 이때 $\lambda$는 regularisation parameter
- argmax Sc(I) - lambda||I||
- 여기서 Back propagation을 진행한다면, locally-optimal image $I$를 찾아낼 수 있다.
- convolutional network를 훈련시키는 과정을 생각해보자. 이때는 backpropagation을 통해 주어진 image의 정답 class score를 최대로 하게 하는 weights를 최적화한다.
- 여기서는 네트워크를 반대로 사용하여 훈련시킨다고 생각한다. layer의 weights를 최적화시키는 것이 아닌, weights는 고정한 채로 input image를 최적화시키는 것이다.
- input image는 zero image로 initialize해준다.
- 이때, class score $Sc$는 unnormalized된 값, 즉 softmax 함수를 사용하지 않은 값을 이용해야 함에 유의한다. 이는 class posterior(사후확률)의 최대화가 다른 class들의 score를 최소화함으로써 얻어질 수 있기 때문이라고 한다.

- 해당 figure는 위의 방법을 통해 실제로 특정 class에 대한 image를 생성한 결과를 나타낸다.
3. Image-Specific Class Saliency Visulaization
- 여기서 다룰 내용은 convnet이 주어진 image에 대해 어떤 부분을 보고 특정 class로 분류하는가에 대해 알아내는 부분이다. 이 논문에서는 saliency map을 통해 해당 문제를 해결하고자 하였다.
- 이를 위해 주어진 이미지 I0에 대하여, class c일 확률 Sc(I0)에 이미지의 각 픽셀들이 미치는 영향을 rank한다.
- 결국 class score의 image에 대한 미분, gradient를 통해 이를 해결한다. 즉, class score의 Image에 대한 미분을 통해 image specific class saliency를 계산한다. 왜 이렇게 표현할 수 있는 것일까?
- convolutional network는 linear function이 아니지만, Taylor 근사를 활용한다면 linear 형태로 Image와 Sc(I) 관계를 표현할 수 있다. 그렇다면 Sc의 I에 대한 미분으로 w를 표현할 수 있어진다.
- 더 직관적으로는, 미분값의 크기가 각 픽셀들이 이미지가 해당 class가 되기 위해 최소 얼마나 변해야하는지를 나타낸다고 생각할 수 있기 때문에, class score의 image에 대한 미분값으로 saliency를 표현할 수 있다.
3.1. Class Saliency Extraction
- 그렇다면 어떻게 Saliency를 계산하고 표현할 수 있는지, saliency map에 대해 더 구체적으로 살펴본다.
- saliency map은 주어진 image와 같은 size로 표현할 수 있다.
- backpropagation을 통해 deriviative $w$를 구할 수 있고, 그 후 $w$의 요소들을 mxn(image size)에 맞게 잘 배열해준다면 saliency map을 얻을 수 있다.
- gray scale image에 대해서는 w의 요소의 수가 image의 픽셀의 수와 동일하게 나타나므로 문제가 없지만, RGB와 같은 다중채널을 갖는 이미지에 대해서는 그렇지 않다. 이 경우 특정 픽셀의 여러 채널에서의 gradient 값 중 최대값으로 saliency map의 값을 정한다.
- 아래 figure는 saliency map을 실제로 만들어 시각화해놓은 결과를 나타낸다.

3.2. Weakly Supervised Object Localization
- 앞서 만들어낸 weakly supervised saliency map을 통해 주어진 이미지에서 특정 class의 물체의 위치를 얻어낼 수 있겠다는 아이디어가 등장하였다.
- 이를 통해 object localization역시 조금이나마 해낼 수 있다.
- 주어진 이미지와 해당 이미지에 대한 saliency map이 있을 때, GraphCut colour segmentation이라는 기법을 통하여 object segmentation mask를 얻어낼 수 있다.
- 이는 saliency map이 이미지 내에서 물체의 가장 중요한 부분만 포착할 것이라는 아이디어에서 착안한 것이라고 한다.
- 그러므로 이후 물체의 나머지 부분들에 대해서도 탐지해내는 과정이 필요하였고, 이를 위해 colour continity cues를 이용한 것이다.
- 아래 figure가 saliency map을 통해 object localization을 진행한 예시이다.

4. Relation to Deconvolutional Networks
- 이 논문에서는 gradient based visualization에 집중한 것과 달리, deconvolutional network를 사용하여 시각화를 진행한 논문도 존재한다.
- 그런데, 저자들은 deconvnet을 사용해 시각화를 얻어내는 과정이 해당 레이어에 대한 gradient를 계산하는 것과 동일한 의미라고 설명한다.
- 먼저, convolutional layer에 대해 gradient를 계산하는 것은 convolution kernel의 flipped version과 convolution 곱을 진행하는 것으로 표현할 수 있다. 그런데 이는 deconvolutional network에서 layer 를 reconstuction 하기 위해 진행하는 과정과 동일하다.
- RELU 함수에 대하여, gradient를 취하면 양수일때 1을 곱해주는 term과 관련되는데, deconvolutional network에서 relu의 reconstruction 역시 1을 곱해주는 형식으로 진행된다.
- 마지막으로, max pooling layer에서 sub-gradient는 argmax를 이용해 계산되는데, 이는 deconvolutional network에서 max의 위치를 기억하는 switch에 대응되는 과정이다.
- 즉, gradient based visualization은 deconvolutional network를 통한 visualization의 generalization으로 볼 수 있다.
5. Conclusion
- 해당 논문에서는 image classification을 위한 convnet을 시각화하는 두가지 기법에 대해 살펴보았다.
- 첫번째는 convnet을 통해 해당 class를 가장 잘 나타내는 이미지를 생성해보는 방법이었고,
- 두번째는 gradient를 계산해 saliency map을 표현하여 주어진 이미지에서 가장 classification에 중요한 부분을 시각화해보는 방법이었다.
- 또한 saliency map을 통해서는 object localization도 진행할 수 있었다.
- 마지막으로, 이러한 gradient based visualization 방법이 deconvolutional network를 통한 visualization의 generalization이라는 것을 밝혀내었다.