Paper Review

[논문 리뷰] How Much Position Information Do Convolutional Neural Networks Encode?

슈넌 2021. 7. 19. 15:19

How Much Position Information Do Convolutional Neural Networks Encode?


Abstract

 

CNN(Convolutional Neural Networks)은 local filter를 통해 엄청난 성능을 보여주었다. CNN으로 많은 사진들의 정보를 처리하였기 때문에 CNN은 암묵적으로 위치에 대한 정보를 학습한다고 생각했다. 이 논문에서는 그것이 맞는지 직접 확인하고, 어떻게 그리고 어디에 위치 정보를 학습하는지 실험을 한다.


1. Introduction

 

CNN은 computer vision 분야에서 SOTA 성능을 보여주었고, 다양한 분야에 사용되고 있다. 하지만 CNN이 Salient Object Detection이나 Semantic Segmentation에 필요한 위치 정보를 정확히 파악하는지는 불분명하다. 아래 사진을 통해 놀라운 결과를 보게 되는데, 이 모델은 중심 근처의 가장 중요한 영역을 찾아내는 모델이다. 아래 사진에서 볼 수 있듯이 사진을 자르게 되었을 때 중요한 위치가 이동된 것을 볼 수 있다. 원래라면 같은 feature를 가지기 때문에 같은 결과가 나와야 한다. 이것을 보고 이 모델이 위치 정보를 알고 있다는 것을 알게 되었고 이것을 증명하기 위한 실험을 진행한다.

 

이 논문에서는 CNN이 위치 정보를 encode하여 학습을 한다는 가설을 갖고, randomization tests를 통해 정확한 위치 정보의 역할에 대해 실험한다. 실험 결과는 padding operation(zero-padding)을 사용하면 위치 정보는 암묵적으로 학습된다는 것을 말해준다. Zero-padding은 모두가 알다시피 convolution을 할 때 널리 쓰인다. 하지만 사람들은 이것의 hidden effect를 모른 채 사용하고 있다.

 

이전 연구들에서 CNN들이 어떻게 작동하는지 이해하기 쉽도록 학습된 feature map을 시각화하려는 시도가 있었다. 그렇게 최근에는 다양한 방법들이 존재하게 되었지만 그것이 정확히 무슨 의미인지, 어떠한 관계를 갖고 있는지 알지 못했다. 이 논문에서는 이러한 방법들에서 영감을 받아 randomization test에 적용하기로 하였다.

 

요약하면, CNN은 엄청난 성능을 보여주었지만 사진의 일부분 밖에 볼 수 없었고, 이것은 CNN이 모양보다는 색, texture 등에 더 의존한다는 것을 의미한다. 그럼에도 불구하고, 위치 정보는 중요한 정보이다. 우리는 직관적으로 CNN이 위치에 대한 정보를 필요로 한다는 것을 알 수 있다. 이 논문에서는 이것에 대해 실험하고, CNN이 위치 정보를 학습하고 그것에 의존한다는 확실한 증거를 제시한다.


2. Position Information In CNNs

 

Problem Formulation: 목표는 input image를 주었을 때, 위치 정보를 갖고 있는 gradient-like mask를 예측하는 것이다. 이 gradient-like mask는 back-propagation에 쓰이는 gradient가 아니고 픽셀의 밝기를 나타내는 mask로 생각하면 된다.

 

1. Position Encoding Network

Position Encoding Network (PosENet)을 사용하게 되는데 이것은 2개의 핵심 요소로 구성되어 있다. Feed-forward convolutional encoder network 부분과 simple position encoding module이다. 이것은 각각 여러 다른 수준의 feature map을 뽑는 task와, 뽑은 feature map을 가지고 정확한 위치 정보를 찾아내는 task를 수행한다.

 

Encoder: 이 논문에서 Encoder로 ResNet과 VGG를 based 구조로 사용하였고 encoder network로 사용하기 위해 average pooling layer를 제거하였다.

아래 사진에서 볼 수 있듯이 5개의 feature block으로 구성되어 있고 각각 feature map들을 뽑아내고 있다.

위의 식이 의미하는 것은 각 feature block에서 나오는 feature map을 의미한다. Wa는 가중치이고 Freeze되어 있다. ∗은 convolution operation을 의미한다. 그러므로 각 feature map은 input image를 feature block까지 가중치로 convolution을 실행해서 나온 결과이다. 우리는 이제 여기서 나온 feature map으로 position encoding module을 학습하고 싶은 것이다.

 

