Back-Projecting High-Level Activations

Introduction

CNN을 사용해 주어진 task를 수행할 때 우리는 주어진 high-level activation map의 각 activation이 입력 이미지의 어느 영역에서 기원한 것인지 종종 추적해야 할 때가 있다. 이는 CNN 모델의 구조 및 종류와 관계 없이 주로 다음과 같은 상황에서 필요하다.

  • CNN의 동작 원리를 시각화하여 이해하려고 할때.
  • 적절한 receptive field size를 고려해 CNN을 설계할 때.
  • Class-level label만으로 학습한 CNN으로 localization을 수행 할 때.
    (Weakly supervised localization)

이 중 마지막 경우인 weakly supervised localization는 실제 상황에서 자주 마주치는 중대한 문제임에도 보통 high-level activation map을 입력 이미지 크기로 interpolation하는 간단한 방식을 두루 사용해왔다. 앞으로 설명하겠지만, 이런 naive한 방법은 fine-scale localization관점에서 그 한계가 명확하다. 필자는 이번 포스팅에서 high-level activation을 입력 이미지에 localize하는 naive한 방법으로 시작해 보다 이상적인 방법들을 논문 5편을 통해 자세히 소개한다.

Naive Approaches

Yoo, Donggeun, et al.,
Multi-scale pyramid pooling for deep convolutional representation,
IEEE Conference on Computer Vision and Pattern Recognition Workshops, 2015.

누구나 떠올릴 수 있는 가장 간단한 방법은 (1) 주어진 mid-level activation map의 각 픽셀에 해당하는 receptive field를 계산하여 (2) 그 영역에 해당하는 activation intensity로 voting하는것이다. 우리가 224크기의 이미지를 fully-convolutional AlexNet에 입력하여 마지막 레이어에서 1000차원의 activation 벡터를 얻었다고 하자.  224\times224\times3크기의 이미지가 1\times1\times1000크기의 activation 벡터로 코딩되었기 때문에, 이 벡터의 receptive field는 입력 이미지 전체라고 할 수있다. 즉, receptive field의 크기는 224\times224이다. 이번에는 입력 이미지의 가로 및 세로 길이를 1씩 증가시키면서 네트워크에 입력한다고 할 때,  256\times256크기의 이미지를 넣는 순간 2\times2\times1000크기의 activation map이 나왔다고 가정하자. 우리는 이를 다음과 같이 해석할 수 있다: 256\times256 크기의 입력 이미지 위에서  224\times224크기의 receptive field가 32(=256-224)의 stride로 움직여서 2\times2\times1000의 activation map을 얻음. 이를 그림으로 표현하면 다음과 같다.

fig1

더욱 엄밀히 계산한다면 receptive field의 크기는 224보다 더 크다. 그 이유는, AlexNet의 경우 몇개의 convolution 레이어에서 행해지는 zero padding이 입력 이미지에 zero padding을 하는 효과를 내기 때문이다. Activation map상에서 인접한 두 pixel의 receptive field의 간격인 stride는 32가 된다. Receptive field의 stride는 모든 layer의 (pooling layer도 포함) stride를 곱한 숫자로 간단하게 정의할 수 있다. 이제 우리는 activation map의 모든 픽셀을 입력 이미지의 해당 영역(receptive field)에 대응시켜 입력 이미지에 activation intensity를 누적해 voting할 수 있다. 그러면 다음과 같은 수준의 weakly supervised localization을 수행할 수 있다.

fig3.PNG

이는 7개의 multi-scale 이미지를 네트워크에 입력하여 얻은 7개의 multi-scale activation map으로부터 voting한 heat map이다. 이 방법은 전반적으로 물체의 대략적인 위치와 영역을 잘 포함하는 heat map을 계산할 수 있지만 fine-scale localization이라기엔 무리가 있다. 더욱 fine한 localization을 위해 입력 이미지를 더욱 크게 resize하여 넣을 수 있지만, 이는 GPU 메모리에 한계가 있어 어렵고, 이미지 크기 대비 receptive fields의 크기가 너무 작으면 주변 context정보를 반영하지 못하기 때문에 false negative가 많아진다.

Zhou, Bolei, et al.,
Learning deep features for discriminative localization,
IEEE Conference on Computer Vision and Pattern Recognition, 2016.

앞서 소개한 naive approach보다도 더 간단한 방법은 단순히 activation map을 입력 이미지 크기로 spatial interpolation하는 것이다. 엄밀히 따지면 입력 이미지와 activation map은 정확히 align되어있지 않기 때문에 앞선 방식에 비해 오차가 크다. 하지만  (1) 하나의 receptive field 내에서 해당 high-level activation pixel에 영향을 주는 영역은 중앙의 작은 범주에 한정되어 있고 [Luo et al., NIPS’16], (2) 복수의 convolution 레이어에서의 zero padding이 입력 이미지에서의 zero padding효과를 가져오므로, 결국 정확하게 계산된 receptive field의 중앙점 좌표들은 입력 이미지에 대체로 uniform하게 분포한다고 여길수 있기에 activation map의 단순 interpolation도 그럴듯한 결과를 보여준다.

