1. Style Transfer란?
이런식으로 이미지를 바꿔준다. 이 기술을 스타일 트랜스퍼(Style Transfer) 라고 한다. 스타일 트랜스퍼의 핵심은 콘텐츠 이미지와 스타일 이미지가 있을때 콘텐츠 이미지의 콘텐츠를 유지하면서 스타일 이미지의 스타일로 스타일을 변환하는 것이다.
2. 스타일과 콘텐츠
스타일 트랜스퍼의 논문은 이 스타일 트랜스퍼를 신경 알고리즘이라고 하고 있다. 즉, 신경망을 이용하여 원 이미지의 콘텐츠를 유지하며 스타일을 바꾸는 것을 구현할 수 있다는 것이다.
아래쪽은 content reconstructon이고 윗쪽은 style reconstruction을 수행한 결과이다.
CNN은 레이어가 깊어질 수록 심층적인 정보를 가지게 된다.
style reconstruction은 레이어가 얕을수록 콘텐츠를 무시하고 스타일을 복원하는 경향이 있다. 이것은 style을 feature map들 간의 상관관계로 정의하기 때문이다.
content reconstruction은 레이어가 얕을 때는 원본 이미지 자체를 보존하지만 레이어가 깊어질수록 부가적인 정보는 소실되지만 이미지 자체의 심층적인 content를 보존하는 것을 알 수 있다.
즉, 같은 CNN이라도 content와 style이 분리가 되어 있어 다른 이미지끼리의 content와 style을 섞을 수 있다는 것이며 스타일 트랜스퍼는 content와 style을 입력으로 받아 content와 style의 feature map을 추출해 output의content와 style에 대해 각각 optimization을 수행하는 것이다.
3. Loss 함수
이 때 심층적인 정보만 남은 깊은 층의 feature map을 사용하며 loss를 최소화하는 x를 찾음으로써 content reconstruction을 해결할 수 있다.
Style Loss인 L style은 Feature map에 대해 Gram Matrix를 구한 후 Frobenius Norm의 제곱을 한 후 가중치를 곱한 Sum이다. 여기서 Gram Matrix를 사용하는 이유는 Style이 Feature map들 간의 상관관계라고 정의하기 때문이다.
여기서도 비교하고자 하는 두가지 이미지를 각각 a와 x라고 하면 각각의 feature map에 대해 Gram matrix를 구한 값을 각각 이라고 하면 전체 손실에 대한 해당 레이어의 영향 은 다음과 같이 정의된다.
을 활용한 최종 L style은 다음과 같으며 loss를 최소화하는 x를 찾는 것으로 style reconstruction 문제를 풀 수 있다
두가지 loss를 모두 활용하여 x를 찾기 위해 최소화할 최종적인 loss는 다음과 같으며 각각 주어진 alpha와 beta는 content와 style의 반영 가중치를 조절하는 인수이다.
#REFERENCES
'머신러닝' 카테고리의 다른 글
[머신러닝]오토인코더(Autoencoder)를 알아보자. (0) | 2018.03.11 |
---|---|
[머신러닝]DCGAN 알아보기 (0) | 2018.02.18 |
[머신러닝]GAN - Generative Adversarial Network 훑어보기 (0) | 2017.12.22 |
[머신러닝] Jensen–Shannon 발산과 Kullback–Leibler 발산 (0) | 2017.12.21 |
[머신러닝] Sigmoid를 넘어 ReLU 로 (0) | 2017.09.08 |