Position Encoding Module: 앞에서 만들어낸 여러개의 feature map을 input으로 받아와서 position map을 생성한다. 이 과정을 transformation function으로 정의한다. Transformation function은 bilinear interpolation을 통해 같은 크기로 만든 다음 concat을 하고, k x k convolution 연산을 하는 과정을 말한다. 이 논문에서는 k의 크기를 1, 3, 5, 7 값으로 실험하였다.

위의 식은 앞에 말한 과정이다. Concat을 통해 하나로 만들고 convolution 연산으로 position map을 생성하게 된다. 여기서 가장 중요한 점은 위치 정보가 학습되고 있다는 것이다. 또한, position encoding module model의 feature maps에 위치 정보가 없다면 output이 랜덤하게 나올 것이다.

 

 

2. Synthetic Data and Ground-truth Generation

위치 정보가 network에 존재하는 것을 증명하기 위해 randomization test를 시행한다. 그 과정에서 normalized gradient-like position map을 ground-truth로 사용한다. 아래 그림을 보면 순서대로 H는 Horizontal, V는 Vertical, G는 Gaussian distribution, HS와 VS는 각각 Horizontal과 Vertical이 반복되는(Stripe) 패턴이다.

참고로 위치 정보는 input image와 ground-truth랑 관련이 없기 때문에 어떠한 image dataset을 사용하여도 상관없다.

 

3. Training the Network

여기서 pretrained network가 위치 정보를 갖고 있는지에 집중한다. Encoder network를 freeze하고 position encoding module에서 position map을 생성하는 구조로 학습한다. Loss를 계산할 때 position map을 ground-truth 크기에 맞게 upsampling 한다. Loss fuinction은 pixel-wise mean square error loss로 ground-truth와 pixel 단위로 차이를 계산한 loss function을 사용한다. 식은 아래와 같다. x와 y는 각각 predicted position map과 ground-truth map을 의미한다.


3. Experiments

 

1. Dataset and Evaluation Metrics

Dataset: DUT-S dataset을 사용하여 학습하였고 PASCAL-S dataset으로 evaluation하였다. 위에서 만든 synthetic image도 사용되었다. Saliency detection을 학습시킬 때랑 동일한 환경에서 진행되었다.

 

Evaluation Metrics: 위치 정보 측정이라는 것이 새로운 분야이기 때문에 이에 맞는 metric이 필요하다. 그래서 두가지의 metric을 선정하였는데, SPC(Spearmen Correlation)와 MAE(Mean Absolute Error)이다. SPC는 얼마나 비슷한지를 측정하는 것으로, 비슷하면 1에 가깝고 다를수록 -1에 가깝다. MAE는 각 픽셀 간의 차이의 평균을 계산한 것이다.

 

 

2. Implementation Details

ImageNet으로 미리 학습된 network를 사용하였고 position encoding을 위해 추가된 layer는 xavier initialization으로 weight를 초기화하였다. 학습할 때, optimizer로는 SGD(Stochastic Gradient Decent)를 사용하였고, 15 epochs 동안 mementum은 0.9, weight decay는 0.0001으로 학습하였다. Input image는 224 x 224의 크기로 만들어서 사용하였고, 모든 feature map들은 28 x 28의 크기로 만들어주었다. VGG는 VGG16 모델에 PosENet을 이어붙인 것이고, ResNet은 ResNet-152에 PosENet을 붙인 것이다. PosENet은 다른 모델 없이 PosENet 모델만 있는 것이다. 

 

 

3. Existence of Position Information

미리 학습된 모델에 위치 정보가 있는지 확인하기 위해 실험을 하였다. VGG와 ResNet을 based network로 사용하였고, PosENet만 학습을 하였다. 여기서 목적은 성능이 얼마큼 나오는지 보다 CNN 모델에 위치 정보가 얼마나 있는지를 확인하는 것이 목적이다. PosENet에서는 padding을 제거한 kernel size가 3 x 3인 한 개의 convolutional layer를 사용하였다.

 

아래 표를 보면 위치 정보가 CNN 모델로부터 쉽게 extract 되는 것을 볼 수 있다. PosENet은 다른 모델들보다 score가 훨씬 낮았다. 이것은 input image 하나만으로는 위치 정보를 뽑아내는 것이 어려운 것을 의미한다.

