VIDEO PREDICTION BEYOND MEAN SQUARE ERROR

INTRODUCTION

스크린샷 2017-05-30 오후 7.43.55.png

예측된 결과 영상을 만들어내는 네크워크를학습시킬때 mean square error (MSE)는 ground truth 영상과 predict된 영상을 직접적으로 비교하는 loss 함수로써 손쉽게 사용되곤 합니다. 하지만 이렇게 학습시킨 네트워크의 경우에는 예측된 결과 영상이 ground truth 영상과는 다르게 blurry 한 결과를 만들어 낸다는 문제점을 보였습니다. 이러한 문제를 해결하기 위하여 새로운 loss 함수들 (GAN loss, GDL loss)를 소개하고 서로 다른 loss 함수가 결과에 어떠한 영향을 끼치는지 분석한 논문을 소개하고자 합니다.

Paper

Title: Deep Multi-Scale Video Prediction Beyond Mean Square Error
Authors: Michael Mathieu, Camille Couprie, and Yann LeCun
Publish: ICLR 2016

LIMITATION OF THE WIDELY USED MSE

네트워크 G 에 대해서 input: X 와 ground truth: Y 가 있을때 MSE는 다음과 같이 정의됩니다.

L_2(G(X),Y)=(G(X)-Y)^2

이때 한 가지 가정을 해보면 네트워크를 통과한 결과 영상의 한 픽셀 값이 동일한 확률로 v_1 이 될 수도 있고 v_2 가 될수도 있다고 가정해 봅시다. 네트워크는 MSE를 최소화 하기 위하여서 학습 되고 있기 때문에 네트워크가 예측한 결과는 v_1 도 v_2 도 아닌, v_{avg} = (v_1+v_2)/2 가 될 것입니다. 실제 결과에서 v_{avg} 가 나올 확률이 매우 낮더라도 loss를 최소화한 결과를 뱉어내는 것입니다. MSE의 경우 제곱의 꼴을 갖춘 loss이기 때문에 강력하게 평균값 대하여서 더 크게 반응합니다. 따라서 l_1 loss를 사용할 경우 조금은 더 개선된 결과를 얻을 수 있습니다. 하지만, 이 문제가 근본적으로 해소되지는 않습니다.

L_1(G(X),Y) = |G(X)-Y|

Loss functions other than MSE

GAN loss

Generative adversarial networks (GAN)의 discriminative network D 는 해당 영상이 ground truth의 데이터셋에서 나온 영상인지 아니면 generative network G 에서 나온 영상인지를 판별하는 과제를 수행합니다. 다시 말해,네트워크 D 는 주어진 영상이 ground truth 데이터 셋에 있을 법한 영상인지를 판별하고, 네트워크 G 가 ground truth에 가까운 영상을 잘 만들 경우엔 네트워크 DG 가 만들어낸 영상도  ground truth의 데이터셋에서 나온 영상이라고 판별할 것입니다. 다시 이전의 예로 돌아가서 v_{avg} 의 경우, 실제 픽셀 값이 v_{avg} 일 경우는 매우 희박하나, MSE loss를 최소화 하는 과정에서 네트워크 G 는 v_{avg} 를 추정하도록 학습되었습니다. 하지만 이렇게 만들어진 영상은 네트워크 D 의 관점에서 보면 ground truth에서 나온 영상일 가능성이 희박한 영상으로 판별됩니다. 하지만 네트워크 D 의 판단을 loss 함수로 사용하여 네트워크 G 가 ground truth 데이터셋과 유사한 영상을 만들어 내도록 학습시킨다면, 네크워크 G 는 v_{avg} 대신에 v_1v_2 를 추정할 수 있을 것입니다.

이를 구체화 시키면 네트워크 D 의 학습과정은 다음과 같습니다. 네트워크 D 는 input (X,Y) 를 class 1이라 분류하고 input (X,G(X)) 에 대하여서는 class 0 이라고 분류하도록 학습할 것입니다. 이 과정에서 네트워크 G 의 weights는 고정되어 있을 것입니다. 그러므로 D 를 학습시킬때 주어지는 loss 함수는 다음과 같습니다.

