dev-writeup-2024 / january

개발 1일 1글 스터디
2 stars 0 forks source link

[01-05] Fast Optical Flow using Dense Inverse Search #30

Open Longseabear opened 11 months ago

Longseabear commented 11 months ago

[논문리뷰] Fast Optical Flow using Dense Inverse Search

Abstract

최근 optical flow 계산 작업들은 정확성에 초점을 맞추고 있으나, 추적, 활동 감지 등 실시간 처리의 필요성이 있습니다. 실제 시각적 응용에서는 시간 복잡도가 굉장히 중요하기 때문에 본 논문에서는 다음과 방법을 제안합니다.

  1. 역방향 탐색(Inverse search): 패치 대응 관계를 dense pixel에서의 inverse image warping을 통해 해결
  2. Dense moving filed: 결과는 dense한 optical flow
  3. 변분 정제(Variational refinement): 변분법을 활용하여 missing region smooth.

Dense Inverse Search (DIS) 방법의 핵심: 2001년 Baker와 Matthews가 제안한 역구성 이미지 정렬에 영감을 받은 효율적인 대응점 탐색.

Proposed method

Fast inverse search for correspondences

패치의 대응점을 효율적으로 검색하는 방법은 optical flow에서 중요합니다. 이번 장에서는 두 프레임 사이에서 단일 점 대응 관계를 추출하는 방법에 대해서 설명합니다.

$\theta{ps} \times \theta{ps}$크기의 patch에 대해서 query image가 $I{t+1}$, reference image가 $I{t}$라고 할 때, 다음 수식을 만족하는 vector $\vec{u} = (u,v)$를 찾는것이 목표입니다.

$$\vec{u} = \argmin{\vec{u}}[I{t+1}(x+u') - T(x)]^2 \dots (1)$$

여기서, T(x)는 template image($I_t$).

Non-linear 함수 이므로 비선형 최적화가 필요합니다. the inverse Lukas-Kanade algorithm을 통해 해결될 수 있습니다.

다음 두 과정을 반복합니다.

외부 이터레이션에서는 수식 (1)을 optimization을 통해 풉니다. 수식 (1)을 풀기 위해, 문제를 수식 (2)로 바꿔 $\triangle \vec{u}$를 구해 $u$를 업데이트 합니다.

$$ \triangle \vec{u} = \argmin{\triangle u'} \Sigma{x}{[I_{t+1}(x+u+\triangle u') - T(x)]} $$

알고리즘은 다음과 같습니다 (Dense Inverse Search).

1) Set initial flow field $U{\theta{ss}+1} \leftarrow 0$ 2) for $s = \theta{ss}$ to $s = \theta{sf}$ do

1. Create uniform grid of $N_s$ patches.
2. Initialize displacements from $U_{s+1}$
3. **for** $i=1$ to $N_s$ **do** 

    1. Inverse search for patch i
4. Densification: Compute dense flow filed $U_s$
5. Variational refinement of $U_s$

Dense inverse search를 위해 워핑 할때는 픽셀 레벨이 아닌 실수 레벨로 워핑합니다. 따라서 bilinear interpolation이 요구됩니다. 그 후, 파라미터는 $\vec{u} \leftarrow u+\triangle u$로 업데이트 됩니다.

기존의 루카스 카나데는 warping 된 이미지를 2차 헤시안을 이용하여 최적화하였지만, 해당 방법은 Inverse warping을 통해 다음 수식을 최적화하는 문제로 바꿀 수 있다는 장점이 있다.

$$ \Sigmax [T(x-\triangle u)-I{t+1}(x+u)]^2$$

핵심은 "중간에서 만나기!" 이다. $I_{t+1}(x+u)$는 내부 iteration에서는 fixed 되어진다.

위 방식의 단점은 search region이 $\theta_{ss}$ 크기로 제한된다는 점이다. 이럴땐 corase to fine 전략을 통해 점진적으로 scale을 키워가면서 optimization을 수행할 수 있다.

