본문 바로가기

Paper Review

Paper Review #10 - Image Style Transfer Using Convolutional Neural Networks

Image Style Transfer Using Convolutional Neural Networks (2016.06)
https://ieeexplore.ieee.org/document/7780634
 

Image Style Transfer Using Convolutional Neural Networks

Rendering the semantic content of an image in different styles is a difficult image processing task. Arguably, a major limiting factor for previous approaches has been the lack of image representations that explicitly represent semantic information and, th

ieeexplore.ieee.org

 

 

Research direction & Motivation


Main Purpose

Rendering the semantic content of an image with CNN

 

 이미지의 스타일이나 화풍을 다른 이미지로 전이시키는 작업을 'Image Transfer' 라고 부른다. 과거에는 이를 Texture transfer라고 지칭하는 여러 알고리즘들이 존재했다. Target 이미지의 feature들을 포함한 correspondence map을 활용하거나, 스케일을 보존하면서 high-frequency의 texture를 전이하는 동시에 edge의 정보들을 추가해 개선시키려는 시도들이 이에 속했다. 하지만 이러한 접근들은 공통적인 한계를 가지는데, 대부분 low-level의 image feature를 사용하는 transfer가 주를 이룬다는 것이다.

 

 본 논문에서는 학습된 CNN을 이용한 Style Transfer를 제안했다. CNN의 주요한 특징인 deep representation에 대한 학습을 이용해 한 이미지의 style을 다른 이미지의 content와 결합하는 방식을 제시했다. 언급했듯이, 과거에는 low-level feature가 중심을 이루다보니 high-level feature에서는 거의 변화가 없는 모습들이 나타났지만 여기서 제안하는 방식은 high-level feature들의 semantic information 까지도 활용한다. 

 

 

Method


 

 

 

 우선 style transfer를 위해서는 한 쌍의 이미지가 필요하다. 각각 content image와 style image로, 전반적인 structure에 대한 정보를 포함한 이미지와 그림이 그려진 화풍이나 스타일을 대변하는 이미지이다.

 

 해당 이미지들을 바탕으로 content 이미지에서는 content 정보, style image에서는 style 정보를 추출해 noise 이미지에 두가지를 synthesize하는 방식이다. 해당 과정에서 16개의 convolution layer와 5개의 pooling layer로 구성된 VGG19 Net을 사용한다. 이미지가 해당 네트워크를 통하면서 반환하는 feature map을 추출해 noise image가 이와 유사한 feature map을 갖도록 학습하는 것이 핵심이라고 할 수 있다. 

 

 

Content loss

 

 

 Content loss는 noise 이미지와 content 이미지의 feature간의 activation값이 동일해지는 방향으로 정의된다. 여기서 사용하는 layer는 low-level, high-level을 사용하느냐에 따라 구분지을 수있는데, 전자의 경우 원본 이미지의 pixel 값을 단순히 reproduce 하는 것에 불가하다. High-level layer를 사용하게되면 detail한 pixel 정보는 소실되는 정보의 추상화가 발생한다. 논문에 의하면, 이러한 추상화가 일반적인 특징들을 더 잘 추출할 수 있게되어 style을 적용하는데 더 용이하기때문에 후자의 high-level layer를 사용했다.

 

 따라서 loss function은 content 이미지의 feature map Pij과 생성하는 이미지, 즉 noise 이미지의 feature map Fij 사이의 거리로 정의되었다.

 

 

Style loss

 

 Style loss는 논문에서 정의하기를, 서로 다른 feature map간의 상관관계로 정의한다. 상관관계를 매핑한 Gram matrix를 사용하여 noise image가 네트워크를 통과한 뒤의 feature map의 Gram matrix와 style image의 Gram matrix가 유사해지는 방향으로 학습한다.

 

 

층이 깊어질수록 channel size는 증가하므로 Gram matrix 역시 size가 증가하는 특징을 갖게된다. Content loss와의 차이점 중 한가지는, style loss는 pretrained network인 VGG19의 low-level부터 high-level까지 다양한 수준에서의 loss를 계산한다는 점이다. 이렇게 계산된 loss들을 weighted sum하여 loss function으로 사용한다.

 

 

 

 즉, 정리하자면 두개의 feature map의 correlation 정보를 갖고있는 Gram matrix를 구한뒤, 이들의 차이를 제곱해 얻은 값을 각 layer마다 적절한 가중치를 두어 더하는 방식이다.

 

 

Algorithm

 

 

 Style transfer가 실행되는 방식은 위에서 언급한 loss function들의 역할을 종합한 것과 동일하다.

Style image, Content image는 모든 layer를 거치며 각 layer마다 representation이 계산되고 저장된다. 다만 content의 경우 단일 high-level layer에서만 loss가 계산된다. Noise image는 계산된 feature map을 바탕으로 content loss와 style loss의 선형 결합으로 이루어진 total loss를 줄이는 방향으로 학습된다. Back-propagation으로 pixel 값들의 미분치를 계산해 원본 image feature map과 유사해지는 방향으로 noise image를 update한다.

 

 

