안녕하세요.

 

 

오늘은 Learning Deep Features for Discriminative Localization이라는 논문에 대해서 정리해보려고 합니다.

 

 

해당 논문에서 제안하는 접근법을 통해 만들어지는 Class Activation Map(CAM)으로도 유명한 논문입니다.

 

 

논문 주소: arxiv.org/abs/1512.04150

 

Learning Deep Features for Discriminative Localization

In this work, we revisit the global average pooling layer proposed in [13], and shed light on how it explicitly enables the convolutional neural network to have remarkable localization ability despite being trained on image-level labels. While this techniq

arxiv.org

 

그럼 시작해보겠습니다.

 

 

Abstract

 

 

본 논문에서 저자들은 global average pooling layer에 대해서 다시 논의하고, 어떻게 이것에 의해서 convolutional neural network (CNN)가 image-level label에 학습되었음에도 불구하고 놀라운 localization ability를 가지도록 만들어주는지에 대해서 논의합니다.

 

Global average pooling은 학습을 규제하기 위한 수단으로써 이전에 제안되었지만, 본 논문의 저자들은 이것이 이미지에 대해서 CNN의 암시된 attention을 드러내는 포괄적인 localizable deep representation을 만들어낸다고 생각하였습니다.

 

Global average pooling의 단순함에도 불구하고, 본 논문의 저자들은 어떠한 bounding box annotation을 이용한 학습을 하지 않고도 ILSVRC 2014 object localization에 대해서 37.1% top-5 error를 달성할 수 있었습니다.

 

저자들은 본 논문에서 network가 classification task를 해결하기 위해서 학습되었음에도 불구하고, discriminative image region의 위치를 알아낼 수 있다는 것을 다양한 실험을 통해서 검증하였습니다.

 

 

 

1. Introduction

 

 

Zhou et al에 의한 최근 연구는 object의 위치에 대한 어떠한 supervision이 제공되지 않았음에도 불구하고 convolutional neural network (CNNs)의 여러 가지 layers의 convolutional units이 실제로 object detector로써 행동한다는 것을 보여주었습니다.

 

Convolutional layers가 object의 위치를 알아낼 수 있는 놀라운 능력을 가지고 있음에도 불구하고, 이러한 능력은 classification을 위해 사용되는 fully-connected layer가 존재할 때 잃게 됩니다.

 

최근에, Network in Network (NIN)와 GoogLeNet과 같은 여러 인기 있는 fully-convolutional neural networks는 좋은 성능을 유지하면서도 parameter의 수를 최소화하기 위해 fully-connected layers의 사용을 피하기 위해 제안되었습니다. (convolution layer에 비해서 fully-connected layer의 weight 수가 훨씬 많기 때문이죠.)

 

 

이를 달성하고자, Zhou et al는 structural regularizer의 역할을 수행하는 global average pooling을 사용하였으며, 이는 학습이 진행되는 도중에 overfitting을 방지합니다.

 

본 논문의 저자들은 실험을 통해 global average pooling의 이점이 단순히 regularizer의 역할을 수행하는 것 이상으로 확장될 수 있다는 사실을 발견하였습니다. 

 

즉, network의 구조를 약간 수정하면, network가 놀라운 localization ability를 마지막 layer까지 보유할 수 있다는 것입니다.

 

이러한 수정은 네트워크가 매우 다양한 task를 위한 discriminative image region을 single forward-pass에서 쉽게 식별하도록 만들어줍니다. 

 

Figure 1(a)에서 보이는 것처럼, object categorization에 대해 학습된 CNN은 action classification을 위한 discriminative regions을 사람보다는 사람이 상호작용하고 있는 개체의 위치로 잘 찾고 있는 것을 볼 수 있습니다.

 

 

본 논문의 저자들의 접근법이 분명하게 간단함에도 불구하고, ILSVRC benchmark에 대한 weakly supervised object localization에 대해서 저자들의 최고 성능은 top-5 test error 기준 37.1%를 달성하였고, 이는 fully supervised AlexNet이 달성한 top-5 error 34.2%에 근접합니다.

 

추가적으로, 본 논문의 저자들은 제안하는 접근법을 통해 얻어지는 deep feature의 localizability가 generic classification, localization, 그리고 concept discovery를 위한 다른 recognition dataset에도 쉽게 사용될 수 있다는 것을 여러 가지 실험을 통해 검증합니다.

 

 

1.1 Related Work

 

선행 연구 부분은 생략합니다.

 

 

2. Class Activation Mapping

 

 

이번 section에서, 저자들은 CNNs에 있는 global average pooling을 사용해 class activation maps (CAM)를 만들어내는 절차에 대해서 설명합니다.

 