다중 스케일 접근 방식에서 패치를 독립적으로 최적화 하는 것이 아닌 각 레벨에서 중간 dense flow를 계산하고 patch를 다시 초기화 하는 형식을 취한다. 이유는 다음과 같다.

1) 중간 밀집 플로우 필드는 이동량을 평활화시키고 견고성을 제공하여, 효과적으로 이상치를 필터링합니다; 2) 더 굵은 스케일에서 패치의 수를 줄이므로 속도를 향상시킵니다.

알고리즘 절차

우선, zero flow로 시작합니다. 각각의 스케일 공간에 대해서 이전 스케일에서 계산된 u를 업샘플링하여 사용하게 됩니다. 그 후, inverse search를 통해 optimal displacement를 찾게 됩니다(argmin!).

위 세개의 step 진행 후, densification이 수행됩니다.

Fast Variational Refinement

현재 scale에서의 refinement를 수행한다. energy는 intensity와 graident data term($E_I, E_G$)과 이미지 도메인에서의 smoothness term($E_S$)이 있습니다.

전체 에너지 함수는 다음과 같습니다.

$$ E(U) = \int {\sigma \psi(E_i) + \gamma \psi(E_G) + \alpha \psi(E_S)} dx$$

여기서, $psi(a^2) = sqrt{a^2+\epsilon^2}, \epsilon = 0.001$. 이상치를 줄이는 역할을 합니다. (Robust penalizer!)

수식은 the brightness constancy assumption $(\triangledown^{T}_{3})u=0$ (이미지 어떤 지점에서 그 픽셀과 인접 픽셀들이 같은 색이나 밝기를 가진다는 가정) where $\triangledown_3 = (\partial x, \partial y, \partial z)$ is spatial-temporal gradient.

위 가정에 의해 intensity data term은 다음과 같이 모델링 될 수 있다.

$$ E_I = u^tJ_0u $$

밝기 일관성을 강화하기 위하여 $J_0=\beta_0(\triangledown3 I)(\triangledown^{T}{3}I)$을 사용합니다. ($\beta_0 = (||\triangledown_2 I||^2 + 0.01)^{-1})$

그래디언트 패널티 함수 $E_G$는 다음과 같이 정의됩니다. $$ EG = u^TJ{xy}u$$

where, $J_{xy} = \beta_x(\triangledown3I{dx})(\triangledown^T{3}I{dx})+\beta_y(\triangledown3I{dy})(\triangledown^T{3}I{dy})$ and $\beta$ is noramlization param.

the smoothness term은 gradient magnitude가 됩니다.

$$ E_S = ||\triangledown u|| + ||\triangledown v||$$

Non-convex energy function $E_U$는 fixed point iteration을 통해 최소화되며, 각 iteration 마다 linear system을 풀기 위해 SOR이 사용됩니다.

Derivation of the fast inverse search

해당 논문은 inverse search를 통해서 best matching point를 탐색합니다. $W(x; u)$를 $x$지점에서 motion vector $u$를 이용한 워핑이라고 볼 때, 최적화 하고자하는 수식은 다음과 같습니다.

$$ [I_{t+1}(W(x; u))-T(x)]^2 $$

warp parameter $u$는 다음과 같이 정의 됩니다.

$$\Sigmax [I{t+1}(W(x; u+\triangle u))-T(x)]^2$$

해당 수식은 비선형방정식 최적화를 위해 사용되는 Gauss-newton gradient descent minimization으로 해결됩니다.

$$ x_{k+1} = x_k - \frac{F(x_k)}{J(x_k)}$$

where $J$는 야코비안 행렬.

myeongJJi commented 11 months ago

한글과 영어와 숫자 잘 읽었습니다👍

snaag commented 10 months ago

한글과 영어와 숫자 잘 읽었습니다👍 (2)