본 섹션에서 소개하는 참고 논문은 이처럼 클래스별 activation map을 입력 이미지 크기로 interpolation 하여 클래스별 activation의 근원을 입력 이미지로부터 알아낸다. 클래스별 activation map을 class-level label만 사용하는 weakly supervised learning으로 직접 학습하기 위해, fully-convolutional network에서 나온 m\times m\times n 크기의 activation map을 global average pooling을 통해 1\times1\times m 크기로 축소하여 classification loss를 구해 학습한다. 이를 그림으로 표현하면 다음과 같다.

fig4

Discussion

우리는 지금까지 high-level activation을 입력 이미지에 투영하기 위한 두 가지의 naive한 방법을 살펴보았다. 두 방법 모두 activation의 intensity를 그대로 입력 이미지의 해당 영역에 대응시키는 것이 핵심이다. 간단하다는 장점이 있지만, (1) activation의 localization은 activation map의 해상도에 의존할수 밖에 없어 fine-scale의 localization에 한계가 있고, (2) 하나의 receptive field내에서 pixel-level 기여도를 반영할 수 없다는 단점이 있다.

Deconvolution Approach

Zeiler, Matthew D., and Rob Fergus,
Visualizing and understanding convolutional networks,
European conference on computer vision, 2014.

이 논문은 ILSVRC’13을 우승한 ZFNet (Zeiler&Fergus’s network)의 기원이다. 논문의 제목과 같이, 저자는 주어진 CNN의 상위 activation들을 특정 하위 레이어의 activation 수준으로 시각화하고 이해하는 방법을 제안한다. 이 방법을 통해 그들은 ZFNet을 성공적으로 설계할 수 있었다고 주장한다.

CNN에 입력된 이미지는 레이어를 거칠수록 중요한 정보를 선택적으로 보존하고 동시에 불필요한 정보를 손실하여 마지막에 클래스 확률 벡터만 남긴다. 이 때 특정 중간 레이어를 지난 activation에 보존되어있는 정보만을 활용하여 입력 이미지를 최대한 복원한다면 입력 이미지에서 중요하게 간주되었던 부분이 상대적으로 잘 복원될 것을 예상할 수 있다. 이 논문의 저자가 CNN의 activation들을 시각화하는 방법의 핵심은 feed-forward 함수의 역함수를 근사하여 선택된 정보를 복원하는 것이다.

이를 위해 저자는 CNN을 이루는 레이어들의 역함수를 정의한다. 주를 이루는 convolution의 역함수를 deconvolution으로 근사한다. Deconvolution은 입력 이미지를 복원하는 방식으로 네트워크를 unsupervised learning하기 위해 제안된 계산이고, 실제로 그러한 목적으로 auto-encoder와 같은 encoder-decoder 네트워크의 decoder부분에 널리 쓰여왔다. Deconvolution 레이어는 학습된 convolution레이어의 필터들을 가로 및 세로 축으로 flipping하여 convolution을 수행하는 레이어로 정의된다. 실제로 필터를 학습하지 않고 학습된 필터를 복제하여 re-ordering할 뿐이다. 이것이 어떻게 convolution의 역함수로 근사되는지에 대한 자세한 내용은 이곳을 참고하자.

CNN의 또다른 주요 요소인 max pooling의 역함수로 저자는 max unpooling을 정의한다. Max-pooling 또한 역함수가 존재하지 않기에 pooling region에서 최댓값으로 선택된 값의 좌표를 저장하여 역함수를 근사한다. Max unpooling을 할 때 max pooling시 선택되지 않았던 픽셀들에는 0을 채운다. 이를 그림으로 표현하면 다음과 같다.

fig5.png

ReLU의 경우 양의 입력에 대해서는 그 자신으로 역함수가 정의되지만, 음의 입력에 대해서는 정보를 손실시켜 역시 역함수가 없다. 저자는 간단하게 ReLU 그대로를 역함수로 사용한다. 이렇게 정의한 역함수들을 이용해 convolution, ReLU, max pooling의 순서로 구성된 하나의 feed-forward 모듈로부터 입력을 복원하는 예시를 다음 그림을 통해 살펴보자.

fig6.png

위 그림의 오른쪽 아래에 있는 layer below pooled maps가 convolution, ReLU, max pooling을 지나 pooled map이 되는것이 feed-forward path이고 왼쪽 위에 있는 layer above reconstruction이 max unpooling, ReLU, deconvolution을 지나 reconstruction이 된 것이 reconstruction path이다. 복원 과정에서 max unpooling과 ReLU의 순서가 바뀌어 있는데, feed-forward에서와 마찬가지로 이 두 계산은 순서에 무관하게 같은 결과를 같는다.