특정한 category에 대한 class activation map은 해당 이미지를 특정한 category로 식별하기 위해 CNN에 의해서 사용된 discriminative image region을 나타냅니다. 

 

Figure 3는 이에 대한 예시를 보여줍니다.

 

 

이러한 map을 만들어내는 절차는 Figure 2에 설명되어 있습니다.

 

 

 

저자들은 Network in Network와 GoogLeNet과 유사한 network architecture를 사용하였습니다.

 

즉, network는 주로 convolutional layer로 구성되고, 마지막 output layer의 바로 직전 convolutional feature map에 대해서 global average pooling을 수행하여 이를 desired output을 만들어내는 fully-connected layer를 위한 feature로써 사용합니다.

 

이 간단한 connectivity structure가 주어졌을 때, 저자들은 output layer의 weight를 convolutional feature maps에 대해서 다시 project 함으로써 image regions에 대한 importance를 확인할 수 있으며 저자들은 이 기법을 class activation mapping이라고 부릅니다.

 

 

Figure 2에서 볼 수 있듯이, global average pooling은 마지막 convolutional layer의 각 unit의 feature map의 spatial average를 만들어냅니다. 

 

이러한 값들의 weighted sum은 final output을 만들어내는 데 사용됩니다.

 

유사하게, 저자들은 class activation map을 얻기 위해서 last convolutional layer의 feature map의 weighted sum을 계산합니다.

 

저자들은 이를 softmax의 케이스에 대해 formally 하게 설명합니다. 이 기법은 다른 loss나 regression에 대해서도 적용할 수 있습니다.

 

 

 

(이 파트부터는 제가 직접 만든 그림과 함께 설명을 진행하겠습니다.)

 

 

주어진 이미지에 대해서, $f_k(x, y)$는 spatial location $(x, y)$에서의 last convolutional layer의 unit $k$의 activation을 나타냅니다. 

 

 

 

last convolutional layer의 크기를 (Batch, 3, 4, 4)라고 가정하겠습니다. (channel이 3, 가로 세로가 각각 4라고 가정)

 

여기서 channel이 3 이므로, $k$는 3까지 존재하게 됩니다.

 

그러고 3번째 channel의 (1, 1)의 위치는 $f_3(1,1)$로 표현될 수 있습니다.

 

 

 

그러고 나서, unit $k$에 대해, global average pooling을 수행한 결과인 $F^k$는 $\sum_{x, y}f_k(x, y)$입니다.

 

 

 

 

global average pooling을 하게 되면, 이전 $f_k$에서 4x4 짜리였던 데이터를 평균 내서 하나의 값으로 만들게 됩니다.

 

따라서 그림에서 $F^k$가 하나의 데이터로 표현이 되는 것이죠.

 

각 데이터들은 $F^1$, $F^2$, $F^3$가 됩니다.

 

 

따라서, 주어진 class $c$에 대해서, softmax의 input $S_c$는 $\sum_k w^c_kF_k$이며, $w^c_k$는 unit $k$가 class $c$에 대응되는 weight를 나타냅니다.

 

 

 

 

문제를 단순하게 하기 위해서, 하나의 이미지를 개와 고양이를 분류하는 이진 분류 문제로 가정하였습니다.

 

Global Average Pooling을 통해서 얻은 $F^k$를 weight와 곱해서 최종적으로 softmax의 input인 $S_c$를 얻게 됩니다.

 

이때, $S_1$ = $F^1 \times 0.3(w^1_1) + F^2 \times 0.5(w^1_2) + F^3 \times 0.1(w^1_3)$로 구할 수 있습니다.

 

 

 

동일한 방법을 적용하면, $S_2$ = $F^1 \times 0.4(w^2_1) + F^2 \times 0.6(w^2_2) + F^3 \times 0.8(w^2_3)$로 구할 수 있게 됩니다.

 

 

 

본질적으로, $w^c_k$는 class $c$에 대한 $F_k$의 importance를 나타냅니다.

 

 

최종적으로 class $c$에 대한 softmax output $P_c$는 ${exp(S_c)}/{\sum_c exp(S_c)}$로 나타내질 수 있습니다.

 

 

여기서 저자들은 bias term를 무시하고자 명시적으로 softmax의 input bias를 0으로 지정하는데, 이는 classification performance에 영향을 거의 주지 않기 때문이라고 합니다.

 

 

 

$F_k = \sum_{x, y}f_k(x, y)$를 class score $S_c$를 나타내는 식에 적용하면, 이렇게 표현할 수 있습니다.

 

 

 

저자들은 $M_c$를 class $c$에 대한 class activation map으로 정의하고, 각 spatial element는 다음과 같이 나타낼 수 있습니다.

 

 

 

