들어가며
포스팅된 글은 아래에 첨부된 논문과 유튜브 영상을 바탕으로 공부를 한 내용입니다.
이외에도 구글링을 통해 다양한 글들을 참고하며 공부한 내용을 포스팅 한 것 입니다.
논문 제목: Image Style Transfer Using Convolutional Neural Networks (CVPR 2016)
논문 링크: https://rn-unison.github.io/articulos/style_transfer.pdf
콘텐츠 손실 (Content Loss)
손실(loss) 함수는 크게 두 가지로 나누어진다.
하나는 콘텐츠 손실(content loss)이고, 나머지 하나는 스타일 손실(style loss) 이다.
이번 포스팅에서는 콘텐츠 손실(content loss)만 다룰 예정이다.
noise image x vector에 CNN 을 적용시켜 feature map F 를 얻는다.
contentent image p vector에 CNN 을 적용시켜 feature map P 를 얻는다.
feature map F 와 feature map P 의 차를 이용해서 콘텐츠 손실(content loss) 를 얻는다.
이때 feature map F 와 feature map P 의 차를 구하기 위해 유클리드 거리(Euclidean distance) 이용한다.
유클리드 거리(Euclidean distance)는 다차원 상의 두 점 사이의 거리를 계산하는 공식이다.
이때, 다차원이기 때문에 흔히 알고 있는 x, y 좌표뿐만 아니라 더 많은 좌표가 존재한다.
유클리드 거리(Euclidean distance) 를 2차원 상으로 나타내면 피타고라스 정리와 같다.
다만 앞에서 언급했듯이 2차원이 아닌 3차원 이상에서 계산해야 한다는 것이 피타고라스 정리와의 차이점이다.
유클리드 거리(Euclidean distance) 의 결과값을 최소화하여 0에 가까워질수록
feature map F 와 feature map P 의 차이가 작아지는 것이므로 둘의 activation 값이 동일해지는 것이다.
이러한 content loss 를 최소화 하기 위해서 역전파(back propagation)를 수행한다.
왼쪽 이미지는 순전파(forward propagation) 이고, 오른쪽 이미지는 역전파(back propagation) 이다.
순전파(forward propagation)는 input layer, hidden layer, out layer의 순서로 진행되며
결과값으로 오차(error)를 가지게 된다.
하지만 오차(error)의 값을 줄이기 위해서는 역전파(back propagation)를 이용해야 한다.
역전파(back propagation)는 순전파(forward propagation)의 결과값인 오차(error)를
다시 hidden layer와 input layer에 보낸다.
즉 역방향으로 보낸다.
이를 통해서 가중치를 계산하고, 그 가중치를 다시 오차(error)에 적용시킨다.이러한 과정을 계속 반복하면서 결국 오차(error)를 점점 줄여나간다.
마치며
몇 시간 동안 계속 노트북만 보고 있으니까 목에 담걸리는 것 같다
얼른 자야겠다