미리 학습된 ZFNet에  입력 이미지를 feed-forward하여 특정 레이어의 activation map얻은 후 역함수를 통해 이미지 레벨까지 복원한 결과를 살펴보자. 다음 그림은 ImageNet의 validation set을 입력해 얻은 2번째 convolution layer의 activation map들 중 강한 activation들을 골라 입력 이미지 레벨로 복원한 결과를 보여준다. Activation map에서 특정 activation 픽셀을 선택했다면, 나머지 activation 픽셀들은 모두 0으로 채운 후 복원을 시작한다.

fig7.png

위 그림의 왼쪽이 복원된 결과이고 오른쪽이 복원된 영역에 해당하는 원본 이미지이다. Activation map의 특정 한 픽셀만 복원하였기 때문에 복원된 이미지는 상응하는 receptive field 영역에 형태가 나타난다. 5개의 convolution 레이어로 구성된 ZFNet의 앞부분에 해당하는 2번째 convolution레이어는 주로 저수준의 질감이나 색깔등을 인코딩하고 있다는 것을 확인할 수 있다. 다음 그림은 이보다 상위 수준인 4~5번째 convolution layer의 activation으로 부터 복원한 결과를 보여준다.

fig8.png

더 높은 convolution layer에서는 더 높은 수준인 물체의 부분이나 (얼굴, 다리, 눈 등) 물체 전체를 (자전거, 그릇 등) 인코딩하고 있음을 확인할 수 있다.

이러한 결과로 부터 우리는 CNN이 특정 물체를 구분적으로 표현하기에 중요한 정보를 (눈, 얼굴, 다리 등) 선택적으로 인코딩하고 중요하지 않은 정보는 손실한다는 사실을 증명할 수 있다. 물체의 종류를 구분하기에 필요한 중요한 정보는 activation으로 부터 이미지로 복원이 되는 반면 그렇지 않은 부분은 (배경 등) 복원이 되지 않기 때문이다.

Discussion

우리는 이 논문에서 CNN을 구성하는 요소 함수들의 역함수를 이용해 중간 수준 혹은 상위 수준의 activation들을 입력 이미지로 back-projection하는 (복원) 방법을 살펴보았다. 이 방법은 앞서 살펴본 두 가지 naive approach들과 다르게 역함수를 근사하여 직접 입력 이미지를 복원하기 때문에 fine-scale의 activation localization을 성공적으로 수행한다. 이 방법의 단점을 살펴보기에 앞서, 이 방법과 다르게 접근하였지만 결국 매우 유사한 방법인  gradient approach를 살펴보자.

Gradient Approach

Simonyan, Karen, Andrea Vedaldi, and Andrew Zisserman,
Deep inside convolutional networks: Visualising image classification models and saliency maps,
arXiv preprint, 2013.

이 논문의 저자는 앞서 설명한 방법들과는 다른 방식으로 neural activation의 back-projection문제를 접근한다. 하지만 흥미롭게도 이 저자의 방법이 deconvolution approach와 이론적으로 거의 유사하고 이론적으로 더 ideal한 방법임을 보인다. 이 방법의 핵심은, activation의 기원을 추적하는데 back-propagation 알고리즘에 의해 계산되는 gradient를 활용하는 것이다.

본론으로 들어가기에 앞서 back-propagation을 통한 CNN학습 원리를 정성적으로 해석해보자. 우리가 가진 CNN을 학습하기 위한 loss 함수 f를, 이미지 X를 입력받고 convolution filter들 K로 parameterize된 하나의 함수 f^{K}(X)라 하자. 우리가 feed-forward를 통해 f^K(X)를 구한 후 back-propagation을 통해 아래 그림과 같은 gradient들 \left\{\Delta X, \Delta K\right\}을 얻을 수 있다.

fig9.png

Back-propagation은 loss를 \Delta f만큼 변화시키기 위해 필요한 입력 이미지의 변화량 \Delta X와 convolution filter들의 변화량 \Delta K를 근사하여 구해준다. Convolution filter들에 요구되는 변화량 \Delta K를 고려하지 않는다면, 입력 이미지 X에 -\Delta X만큼의 변화를 가하면 loss가 \Delta f만큼 감소한다고 해석할 수 있다. 이 논문의 저자는 이 해석에 주목하여 high-level activation의 근원을 입력 이미지에서 추적한다.

학습이 끝난 CNN에 이미지 I를 입력하면 클래스별 점수 벡터 S=[S_1,S_2,\cdots]를 얻게 된다. 어떤 클래스 c의 물체를 포함하는 이미지 I_0 \in \Re^{W\times H\times 3}로 부터 얻은 activation S_c \in \Re^1의 근원은 그 activation S_c\Delta S_c만큼 변화 시킬 수 있는 입력의 변화 \Delta I_0 \in \Re^{W\times H\times 3}라고 간주할 수 있다. 이 입력 이미지의 변화 \Delta I_0는 앞서 살펴본 바와 같이 back-propagation을 통해 쉽게 구할 수 있다. 이 논문의 저자는 입력의 변화를 시각화 하기 위해 \Delta I_0의 절대값을 channel축으로 max pooling한 흑백 이미지 \max_{ch}|\Delta I_0(i, j, ch)|를 생성하였다. 그 결과는 다음 그림과 같다.

