let me graduate

[PR#3] Unsupervised Visual Representation Learning by Context Prediction - Doersch et al. (2015) 본문

Paper Review/Full Review

[PR#3] Unsupervised Visual Representation Learning by Context Prediction - Doersch et al. (2015)

daeheepark 2020. 3. 18. 15:50

Visual recognition task 에서 Self-Supervised Learning을 하기 위한 방법을 제시하는 논문

Self-Supervised learning에 관한 overview는 다음 "blog post" 참고


Abstract

이 논문에서는 spatial context를 이용하여 visual representation을 학습시키는 방법을 설명한다. 하나의 이미지로부터 9개의 이미지 패치를 생성하고, 이 패치들간의 위치관계를 추정하도록 CNN이 학습된다. 이러한 작업을 잘 하기 위해서는 모델이 이미지 내의 물체를 인식하고, 물체의 parts도 인식할 수 있어야 한다. 이런 작업을 통해 학습된 feature representation은 이미지간의 visual similarity를 포착할 수 있다는 것이 저자의 설명이다.

 

따라서 이러한 representation은 고양이, 사람, 새같은 물체 이미지를 사용하여 비지도적인 시각 정보 발견(Unsupervised Visual Discovery)에 사용될 수 있다.

1. Introduction

컴퓨터 비전 방법은 수만장에 달하는 대규모 데이터셋들에 의해 발전되어 왔지만, 인터넷 규모의 데이터셋은 활용하기 힘들었다. 이는 순전히 human annotation의 비용때문이며, 이를 해결하기 위해 지난 수십년간 unsupervised learning 방법이 고안되어왔다. 하지만 데이터의 레이블이 주어지지 않은 상황에서는 이미지로부터 어떤 feature가 represent되어야 하는지도 분명하지 않다.

 

텍스트 도메인에서는 context가 자동 supervisory representation을 학습하는데 도움을 준다는 것이 밝혀져있었다. 큰 말뭉치로부터 각각의 단어를 feature vector로 매핑하고, 그렇게 함으로써 context(전후 몇 단어)에서 단어를 예측하는 방법이다. 즉, 단어들간의 좋은 similarity metric을 찾아내고, 이를 이용해 unsuvervised 문제를 self-supervised로 바꾸는 것이다. 다시 말하면 context prediction은 좋은 word embedding을 학습하기 위한 "수단(pretext)"인 것이다.

문맥을 파악한다는 것은 주어진 단어 전후로 어떤 단어가 나오는 것이 자연스러운지 파악한다는 것이다. 그렇기 위해서는 similar하거나 unsimilar한 단어를 파악해야하는데, 이를위해 단어들간의 similarity를 측정하는 metric을 알아내야 한다. 학습 단계에서 살펴보면 주어진 말뭉치에서 가까이 위치한 단어들은 high similarity를, 멀리 떨어진 단어들은 low similarity를 가지고 있는 것이다. 이 조건에 해당하도록 metric을 생성해내는 objective function을 학습하는 것이 unsupervised 문제를 self-supervised 문제로 바꾸어 해결하는 것이라고 볼 수 있다.

Figure 1.

본 논문에서는 위에서 설명한 것과 비슷하게 "self-supervised"를 이미지 데이터에 적용한다. Fig 1의 첫번째 그림처럼 고양이 사진으로부터 9개의 이미지 패치를 생성하고 가운데 패치, 그리고 주변 여덟개의 패치 중에 하나를 임의로 고른다. 이 두개의 패치를 네트워크에 전달하고 두번째 패치가 첫번째 패치의 어느 부분에 해당하는지 맞추도록 학습한다. 이러한 작업을 하는 것은 다음 가정에 기반한다.

네트워크가 패치들간의 관계를 잘 맞추려면 장면과 물체를 잘 인식할 수 있어야 한다. 즉, 좋은 visual representation을 이미지로부터 추출할 수 있어야 한다.

Visual representation은 object detection에서 좋은 결과를 나타냈으며, PASCAL VOC 2007에서 scratch에서 학습하는 것보다 월등한 성능 향상을 보였다. 이는 single image 내에서 패치들간의 관계를 예측하면서 학습된 visual representation이 여러 이미지들 사이에서도 일반화될 수 있다는 것을 의미한다. 즉, instance-level supervision이 category-level 테스크의 성능을 개선할 수 있다는 것이다.

2. Related Work

이미지의 이상적인 latent variable은, 그것이 이미지의 자연적인 분포에 따라 latent variable을 생성하고, 간결해야한다. 그래야지만 다른 이미지들간의 공통적인 요인을 찾거나, 정보를 공유할 수 있다. 하지만 이런 이상적인 latent structure를 추론하는 것은 간단한 모델이라 할지라도 매우 어렵다. wake-sleep 알고리즘, contrastive divergence, deep Bolzmann machine, variational Bayesian method 등 많은 방법들이 추론을 위해 sampling을 사용하여 시도하였다. Generative model은 손글씨 데이터셋과 같은 소규모 데이터셋에서는 좋은 성능을 나타냈으나, 고해상도 이미지에서는 그렇지 못했다.

 

Unsupervised representation learning도 embedding을 학습하는 것으로 바꿀 수 있다. sementically 비슷한 이미지는 embedding dimension에서 가깝게 위치할 것이고, 비슷하지 않다면 멀리 위치할 것이다. 그러한 representation을 구축하는 방법은 supervised "pretext" task를 만드는 것이다. 예를들어, denoising autoencoder는 noisy 데이터로부터 clean 데이터를 복원하는 과정을 pretext task로 사용한다. 하지만 현대의 reconstruction-based 알고리즘들은 Stochastic texture 같은 low-level 현상에서 어려움을 겪고 있다. 이러한 요인들이 모델이 representation을 잘 생성하고 있는지 측정하기 어렵게 만든다.

 

context 예측 또한 pretext task로 사용된다. skip-gram 모델에서는 텍스트도메인에서 단어 representation을 생성했다. 모델은 하나의 단어와 앞, 뒤 n개의 단어로부터 예측을 수행하도록 학습된다. 이미지 도메인에서도 빈칸채우기 같은 비슷한 추론을 할 수도 있지만, 한편으로는 이 테스크가 low-level feature를 예측하지 않고 그저 예측이 맞는지 틀리는지만을 결정하는 문제가 생길 수 있다. 이런 문제들을 해결하기 위해 인접한 이미지 영역에서 예측한 여러개의 결과를 통합했다.

 

문제는 픽셀 값을 예측하는 것이 단어를 예측하는 것보다 훨씬 어려운 문제라는 것이다. 텍스트 도메인에서는 예측 문제를 구별 문제로 바꾸어 풀 수 있었다. 이 작업은 하나의 단어가 랜덤으로 바뀐 말뭉치 중에서 원래 말뭉치를 찾아내는 작업으로 구현되었다. 이를 2D 이미지에 그대로 적용해보면, 이미지 중 일부 영역이 전혀 다른 패치로 대체된 이미지 중에서 원래 이미지를 찾아내는 작업에 해당된다. 하지만 이런 작업은 low-level color 통계나 lighting 변화같은 간단한 방법만으로 충분하기 때문에 trivial한 문제이다. 따라서 본 논문에서는 같은 이미지로부터 생성된 패치의 배열을 구별하는 작업을 설계해서, 각 패치들이 같은 lighting, color statistic를 갖도록 한다.

 

어떤 사람들은 hand-crafted feature나 clutering을 사용해서 물체의 카테고리를 맞추고자 하였고 (이 경우에 물체의 형태는 유지되지 않음), 다른 사람들은 형태와 더 밀접한 관련이 있는 represeentation을 사용하고자 하였으나 윤곽을 이용하는 등의 간단한 수준에 그쳤다. 다른 방법들은 더 일반적인 클러스터링 방식인 similarity metric을 정의하고자 하였고, 물체의 기하를 이용하고자 하는 시도도 있었다.

 

비디오에서도 비슷하게 representation learning을 수행한 예시가 있다. 시간이 따라서 물체의 외형은 바뀌어 보일지 몰라도 물체의 신원(identity)는 유지된다. 이러한 시간 일관성 (temporal coherence)을 이용하여 검출 모델의 성능을 향상시켰다.

3. Learning Visual Context Prediction

두 패치를 받아서 상대적인 offset을 예측하는 방법은 기본적으로 네트워크가 두개의 패치를 받고, 8개의 각 선택지에 확률을 반환하도록 설계하면 된다. 하지만 결과적으로 우리가 우너하는 것은 feature embedding을 개별 패치에 대해 학습함으로써 비슷한 이미지 패치가 embedding space에서 가깝게 위치하도록 만드는 것이다.

Figure 3.

이를 위해 last-fusion 구조가 사용되었다. (fig 3. 참고) AlexNet 스타일의 구조인데, fc6 깊이 전까지는 각각의 패치를 처리하고, 합쳐진다. 하나의 패치를 처리하는 레이어들 (얕은 레이어들)의 가중치는 서류 묶여있어서 (? 가중치가 같다는 의미?) fc6 레벨에서 같은 수준의 embedding function을 갖게 된다. 단 두개의 레이어만 두 패치의 데이터를 사용하기 때문에, 네트워크는 대부분의 semantic 추론을 각 패치에서 분리해서 담당하게 된다.

3.1. Avoiding "trivial" solutions

pretext task를 설계할때, 네트워크가 "trivial" shortcuts 없이 원하는 정보를 추출하도록 (이 논문에서는 high-level semantic) task를 설계하는것이 중요하다. 본 논문에서는 네트워크가 패치들간의 관계를 예측할 때 high-level semantic을 이용하지 않고, 경계 패턴이나 이어지는 texture를 이용한다면 제대로 네트워크를 학습하지 못한 것이다. 따라서 본 논문에서는 패치들간의 간격을 패치 사이즈의 절반정도로 설정하여 샘플링하거나, 패치들간의 이어지는 선 같은것을 방지하기 위해 7 픽셀까지 랜덤하게 패치를 움직였다.

 

이렇게 해도 trivial solution이 존재했는데, 그 이유는 chromatic aberration (색수차) 때문이었다. 색수차는 렌즈가 빛의 파장에 따라 다른 굴절률을 가질때 나타나는 것으로, 어떤 이미지에서는 초록 채널이 다른 채널에 비해 카메라의 중앙쪽으로 치우쳐 나타났다. ConvNet은 이런 상대적인 green, magenta 채널의 분리를 인식하여 trivial solution을 생성했다. 이를 해결하기 위해 본 논문에서는 두 단계의 전처리를 수행하였다. 하나는 green과 magenta를 gray로 shift 하는 것 ('projection')이다. 예를 들어서 RGB 공간에서 green-magenta color axis가 $a=[-1, 2, -1]$로 정의됐을 때, $B=I-a^Ta/(aa^T)$를 정의한다. 모든 픽셀값에 $B$를 곱하면 색수차를 이미지에서 뺄 수 있다. 다른 방법은 세개의 color 채널 (R, G, B) 중 2 개의 채널을 드랍하고 ('color dropping'), 드랍한 체널을 가우시안 노이즈로 대체하는 방법이다. 정성적인 방법으로 'color-dropping'을 사용했지만, 성능은 비슷했다.

 

implementation Details

Caffe, ImageNet 2020 training set 에서 label을 제외한 이미지만을 사용. 첫번째로, 이미지를 150K~450K 사이의 픽셀수로 리사이즈. 이미지로부터 96 by 96 사이즈의 패치를 샘플링 함. 이렇게 얻은 패치들을 (1) mean subtraction (2) dropping color (3) 랜덤하게 다운샘플링 한 후 업샘플링함. 간단한 SGD로 네트워크를 학습했을때, fc6, fc7의 activation이 0으로 떨어지면서 아웃풋 벡터가 8 카테고리 모두 균등한 값을 갖도록 악화되었음. 이는 최적화 단계에서 "낮은 레이어에서 오는 인풋을 무시하는 saddel point"에 걸려있어서 low-level feature

 


4.5. Visual Data Maning

Visual data mining은 의미론적으로 같은 물체가 찍힌 이미지를 대량으로 수집하는 것이다. 데이터셋 시각화, 내용 기반 이미지 검색이나 시각 데이터를 비구조화 정보 (GPS 좌표와 같은)를 연관시키는데에 응용될 수 있다.  Section 4.1에서는 이미지 representation을 fc6 레이어에서 뽑아낸 다음에 representation같의 correlation을 비교하여 비슷한 이미지를 찾았다. 하지만 이 방법을 automatic data mining에 사용하기에는 불충분했는데, 그 이유는 이미지 패치가 비슷한 텍스쳐를 가지고 있다면 동일 물체가 아니더라도 비슷하다고 판단하기 때문이다. 하지만 같은 물체의 이미지에서 두개의 겹치지 않는 패치를 샘플링했다고 가정해보자. 그러면 두 패치들의 nearest neighbor list는 상당수가 겹칠뿐 아니라, 그 리스트 사이에서 가장 가까운 neighbor는 거의 동일한 공간배치에 해당할 것이다. 반면에, 텍스쳐 자체는 global 특징이 아니기 때문에 neighbor의 공간 구성이 랜덤이다. 즉 더 의미론적으로 가까운 neighbor가 공간적으로 가깝지는 않다. 

 

이를 구현하기 위해서 하나의 이미지로부터 네개의 인접한 패치를 샘플링한다 (공간 배치가 우연히 맞는 것을 방지하기 위해 4개로 설정). 그 다음엔 공간 배치를 무시하고 네개의 패치 모두에 대해 가장 일치하는 상위 100개의 이미지를 찾는다. 그리고 geometric verification을 사용해 geometricall consistent하지 않은 패치들을 필터링 아웃 한다. 우리의 피처가 의미론적 관점에서 튜닝되었기 때문에 [7]보다 더 약한 gemetric verification을 사용할 수 있다. 마지막으로 top 100개의 매치가 geometric verify된 횟수를 세서 constellation의 순위를 매긴다. 

 

Implementation Details:

4개의 매치된 패치가 geometrically verify되었는지 계산하기 위해서, side of S가 평균 side of patch의 2/3~4/3사이가 되도록 제한하면서 패치 중심에 대한 best-fitting square S 를 계산한다. 그리고 S에 대한 패치 중심의 상대적인 에러의 제곱값을 계산한다 (). 

Comments