1. Abstract
- 연속적이고 안정적인 video style transfer를 위한 새로운 initialization과 loss 제안
2. Introduction
- style transfer for image
- content image와 style image에 CNN을 적용
2.1 style transfer for video
일반적인 style transfer를 video의 frame에 각각 적용하면 frame별로 다르게 학습되어 discontinuous하기 때문에 stable하지 않다는 문제 발생
- white noise feature map
- white noise로 부터 generated image를 생성하기 때문에 한 frame씩 학습시키게 된다면 모든 frame이 다르게 학습됨
- temporal consistency
- 자연스러운(smooth) 장면 전환(frame transition)을 위해서 두 frame의 deviation(편차)에 penalty를 적용
- 단순한 image의 deviation에 편차에 penalty를 적용하는 것이 아니라, point trajectory에 penalty를 적용하는 optical flow 기법 사용
- 즉, frame에서 사라진 물체에 대해서는 penalty를 적용하지 않고, 계속 화면에 존재하는(trajectory에 존재하는) 물체에만 penalty 적용
- long-term consistency
- 만약 어떤 물체가 화면에 가려졌다가(occuluded) 다시 등장하게 된다면, 그 부분의 style이 기본과는 다르게 새로 학습되는 문제 발생
- long term motion estimate를 통해 물체의 재등장시 frame간의 style을 같게 유지해줌
- multi-pass algorithm
- image의 boundary에 content image에 없는 artifact(물체)가 생기는 경우가 존재
- image에서는 크게 상관이 없지만, video에서는 중앙쪽으로 카메라가 움직이면서 기존의 content와 증폭되는 문제 발생
- video의 forward/backward 방향을 번갈아가며 처리하는 multi-pass algorithm 방식으로 해결
3. Related Work
- Style transfer using deep networks
- Painted animations
4. Style Transfer in still images
- content loss
- CNN을 통해 output의 feature map이 content image와 비슷해지도록 함
- =
- = size of -th layer feature map
- = original image를 layer에 통과시켰을 때, output의 각 pixel값
- = generated image를 layer에 통과시켰을 때, output의 각 pixel값
- 즉, 각 layer마다 content image와 generated image의 모양(content)가 얼마나 차이나는지를 loss로 사용
- style loss
- output과 style image의 correlation을 통해 style이 비슷하도록 encoding
- =
- = size of -th layer feature map
- = = style image의 Gram Matrix
- = = gernerated image의 Gram Matrix
- 즉, 각 layer마다 content image와 generated image의 style이 얼마나 차이나는지를 loss로 사용
- total loss
- =
5. Style Transfer in videos
5.1 Short-term consistency by initialization
만약 연속적인 frame이 각각 다른 Gaussian noise로 부터 initialization될 경우, 두 frame이 서로 다른 local minima로 수렴하여 flickering 문제(같은 부분에 다른 style이 적용되는 문제)가 발생
- -th generated image를 -th frame의 initialization로 사용
- 변화가 없는 부분은 그대로 style이 적용되고, 새로 등장하거나 변화되는 부분은 새롭게 학습
- 하지만, motion이 있는 경우에는 움직이는 부분에 initialization이 부정확하게 되는 문제가 발생
- optical flow 적용
- optical flow란, previous frame과 current frame을 이용하여 각 부분의 motion vector, 즉, 얼마나 이동했는지를 찾는 것
- original image의 frame에서 측정된 optical flow field를 -th generated image에 적용하여 -th frame의 initialization로 사용
- =
- = optical flow field from original frame to original frame
5.2 Temporal consistency loss
- 인접한 장면의 일관성을 위해서 연속된 두 frame에 penalty를 부여
- 이를 위해서는 물체가 사라진건지 아닌지에 대한 것과 motion에 대한 detection이 필요
- disocclusion object(가려졌다가 다시 등장하는 물체, 혹은, 새롭게 등장하는 물체)
- object disocclusion을 판단 위하여 forward/backward 방형의 optical flow를 확인
- disocclusion이 발생하지 않는 area(계속 image에 존재하는 물체)는 forward/backward 방형의 optical flow가 거의 반대이기 때문에, disocclusion인 부분은 아래의 부등식이 성립
- >
- = = forward 방향의 optical flow
- = = backward 방향의 optical flow
- =
- motion boundary
- >
- 위의 공식을 이용하여 motion detection을 함
- temporal consistency loss
- frame에서 optical flow가 변화없는 곳에 적용되어 deviation에 penalty를 적용
- =
- = per-pixel weight
- =
- short-term loss
- =
- =
- = disoclussion 혹은 motion boundary가 있는 곳은 0, 아니면 1
- = optical flow field from -th frame to -th frame
5.3 Long-term consistency loss
- 물체가 가려졌다가(occluded) 다시 등장하는(disoccluded) 경우, style이 변하는 문제가 발생
- previous frame만 확인하는 것이 아니라, 더 멀리 있는 frame도 확인할 수 있는 long-term loss 적용
- long-term loss
- =
- =
- = -th frame이 고려해야하는 frame의 index set
- =
- 우선 short-term loss를 적용한 후, long-term loss 적용
5.4 Multi-pass algorithm
- boundary가 다른 부분에 비해 학습이 잘 되지 않는다는 문제가 존재
- camera 혹은 물체가 움직이면서 image boundary가 화면의 중심으로 오게 될 경우, 낮은 quality의 output을 보여줌
- image sequence를 다양한 방향과, multiple-pass로 학습을 시키는 방식으로 해결
- multiple-pass란, 이전 pass에서 학습된 것을 사용하여 여러 번 반복해서 학습시키는 것
- multiple-pass algorithm
- 우선 각 frame을 독립적으로 학습시킨 후, non-disoccluded한 image끼리 섞어서 optimization
- 이때, optimization은 forward/backward 방향 모두에 대해서 학습
- = initialization of frame
6. Experiments
6.1 Implementation details
- 기존의 style transfer처럼 VGG-19 기반의 model
- 의 output을 content loss에 사용
- , , , , 의 output을 style loss에 사용
- L-BFGS를 통해 optimization
- 50 iteration 동안 0.01% 이상 감소하지 않으면 학습을 중단
- 처음 image에는 2000~3000 iteration, 그 이후의 image는 400~800 iteration
- parameter for loss
- = 1, = 20, = 200 for
- = 1, = 40, = 200 for
- = 1, = 100, = 400 for
- multi-pass algorithm
- = 0.5
- 100 iteration for pass
- 10개 정도의 pass가 좋은 성능
- optical flow
- DeepMatching, DeepFlow, EpicFlow 사용
- Sintel dataset 사용
6.1.1 Runtime
- style transfer
- GPU를 사용하여 frame당 3분 소요
- optical flow
- CPU를 사용하여 frame당 3분 소요
- 병렬처리 가능
6.2 Short-term consistency
6.3 Long-term consistency and multi-pass algorithm
7. Conclusion
- 새로운 loss를 도입하여 video에 style transfer를 자연스럽게 적용