fig10.PNG

흑백 이미지가 각 입력 이미지의 실제 클래스에 해당하는 activation S_c로 부터 구한 \max_{ch}|\Delta I_0(i, j, ch)|이다. 이처럼 입력 이미지의 gradient만을 시각화해도 상당히 fine-scale의 localization이 가능함을 확인할 수 있다.

우리는 지금까지 어떤 activation에 기여한 입력 이미지의 픽셀 수준 기여도를 gradient를 통해 시각화하였고, 동작 원리를 정성적인 해석으로 이해하였다. 하지만 논문에서 저자는 우리의 목표인 기여도의 시각화가 gradient의 시각화가 근사적으로 일치한다는 점을 다음과 같이 증명한다. 이미지 I로부터 어떤 클래스 c의 점수 S_c를 추정하는 선형 모델을 다음과 같이 정의하자.

S_c(I)=W_c^\top I + b_c

이 선형모델이 최대한 동작하기 위해서는 이미지 I의 중요한 부분에 더 큰 가중치 w들이 할당될 것이기에, 우리는 모델 parameter인 W_c자체가 S_c에 대한 픽셀 수준의 기여도라고 간주할 수 있다. 하지만 실제 CNN은 이러한 선형 모델보다 훨씬 더 복잡한 비선형 모델이다. 비선형 모델인 CNN을 선형모델로 근사하기 위해 Taylor expansion을 하면 다음과 같다.

