그림 1. RAFT 파이프라인
그림 2. Feature extraction network/context network 구조
두 입력 이미지의 특징을 추출하기 위해 일반적인 CNN 구조의 네트워크를 활용
Feature extraction network는 로 표기하며, 와 같이 1/8 해상도록 줄임(D=256)
Context network는 입력 영상의 context를 RAFT 뒷 단의 reccurent unit에 전달하기 위한 네트워크이며, feature extraction network와 같은 구조를 가지고 있음
그림 3. Correlation volume 구조
의 feature vector(를 통해 추출된 feature map 상의 cell)과 의 feature vector 사이의 조합 가능한 모든 feature vector 쌍에 대한 correlation을 4D 형태로 계산
입력 이미지에 대해서 , 라고 할 때, 다음과 같이 correlation volume을 계산(FlowNet에서 먼저 correlation volume 활용을 제안하였고, RAFT에서는 개념은 같지만 형태가 약간 변경된 형태를 사용)
즉, 위의 수식은 이미지 의 feature vector 와 이미지 의 feature vector 사이의 correlation은 라는 것을 의미하며, 한 번의 행렬곱(각 feature vector 간 내적)으로 계산되기 때문에 효율적
이후 correlation volume의 마지막 두 차원에 대해서 average pooling을 취하여 와 같이 4-layer pyramid를 구성함
각 level의 correlation volume 차원은 다음과 같음
이를 통해 크고 작은 여러 움직임에 대응하며, 특히 correlation volume의 앞쪽 두 차원은 유지함으로써 고해상도 정보 또한 유지하여 고속 이동하는 소형 물체에 대해서도 대응할 수 있도록 함
Correlation volume 계산 과정은 복잡도가 이지만, iteration 전에 단 한번 pre-compute되고, 구현이 쉬우며, 최종적으로는 전체 inference time 중 17%정도만 차지하기 때문에 bottleneck 되지는 않음
하지만, 저자들은 더욱 효율적인() 대체 방법을 제시하고 있으며, 혹시 correlation volume 계산이 bottleneck이 되는 경우 대체 방법으로 교체가 가능하다고 함
여기서 , 이며, correlation volume pyramid의 level m()을 계산하는 과정을 수식으로 나타낸 것으로, average pooling 과정(첫번째 term)이 두번째 term으로 표현될 수 있음을 보임
두번째 term을 보면 correlation volume의 각 원소는 과 커널을 통해 pooling된 사이의 내적으로 표현될 수 있기 때문에, 계산이 오래 걸리는 전체 correlation volume pyramid를 pre-compute하는 대신, pooling된 만 pre-compute 해놓고 이후 과정에서 필요한 correlation feature 만 위의 수식으로 계산하여 사용하면 연산량을 절약할 수 있음
그림 4. Loopup Operator 설명
그림 5. Update Operator 구조
입력 데이터 는 예측된 optical flow feature, correlation feature, context feature가 concatenate된 데이터
Update를 수행하는 convGRU는 다음과 같이 구성 ( 등을 계산할 때, 를 concat하고 convolutation 수행) (RNN, LSTM, GRU)
convolutional layer를 convGRU, convGRU로 분리된 두 개의 GRU로 대체했을 경우 큰 연산량 상승 없이 receptive field를 효과적으로 넓힐 수 있음
마지막 GRU cell의 은닉층에 두 개의 convolutional layer를 적용하여 flow update 량, 를 추정하며, 이를 이용하여 다음과 같이 최종적인 optical flow를 계산 및 업데이트 함
그림 6. Upsampling 방법
그림 7. 실험결과
그림 8. Ablation study
그림 9. 속도 및 네트워크 크기
해당 연구자의 후속 연구인 DROID-SLAM도 비슷한 구조(GRU를 통한 지속적인 iteration으로 결과를 refine)를 가지고 있고, 해당 연구실의 유명 논문 중 하나인 stacked hourglass network도 이전 step의 keypoint heatmap을 입력받아 같은 네트워크 구조를 iteration하여 결과를 refine하는 구조를 가지고 있는데, 이런 방식이 성능 향상에 도움이 크게 되는 듯
또한 본 논문과 DROID-SLAM의 주요 contribution으로 기존 딥러닝 기반 방법의 고질적인 문제인 일반화 성능을 크게 향상시켰다고 명시하고 있는데, iteration을 돌리는 구조 덕분인 것 같음(GT와 유사한 값을 바로 예측하기도 하지만 refinement를 위하여 GT와 이전 step의 차이 값 또한 예측을 하기 때문에 좀 데이터가 증강되는 효과가 있는 것 같기도??)