Intro
이전 포스트들을 통해 최초의 DL 기반 Optical Flow 알고리즘인 FlowNet과 이를 개선한 FlowNet2.0을 다루었습니다. 이번 포스트에서는 고전적인 Optical Flow에서 사용된 여러 기법들을 결합해 적용한 PWC-Net을 다룰 예정입니다. PWC-Net은 고전적인 Optical Flow 알고리즘의 세 가지 원칙을 CNN 모델에 접목했습니다. 쉽게 생각하면 Optical Flow 알고리즘의 유행들을 모두 다 적용한 정수라고 볼 수 있습니다.
Network Architecture
PWC-Net의 Architecture는 그 이름의 어원을 보면 이해할 수 있습니다. Net은 network이며, 앞의 PWC는 이 모델에 적용된 Optical Flow 알고리즘 기법들의 약어입니다. Paper는 이런 기법들을 적용해 Model Size 감소와 성능 증가의 두 마리 토끼를 잡았다는 느낌을 주고 있습니다. 아래는 PWC의 의미입니다.
- Pyramid Processing (Structure)
- Warping Layer (Backward Warping)
- Cost Volume Layer (Correlation Layer)
Introduction에서도 잠시 소개했지만, PWC-Net은 고전적인 Coarse-to-fine Optical Flow 알고리즘의 접근법에서 영감을 얻은 듯합니다. PWC-Net 부분만 따로 분리해 본다면 이 모델의 이름의 의미를 보다 쉽게 알 수 있습니다. 이제부터는 PWC 각각에 대해 자세히 들여다보도록 하겠습니다.
Pyramid Structure
Image Pyramid는 Image Processing/Computer Vision 분야에서 전통적으로 사용되는 기법입니다. ML/DL 기반 Optical Flow 알고리즘들에서도 이 아이디어를 차용했는데, SpyNet [CPVR 2017]에서 매우 자세하게 기술되어 있습니다. (이번 포스트에서는 따로 다루지는 않으니 Reference의 SpyNet 참조 바랍니다.)
Pyramid Structure는 Down-scaling을 거친 input image를 Up-scaling 해가며 Optical Flow를 구하는 구조입니다. 이를 통해 Optical Flow의 약점 중 하나인 Large Motion Displacement를 어느 정도 보완 가능합니다. Down scale에서 Large Displacement에 대한 정보를 확보한 후, Up-scaling 과정에 detail을 (Small Displacement) 확보함으로써 큰 변화에 강한 모습을 보입니다.
PWC-Net에서는 이런 Pyramid Structure를 Learnable feature pyramids로 표현합니다. Raw image를 input으로 활용했던 고전적인 방식과 달리, Feature map을 input으로 활용합니다. 2개의 Input image를 convolution layer를 통과시키며 Down-scaling 해 Feature map 기반 L-level pyramid를 생성합니다.
Warping Layer (Backward Warping)
Warping은 previous pyramid의 Flow를 Up-scaling 해 두 번째 Image에 더해주는 동작을 의미합니다. 예측값이 아닌 연산 결과로 얻은 Optical Flow로 실제 이미지를 이동시킵니다. 즉, Input Image1에 previous pyramid에서 얻은 Flow를 Up-scaling 해 얻은 Motion Vector를 더해줍니다. 이로서 Groundtruth Input Image2와 Warping을 통해 얻은 Input Image2`이 존재하게 됩니다. 이 둘은 서로 근사하나 완전 같지는 않을 것입니다. 오차가 작을수록 연산이 정확한 것은 당연합니다.
그렇다면 이 과정이 왜 중요한 걸까요? Warping을 한다면 training 한 번을 통해 학습을 1회가 아닌 L회(L-level pyramid structure) 할 수 있게 됩니다. Down-scaling → Up-scaling 과정에 순간순간 Input Image2와 Input Image2`의 오차를 가중치로 같이 추가해 줍니다. (Bilinear interpolation을 사용해 미분 가능하며, End to End 연산을 수행할 수 있습니다.)
결과적으로 Warping은 학습 효율을 올리고, Large motion에서의 오차를 추정해 Geometric distortion을 순간순간 보상할 수 있게 해 줍니다.
Cost Volume Layer (Correlation Layer)
Cost Volume (Correlation Layer)는 FlowNet [ICCV 2015]에서 제안된 개념으로, Feature map 간 내적 연산을 통해 pixel 간 matching cost를 저장합니다. 이에 대한 자세한 개념은 이미 FlowNet 포스트에서 다루었기에 아래 링크를 확인 바랍니다. 여기에서도 연산 cost를 줄이기 위해 Raw image 대신 Feature map끼리의 Cost Volume을 구하고 있습니다.
Optical Flow Estimator & Context Network
Optical Flow Estimator와 Context Network는 둘 다 결과물로 Optical Flow를 출력한다. 차이점은 전자는 Pyramid Structure의 각 level의 결과물을, 후자는 전체 결과물을 출력한다는 것이다.
- Optical Flow Estimator: Input Image1과 Cost Volume, Upsampled Flow를 입력받아 Pyramid의 각 level의 Optical Flow 예측
- Context Network: Multi-level에서 생성한 Optical Flow를 하나(Refined Flow)로 합쳐준다.
Result
Next
사실 PWC-Net을 이렇게 자세히 살펴볼 계획은 없었습니다. 상반기에 RAFT에 흥미를 갖게 되어 찾아보던 중 FlowNet2에서 RAFT는 너무 Quantumn Jump가 있는 것 같아 중간 노드를 찍자는 생각으로 보게 되었습니다. 따라서 다음 포스트는 RAFT로 찾아뵙도록 하겠습니다. 이미 올해 상반기에 RAFT에 대한 페이퍼 리뷰 및 정리는 끝냈으나, 업무와 이외 다른 작업이 너무 바빠 계속 미루게 되었습니다. 2023년에는 꾸준히 포스트를 올릴 수 있는 한 해가 되도록 노력하겠습니다.
Reference