S_c(I)\simeq S_c(a)+{S'}_c(a)\cdot(I-a)+\frac{1}{2}{S''}_c(a)\cdot(I-a)^2+\dots

여기서 선형인 first order부분만 보자. S_c(a)+{S'}_c(a)\cdot(I-a)을 앞서 정의한 선형 모델 W_c^\top I + b_c에 대응시키면 gradient {S'}_c가 W_c^\top에 해당하고, 나머지 상수가 b_c에 해당한다. 즉, S_c를 입력 이미지 I에 대해 미분한 gradient가 대한 픽셀 수준의 근사된 기여도라고 결론지을 수 있다.

또한, 저자는 이 방법이 앞서 소개한 deconvolution approach와 이론상 거의 유사한 방법임을 보인다. 상위 activation에서 시작해 각 레이어의 역함수로 activation을 복원하는 과정이 back-propagation으로 각 레이어에서 미분을 하는 과정과 거의 유사하기 때문이다. Deconvolution approach에서 정의한 각 레이어의 역함수를 back-propagation으로 각 레이어에서 activation을 미분하는 수식과 비교해보자.

Deconvolution approach에서는 convolution의 역함수를 deconvolution으로 근사하였다. 주어진 상위 복원 activation R_{n+1}에 대하여 n번째 convolution 레이어에 대한 deconvolution은, 학습된 convolution filter K_n를 가로 및 세로 방향으로 flip한 \hat{K}_n과 convolution하는 R_n=R_{n+1}\bigotimes\hat{K}_n으로 정의하였다. 이 연산은 back-propagation 알고리즘이 n번째 convolution layer에서 주어진 \partial f/\partial X_{n+1}을 flip한 \hat{K}_n와 convolution하여 \partial f/\partial X_n=\partial f/\partial X_{n+1}\bigotimes\hat{K}_n을 구하는것과 정확하게 일치한다.

ReLU의 경우 deconvolution approach에서는 R_n=R_{n+1}\cdot\mathbf{1}(r_{n+1}>0)으로 정의하지만, back-propagation에서는 \partial f/\partial X_n=\partial f/\partial X_{n+1}\cdot\mathbf{1}(x_n>0)으로 정의한다. 여기서 \mathbf{1}(\text{condition})은 조건을 만족하는 픽셀의 index에 1을 곱해 통과시키고 나머지는 0을 곱해 block한다는 의미이다. 즉, 어떤 값을 기준으로 값을 통과시킬지의 기준이 다를 뿐 비슷한 연산이다. 마지막으로 max pooling의 경우 deconvolution approach의 역함수나, back-propagation의 미분이나 다르지 않다.

종합하면, 주어진 상위 복원 activation R_{n+1}으로 하위 activation R_n을 복원하는 것은, 주어진 상위 gradient \partial f/\partial X_{n+1}을 back-propagation으로 미분해 하위 gradient  \partial f/\partial X_n를 구하는것과 ReLU만 제외하고 일치한다. 즉, 저자는 gradient 기반의 activation 시각화가 deconvolution approach를 일반화한 방법이라고 결론짓는다.

Discussion

Deconvolution approach에서 상위 계층에서 손실된 정보(activation)만으로 근사한 역함수를 통해 입력 이미지를 복원하여 중요하게 여겨진 입력 픽셀의 기여도를 시각화 하였다. Gradient approach에서는 상위 계층의 activation을 변화에 상응하는 입력 픽셀의 변화를 시각화 하였다. 그리고 이 두 방법은 접근이 달랐을 뿐 결국 거의 비슷한 방법임을 증명하였다. 주어진 activation에 대한 픽셀 수준의 기여도를 측정하므로 fine-scale localization이 가능하고, 학습에 필요한 back-propagation 알고리즘을 통해 결과를 얻으므로 구현이 매우 간단하다는 장점이 있다. 하지만, back-propagation으로 구한 gradient는 이웃 픽셀간의 의존성을 전혀 고려하지 않은, 상위 activation에 대한 각 픽셀의 편미분이기 때문에 spatially noisy하다는 단점이 있다.

Probabilistic Winner-Take-All Approach

Zhang, Jianming, et al.,
Top-down neural attention by excitation backprop,
European Conference on Computer Vision, 2016.

이 논문은 상위 수준의 activation을 하위 수준으로 back-projection하기 위해 probabilistic winner-take-all process라는 확률 모델을 제안한다. 이는 다음과 같은 시나리오를 확률로 모델링한다.

Scenario
  • 주어진 j번째 계층의 뉴런 (activation) a_j로 부터, 바로 아래 계층인 i(=j-1)번째 계층의 뉴런들이 a_j에 기여했을 확률 P(a_i|a_j)에 따라 하나의 뉴런을 선택한다.
  • 위 과정을 하위 계층 방향으로 반복하여 목표 계층에서 하나의 뉴런을 선택한다.fig11.PNG

위에 설명된 시나리오대로 a_j로부터 목표 계층의 뉴런을 무수히 반복해 선택하면 그 선택된 뉴런을 voting하여 heat map을 얻을 수 있을 것이다. 그리고 그 heat map을 normalize하면 곧 해당 계층에 있는 뉴런이 선택될 확률 분포 함수가 될 것이다. a_j에 기여한 목표 계층의 픽셀 (뉴런) 수준의 기여도이기 때문에 이 확률 분포 함수 자체가 우리의 목표가 된다. 보다 명확히 표현하면, 목표 계층 t의 각 뉴런이 주어진 상위 계층의 근원 뉴런 a_s, s>t에 기여할 확률 분포 함수 P(a_t|a_s)를 추정하는 것이다. 이 확률 모델을 정의하기 위해 저자는 다음의 두 가지 가정을 한다.

Assumptions
  1. 모든 뉴런(activation)은 양수의 값을 갖는다.
  2. 뉴런은 중요한 시각적 패턴이 뚜렷할수록 더 큰 양수의 값을 갖도록 반응한다.

1번 가정은 요즘 쓰이는 모든 CNN이 ReLU를 activation 함수로 사용하기 때문에 항상 만족한다고 할 수 있고, 2번 가정 역시 여러 논문을 통해 검증되었다. 이 가정을 바탕으로 저자는 다음과 같이 conditional winning probability라 하는 확률 분포 함수를 다음과 같이 정의한다.

P(a_i|a_j)=\left\{\begin{matrix}Z_j\hat{a_i}w_{ij}&\text{if}\;\;w_{ji}\geq 0,\\0 &\text{otherwise,}\end{matrix}\right.\;\;\text{s.t.}\;\;Z_j=1/\Sigma_{i:w_{ij}\geq 0}\hat{a_i}w_{ij}

위 그림과 같이 a_i와 a_j가 weight w_{ij}로 연결되었을 때, 주어진 a_j에 대해 뉴런 a_i가 선택될 확률은 두번째 가정에 의해 1) 둘 사이를 연결하는 w_{ij}에 비례하고, 동시에 2) 자기 자신의 강도 a_i에 비례하도록 정의된다. Z_j는 위 확률 분포 함수의 적분이 1이 되도록 하는 normalization coefficient이다.

서로 이웃한 계층 (i,j)의 두 뉴런에 대한 P(a_i|a_j)를 정의했으므로, 어떤 상위 계층 s의 특정 근원 뉴런 a_s에서 시작해 목표 하위 계층 t에서 각 뉴런이 선택될 확률 P(a_t|a_s)을 back-propagation처럼 순차적으로 계산할 수 있다. 이 알고리즘을 저자는 “excitation back-propagation”이라 칭한다.  ImageNet에 pre-training되어있는 VGG-16모델의 16번째 계층에서 “tabby cat” 클래스에 해당하는 activation a_{16}^{\text{tabby cat}}에 대한 목표 계층 \{t|1\leq t\leq 5\}에서의 P(a_t|a_{16}^{\text{tabby cat}})를 그려보면 다음 그림과 같은 결과를 얻는다. 저자는 시각화를 위해 channel축으로 확률을 더하여 heat map을 만들었다.

