결국에 하드웨어 상의 문제로
pwc-net 사용이 안되네요.
하드웨어 api는 볼 방법이 없네요..
그래서 이번에는 다른 논문을 검토해보고자 합니다.
optical flow 필요하긴 한데 찾는게 쉽지가 않네요..
layer 수정도 필요하고 여튼 시작해봅시다.
다음 논문 역시 optical flow 관련 논문이 될것 같습니다.
Abstract
opitcal flow는 본질적으로 2D search problem이죠. 그리고 그에 따라 computational complexity가 search window에 따라 quadratically하게 증가하고, large displacements matching을 high-resolution에 대해 실현 불가하죠. 이 논문에서는, Transformers로 부터 영감을 받아 computation이 상당히 감소된 high-resolution optical flow에 대한 method를 제안하죠. 구체적으로, 1D attention operation이 target image의 vertical 방향으로 적용되고 그리고 난 뒤 attended image의 horizontal 방향에서 간단한 1D correlation이 2D에 대응하는 modeling 효과를 achieve할 수 있게 해주죠. attention과 correlation의 방향은 exchanged 될 수 있고, optical flow estimation를 위해 concatenated된 3D cost volumes를 생성하죠. 1D formulation은 competitive performance를 유지하면서 저자들의 방법을 high-resolution input images로 scale해주는 저자들의 방법을 empowers합니다. 성능을 좋았다고 하네요.
Introduction
Optical flow estimation은 computer vision에서 classic topic인데요, 3D reconstruction, video processing, action recognition과 같은 real-world applications의 기초적인 building block이죠. deep learning의 진보는 NN을 활용하여 optical flow learning을 직접적으로 가능하게 했는데요. architectures와 training strategies 가 향상했기 때문에, deep learning 기반 methods는 traditional optimization based approaches에 보다 빠른 추론 속도와 좋은 성능을 보여주고 있죠.
deep learning based optical flow frameworks에서 essential component는 cost volume인데요, 두 feature vectors 간의 dot product operation에 의해 계산되죠 ( correlation 으로 알려져 있기도 합니다 ). cost volume은 source image와 target image에서 potential correspondece candidates의 각 pixel 간의 matching costs를 저장합니다. 명시적으로 search space를 encodes하는 cost volume layer를 constructing함으로써, network는 relative pixcel displacements에 대해 더잘 추론하도록 학습되죠. FlowNetC가 correlation layer가 없는 FlowNetS 보다 성능의 우월성을 보여주는 것처럼 말이지요.
FlowNetC에서 original cost volume은 single scale로 설계되었죠. 그리고 이는 search window에 대해 quadratic complexities 때문에 large displacements를 modeling하는 데 어려움이 있었고요. PWC-Net은 이 문제를 coarse-tofine warping framework에서 multiple partial cost volumes를 설계함으로써 다뤘죠. 그러나, coarse-to-fine methods는 small objects를 놓치는 경향이 있죠. highly-downsampled coarse scales에서 visible되지 않기 때문이고요. 따라서 올바른 추정이 힘들죠. 게다가, warping은 occlusion regions에서 artifacts를 도입했죠. 그리고 이것은 network가 correct correspondences를 학습하는 것을 잠재적으로 방해하죠.
SOTA optical flow method는 RAFT인데요, single-resolution feature map을 유지하고 점진적으로 flow updates를 iterative manner로 추정합니다. 기존의 coarse-to-fine frameworks의 several limitations를 제거했습니다. RAFT에서 key component는 4D cost volum ( H x W x H x W )인데요. all pairs의 correlations를 계산함으로써 얻어지죠. 이런 large cost volume 덕분에, RAFT는 최고의 성능을 뽑냅니다. 그럼에도 불구하고, 4D cost volume requirement는 image resolution에 대한 quadratic complexity 때문에 high-resolution inputs를 scale하는데 문제가 있죠. 비록 이 문제는 downsampled images를 처리함으로써 부분적으로 완화될 수 있지만, 몇몇 fine-grained details는 몇몇 시나리오에서 매우 중요할 수 있죠 ( ball sports나 자율주행), fine-grained details는 downsample과 같은 과정에서 소실됩니다. 게다가, custormers level의 high-definition cameras의 인기로, 전보다 고해상도의 videos를 얻기 쉬워졌고, 고 해상도 videos를 high efficiency로 처리하고자 하는 수요가 생기고 있죠.
이를 위해, 저자들은 새로운 cost volume construction method를 제안하죠. 이는 high-resolution optical flow estimation을 위한 것이고요. 저자들의 key idea는 2D search를 두 개의 1D 요소로 분해하는 겁니다. 수직, 수평 방향으로 말이죠. 이로 인해 저자들은 compact cost volume을 construct하는 1D correlations를 사용할 수 있게 됩니다.
직관적으로, 1D correlations는 optical flow estimation을 위해 충분하지 않죠. optical flow estimation은 본질적으로 2D search problem이니까요.
그러나 Fig 1.에서 보여주듯이, 만약 target image에 대해 information을 correlation direction으로 직교 방향에 따라 propagate 할 수 있다면, computed cost volume은 source pixel 과 correspondence 간의 의미있는 correlation을 포함하게 되겠죠. 이 insight는 저자들이 1D correlation을 위한 proper feature propagation과 aggregation scheme를 설계하도록 만들었죠. Transformer에 영감을 받아서, 저자들은 앞서 언급한 propagation을 attention mechanism을 통해 학습하도록 제안했죠. attention mechanism에서 저자들은 1D self attention을 source feature에 대해 먼저 적용합니다. ( Fig.1에서는 명확하게 설명하고 있지 않죠 ) 그리고나서 source와 target features 간의 1D cross attention을 적용하죠.( Fig 3에서 볼 수 있죠 )
저자들의 1D formulation 은 두 개의 3D cost volumes를 생성하는데요, 각각 사이즈는 H x W x W 그리고 H x W x H 입니다. 그리고나서 subsequent optical flow regression을 위해 concatenated 되죠. 이런 방식으로 저자들은 all-pair correlation의 complexity를 줄일 수 있죠 . O ( H x W x H x W ) 에서 O ( H x W x ( H + W ) )로 말이죠. 그리고 이는 상당히 적은 computation를 활용해 very high-resolution로 scale 할 수 있게 해주죠. 예를 들어보자면, 저자들은 방법은 RAFT에 비해 6x 적은 메모리를 사용합니다. 1080p 에서 말이죠. 저자들은 4k images에 대한 flow results를 보여주죠, 32 GB memory를 가진 GPU를 활용하면 8K 이상의 해상도에 대해서도 처리가 가능하죠. 그러나, 성능면에서는 RAFT보다는 조금 떨어집니다. 물론, FlowNet2나 PWC-Net을 뛰어넘긴하지만요.
Our contributions
1. 저자들은 혁식적인 cost volume constrction method를 사용합니다.
2. 1D correlations를 활용해 설계한 cost volume이 다소 비직관적이긴 하지만, SOTA에 견줄만한 성능을 달성합니다.
3. RAFT에 비해 성능이 약간 낮지만 메모리 소모가 적고, 고 해상도의 이미지를 다룰 수 있습니다.
Related work
optical flow는 전통적으로 optimization problem으로 공식화 되왔죠 ( 아마 15년 epic flow가 마지막일거에요 ) 전통적인 방법과 비교하고 평가하는 것은 다른 논문에서 찾아볼 수 있죠. 이번 section에서는, 저자들은 다른 관점으로부터 recent learing based methods를 review합니다.
Cost volume
cost volume의 개념은 stereo matching literature로 거슬로 올라갑니다. cost volume은 different pixel displacemet candidates에 대한 matching cost를 각 pixcel coordinate에 저장하죠. ( 예를 들면 disparity in stero ) 따라서, cost volume은 stereo matching에서 3D tensor( H x W x D )이죠. 여기서 D는 maximum disparity range입니다. cost volume은 search space의 discriminative representation으로 여겨집니다. 그리고 powerful optimization methods가 outliers를 filter하기 위해 사용되죠. 따라서 이것은 대게 accurate results를 야기하죠.
cost volume의 effectiveness는 optical flow community에도 이점이 있죠. trainditional은 물론 learning based methods에서도 말이죠. 그러나, stereo에서의 1D disparity와 다르게, optical flow에서 search space는 2D이죠. 따라서 4D cost volume을 생성하고요 ( H x W x ( 2R + 1 ) x ( 2R + 1 ) ) . 여기서 R은 search radius를 뜻하죠. 4D cost volume은 computational expensive하죠. 이 문제를 완화하기위해, popular strategy는 coarse-to-fine warpings schemes를 사용하는 겁니다. 그러나, coarse-to-fine methods는 fast-moving small object를 놓치는 경향이 있죠.( 덧붙여서, 나오지는 않았지만, fine에서의 오류가 잔류한다는 문제도 있답니다 ) 최근, RAFT는 4D cost volume를 construct할 것을 제안합니다. all spatial correlations를 계산함으로써 말이죠. SOTA performace에도 불구하고, RAFT는 본질적으로 input resolution에 의해 제약을 받습니다. quadratic complexity 때문이죠. 반면에 저자들은 2D optical flow를 1D attention과 correlation을 활용해 factorize하죠. 이는 complexities의 감소를 이끌고 고 해상도의 이미지를 다룰 수 있게 해줍니다.
Flow regression scheme
Top-performing learning based optical flow methods는 대게 유사한 structure를 공유하죠. coarse flow로부터 시작해서 estimate하고 그런 다음 점진적으로 initail prediction을 refining하죠. 이들은 broadly하게 2 가지 categories로 분류될 수 있습니다 : non-iterative와 iterative methods죠. 여기서, 저자들은 non-iterative 를 refinemet networks가 own trainable weights를 가지고 있다고 표기한 반면 iterative는 network weights가 각 refinement stage에서 공유한다고 말합니다. Representative non-iterative frameworks는 FlowNet2, PWC-Net과 그들의 변형이고, IRR-PWC와 RAFT는 iterative methods의 대표적 2가지 이죠. IRR-PWC는 coarse-to-fine framework에서 제한된 수의 iterations를 활용해 flow를 estimate하는 convolutional decoder를 공유합니다. 반면, RAFT는 ConvGRU를 사용하고, 많은 iterations를 architecture에 적용하죠. 이 논문에서는 저자들은 RAFT's의 framework을 활용해 자신들이 제안한 cost volume construction method의 effectiveness를 입증합니다. RAFT's framework가 compactness하고 good performance를 보여 선택했다고 합니다. 그러나, 이론적으로 , 자신들의 key idea는 채택된 flow regression scheme 에 orthogonal이라고 합니다.
Attention mechanism
Attention mechanism은 long-range dependencies를 modeling하는데 있어 주목할만한 성공을 이룩했죠. 그러나, 주요한 한계를 가지는데, coputational complexity가 input size에 관해 quadratically하게 증가한다는 점이죠.이 문제는 더 심각해질 수 있습니다. attention을 vision task에 적용하면 더 그렇죠. image pixels의 수가 많으니깐요. 많은 연구가 attention의 complexity를 줄이고자 했습니다. sparse connection patterns, low-rank approximations, recurrent operations 들이 다 이런 연구의 일종이죠. efficient attention mechanisms의 review는 다른 논문에서 볼 수 있습니다. 이 methods 중에, vision에서 자신들과 관련된 것은 CCNet과 Axial-Deeplab인데요. 둘 모두 global dependency modeling을 위해 1D self attention을 사용했습니다. CCNet과 Axial-Deeplab에서의 sefl attention과 다른점은 저자들은 large displacement correspondence search를 achieve하는 1D cross attention과 1D correlation을 source와 traget 쌍에 대해 사용했다는 점입니다. 게다가, output은 matching costs를 명시적으로 model하는 cost volume입니다. 변면 CCNet과 Axial-Deeplab은 featuremap을 출력하죠.
Optical Flow Factorization
optical flow는 본질적으로 2D search problem입니다. 그러나 2D image space에 대해 searching하는 것은 computationally intractable하죠. search window에 대해 quadratic complexity때문에 large displacement에 관해서가 그렇습니다. 예를 들면, potential search space는 range [-50,50]에 대해 10^4 piexels 까지 입니다. 이 문제는 고해상도 이미지에서 더욱 두드러집니다.
고해상도 이미지에서 optical flow estimation을 가능하게 하기위해, 저자들은 2D search space를 두 개의 1D directions로 가정할 수 있다는 것을 발견했죠. Fig 1.에서 보여준 것처럼, blue와 red points 간의 2D correspondence modeling effect를 이룩하는 하기 위해, 저자들은 먼저 red point의 정보를 green one으로 propagate합니다. green one은 blue point와 같은 row에 위치하죠. 그러고 난뒤 1D search가 horizontal 방향으로 red point의 information을 cpature할 수 있죠.
이런 측면에서, 저자들은 1D attention과 1D correlaion을 활용해 2D optical flow를 factorize하는 것을 제안합니다.이는 고해상도 이미지에 대해 large dispalcements search를 가능하게 해주죠. 구체적으로, 저자들은 먼저 1D attention을 수직방향으로 수행합니다. 같은 열에 있는 pixels의 weighted combination을 계산하는 거죠. 그러고 난다음 simple 1D correlation을 horizontal direction으로 수행하여 2D search effect를 보일 수 있게 되죠. cost volume은 3D 입니다. stereo methods와 유사하죠. attention과 correlation의 방향을 바꿔서, 또 다른 3D cost volume을 얻을 수 있습니다. 이 두 개의 cost volumes는 optical flow regression을 위해 concatenated 되죠.( Fig. 2에서 볼 수 있습니다 )
다음으로, 저자들은 1D vertical attention와 1D horizontal correlation을 활용한 horizontal cost volume에 대해 상세히 설명합니다. vertical counterpart 역시 유사하게 유도됩니다. source와 target images I1과 I2에 대해, shared convolutional backbone은 features를 extract하는데 사용됩니다. 그러고 나서 featrue lovel에서 cost volume을 construct하죠.
1D Attention
source 와 target featrues, F_1, F_2 ( H x W x D ) 에서, H, W, D 는 각각 height, width, dimension을 나타냅니다. 저자들의 목표는 새로운 feature hat F_2를 만드는 건데요. hat F_2에서 모든 feature vector는 F_2에서 같은 열에 있는 points의 features 를 인식합니다. 이러한 방식으로, 저자들은 2D correspondence modeling effect를 달성하는 simple 1D search를 horizontal direction을 따라 수행할 수 있죠.
구체적으로, hat F_2를 F_2로부터 column-wise features의 linear combination 이라고 정의합니다. 식으로 표현하면 아래와 같죠
여기서 h = 0, 1, ... , H-1, w = 0,1, ... , W-1 입니다. hat F_2(h,w)는 postion (h,w)에서 output feature vector입니다. f_i,h,w는 combination weight이고요. 이 formulation에서 key는 subsequent 1D correspondence search에 도움을 주는 column-wise information을 aggregate할 수 있는 f_i,h,w,를 찾는 방법에 따라 결정되죠. Transformers의 성공에 영감을 얻어, 저자들은 combination coefficients를 attention mechanism을 활용해 학습시킬 것을 제안하죠.
그러나, all pair-wise similarities를 계산하는 original attention과는 다르게, 저자들은 1D attention을 axis-aligned manner로 수행합니다. Fig 3. 에서 설명하다시피, attention operation의 목표는 red point의 information을 green point로 propagate하는 겁니다. green point는 blue point와 same row에 위치하죠. 이를 위해, naive solution이 1D cross attention operation을 같은 열의 source와 target에 적용하는 겁니다. 이는 target feature aggreagtion이 source feature에 의존하도록 해주죠.
그러나, source에 same 열은 corresponding pixel을 포함하지 않죠. 이는 proper aggregation을 학습하는 것을 어렵게 만들고요. 이 문제를 해결하기 위해, 저자들은 먼저 1D self attention operation을 source feature의 horizontal direction으로 수행합니다. 그 뒤에 cross attention을 수행합니다. 이는 전체 row로 source image에 대해 corresponding point의 정보를 propagate합니다.
1D vertical cross attention의 computational graph는 Fig.4에 설명되어 있습니다.
inputs는 self-attended source feature 와 original target featur입니다. 저자들은 position information P ( H x W x D )을 attention computation에 도입하는데요. P는 fixed 2D positional encoding ( DETR 에서 볼 수 있는 ) 저자들은 먼저 두 개의 F_1+P 와 F_2+P를 embedding space ~F_1과 ~F_2로 project하는 1x1 convolutions 을 사용합니다. 그런 다음 vertical direction에 대해 attention matrix은 ~F_1과 ~F_2를 W x H x D로 각각 먼저 reshaping 하고 난 다음 matrix multiplication이 마지막 두 dimensions에 대해 수행함으로써 얻어집니다. softmax function을 활용해 last dimension을 normalizing 함으로써, 저자들은 attention matrix A ( W x H x H )를 얻습니다. 마지막 attended feature hat F_2는 last two dimensions에 대해reshaped target feature( W x H x D ) 를 이용해 matrix A를 multiplying함으로써 계산됩니다. W x H x D matrix을 H x W x D로 reshaping함으로써, 저자들은 final feature hat F_2를 얻습니다. 1D cross attention operation 후에, hat F_2에서 각 position은 same column에 위치한 positions의 information을 encode 합니다. 이 process는 1D horizontal self attention computation에 유사하게 적용될 수 있습니다. source features를 이용한 target features를 대체하고 width dimension에 대해 matrix multiplication을 수행함으로써 말이죠.
1D Correlation
vertically aggregated feature hat F_2를 활용해, 저자들은 3D cost volume C ( H x W x ( 2R + 1 ) )을 construct하는 simple 1D search를 horizontal direction에 따라 수행할 수 있는데요. stereo methods와 유사하죠. 저자들은 search radius를 represent하는 R을 horizontal direnction을 따라 사용합니다. 저자들은 아래의 식을 사용하죠.
dot은 dot-product operator를 표기합니다. r 은 { -R , -R + 1, ... , 0, ... ,R -1, R }이고 1/ root ( D ) 는 normalization factor이고 이는 dot product 이후에 large value를 피하게 해주죠. 저자들의 구현에서, 저자들은 size H x W x W 의 3 D cost volume을 미리 계산하는 데요. F_1과 hat F_2 간에 width dimension 에 대해 matrix multiplication을 수행함으로써 계산하죠. 그러고 난 다음 Eq(2)의 equivalent form이 search radius R을 활용한 3D cost volume에 대해 lookup operation을 수행함으로써 얻어질 수 있죠.
비록 저자들은 1D correlations를 수행함에도 불구하고, 저자들읜 방법은 2D correspondence를 model할 수 있죠. 이는 attention operation 때문이기도 하고요. 구체적으로, cost volume construction method의 이론적인 search range는 ( 2R + 1 )( H + W ) - ( 2R + 1 ) ^2 이죠. 이는 Eq (1)과 (2)를 이용하면 증명할 수 있죠.
여기서 f_i,h,w+r은 1D attention operation을 활용해 정의되죠. F_1( h, w ) dot F_2( i, w + r ) term으로 부터, 저자들은 position ( h, w )의 search range가 vertically하게 image height 이고 horizontally하게 maximum search radius R 이라는 것을 알 수 있죠. 그럼으로 , vertical attention과 horizontal correlation에 대해 이론적인 search range는 H ( 2R + 1 ) 이죠. 유사하게 horizontal attention과 vertical correlation을 수행하면, 저자들은 또 다른 cost volume ~ C ( H x W x ( 2R + 1 ) 을 얻을 수 있죠. 식은 아래와 같습니다.
이 경우에, 이론적인 search range는 W ( 2R + 1 )이죠. 이 두 개의 cost volumes를 H x W x 2(2R + 1 ) shape의 cost volume으로 concatenating 하면 theoretical search range는 ( 2R + 1 )( H + W ) - ( 2R + 1 )^2이 됩니다. ( 2R + 1 )^2은 이 두 cost voulmes의 overlapping area 죠.
기존 local window based approaches는 대체적으로 H x W x ( 2R + 1 )^2 shape의 cost volume를 construct하고 search range는 ( 2R + 1 )^2이죠. 그럼으로 저자들은 method가 더 큰 theoretical search range를 사용합니다. 물론 cost volume은 훨씩 작죠.
Flow Regression Framework
저자들은 자신들이 제안한 cost volume construction method의 effectiveness를 RAFT framework을 활용해 검증합니다. Fig. 2에서 설명했던것과 같이, 저자들은 먼저 8x downsampled features를 source와 target으로부터 extract하죠. 그러고 난 다음 두 개의 3D cost volumes를 construct합니다. 다음, shared update operator가 flow update를 추정하기 위해 반복적으로 적용됩니다. 각 iteration에서, correlation values의 set은 current flow estimat를 활용해 3D cost volume을 looking up 함으로써 생성되죠. context feature은 source image로 부터 additional network를 활용해 extracted 되는 데요. Fig 2를 참고하시면 됩니다. estimated flow와 context feature 에 대한 correlation이 ConvGRU의 입력으로 주어집니다. 이는 flow update를 produce하죠. 여기에 current flow estimate이 더해지죠.
저자들의 framework은, lookup operation을 current flow estimate을 활용한 pre-computed cost volume을 indexing함으로써 정의하는데요. 구체적으로 만약 current flow estimate 가 f = ( f_x, f_y) 라면, lookup center는 ( h, w )에 대해 ( h + f_y, w + f_x ) 가 되죠. 3D cost volumes를 horizontally , vertically index합니다. 이 때 search range는 R이죠. 그럼 두 개의 3D cost volume ( H x W x ( 2R + 1 ) )을 얻을 수 있고 이 두 cost volume은 optical flow regression을 위해 concatenated되죠. 저자들은 correlation lookup은 Eq ( 2 ) 와 같다고 설명하는데요. 이 때 correlation center가 ( h + f_y, w + f_x )로 바뀌죠.
여기까지 하도록 하겠습니다.
읽어주셔서 감사합니다.
다음 글에서 뵐께요