Experiments


 실험에서는 여러가지 미술계의 이미지들을 style image로, 독일의 Neckarfront 사진을 content image로 사용하여 실험했으며 크게 4가지 실험으로 구성된다.

 

 

Trade-off between content and style matching

 

 Total loss는 content, style loss의 선형 결합으로 이루어지는데, 이때 어느 부분에 더 가중치를 둘것인지 parameter를 통해 그 비율을 결정한다. 이때 해당 비율을 조정하며 좋은 결과를 얻는 수치들을 얻고자했다.

 

 

 위 사진은 Content loss / style loss의 비율을 조정함에 따라 나오는 결과 이미지로, 해당 비율이 커질수록 content 정보의 보존이 크게일어난다. 반대로 작아지면 style 정보가 더 많이 반영되어 object에 대한 정보는 소실되고 알기 어려운 형체의 그림이 나타나는 것을 볼 수 있다.

 

 

Effect of different layers of the Convolutional Neural Network

 

 Image sysnthesis 과정에서 pretrained layer의 어떤 layer를 사용해 content, style image의 feature map을 추출할 것인지는 매우 중요한 요소로 파악된다. Content의 경우는 low-level layer를 사용하면 content 정보의 detail한 부분들이 많이 보존되어 단순히 복제하는 것과 유사한 효과가 나타나 style과 well-blended 되기 어려운데, 해당 실험에서 이를 확인할 수 있다. Style의 경우는 layer들의 수와 position에 따라 어떤 style이 반영되는지가 결정되기 때문에 이는 곧 서로 다른 화풍의 생성으로 이어진다. 

 

 

 위 사진은 content feature에 대해 적용하는 layer를 다르게 함에 따라 나타나는 결과이다. 실험에서 style에 대한 layer는 conv_1_1, conv_2_1, conv_3_1, conv_4_1, conv_5_1로 고정한 결과만 보여주고 있다. Conv4_2는 Conv2_2보다 더 higher layer로 정보의 추상화가 더 많이 일어나게된다. 이에따라 생성되는 이미지는 content 정보를 더 많이 소실함에 따라, object의 변형도 이루어지며 style 정보와 더 well-blended되는 모습을 보여준다.

 

 부가적으로 저자들은 style에대한 실험을 통해 style representation을 high-level의 layer와 matching할 경우 local한 이미지 구조를 잘 보존해 생성되는 이미지가 더 continuous하며 smoother하기 때문에, 더욱 그럴듯한 이미지 생성을 위해 앞서말한 layer들을 고정해 사용했다고 말하고 있다.  

 

 

Initialisation of gradient descent

 

 논문에서 제시하는 image generation은 noise image로 부터 시작된다. 그러므로 초기에 noise image를 어떤 분포로부터 initialisation 하느냐에 따라 초기값은 달라지게된다. 본 실험에서는 initialisation을 content image, style image 중 어떤 것으로부터 실행하는지와 white noise로부터의 실행을 통해 생성되는 이미지를 비교했다. 

 

 

 논문에서도 언급하듯이 initialization 방식에 따라 유의미한 차이는 보이지 않는다. 이러한 결과를 한단계 더 나아가 해석하면, gradient descent가 정상적으로 잘 작동함에따라 content loss와 style loss의 반영이 제대로 이루어지고 있다는 것을 의미한다고 볼 수 있다는 생각이 든다.

 

 

Photorealistic style transfer

 

 마지막으로 해당 알고리즘을 화풍을 나타내는 미술 그림이 아닌 실제 사진에 적용했다. 단순히 미술 그림에서 뿐만아니라, 더 고해상도를 가지는 실제 사진에서도 이러한 전이가 실행될 수 있는 일반화의 가능성을 보고자했다.

 

 

 New York by night 사진의 style과 London in daytime 사진의 content를 synthesis했다. 결과를 보면 비록 완전히 사실적이지는 않지만, London 사진이 밤처럼 비춰지는 명도와 채도가 나타난 것을 볼 수 있다.

 

 

Conclusion


 CNN을 활용한 Image style transfer는 high-level의 feature를 이용해 높은 수준의 quality를 가지는 이미지의 생성이 가능했다. 또한 total loss는 style과 content의 선형결합으로 구성되기 때문에 hyper-parameter를 통해 반영 비율을 조정할 수 있는 장점이 있다. 

 

 하지만 명확한 한계가 존재하는데, 이는 실제 사진을 이용한 경우에 두드러진다. 사용하는 이미지의 해상도에 따라 속도가 결정되므로 학습시간이 많이 소요된다. 또한 정보의 추상화가 많이 일어남에 따라 low-level noise의 경우는 잘 반영하지 못하는 특성을 가진다.

 

 추가적으로, 본 논문을 통해 논의해볼 점은 'style과 content에 대한 정의의 모호성' 이다. 여기서는 Gram matrix를 통해 style을 feature map들 간의 상관관계로 수학적으로 정의했으나, 해당 기준은 경계가 명확하지 않다. 따라서 output에 대한 평가기준이 수학적으로 명확하거나 보편적이지 않아 단순히 시각적으로만 평가할 수 있다는 점에 대해서는 생각해볼 필요가 있어보인다.