fig12.PNG

위 결과에서 볼 수 있듯이 목표 계층이 낮아질 수록 해상도가 높아지면서 fine-scale localization이 잘 된다. “tabby cat”이라는 클래스의 점수(activation)에 기여한 뉴런으로 선택될 확률이 가장 높은 부위는 눈이라고 해석할 수 있다. 다음의 결과를 보자.

fig13.PNG

얼룩말과 코끼리가 있는 이미지를 입력으로 넣어 시각화 한 heat map이다. 얼룩말의 heat map에서는 얼룩말 부분의 뉴런들이 높은 선택 확률을 보이지만, 코끼리의 heat map은 코끼리 부분 뿐 아니라 얼룩말 부분의 뉴런들도 높은 선택 확률을 보인다. 저자는 이러한 문제를 해결하기 위하여 contrastive 확률을 제안한다. 코끼리 클래스를 목표로 설명한다면, 코끼리 클래스에 반하는 가상의 “non-elephant” 클래스를 만든다. 마지막 계층에서 이 가상 클래스의 weight set은 코끼리의 분류기에 해당하는 weight set W^\text{elephant}의 nagation인 W^\text{non-elephant}=-W^\text{elephant}로 정의한다. 그러면 우리는 마지막 계층 s의 직전 계층 s-1에서 이 두 클래스에 대한 확률 P(a_{s-1}|a_s^{\text{elephant}}), P(a_{s-1}|a_s^{\text{non-elephant}})를 구할 수 있고, contrastive 확률을 다음과 같이 정의할 수 있다.

P_{\text{contrastive}}(a_{s-1}|a_s^{\text{elephant}})=P(a_{s-1}|a_s^{\text{elephant}})-P(a_{s-1}|a_s^{\text{non-elephant}})

위 확률을 이제 목표로 하는 하위 계층 t로 excitation back-propagation으로 내려보내면 최종 contrastive 확률 P_{\text{contrastive}}(a_{t}|a_s^{\text{elephant}})를 구할 수 있다. 이 확률값이 음수가 된 경우는 0으로 clipping한 후 시각화한 결과는 다음 그림의 오른쪽과 같다.

 fig14.PNG

이제는 코끼리 클래스에서 높은 확률을 가졌던 얼룩말 부분의 뉴런들이 0의 확률을 갖고, 마찬가지로 얼룩말 클래스에서 약간의 확률을 가졌던 코끼리 부분의 뉴런들 역시 0의 확률을 갖는다.

Experiment 1: Pointing Game

이 논문의 저자는 이 방법을 평가하기 위하여 총 3가지의 실험을 보여준다. 그중 첫번째 실험인 pointing game을 보자. 이 논문의 목적은 weakly-supervised setting하에 물체의 정확한 경계를 추출하여 detection 혹은 segmentation하는것이 아니라 특정 상위 계층의 activation에 기여한 목표 하위 계층의 뉴런을 시각화 하는 것이기 때문에, pointing game이라는 task로 성능을 검증한다. Pointing game의 성능은 Acc=\#\text{Hits}/(\#\text{Hits}+\#\text{Misses})로 정의하는데, 여기서 hit은 heat map의 최댓값의 위치가 물체의 bounding box내에 위치하는것이고, miss는 그 box외에 위치하는 것이다.

이 실험을 위해 저자는 ImageNet에 pre-training되어있는 CNN-S [Chateld et al., BMVC’14], VGG-16 [Simonyan et al., ICLR’15], GoogLeNet [Szegedy et al., CVPR’15]의 마지막 계층을 PASCAL VOC 2007과 MS-COCO에 fine-tuning하였다. 그 결과는 다음과 같다.

fig15.PNG

All은 validation set 전체에 대한 성능이고, Diff는 그 중 일부인 “difficult set”에 대한 결과이다. Center는 이미지의 중앙점에 대한 결과이고, Grad는 Deconv는 각각 앞서 소개한 gradient approach와 deconvolution approach이다. CAM은 activation map을 단순히 interpolation하는 naive approach로서 역시 앞에서 설명하였다. 모든 데이터셋과 모든 CNN에서 contrastive 확률의 성능이 가장 높았다. Grad와 Deconv는 우리가 고찰했다시피 거의 비슷한 방법이기에 전반적으로 비슷한 경향성을 보이지만 generalize된 버전인 Grad가 더 높은 성능을 보여준다. 다음 그림은 몇가지 예시를 보여준다.

fig16.PNG

위 예시와 같이 CAM의 경우 상위 계층의 activation map이 갖는 해상도가 매우 낮기 때문에 물체를 rough하게 localize하는 반면, 픽셀 수준의 기여도를 계산할 수 있는 이 방법과 Grad의 경우에는 fine-scale localization이 가능하다. 하지만, Grad의 경우 픽셀 각각에 대한 편미분을 시각화 한것이기 때문에 픽셀간의 의존성이 전혀 고려되지 않아 noisy 한 결과를 보여준다.

