상세 컨텐츠

본문 제목

[3주차 / 임종우 / 논문리뷰] Deep Inside Convolutional Networks: Visualising Image Classification Models and Saliency Maps

2023 Summer Session/CV Team 2

by imngooh 2023. 7. 23. 01:04

본문

작성자 : 17기 임종우

  • Image Classification을 위한 Convolutional neural network가 어떻게 동작하는지 시각적으로 확인하고자 하는 시도
  1. Convnet을 이용하여 특정 Class score를 최대화 하는 input Image를 생성해보기
  2. 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에 대해 시각화하는 법을 다룬다. 이를 통해
    1. 섹션 2에서 supervised convnet classification model이 input image에 대한 수치적 최적화를 통해 이해할 수 있도록 시각화 될 수 있음을 보이고(앞서 언급한 gradient ascent 방법 활용)
    2. 섹션 3에서 주어진 이미지 내의 주어진 class에 대한 spatial support를 계산하는 방법(saleincy map)을 제안하며
    3. 섹션 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이라는 것을 밝혀내었다.

관련글 더보기

댓글 영역