앞에서 말한대로 여기서 만든 ground-truth는 randomization test인데, 이 이유는 input image와 전혀 상관이 없기 때문이다. 그럼에도 불구하고 성능이 높게 나오는 이유는 noise에 대한 맹목적인 overfitting이 일어나는 것이 아니라 위치 정보를 잘 추출하고 있기 때문이다. 하지만 HS와 VS에 대해서는 성능이 낮게 나왔는데, 이 이유로는 0~1 값으로 상승하는 sine wave의 4분의 1 구조와 비슷한 H와 V 구조보다, -1~1 값이 반복되는 sine wave 전체 구조와 비슷한 HS, VS가 더 복잡한 이해를 필요로 하기 때문이다.

 

아래 사진을 보면 여러 구조에 대한 다양한 결과를 볼 수 있는데, 이것으로 위치 정보가 network에 존재함을 알 수 있다. 게다가 PosENet은 synthetic data와는 관련이 없고 input image와 비슷한 결과를 도출하는 것을 볼 수 있다. 또한 아래 사진에서 ResNet이 VGG보다 성능이 좋은 것을 확인 할 수 있는데 이것은 뒤에서 설명할 예정이다. 이것은 convolutional layer의 kernel size와 관련이 있다. 

 

4. Analyzing PosENet

이 부분에서는 크게 두 갈래로 실험을 한다. 첫번째는 kernel size를 변경하고, 두 번째는 convolutional layer의 갯수를 변경한다.

 

Impact of Stacked Layers: 위치 정보를 더 잘 추출하기 위해 PosENet의 구조를 변경한다. 먼저 3x3 kernel을 가진 한 개의 convolutional layer를 기존에 사용하였는데, 이번에는 그것을 겹쳐서 사용하기로 한다. 아래 표를 보면 알 수 있듯이 1~3개의 layer를 사용하였고 layer의 갯수가 추가될수록 성능이 좋아지는 것을 확인할 수 있다. 이 이유로는 두 가지를 생각할 수 있는데, receptive field가 커지거나 non-linearity가 증가함으로 인해 성능 개선이 생길 수 있다. 이것을 확인하기 위해 다음에는 kernel size를 조절한다.

Impact of varying Kernel Size: 원래는 3 x 3 kernel size의 convolutional layer를 사용하였다. 위의 사진의 (b)를 보면 kernel size를 변경했을 때 size가 커질 수록 성능이 좋아지는 것을 볼 수 있다. 이것을 보았을 때 큰 receptive field가 사용될수록 위치 정보가 더 잘 학습되는 것을 알 수 있다.

 

 

5. Where is the Position Information Stored?

여기까지 위치 정보가 CNN 모델에 존재한다는 것은 알 수 있었다. 이제는 위치 정보가 각 layer마다 얼마나 분포해 있는지 확인을 하려고 한다. VGG16을 이용해서 5개의 feature map을 뽑았었는데, 여기서는 모든 feature map들을 사용하는 것이 아니라 각각 따로 사용해보면서 성능을 평가한다. 여기서도 이전 실험과 마찬가지로 한 개의 3x3 kernel을 가진 convolutional layer를 사용했다.

위의 표를 확인하면 5번째 layer에서 나온 feature map이 가장 위치 정보를 많이 갖고 있었다. 이 이유가 f1은 64개, f5은 512개의 channel을 갖고 있기 때문일까 생각했었는데, f4와 f5를 비교했을 때 channel수는 같았지만 f5가 성능이 더 좋은 것을 확인하여 더 깊은 layer에서 나온 feature map이 더 많은 위치 정보를 갖고 있다는 것을 알 수 있었다.


4. Where Does Position Information Come From?

 

이 논문에서 padding이 위치 정보를 학습하도록 도와준다고 얘기한다. Padding은 우리가 convolution을 할 때 흔히 사용하는 것인데, input과 output의 크기를 맞춰주기 위함이다. 이것을 확인하기 위해 padding을 제거한 모델로 실험을 하였다. PosENet과 VGG에서만 실험을 하였는데, ResNet은 skip connection의 크기가 맞아야 하기 때문에 padding을 제거할 수 없어서 실험하지 못했다. 아래 표를 보면 각 모델별로 padding을 제거했을 때와 포함했을 때를 비교할 수 있다.

PosENet에 padding을 추가하니 성능이 증가함을 보였고, VGG도 padding을 제거하니 성능이 훨씬 줄어드는 것을 확인 할 수 있었다. 이전에 PosENet의 성능이 매우 낮았던 것은 zero-padding이 없었기 때문이다. 이것이 이전 실험에서 padding을 제거한 이유이다. 또한 padding=2로 설정하니 성능이 더 올라간 것을 확인할 수 있다. 이것은 아래 사진을 보면 더 자세히 알 수 있다. 순서대로 ground-truth, padding=0,1,2 PosENet, padding=1,0 VGG이다.