이 논문의 방법에서 contrastive 확률을 사용했을 때의 성능이 그렇지 않을때 보다 크게 향상된다. 그래서 저자는 이 contrastive 방법을 Grad와 Deconv, 그리고 CAM에도 적용을 해 비교하였다. 또한 이 방법에서 계층별로 확률의 합을 1로 normalize하는 Z_j의 효과도 분석한다. 그 결과는 다음과 같다. Test set은 PASCAL VOC 2007의 “difficult set”이고 CNN은 GoogLeNet이다.

fig17.PNG

“w/o norm”은 Z_j의 normalization 없이 excitation back-propagation한 결과인데, 정상 성능보다 매우 낮은 성능을 보여준다. “post-norm”은 normalization을 최종 확률맵에서만 수행한 후 빼기를 통해 contrastive map을 만든 결과인데 역시 정상 성능보다는 낮아서 계층별 normalization이 성능에 중요함을 증명한다. 위 표의 오른쪽 부분은 다른 방법에 contrastive 방법을 적용한 것이다. Grad의 경우 마지막 계층에서 클래스 c의 dual weight set인 -W^c로 부터 구한 이미지 gradient가 W^c로부터 구한 이미지 gradient와 부호만 다르고 정확히 같으므로 절대값을 취한 후 빼면 zero map이 되어 contrastive 방법을 적용할 수 없다. CAM의 경우도 dual weight set이 곱해진 activation map이 원래의 activation map과 부호만 다를뿐 정확히 같으므로 뺄샘을 하면 scale만 변할 뿐 최댓값의 위치가 바뀌지 않아 성능 향상이 없다. Deconv 방법은 contrastive 방법을 적용했을 때 큰 성능 향상을 보였지만 이 논문의 방법보다는 3%정도 낮은 성능을 보인다.

Experiment 2: Weakly Supervised Object Localization

저자는 이 논문의 방법으로 ILSVRC의 task중 하나인 object localization을 weakly supervised setting으로 class-level label만 사용해 수행한다. 이 실험을 위해 GoogLeNet을 사용하였고, ILSVRC’12 validation set에서의 top-5 localization error를 다른 방법들과 비교한다.

fig18.PNG

흥미롭게도, 이 방법에서는 contrastive 방법을 사용하지 않았을 때 가장 좋은 성능을 보인다. 그 이유는 contrastive 방법을 사용하면 heat map은 구별성이 높은 물체의 부분에 집중하기 때문에 물체 전체를 포함해야 하는 localization task에 맞지 않다. Grad와 Deconv도 역시 좋은 성능을 보여주지만 이 논문의 방법보다는 3%가량 낮은 성능을 보인다.

Experiment 3: Weakly Supervised Noun Phrase Localization

저자는 마지막 실험으로 주어진 noun phrase에 해당하는 이미지의 영역을 추정하는 task를 보인다. 저자는 noun phrase와 bounding box의 쌍을 활용하지 않고, large-scale 이미지와 그 이미지에 달려있는 noisy tag들을 활용해 tag 분류기만 학습해 task를 수행한다. Tag 분류기가 있으면 주어진 noun phrase의 어휘들 중 학습된 어휘(tag)에 기여하는 뉴런들을 선택해 bounding box를 localize할 수 있기 때문이다. 이 실험을 위하여 저자는 AdobeStock에 있는 6백만장의 이미지들과 이미지에 달려있는 tag를 활용해 tag 분류기를 학습하였다. 각 이미지가 가진 30~50개의 tag들 중 앞의 tag가 덜 noisy하여 앞쪽 5개의 tag만 추출하였다고 한다. 이렇게 모은 전체 tag set 중 가장 많이 등장한 18000개의 tag로 한번 더 추려 tag dictionary를 만들고 18000-way 분류기를 확습한다. Test 방법은 다음과 같다.

  1. 하나의 test이미지로부터 500개의 object segment proposal들을 MCG를 [Arbelaez et al., CVPR’14] 사용해 추출한다.
  2. 주어진 noun phrase에 포함된 tag들의 heat map을 각각 구한후 평균내어 하나의 heat map을 만든다.
  3. 각 segment proposal을 heat map위에 올려놓고 점수를 계산한다.
  4. 각 segment proposal을 bounding box로 변환하여 IoU 0.7의 Non-maximum Suppression으로 병합한다.

저자는 이 task의 성능을 검증하기 위하여 Flickr30k dataset의 test set을 사용한다. 이 test set의 각 이미지는 5개의 문장을 가지고 있고, 이 문장의 noun phrase들은 이미지의 bounding box와 연결되어있다. Localization 성능은 per-group AP와 per-phrase AP로 층정한다. 각 문장은 8개의 그룹중 하나에 속해있다. 그 결과는 다음과 같다.

fig19.PNG