위의 예시 그림을 통해서 표현해보면 다음과 같습니다.

 

 

따라서, $S_c = \sum_{x, y}M_c(x, y)$이며, $M_c(x, y)$는 직접적으로 image의 분류가 class $c$가 되도록 이끄는 spatial grid $(x, y)$에서의 activation의 importance를 나타냅니다.

 

 

 

직관적으로는, 이전 연구에 기반해서 본 논문의 저자들은 각 unit이 receptive field 내에서 어떤 visual pattern에 의해 활성화되는 것을 기대합니다.

 

따라서, $f_k$는 이러한 visual pattern의 존재에 대한 map이 됩니다.

 

Class activation map은 간단하게 다른 spatial locations에서 이러한 visual pattern의 존재에 대한 weighted linear sum이 됩니다.

 

Class activation map을 input image의 사이즈로 upsampling 해줌으로써, 특정한 category와 가장 관련이 있는 image regions을 식별할 수 있게 됩니다.

 

 

Figure 3에서는 위의 접근법을 사용해서 나온 CAM output의 여러 예시들을 보여줍니다.

 

다양한 클래스의 이미지들의 discriminative region이 강조된 것을 볼 수 있습니다.

 

Figure 4에서는, 하나의 이미지에 대해서 map을 만들 때 다른 classes $c$를 사용했을 때 CAM에서의 차이를 보여줍니다.

 

이를 통해서 다른 category에 대한 discriminative region이 주어진 이미지에 대해서 다르다는 것을 확인할 수 있습니다.

 

이는 저자들의 접근법이 기대한 대로 작동함을 나타냅니다. 

 

 

Global average pooling (GAP) vs Global max pooling (GMP)

 

 

Weakly supervised object localization에서 GMP을 사용한 이전 연구들을 고려해 볼 때, 저자들은 GAP와 GMP 사이의 직관적인 차이를 강조하는 것이 중요하다고 생각했다고 합니다.

 

저자들이 생각하기에는 하나의 discriminative part만을 식별하도록 만드는 GMP와 비교했을 때 GAP loss는 network가 object의 면적을 식별할 수 있도록 만든다고 합니다. 

 

이는 맵의 평균을 낼 때, 낮은 activation이 맵의 output을 감소시키므로 object의 모든 discriminative part를 찾아 최대화될 수 있기 때문이라고 합니다.

 

반면에 GMP의 경우는 가장 discriminative 한 image region을 제외하고는 모든 image region의 낮은 score가 max를 수행할 때 score에 영향을 주지 않습니다.

 

저자들은 이를 Section 3에서 ILSVRC dataset에 대해서 실험적으로 검증합니다.

 

GMP는 classification performance에 있어서는 GAP와 유사한 성능을 내지만, GAP는 localization에 있어서는 GMP보다 더 좋은 성능을 냅니다.

 

 

3. Weakly-supervised Object Localization

 

 

이번 section에서는 ILSVRC 2014 benchmark dataset에 대해서 CAM의 localization ability를 평가합니다.

 

모든 내용을 자세히는 다루지 않을 것이고, 간략하게 다루려고 합니다.

 

 

3.1 Setup

 

 

해당 실험에서는, AlexNet, VGGnet, GoogLeNet을 사용하여 실험을 진행합니다.

 

이 3개의 network는 원래 fully-connected layer가 있지만, 이를 제거하고 GAP로 대체하여 실험을 진행합니다. 

 

fully-connected layer가 network parameter의 수를 상당히 많이 감소시키므로, classification performance의 drop을 가져오게 됩니다.

 

 

그리고 저자들은 network의 localization ability가 GAP 이전의 last convolutional layer가 더 큰 spatial resolution을 가질 때 향상된다는 사실을 발견하였으며, 이를 mapping resolution이라고 부른다고 합니다.

 

 

Classification에 대해서는 original AlexNet, VGGnet, GoogLeNet, Network in Network에 대한 결과를 제공합니다.

 

Localization에 대해서는 original GoogLeNet, NIN, 그리고 backpropagation을 이용한 결과를 비교합니다.

 

추가적으로, max pooling과 average pooling을 비교하기 위해, global max pooling으로 학습된 GoogLeNet의 결과도 제공합니다. (GoogLeNet-GMP)

 

 

3.2 Results

 

 

Classification

 

 

Table 1에서 classification performance의 비교를 보여줍니다.

 

 

다양한 network에서 layer를 제거하는 것에 의해 약간의 성능 하락이 보이고 있습니다.

 

AlexNet이 fully-connected layer의 제거에 의해 가장 크게 영향을 받았는데, 이를 보상해주기 위해 두 개의 convolutional layer를 추가하여 AlexNet*-GAP network로 실험했다고 합니다.

 

