728x90

Paper

https://arxiv.org/abs/1612.08185

 

PixelCNN Models with Auxiliary Variables for Natural Image Modeling

We study probabilistic models of natural images and extend the autoregressive family of PixelCNN architectures by incorporating auxiliary variables. Subsequently, we describe two new generative image models that exploit different image transformations as a

arxiv.org

 

Code

없음

 

 

Introduction

 

기존 Pixel CNN의 경우 다음과 같은 단점이 있었다.

1) low-image detail에 집중해서 생성하는 경향 (texture) , 이에 비해 물체의 shape는 잘생성하지 못함

2) inference time때 pixel 하나씩 생성하는데, 이것이 시간이 많이 들고, computationally cost가 크다.

 

이러한 단점들을 해결하기 위해서 본 논문에서는 auxiliary variables를 도입한다.

 

1번의 low-image detail에 집중하는 문제는 Grayscale Pixel CNN을 도입함으로 해결한다. 

Grayscale pixel의 경우 이미지의 texture정보가 상대적으로 사라지기 때문에 shape와 같은 high-level image detail에 집중할 것이고, 그렇기 때문에 original pixel CNN의 경우, low level image detail를 생성하고, gray-scale pixel CNN의 경우 high level image detail을 생성하여 task decoupling이 이루어질것이라는 생각이다.

 

또한 2번의 기존 pixel CNN의 computationally cost문제를 해결하기 위해 Pyramid Pixel CNN을 도입한다. 이는 기존 방법보다 더 간편한 inference형태를 제공한다. 

 

 

 

 

Method

 

기존의 pixel CNN은 다음과 같이 chain rule을 이용해서 i-th pixel의 conditional probability를 계산한다.

 

본 논문의 main contribution은 다음과 같이 auxiliary variable을 도입했다는 점이다.

 

 

이는 다음과 같이 수식적으로 표현할 수 있다.

 

 

이때 X_hat이 고정된 값인 경우 PixelCNN이 pixel을 예측하는 방식을 그대로 사용하면 되고, 확률모델 p(X_hat)으로 표현되는 경우, 먼저 p(X_hat)을 계산한 후에 p(X|X_hat)을 곱해주는 형태로 pixel을 생성가능하다. 

 

이때 p(X_hat)은 다음과 같은 조건을 만족시키는 형태로 만든다.

 

1) p(X_hat)은 Pixel CNN형태와 같은 type의 모델로 만들 수 있게 한다.

2) X_hat은 deterministic function으로 X -> X^ 계산이 되는 형태를 사용한다.

 

이렇게 하면 장점들이 있는데 바로 (2)번 특성을 이용하면 p(X^|X) 의 형태가 peaked distribution 형태가 되고, training과정에서 효율적으로 가능해진다.

 

 

일단 먼저 log p(X,X^)은 위와 같이 decomposition이 가능하고, 이때 parameter가 겹치지 않기 때문에 parallel learning이 가능하다. 그리고 이렇게 decomposition 했을 때, 아래와 같이 lower bound를 수식으로 표현이 가능하다.

 

 

이때 p(X, X^)는 p(X^|X)p(X)로 표현할 수 있고, p(X^|X) 는 X->X^간의 관계가 deterministic하게 표현되는 경우 peaked distribution (각 X에 대해서 1에 가깝게..) 형태가 되므로 low bound도 최대가 되는 장점이 있다.

 

이와같은 조건을 만족하는 aux variable로 본 논문에서는 2가지를 제시한다.

 

1) Grayscale Pixel CNN

 

Grayscale pixel CNN은 aux variable로 4-bits gray scale이미지를 활용하는 것이다.

이를 활용하면 앞서 제시했던 기존의 PixelCNN이 이미지의 low-level detail (texture)만 잘 생성하는 문제를 보완할 수 있기 때문에 활용한다고 한다. 왜냐하면 gray scale이미지의 경우 이미지의 texture나 color정보가 사라지기 때문에 shape와 같은 high-level detail만 상대적으로 남기 때문이다.

 

따라서 p(X^)는 이미지의 global property를 포함하게 되고, P(X|X^)은 이미지의 low level property를 포함해서 P(X)를 생성하게 된다.

 

 

2) Pyramid PixelCNN

 

기존의 pixelCNN 모델은 다음과 같은 단점이 있다.

첫번째 Pixel의 경우에는 어떤 information도 제공받지 못하는 반면에 마지막 pixel의 경우 모든 pixel의 정보를 제공받아서 생성된다. 이러한 assymmetic한 점을 보완하면 생성이 더 잘될것이라고 저자는 생각했다.

 

또한 기존 PixelCNN은 recurrent한 속성때문에 inference 속도가 느리고 computational cost 또한 크다.

 

이를 보완하기 위해서 저자들은 low resolution image를 aux variable로 사용한다.

 

이렇게 low resolution image를 활용하면 이미지의 spatial한 부분에서 전체적인 정보를 활용할 수 있기 때문에 기존 PixelCNN의 문제인 receptive field가 작다는 문제및 assymetric문제를 해결할 수 있다.

 

이때 과정은 다음과 같이 그림으로 표현할 수 있다.

 

이때, embedding function을 deep한 네트워크를 사용하면 나머지 P(X^) , P(X|X^)모델은 light-weight를 사용해도 될거라고 저자들은 가정한다. 이렇게하면 speed의 향상을 가져올 수 있는데, 왜냐하면 computational cost가 큰 embedding function(deep NN을 쓰므로)은 pixel단위로 계산이 이루어지는 것이 아니면 conv연산 전체를 행하기 때문이다.

 

그리고 each pixel로 생성하는 과정의 모델인 P(X|X^)의 경우 light-weight 모델이기 때문에 빠르게 연산이 행해지고 이는 속도의 향상을 가져온다.

 

 

Details

 

기본적으로 conditional model p(X|X^)의 구현은 다음과 같이 이루어진다.

 embedding function f(X^)의 결과를 network의 residual block의 결과에 bias값으로 넣어준다.

 

embedding function f(X^) 또한 PixelCNN++의 architecture와 거의 동등하게 사용한다.

그러나 The main difference is that we use only one flow of residual blocks and do not shift the convolutional layers outputs, because there is no need to impose sequential dependency structure on the pixel level.

(PixelCNN++ 구조를 잘몰라서 정확히 이해안됨)

 

 

 

 

728x90

+ Recent posts