R@N은 top N개의 bounding box들에 대한 recall rate이다. “/”으로 구분되는 두 가지 성능중 왼쪽은 전체 성능이고, 오른쪽은 작은 bounding box들에 (이미지 넓이 대비 25% 이하) 대한 성능이다. 기존의 다른 방법들 (Grad, Deconv, CAM)에 비해 전반적으로 월등히 좋은 성능을 보여준다. 또한 앞서 소개한 weakly supervised object localization과 다르게 이 실험에서는 segment proposal기반의 localization을 하기 때문에 contrastive 방법이 효과를 발휘한다. CAM의 경우 상위 계층의 activation map이 갖는 해상도가 매우 낮기 때문에 작은 bounding box에 대한 성능이 상대적으로 크게 떨어진다. Grad와 Deconv는 비슷한 방법이기에 성능도 비슷한 경향을 보인다.

EB라고 표시된 것은 bounding box proposal의 방법으로 MCG가 아닌 EdgeBox [Zitnick and Dollar, ECCV’14]를 사용한 경우를 뜻한다. CCA는 [Plummer et al., CVPR’15] 이 dataset이 제공하는 noun phrase의 ground-truth bounding box들을 모두 활용한  fully supervised learning 방법이다. 하지만, 대량의 image-level noisy tag들만 활용한 이 논문의 방법이 fully supervised learning방법에 비해 비슷하거나 더 높은 성능을 보여주는것이 매우 흥미로운 결과이다. 이는 싼 weak data가 large-scale이라면, weakly supervised learning이 fully supervised learning과 비슷한 성능을 보일 수 있다는 값진 교훈을 준다. 다음은 몇가지 결과 예시들을 보여준다.

fig20.PNGfig21.PNGfig22.PNGfig23.PNG

각 test 이미지가 가진 문장이 이미지 아래에 쓰여있다. 문장의 어휘들 중 tag dictionary에 있는 어휘를 선택해 heat map을 시각화한 결과를 보여준다. Contrastive 방법에 의해 running, jumping과 같은 동사에 대해서도 이 동사를 구분하기에 중요한 발 부위에 높은 확률이 시각화되는점이 흥미롭다.

Discussion

우리는 상위 계층의 특정 뉴런(activation)을 하위 계층으로 back-projection하기위한 확률적 접근을 살펴보았다. 저자는 상위 계층의 뉴런에 기여한 뉴런을 선택하는 시나리오를 확률적으로 모델링하였고, 하위 목표 계층의 각 뉴런이 선택될 확률을 계산하여 그 값을 시각화 하였다. 또한 서로 다른 클래스간에 공통으로 선택될 수 있는 뉴런을 contrastive 확률을 정의해 억제하였다. 이 방법은 gradient approach나 deconvolution approach와 같이 목표 계층에서 픽셀 수준의 기여도를 계산할 수 있고, 그 기존의 back-propagation 대비 excitation back-propagation 알고리즘이 비싸지 않다는 정점이 있다.

Conclusion

 

필자는 이번 posting에서 상위 계층의 activation을 이미지 수준으로 back-projection하기 위한 4가지 approach와 5가지 논문을 소개하였다. 먼저, 상위 계층의 activation map을 단순히 interpolation하거나 activation별 receptive field의 크기와 위치를 계산해 voting하는 Naive approach를 소개하였다. 이 접근은 상위 계층의 activation map에만 의존하기 때문에 해상도가 작아 fine-scale localization이 불가능하였다. 그리고 소개한 deconvolution approach는 CNN의 모든 모듈의 역함수를 정의해, 상위 계층에서 정보가 손실된 activation으로부터 이미지에서 중요하게 간주된 부분이 복원되도록 시각화 한다. 이 방법은 결국 상위 계층의 변화량에 해당하는 이미지의 변화량(gradient)을 back-propagation으로 계산해 시각화하는 gradient approach와 이론적으로 유사하다. 이 두 가지 방법은 naive approach와 다르게 픽셀 수준의 localization이 가능하다는 장점을 갖는다. 하지만, 이미지 gradient는 이웃 픽셀간의 의존성을 전혀 고려하지 않고 상위 activation에 대한 각 픽셀의 편미분이기 때문에 spatially noisy하다는 단점이 있었다. 마지막으로 소개한 방법은 상위 계층의 activation에 기여한 하위 계층의 뉴런을 선택하는 시나리오를 확률적으로 모델링하여, 목표 하위 계층의 각 뉴런이 선택될 확률값을 시각화 하였다. 이 확률을 계산하기 위한 excitation back-propagation은 기존의 back-propagation에 비해 크게 비싸지 않고, 픽셀 수준의 localization이 가능하다는 장점이 있다. 이 방법과 앞서 소개한 모든 방법을 비교한 많은 실험에서도 이 방법이 가장 뛰어난 성능을 보여주는 것을 확인하였다.

One thought on “Back-Projecting High-Level Activations

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s