스타일 트랜스퍼(style transfer) 

 CNN(convolutional neural network) 


스타일 트랜스퍼(style transfer)?

스타일 이미지를 학습시킨 후에, 콘텐츠 이미지에 적용시키는 것. 

ex) 반고흐 이미지를 스타일 이미지로 정함. 
반고흐 이미지를 내 얼굴 사진의 스타일을 바꾸는 필터로 사용하는 것을
스타일 트랜스퍼라고 이해할 수 있다. 

CNN(convolutional neural network : 합성곱 신경망)?

머신러닝을 사용할 때 어떤 식으로 학습시킬지 미리 graph를 설계한다. 

CNN은 model의 설계 방식 중 하나라고 생각하면 된다.

CNN의 특징은 학습시킬 대상의 특징을 가져온다. 


Neural Network란?


튜토리얼에서 사용하는 Neural Network 모델은 vgg16이다. 

vgg16은 16개의 레이어로 구성된 CNN(합성곱 신경망)이다.

스타일 이미지와 콘텐츠 이미지의 loss(손실) 값을 줄여서
두 이미지의 차이를 줄여 콘텐츠 이미지에 스타일을 적용시키기 위해서 사용된다. 


과정

<전처리>
  • 라이브러리 import
  • 이미지 전처리 (생략) 
<머신러닝>
  • 손실함수 만들기(MSE)
    • 콘텐츠 손실함수
    • 스타일 손실함수 (gram matrix)
    • 노이즈 제거 손실함수 
  • 스타일 트랜스퍼 알고리즘
    • 손실함수에 gradient descent(기울기) 적용
    • 손실함수 정규화 

<실행>
  • 콘텐츠, 스타일 이미지 가져오기
  • 콘텐츠 레이어 아이디 지정 
  • 스타일 레이어 아이디 지정(하위 레이어 / 상위 레이어)
  • 스타일 트랜스퍼 실행 (손실함수 최적화)

그람행렬 - 자기 자신에 전치행렬(90 돌린) 곱한

사용이유는 스타일에만 집중할 있도록 하기 위해서이다. 컨텐츠에는 적용되지 않는다.


손실함수는 컨텐츠 이미지와 mixed이미지 손실을 MSE를 사용해서 구한다.


Session은 




Reference

https://www.youtube.com/watch?v=YoBEGQD3LCc

Posted by 도이(doi)
,