TF를 사용한 Neural Style Transfer의 실습 코드가 있습니다.
이 실습도 논문을 바탕으로 진행되었습니다.
딥러닝을 사용하여 원하는 이미지를 다른 스타일의 이미지로 구성하는 법이 있습니다. (피카소나 반 고흐처럼 그리기를 희망하나요?). 이 기법은 Neural Style Transfer로 알려져있으며, 위의 논문에 잘 기술되어 있습니다.
보다 최근에 개발된 CycleGan 알고리즘은 모델로 하여금 스타일이 변이된 이미지를 직접 생성하도록 만들어 주었습니다. 이 접근은 기존의 스타일 전이 알고리즘에 비해 훨씬 빠릅니다. (최대 1,000배 정도 빠르다고 하네요.)
Neural Style Transfer은 콘텐츠 (content) 이미지와 (유명한 작가의 삽화와 같은) 스타일 참조 (style reference) 이미지를 이용하여, 콘텐츠 이미지의 콘텐츠는 유지하되 스타일 참조 이미지의 화풍으로 채색한 것 같은 새로운 이미지를 생성하는 최적화 기술입니다.
이 과정은 출력 이미지를 콘텐츠 이미지의 콘텐츠 통계량(Statistic)과 같은 스타일 참조 이미지의 스타일 통계량에 맞춰 최적화 시킴으로써 구현됩니다. 통계량은 합성곱 신경망을 이용해 각각의 이미지에서 추출합니다.
네. 댕댕이입니다!
이건 칸단스키의 7번 작품이라 하네요.(처음 들음)
이렇게 두 이미지는 이런 결과물을 만들어 낸다고 하네요. 새로운 합성곱 이미지가 이런 걸 뜻하나 봅니다!
Style Transfer 라는 이름 답게, 이 기법은 이미지의 스타일을 변환시킵니다. 전체 이미지의 구성을 유지하고 싶은 Base Image를 설정하고 입히고 싶은 스타일이 담긴 Style Image 두 장을 활용해 새로운 이미지를 만들어 냅니다!
Neural은 다들 아시다시피 신경망이란 뜻인데요. 딥러닝 기술을 활용했음을 뜻합니다.
다른 예시의 이미지입니다.
여섯 개의 이미지 중 왼쪽 이미지가 Base Image이고, 나머지 다섯 개의 이미지에 작게 붙어 있는 이미지가 Style Image입니다.
Base Image에 나온 건물과 강, 나무 등이 Style Image에 남아 있는 것이 보이나요? 이런 결과를 만들어 내는데 최적화 과정이 들어 있고, 여기서는 유지 시켜줄 객체의 손실을 줄이도록 노력해야 합니다.그러기 위해 정교하게 손실 함수를 짜야할 것입니다.