PosENet에서 padding이 증가할 수록 색깔 변화를 확인할 수 있다. 점점 ground-truth와 비슷해지는 것을 확인할 수 있고, VGG에서 padding을 제거하자 색이 급작스럽게 변하는 것을 확인할 수 있다. 이것을 통해 padding의 차이가 크다는 것을 볼 수 있다.

 

1. Case Study

Semantics의 영향을 시각화 하기 위해 loss heat map을 계산하였다.

위의 식은 loss heat map의 계산식이다. Horizontal, vertical, Gaussian pattern들의 position map 차이를 계산하여 평균을 낸 것이다. 이것으로 시각화 한 heatmap이 아래 사진이다. PosENet은 corner부분에 집중되어 있고 VGG와 ResNet은 물체에 더 집중되어 있다. 특히 ResNet은 모델이 deep 하기 때문에 복잡한 물체도 쉽게 인지할 수 있었다. 그렇기 때문에 앞선 실험에서 ResNet이 더 나은 성능을 보여준 것이다. 각 사진은 얼굴, 사람, 고양이, 비행기, 꽃병으로 복잡한 물체에서 단순한 물체 순으로 나열되어 있다. Heatmap은 단순한 물체를 더 잘 잡는 것을 볼 수 있다.

 

 

2. Zero-padding Driven Position Information

Saliency Detection: 위치 정보에 dependent한 task에서 효과를 입증하기 위해 실험을 하였다. VGG를 padding을 제거하고 학습시킨다. MSRA dataset으로 학습을 시키고, 다른 여러 dataset으로 evaluate 하였다. 아래 표의 (a)을 보면 padding을 제거하자 성능이 안 좋아진 것을 볼 수 있다. 이것으로 padding으로 생기는 위치 정보가 salient object detection에 도움을 준다는 것을 알 수 있다.

 

Semantic Segmentation: zero-padding이 semantic segmentation에 끼치는 영향을 확인하기 위해서 VGG16 모델에 padding을 제거하고 PASCAL dataset으로 학습시켰다. VOC2012 dataset으로 evaluate하였고, 아래 표의 (b)를 보면 알 수 있듯이 SOD와 비슷하게 zero padding을 제거하자 성능이 낮아지는 것을 확인하였다.

 

위의 두가지 task가 image classification task보다 위치 정보를 더 학습한다고 가설을 세웠다. 직관적으로 봤을 때 위치 정보가 필요한 task는 SOD와 SS이기 때문이다. 그래서 각 task를 수행하는 모델의 backbone을 VGG로 하고 학습시킨 뒤에 각각 VGG모델을 가지고 실험을 하였다. 이 VGG 모델을 각각 VGG-SOD, VGG-SS로 표시했다. 아래 표를 보면 VGG-SOD와 VGG-SS가 classificationt task를 하는 VGG보다 성능이 좋은 것을 확인할 수 있다.

이 실험을 통해 zero padding이 위치에 dependent한 task에 중요한 역할을 한다는 것을 입증하였다.

 


5. Conclusion

 

이 논문에서는 위치 정보가 CNNs에 존재한다는 가설을 세우고 이를 입증한다.  실험들을 통해 위치 정보다 존재하고 큰 역할을 하며, receptive fields가 크거나 non-linearity가 클수록 위치 정보가 잘 학습된다는 것을 밝혀내었다. 또 다른 실험을 통해 물체가 무엇인지 뿐만 아니라 어디에 있는지까지 semantic cues로써 사용된다는 것을 보여준다. Zero-padding을 통해 위치 정보가 전달된다는 것을 확인하였고, 이 결과들은 알지 못했던 CNNs의 기본적인 properties를 증명하였다. 이것에 대해 추후에 더 연구가 필요하다.

 


저번에 작성한 CoordConv 논문 리뷰에서 convolution이 전혀 위치 정보를 학습하지 못하는 것을 알 수 있었는데, 이번 논문에서 zero-padding이 그 역할을 함을 보여줍니다. 하지만 이것에 대해 더 자세한 연구가 필요하다고 논문에서 말합니다. 그래서 21년 1월에 후속 논문이 나오게 됩니다. 다음에는 그 논문에 대해 리뷰하려 합니다. 기대해주세요!

 

오류가 있거나 질문이 있으시면 댓글로 문의주세요:)