1. Motivation
Optical Flow는 연속한 두 Frame 사이에서 각 Pixel의 Motion을 나타내는 Vector Map이다. 비디오의 인접한 두 프레임(t-1 frame, t frame)이 있을 때, t-1 frame의 각 픽셀이 t frame에서 어디로 이동했는지를 벡터로 표현한다.
Video에서 Motion을 분석하는 일은 매우 중요하기 때문에, Optical Flow 추정은 컴퓨터 비전에서 핵심 문제 중 하나다. FlowNet은 이 문제를 CNN(Convolutional Neural Network)으로 end-to-end 학습하는 최초의 시도 중 하나다.
2. Related Work
기존의 Optical Flow 추정 방법들은 주로 전통적인 에너지 최소화(energy minimization) 방식에 기반하였다. 대표적으로 Horn-Schunck, Lucas-Kanade 등의 알고리즘이 있으며, 이들은 밝기 일정성(brightness constancy) 가정 하에 최적화를 수행한다. 그러나 이러한 방법들은 큰 변위(large displacement)나 복잡한 장면에서 한계를 보인다.
딥러닝을 이용한 접근법은 대용량 데이터로부터 특징을 자동으로 학습하여 이러한 한계를 극복하고자 한다.
3. Proposed Method
FlowNet은 두 가지 아키텍처를 제안한다.
FlowNetS (Simple)
두 이미지를 단순히 concatenate하여 하나의 스트림으로 입력하는 단순한 구조. Encoder-Decoder 형태로 구성되며, refinement 모듈을 통해 coarse-to-fine 방식으로 Flow를 추정한다.
FlowNetC (Correlation)
두 이미지를 별도의 스트림으로 처리한 뒤, Correlation Layer를 통해 두 Feature Map 간의 유사도를 계산하여 합친다. 이후 Decoder를 통해 Flow를 추정한다. Correlation Layer는 이미지 1의 특정 위치와 이미지 2의 이웃 위치들 간의 내적(dot product)을 계산하여 두 패치 간의 대응 관계를 포착한다.
Training Data
대규모 합성 데이터셋인 FlyingChairs를 구성하여 학습에 사용하였다. 실제 데이터의 GT를 얻기 어렵기 때문에, 합성 데이터로 사전 학습한 후 실제 데이터에 파인튜닝하는 방식을 채택한다.
4. Experiments
Sintel, KITTI 등의 벤치마크에서 평가를 수행하였다. FlowNetS와 FlowNetC 모두 기존의 전통적인 방법들과 비슷하거나 더 나은 성능을 보이며, 특히 처리 속도 측면에서 GPU 가속을 통해 실시간에 가까운 속도를 달성하였다.
5. Conclusion & Limitation
FlowNet은 CNN 기반으로 Optical Flow를 end-to-end로 학습할 수 있음을 보였다. 합성 데이터(FlyingChairs)를 활용한 학습이 실제 데이터에도 일반화됨을 확인하였다. 다만, 당시 기준으로 SOTA 전통 방법 대비 정확도가 부족하며, 이후 FlowNet 2.0에서 이를 개선한다.