이번 포스트에서는 Style Transfer의 기초가 되는 Image Style Transfer Using Convolutional Neural Networks에 대해 간단하게 소개하려고 한다. 또한 그 성능을 올리는 Instance Normalization: The Missing Ingredient for Fast Stylization 도 함께 소개하려고 한다. 

 

 

-Deep Image Representations

 

 

이미지 정보를 보여주기 위하여 각기 다른 layer로부터 content image와 style image를 시각화 해보았다. Content Reconstructions 에서 초기의 layer는 디테일한 픽셀 정보들을 담고있지만 레이어가 깊어질수록 디테일한 정보를 잃었다. Style  Reconstructions에서는 다른 feature들간의 correlations를 계산해 style reconstruction에 사용된다(Gram Matrices). 이는 style image의 컨탠츠는 잃고 스타일만을 복원한다는 특징이 있다. 

 

 

Style Transfer

 

 

Style transfer를 위해서는 contents, style을 담당하는 두 이미지와 Pretrained vgg19, 이미지를 만들어낼 generator model이 사용된다. 두 content image, style image가 pretrained vgg19를 통과할 때 얻은 feature를 적절히 섞어서 contents와 style을 섞는 것을 목표로 한다. 왼쪽의 style image로부터는 거의 모든 layer에서 feature를 뽑으며 content image에서는 네번째 layer에서 feature를 뽑아 generator networks에 loss를 취함으로써 이미지를 만들게 된다. 

 

contents loss는 pretrained vgg와 generator 사이에서 나온 feature 사이의 l2 loss이며, style loss는 feature에 gram matrices 취한 결과의 l2 loss라고 간단하게 생각할 수 있다. 

 

 

- Instance Normalization

 

 

generator로부터 생성된 stylized image의 contrast는 style image의 contrast를 따르게 되기에 content loss를 구할 때 content image의 contrast가 style image의 contrast와 다를 경우 content loss를 optimize하기 힘들어 진다는 문제가 있다. 위의 그림을 보면 conent image의 contrast가 낮아지니 stylized image가 전보다 뭉개지는 것을 볼 수 있다. 

 

 

따라서 image의 contrast를 비슷하게 조절하기 위하여 batch normalization 대신 batch 내에서 공유되지 않고 각 이미지에 대해 개별적으로 normalization하는 instance normalization을 사용하면 style transfer에 더욱 도움이 된다. 현재 CycleGAN에서 generator에서도 batch normalization 대신 instance normalization을 이용한다. 

 

 

-Results

 

 

다시 style transfer 논문으로 돌아와 결과 이미지를 보면, contents는 어느정도 유지가 되며 원하는 스타일이 이미지에 입혀지는 것을 볼 수 있다.

+ Recent posts