그리고 GoogLeNet-GMP와 GoogLeNet-GAP는 유사한 성능을 보이고 있는데, 이는 저자들이 예측한 대로 나오고 있음을 알 수 있는 부분입니다.

 

 

Localization

 

 

Localization을 수행하려면, bounding box를 만들어야 하는데요.

 

저자들은 CAM에서 bounding box를 만들기 위해서, thresholding 하는 방법을 사용했습니다.

 

CAM의 max value의 20%보다 높은 값들을 가지는 구역만 잘라낸 뒤에, 이를 포함할 수 있는 가장 큰 bounding box를 만드는 방법입니다.

 

Figure 6(a)에는 이 방법을 사용하여 만들어낸 bounding box의 예시들을 볼 수 있습니다.

 

 

그리고 ILSVRC validation set에서의 localization performance는 Table 2에 나와있고, 예시 output은 Figure 5에 나와있습니다.

 

 

추가적으로 저자들이 제안한 CAM 방법과 이미 존재하는 weakly-supervised, fully-supervised CNN method와 비교하기 위해서, GoogLeNet-GAP을 ILSVRC test set에 대해 성능 실험을 수행했습니다. 

 

성능 비교와 관련된 자료는 Table 3에 나와있습니다.

 

fully-supervised AlexNet과 weakly-supervised GoogLeNet의 성능이 거의 비슷하네요.

 

 

4. Deep Features for Generic Localization

 

 

CNN의 higher-level layer들로부터 나오는 response는 다양한 이미지 데이터셋에서 SOTA 성능을 내게 해주는 매우 효과적인 generic feature라는 것이 알려져 왔습니다.

 

해당 section에서는, 저자들이 제안한 GAP CNNs으로부터 학습된 feature가 generic feature로써 잘 작동하는지를 검증합니다.

 

 

4.1 Fine-grained Recognition

 

 

 

해당 section에서는, 200개의 새 품종을 식별하는 CUB-200-2011 dataset을 이용해 실험을 진행합니다.

 

section 3.2에서 사용한 것과 동일하게, thresholding을 사용하여서 bounding box를 만들어낸 모습입니다.

 

 

4.2 Pattern Discovery

 

Discovering informative objects in the scenes

 

SUN dataset를 이용해 실험을 진행하였으며, 다음 Figure 9는 예측된 scene category에 대한 CAM과 높은 CAM activation이 가장 빈번하게 겹치는 top 6 objects를 나타낸 것입니다. 

 

 

 

Concept localization in weakly labeled images

 

 

concept detector를 학습하고, 이미지에서 concept의 위치를 확인하기 위해 CAM technique을 적용하였습니다.

 

Figure 10은 top ranked image와 CAM을 보여주는 그림입니다.

 

 

나머지 실험들도 더 있었지만, 결국 CAM의 localization ability를 검증하는 실험이어서 생략하도록 하겠습니다.

 

 

6. Conclusion

 

 

본 논문에서, 저자들은 global average pooling을 가지고 있는 CNN 모델에 대해 Class Activation Mapping이라고 불리는 일반적인 기술을 제안합니다.

 

이는 classification에 학습된 CNN이 어떠한 bounding box annotation 없이 object localization을 수행할 수 있도록 만들어줍니다.

 

Class activation map은 주어진 이미지에 대해서 예측된 class score를 시각화하게 해 주고, CNN에 의해서 detected 된 discriminative object part를 강조합니다.

 

저자들은 CAM을 ILSVRC benchmark에 대해 실험을 진행했으며, global average pooling CNN이 정확한 object localization을 수행할 수 있음을 검증하였습니다.

 

추가적으로 저자들은 CAM localization technique이 다른 visual recognition task에 대해 일반화할 수 있다는 사실을 검증하였습니다.

 

즉, CAM은 다른 연구자들이 CNN에 의해 사용되는 discrimination의 기초를 이해하는 데 있어서 도움을 줄 수 있는 generic localizable deep feature를 만들어냅니다.

 

 

 

여기까지 CAM 논문에 대한 review를 해보았습니다.

 

Deep Learning의 경우, black-box 방법이기 때문에 왜 이러한 의사결정을 하는지 판단하기가 어렵습니다.

 

하지만 CAM을 이용하게 되면, 과연 어느 부분을 보고 이러한 의사결정을 했는지 파악할 수 있다는 점에서 딥러닝의 해석 가능성과 연관된 논문이라고 생각했고, 그 점에서 흥미롭다고 판단되어 review를 진행하게 되었습니다.

 

다음 포스팅에서는 해당 논문에 대한 code review를 진행하겠습니다.

 

감사합니다.

 

+ Recent posts