이 포스팅은 Computer Vision 시리즈 17 편 중 15 번째 글 입니다.
목차
개요
style transfer에서는 input의 style을 target의 style과 맞게 만들어주는 방법이 필요한데, 이에 대한 방법론의 핵심을 담당하는 Gram Matrix에 대해 알아본다.
수식
먼저, 논문에서 제안하고 있는 Gram Matrix의 형태는 다음과 같다.
Glcd=∑ijFlijc(x)Flijd(x)IJ우리는 쉬운 이해를 위해서 채널, 정규화 과정을 제거한 채로 살펴보자.
Glij=∑kFlik(x)Fljk(x)- l : layer
- F : Filter
- i, j : Filter Index
수식으로 들어온다면 여기까지만 읽으면 된다.
의미
이미지 →x 가 있다고 하자. 해당 벡터는 2차원 이미지가 있을 때, 이를 1차원으로 faltten 한 것이다. 이 이미지의 크기를 M=3이라 하자.
→x=[x0,x1,x2]각 이미지가 통과하는 필터(M=2)가 2개 있다고 하자. 해당 필터는 F로 표기한다. 각각의 filter에 image를 통과시킨 결과를 →F라 하자.
F=[F1(x0)F1(x1)F1(x2)F2(x0)F2(x1)F2(x2)] Fik=Fi(xk)Fik는 Fi 필터에 xk 픽셀을 넣었을 때의 activation(response)이다. 그렇다면 Gram Matrix의 의미가 무엇인지 알아보자. 일단
Glij=∑all term[F00F00+F01F01+F11F11F00F10+F01F11+F02F12F10F00+F10F01+F12F02F10F10+F11F11+F12F12]=∑all term∑k[F0k2F0kF1kF0kF1kF0k2]어디서 많이 본 모양이다. pixel별 filter activation의 Covariance이다! 결과적으로 발생하는 모든 항을 더하게되면 다음의 의미이다.
pixel의 filter activation들에 대한 covariance 모든 항의 합
이렇게 발생한 값을 가지고 input의 filter가 원하는 target filter의 gram matrix 값과 같도록 학습을 진행한다.
El=14Ne2Me2∑ij(Glij−^Glij)2최종적으로는 밀도로 나누어서 사용해야 한다.