우노
[DL] Neural Style Transfer 본문
Neural Style Transfer
- Neural Style Transfer란, 두 이미지(Content Image & Style Image)가 주어졌을 때
- Content Image의 형태는 유지하면서 Style Image와 유사한, 새로운 Image를 Generated 하는 것을 의미합니다.
- 위 그림에서는, 건축물을 Content Image로 주고, 화가의 작품을 Style Image로 주어, 건축물의 형태와 배치는 유지되면서 화풍만 유사한 새로운 Image가 생성된 것을 볼 수 있습니다.
CNN 모델의 어느 Layer에서 특징(feature)를 추출할 것인가?
- Neural Style Transfer은 CNN 모델을 통해 동작하며,
- Content Representation과 Style Representation을 통해, 각 Layer마다 Content Image와 Style Image의 feature map을 추출하게 됩니다.
- Feature map란 이미지의 중요한 특징을 의미합니다.
- 추출된 Feature들은 Layer가 깊어질수록 다른 성질을 갖습니다.
- 이후, 추출한 Content feature와 Style feature를 섞어 Generated Image를 만들게 됩니다.
Content Representation
- 위 그림은, CNN에서 각 Layer마다 Content Image의 Feature가 어떻게 뽑히는지 나타낸 예시입니다.
- a,b,c를 보면 원래의 사진과 거의 다를바가 없습니다.
- 하지만, 깊은 Layer에 있는 사진을 보면, 사진의 일부분이 사라져있는데, 이는 중요한 Feature들을 빼고 나머지 Feature들은 제거됐다는 것을 의미합니다.
- 이처럼, Content Image는 Layer가 깊어질수록 해당 Object를 구별하기 위한 고유한 특징들만 남기고 나머지는 사라지게 됩니다.
Style Representation
위 그림은, CNN에서 각 Layer마다 Style Image의 Feature가 어떻게 뽑히는지 나타낸 예시입니다.
얕은 Layer에서는 단조로운 패턴들이 반복되지만, 깊은 Layer로 갈수록 Feature들이 더 복잡해지고 확대되고 있는 것을 알 수 있습니다.
이는, Max Pooling으로 인해 발생합니다.
- 이미지가 점점 더 작아지게 되면서,
- 얕은 Layer의 큰 이미지에는 많은 양의 Feature들을 담을 수 있지만,
- 깊은 Layer의 작은 이미지에는 적은 양의 Feature들만 담을 수 있기 때문에 일어나는 현상입니다.
이처럼, Style Image는 Layer가 깊어질수록, 원래 그림의 전체적인 배열(global arrangement)은 사라지고, 반복되는(Texturised) 특징들만 남는다는 것을 알 수 있습니다.
따라서, Content Representation은 Layer가 깊어질수록 이미지의 전체적인 틀(global arrangement)이 남으며
Style Representation은 Layer가 깊어질수록 이미지의 반복되는 Texture만 남게 되므로
Generated Image는 Content의 전체적인 틀(global arrangement)에 Style의 Texture를 입힌 모습으로 생산될 수 있는 것입니다.
Cost Function
Neural Style Transfer의 Cost Function에 대해 알아보겠습니다.
Cost Function 공식은 아래와 같습니다.
- C : Content Image
- S : Style Image
- G : Generated Image
- Jcontent(C, G) : Content Image와 Generated Image가 얼마나 비슷한지
- Jstyle(S, G) : Style Image와 Generated Image가 얼마나 비슷한지
- α, β : Jcontent(C, G)와 Jstyle(S, G)의 상대적인 가중치
- 두 개의 파라미터가 아닌 한 개의 파라미터로도 가능하다.
따라서, 위와 같은 Cost Function을 최소화함으로써, 원하는 이미지를 생성할 수 있게 됩니다.
또한, G(Generated Image)는 J(G)에 미분계수를 적용한 값을 빼며 업데이트 됩니다.
- 실제로 G(Generated Image)의 픽셀 값이 Cost Function을 최소화하는 방향으로 업데이트 됩니다.
'AI > Deep Learning' 카테고리의 다른 글
[DL] RNN, LSTM, GRU 란? (5) | 2021.02.16 |
---|---|
[DL] Sequence Model이란? (3) | 2021.02.15 |
[DL] One Shot Learning, Siamese Network, Triplet Loss, Binary Loss (1) | 2021.02.10 |
[DL] Object Detection (Sliding Windows, YOLO) (1) | 2021.02.10 |
[DL] Landmark Detecting (1) | 2021.02.09 |
Comments