L^D_{adv}(X,Y) = L_{bce}(D(X,Y), 1) + L_{bce}(D(X,G(X), 0)

where, L_{bce}(Y, \hat{Y}) = -\hat{Y}log(Y)+(1-\hat{Y})log(1-Y)

Y takes its values in {0,1} and \hat{Y} takes in [0,1]

네트워크 G 의 학습과정은 다음과 같습니다. 네트워크 D 를 통하여 새로운 loss를 정의하면 아래와 같습니다.

L^G_{adv}(X,Y) = L_{bce}(D(X,G(X)),1)

이때는 네트워크 D 의 weights를 고정시켜두고 loss 값을 반영합니다. 그런데 실제로 네트워크 G 를 학습시킬때 L^G_{adv} loss 만을 이용하여 학습시킨다면, 네트워크  G 가 만들어내는 영상은 input 영상  X 와 아무런 상관이 없지만, 단순히 네트워크 D 를 혼동시키기만 하는 영상을 만들어낼 위험이 있습니다. 따라서 실제로는 이러한 위험성을 완화하기 위하여 L_p loss와 결합하여 사용하였습니다.

\lambda_{adv}L^G_{adv} + \lambda_{l_p}L_p

여기서 \lambda_{adv} 와 \lambda_{l_p} 는 각각의 loss를 얼마나 반영할지를 결정하는 매개변수입니다.

GDL loss

논문에선 새롭게 gradient difference loss (GDL) 이라는 loss 함수를 정의하여 적용하였습니다. 기존의 MSE가 blur한 영상을 만들어냈기 때문에 네트워크가 예측한 영상을 sharp하게 만들기 위한 loss 함수를 추가한 것입니다. GDL의 경우도 독립되어 사용되기 보다는 GAN loss, L_p loss 와 함께 사용되었습니다. GDL은 다음과 같이 정의 됩니다.

L_{gdl}(X,Y) = \Sigma_{i,j}(||Y_{i,j}-Y_{i-1,j}| - |G(X)_{i,j}-G(X)_{i-1,j}||^a
+||Y_{i,j}-Y_{i,j-1}| - |G(X)_{i,j}-G(X)_{i,j-1}||^a)

여기서 a 는 매개변수입니다. GDL은 네트워크 G 가 만들어낸 영상과 ground truth 영상의 종방향과 횡방향으로의 1차미분 값을 비교하는데, 이는 두 영상에서의 edge가 일치해야 함을 의미합니다.

 

최종적으로 논문의 저자는 다음과 같은 결합된 형태의 loss 함수를 사용하였습니다.

L(X,Y)=\lambda_{adv}L^G_{adv}(X,Y) + \lambda_{l_p}L_p(X,Y) + \lambda_{gdl}L_{gdl}(X,Y)

Network architecture

저자는 비디오 영상에 대해서 input으로 순차적인 여러장의 영상이 주어지면 그 영상들을 기반으로 바로 다음에 올 영상이 어떤 영상일지를 추측하는 문제를 다뤘습니다.  이를 위하여 다음과 같은 multi-scale network를 활용하였습니다.

스크린샷 2017-05-29 오후 4.55.12.png
Architecture of multi-scale network

영상은 패치 단위로 추정을 하게 되는데, input 패치로는 32\times32 크기의 패치가 사용되었고, 처음에는 coarse한 추정을 위하여 4\time4 크기로 다운샘플링 하여 추정한 후 추정 결과를 2배 업샘플링하여 8\time8 크기를 추정하는데 사용하고, 이 과정을 원본 input 패치인 32\time32 크기의 영상을 추정할때 까지 반복합니다. 그리고 마지막에는 tanh 함수를 이용하여 [-1,1] 범위 안으로 맵핑 시킵니다.

구체적인 네트워크 구조는 다음과 같이 설정하였습니다.

스크린샷 2017-05-29 오후 5.02.50.png
Detail descriptions of the network architecture

네트워크 GD 모두 multi-scale로 구현되었고, 각각의 convolution 뒤에는 ReLU 함수를 사용하였습니다. 그리고 각각의 scale에서 얻을수 있는 loss 값은 모두 동일한 weight로 합산하여 네트워크를 학습시킬때 반영하였습니다.

 

Experiments

Dataset

공개적으로 얻을 수 있는 두 가지 데이터셋을 활용하였습니다.

  1. UCF101: YouTube에서 추출한 101가지 종류의 동작과 관련된 동작 감지용 데이터셋, 총 13,320 개의 영상으로 구성됨
  2. Spots1m: 마찬가지로 YouTube에서 추출된 487가지의 스포츠 라벨을 기준으로 모은 데이터셋, 총 1,133,158개의 영상으로 구성됨

이중에서 학습에는 역동적으로 움직이는 영상이 더 많은 Sports1m 데이터셋이 사용되었고, 더 나아가 L_2 loss를 기반으로 Sports1m 데이터셋 내에서도 움직임이 많은 패치들만 추려서 학습에 사용하였습니다.

Results

4장의 순차적인 input 영상이 있을때, 바로 다음 영상을 예측하는 과제에 대한 결과입니다.

스크린샷 2017-06-07 오후 4.46.32.png
Performance comparison chart

각각의 loss 함수를 함께 사용할때 매개변수 \lambda 는 모두 동일하게 1이 주어졌으며, $latex L^G_{adv}$ 의 경우에만 0.05가 주어졌습니다. 결과를 보면 l_2 loss 만을 단독으로 사용하였을때에 비하여서 $latex L^G_{adv}$ 같이 활용하였을때 성능이 비약적으로 상승함을 볼 수 있고, 추가적으로 GDL을 함께 활용하였을때 최종적으로 가장 좋은 성능을 보이는 것을 확인할 수 있습니다.

스크린샷 2017-06-07 오후 4.45.35.png
Visual comparison for different loss functions

더 많은 결과들: http://cs.nyu.edu/~mathieu/iclr2016extra.html

Evaluation metrics

\large PSNR(Y,\hat{Y})=10 log_{10}\frac{max^2_{\hat{Y}}}{\frac{1}{N}\Sigma^N_i(Y_i-\hat{Y}_i)^2}

\large Sharp. diff.(Y,\hat{Y})=10 log_{10}\frac{max^2_{\hat{Y}}}{\frac{1}{N}(\Sigma_i\Sigma_j|(\nabla_iY+\nabla_jY)-(\nabla_i\hat{Y}+\nabla_j\hat{Y})|)}, where \nabla_iY = |Y_{i,j}-Y_{i-1,j}| and \nabla_jY = |Y_{i,j}-Y_{i,j-1}|

\large SSIM(X,Y) = \frac{(2\mu_X\mu_Y+c_1)(2\sigma_{XY}+c_2)}{\mu^2_X+\mu^2_Y+c_1)(\sigma^2_X+\sigma^2_Y+c_2)}, where c_1, c_2 are small constant

Conclusion

이번 포스트에선 영상을 Predict하는 문제에서 기존의 MSE의 약점에 대해서 알아보고 이를 극복하기 위하여 다른 loss 함수들을 사용하였을때에는 그 결과가 어떠한가를 확인 할 수 있었습니다. 확실히 MSE만을 사용하는 경우에는 그 한계점이 분명하다는 것일 확인 할 수 있었습니다. GAN을 활용한 방법이 포스팅하는 현재까지도 상당히 좋은 성능을 확보할 수 있는 방법으로 소개되고 있습니다만, 이 역시 나름의 약점을 가지고  방법으로 여겨집니다. 앞으로도 더 개선된 새로운 방법이 소개될 것을 기대하면서 이번 포스팅을 마칩니다.

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