Pseudo Lab/3기 반 고흐 전시전

[2주차] Image Style Transfer Using Convolutional Neural Networks 리뷰

공부중인학생 2021. 8. 21. 20:25

2주차에는 Style Transfer 논문을 리뷰했습니다. CNN 기반의 분류모델 위주로 공부하다 보니 생성모델 논문을 처음 접해보게 됬는데요, 목적이 다른 모델들이기에 기초부터 완전히 다를 줄 알았는데 Style Transfer도 CNN 필터를 기반으로 설계 되어있어 신기했습니다.

 

논문을 가볍게 요약해보자면

  • 이전까지의 방식들은 low-level feature들만 사용이 가능하여, 이미지를 변형시켰을 때 결과 이미지에서 high-level feature들에는 변화가 없었다.
  • 이 Style Transfer는 CNN 필터를 사용하여 얻은 high-level feature들을 사용할 것이다.
  • 다음과 같이 content image(풍경사진)을 style image(그림)을 사용하여 style image의 화풍을 content image에 적용시킨다. (이미지 자체를 업데이트하는 이미지 최적화 방식)

 

content image에 style image의 화풍이 적용된 모습

 

Style Transfer

  • 스타일 전송을 위해서 사전 학습된(Pre-trained) CNN 모델을 사용합니다. (특징 추출 모델로 VGG19를 사용했습니다.)
  • 네트워크의 가중치를 고정시키고 이미지를 변경시키는 방법을 사용합니다.
  • 아래 사진과 같이 이미지를 업데이트하여 원하는 정보를 입힙니다.

 

 

여기서는 가중치를 업데이트 하는 것이 학습이 아니라 두 개의 이미지를 사용하여 한 개의 이미지를 업데이트 하는 것이 학습입니다. 업데이트를 진행할 때는 손실값이 작아지는 방향으로 이미지를 업데이트 해야합니다. 손실 함수는 다음과 같이 정의 됩니다.

 

 

이미지를 벡터로 표현하여 손실 함수가 정의됬는데, 그 이유는 하나의 이미지는 세로축과 가로축으로 구성된 한 장의 행렬과 같은 데이터로 볼 수 있기 때문입니다. 총 손실값은 두 개로 구성이 되는데 하나는 conent loss이고 다른 하나는 style loss입니다. 이렇게 두 개의 loss를 더해주고 이 값을 작게해주는 방향으로 업데이트를 해줌으로써 두 개의 loss 모두 다 적어지는 방향으로 업데이트가 진행됩니다.

  • 손실의 강도는 알파, 베타를 사용하여 조절해줍니다.

 

Content loss

 

content loss는 다음과 같이 cnn 필터를 사용하여 나온 activation map을 동일하게 해주는 방식으로 진행이 됩니다. content의 activation map과 업데이트를 진행할 x 이미지의 activation map을 최소제곱법을 통하여 손실 함수를 합니다. 각 채널의 활성화 값 위치들을 서로 같게 해주므로써 손실값을 줄여주게 됩니다.

  • 하나의 레이어에서 actiavtion map 자체가 같아지도록 진행이 됩니다.

 

Style loss

 

본 논문에서는 스타일은 서로 다른 특징들간의 상관관계로 정의합니다. 즉 두 이미지의 스타일이 같다라는 말은 "두 이미지에 존재하는 특징들의 상관관계 정도가 유사하다" 라고 말할 수 있습니다. 상관관계를 수치적으로 표현하기 위해서 Gram Matrix를 사용합니다. 식을 보면 서로 다른 특징들의 같은 위치의 activation 값을 곱한 다음 전부 더하는 형식으로 진행되며 이 값이 크다는 것은 두 특징간의 상관관계가 높다는 것입니다. 이 방법을 통해서 필터를 통해 얻은 특징들의 Gram Matrix를 구하면 각 특징들의 상관관계를 수치화하여 나타낼 수 있다는 것입니다. Gram Matrix의 shape은 필터의 채널과 같으며 G12은 1번째 activation map과 2번째 activation map의 상관관계 정도라고 해석할 수 있습니다.

 

 

스타일 손실 주어진 이미지들 간의 Gram Matrix값을 유사하게하여 스타일 손실을 줄여 스타일 이미지로부터 스타일 정보를 가져오는 것입니다. 우리가 업데이트를 진행할 x이미지의 Gram Matrix(G)를 얻고 스타일 이미지의 Gram Matrix(A)를 얻어 위와 같이 최소제곱법을 통해 차이를 좁히게 됩니다. 이때 이 값이 너무 커질 수 있기 때문에 특정한 값으로 나눠주게 됩니다. 이렇게 각각의 레이어들에 대해서 손실값을 구한 다음 전부 더해서 총 손실 값이 줄어들 수 있는 방향으로 학습이 진행되게 됩니다.

  • 일반적으로 3~4개 정도의 레이어에서 Gram Matrix를 구해 유사해지도록 진행이 됩니다.
  • 각 레이어 손실값에 가중치를 줄 수 있는 하이퍼 파라미터가 존재합니다.

 

전체 구조

 

해당 모델은 high-level feature을 적용하기 위해서 cnn 필터로 만들어진 feature map을 사용합니다. feature map은 층이 깊을 수록 더 고차원적인 특징을 가지고 있습니다. 위에 사진은 각 층마다 feature map을 뽑아 적용한 것인데 층이 깊어질 수록 더 몽환적인 결과물이 나오게 됩니다. Style Reconstructions의 경우에는 여러개의 레이어를 같이 사용합니다.

 

References