논문 요약
Optical flow를 활용할 때 보통 컴퓨팅 비용을 줄이기 위해 입력 이미지의 크기를 작게 만든다. 하지만 이는 객체와 모션을 작게 만들어 작은 객체에 대한 정확도가 떨어지고 경계가 불분명해진다. 이를 해결하기 위해, 본 논문은 임의의 스케일의 이미지에서 정확한 flow를 예측할 수 있게 하는 AnyFlow를 제안한다.
1. Paper Bibliography
논문 제목
AnyFlow: Arbitrary Scale Optical Flow with Implicit Neural Representation.
저자
Jung, Hyunyoung, et al.
출판 정보 / 학술대회 발표 정보
Proceedings of the IEEE/CVF Conference on Computer Vision and Pattern Recognition. 2023.
2. Problems & Motivations
Optical flow는 이미지 쌍에서 픽셀별로 수평 및 수직 이동을 추정하는 것이다. 이는 다양한 분야에서 활용되며, 딥러닝을 통한 방법은 뛰어난 결과를 보여주었다. RAFT는 correlation volume을 활용한 반복적인 업데이트 모듈을 사용해 작거나 빠르게 움직이는 객체에 대한 flow를 잘 예측했다. 이 correlation volume은 sub-pixel level에서의 feature correspondence를 잘 특징화하였다. 이를 기반으로 attention mechanisms, occlusion handling, large dispacements 등을 발전시키는 등 다양한 방법들이 제안되었다.
그러나 이러한 방법들은 작은 해상도의 이미지에서는 충분한 성능을 보여주지 못했으며, 이러한 이미지가 사용되는 모바일 기기 등에서 활용의 제한이 있다.
최근 LIIF 등을 통해 Implicit Neural Representation (INR)을 사용하여 이미지를 해상도에 제한 없이 연속 함수로 표현하는 방법이 제안되었다. 이에 영감을 얻어 AnyFlow는 임의의 크기의 입력에서 flow를 예측할 수 있는 continuous coordinate-based flow upsampler를 제안하였다. 더불어, 다양한 형태의 입력에 대해 모델이 잘 일반화되도록 하기 위해, multi-scale feature maps와 dynamic correlation lookup을 활용하는 warping scheme도 제안하였다.
3. Method
Problem statement
입력 이미지 $I_1$, $I_2 ∈ ℝ^{H\times W\times3}$이 주어지면 optical flow는 그 사이의 per-pixel motion fields $f ∈ ℝ^{H\times W\times2}$이다. 목표는 임의의 크기의 이미지 쌍의 flow를 implicit function으로 예측하는 것이다.
이 때 s는 임의의 scale factor이며 I는 모델로부터 얻는 함수이다.
Overview
AnyFlow는 RAFT를 기반으로 디자인되었다. 먼저 encoder에서 multi-scale의 feature를 추출한 후 correlation volume을 계산하고 residual flow를 모아 flow를 업데이트 한다.
3.1. Neural Implicit Flow Upsampler
Iterative refinement
RAFT를 따라, 네트워크는 1/8사이즈의 residual flow $\Delta f ∈ ℝ^{H/8 \times W/8 \times2}$를 만들고 GRU iteration을 통해 모은다. i번의 업데이트 이후 모은 flow $ f_i ∈ ℝ^{H/8 \times W/8 \times2}$는 $f_i = \Delta f_i + f_{i-1}$이다.
Local implicit image function
본 논문은 LIIF를 활용하여 입력 신호로부터 임의의 크기의 출력을 만들 수 있게 한다. 2D 연속 좌표 $x = (u,v)$에서 출력 신호 $o$는 디코딩 함수 $f_{θ}$를 통해 예측되며 이는 $o=f_{θ}(z,x)$인 MLP를 통해 파라미터화되어있다. 이 때 $z$는 2D feature map $M$에서 샘플링한 feature vector이며 $M$은 입력 이미지와 인코더 $E$를 통해 얻는다. 디코딩 함수는 feature encoding $z$에 따라 좌표 $x$를 매핑해주는 역할을 한다.
Upsampling in arbitrary scale
먼저 입력 이미지 쌍 $I_1, I_2$로부터 인코더 $E$를 통해 2D feature $M ∈ ℝ^{H/8 \times W/8 \times C}$를 추출한다.
RAFT와 유사하게, 고해상도에서 픽셀의 움직임은 coarse flow를 통해 표현한다. 이 움직임은 해당 픽셀이 속한 coarse flow 내의 3x3 local neighbors의 convex combination으로 표현되며 이를 $mask$라고 한다.
(Convex combination: 어떤 벡터 집합에 대해, 그 벡터들의 convex combination은 각 벡터에 0 이상 1 이하의 가중치를 곱한 후 그 결과들을 모두 더한 것이다 이 때, 모든 가중치들의 합은 1이어야 한다.)
좌표 $x_q$에 대한 마스크 $O$는 다음과 같다:
$z^*$는 $x_q$와 가까운 $M$의 feature vector이며 $v^*$는 $z^*$의 좌표이다.
그 다음 더 정밀한 flow 추정을 위해 입력 이미지의 좌표를 상대 좌표 $x_q - v^*$로 변환하고, 그 상대 좌표에 positional encoding $\psi$를 적용하여 MLP $f_{θ}$에 입력으로 넣는다.
출력 $O(x_q)$는 $3 \times 3 \times n^2$ 차원 벡터이며 여기서 coarse flow에서의 3x3 local neighbors의 convex weights이다. $n$은 고정된 하이퍼파라미터로, 이는 단일 쿼리 위치 $x_q$에서 높은 해상도에서 $n \times n$크기의 로컬 패치를 생성한다는 것을 의미합니다.
정리:
1. 이미지에서 얻은 feature $M$을 통해 continuous 2D grid를 만든다.
2. 이 grid에서 쿼리 포인트 $x_q$를 샘플링한다.
3. 하나의 쿼리는 flow의 한 픽셀을 $n \times n$ patch로 업샘플링하므로, 총 $\frac{H_o}{n} \cdot \frac{W_o}{n}$ 개의 쿼리 포인트를 샘플링해야 한다.
4. 쿼리 포인트를 $f_{θ}$에 넣으면 마스크 $O$기 생성되어 $H_{O} \times W_{O}$ 크기의 flow를 만들 수 있다.
ex)
8배의 업샘플링만 하는 RAFT와 다르게, AnyFlow는 샘플 수를 조정함으로써 이미지의 크기를 임의로 조절할 수 있어 더 큰 유연성을 제공한다.
3.2 Multi-scale Feature Warping
작은 객체를 잘 파악할 수 있는 RAFT의 능력은 1/8크기에 feature에 의존하기 때문에 제한적이다. 더불어 4D correlation volumes의 복잡성은 고해상도 features에서 이점을 얻는데 방해가 된다. 이를 해결하기 위해 warping을 통해 부분적인 cost volume을 계산하여 고해상도 feature을 효과적으로 사용할 수 있는 방법을 제안한다.
우선 feature extraction을 통해 multi-scale feature map $F^s$, $s ∈ {1/2, 1/4}$을 얻는다. 이미지 쌍에 대한 feature map $F^s_1$과 $F^s_2$이 주어지면 업샘플링된 flow $f^s_{i}$를 통해 $F^s_2$를 warp한다. 그 다음 $F^s_1$과 warp한 feature $W(F^s_2, f^s_i)$를 concat하고 1x1 convolution으로 채널 수를 조정한다.
Downsample by PixelShuffle
이후 PixelShuffle을 사용하여 feature의 크기를 줄인 후 GRU에서 얻은 feautres와 concat한다. 이를 통해 공간적인 정보를 많이 활용할 수 있고 동시에 크기를 줄일 수 있다.
3.3 Dynamic Lookup with Region Encoding
Fixed lookup in RAFT
RAFT는 각 $I_1$의 픽셀 $x$를 현재 flow를 사용해 $I_2$의 추정 픽셀 $x'$에 매핑한다. 이는 $x' = x + f_i$로 표현할 수 있다. 이는 $x'$ 주변의 로컬 그리드를 반경 r내의 정수형 오프셋으로 보고 correlation volume의 각 그리드 위치에서 값들을 샘플링한다. 이때 r은 정해진 숫자로 고정되어 있다.
Dynamic lookup
이를 다양한 사이즈로 보기 위해 Dynamic lookup을 제안한다. 만약 r이 커진다면 큰 변화에 대해 잘 대응할 것이며 작은 r은 작은 움직임이나 객체에 잘 대응할 것이다. Dynamic lookup은 이를 위해 lookup range를 예측하고 업데이트 한다. 이를 위해 flow를 업데이트 하는 것처럼 r 역시 residual radius $\Delta r$을 예측하며 $r_i = \Delta r_i + r_{i-1}$형태로 쌓아간다.
Region encoding
$r_i$가 업데이트되면서 범위가 커지면 blindspot이 생길 수 있다(그림 4(b)). 이를 완화하기 위해 region encoding을 제안한다. 사용하려는 그리드 위치를 중앙으로 두고 주위에 3x3크기의 보조 포인트를 정의한다. 이 후 encoding function $g_{θ}$를 두어 각 보조 포인트가 하나의 correlation value를 가지게 한다.
3.4 Multi-scale Training.
학습시 랜덤으로 RGB 이미지를 downsample한다. AnyFlow는 다운샘플링된 입력을 받아 원래 크기의 출력을 생성하며 RAFT loss를 통한 supervised learning을 한다. 이는 여러 iteration에서의 flow 예측을 gt와 비교하여 L1 거리를 최소화하는 것이다. (RAFT가 여러번 반복하며 flow를 refine하는데 이를 고려한다는 것)
4. Experiments
1) Pretrain: FlyingChairs 120K iters -> FlyingThings 240k iters (batch 16)
2) Sintel과 KITTI-2015에서 평가해 일반적인 성능 확인
3) Finetuning for Sintel online benchmark : Sintel + FlytingThings + KITTI + HD1K 120K iters (batch 8)
4) Finetuning for KITTI online benchmark : KITTI 100k iters (batch 8)
Results
Google Scholar Link
https://scholar.google.co.kr/scholar?hl=ko&as_sdt=0%2C5&q=AnyFlow%3A+Arbitrary+Scale+Optical+Flow+with+Implicit+Neural+Representation&btnG=
GitHub
-
YouTube
https://www.youtube.com/watch?v=wykpSvssilA
댓글