본문 바로가기
AIML 분야/Depth, Camera Pose, VO, SLAM 등

쓰는 중이다 [Camera Pose Estimation] 최근 논문 하나 살펴볼까

by 포숑은 맛있어 2021. 9. 10.
반응형

!

논문 리뷰라기보다는 주관적인 의견이나 다른 아는 내용들을 덧붙여서 주절거리는 글입니다.

직역보다는 내멋대로 의역이 많고, 건너뛴 내용도 있음

!

 

 

"Reassessing the Limitations of CNN Methods for Camera Pose Regression"
https://arxiv.org/pdf/2108.07260v1.pdf

 

여기에 말을 했었나 기억이 안나는데, 요즘은 camera motion estimation 모델을 개발중이다.

내가 자동차 관련 회사에 다니는건 아닌지라 자율주행을 연구하고 있는건 아니지만, VO는 주로 자율주행에 쓰는 것 같다.

 

아무튼 이 분야에서 최근 아카이브에 새로운 논문이 떴고, top recent 목록에 있기 때문에 읽어보도록 하자.

 

 

서론

Visual localization라는 분야에 대해 알고있는가?

이게 뭐하는거냐면, absolute camera position을 알기위한 기술이다. 다시 말해, rotation 및 translation 파라미터인 6 DoF를 뽑는거다. 이는 보통 자율주행 뿐만 아니라 그외에도 로보틱스나 spatial AR에서도 활용하는 기술이다. 아직 활발하다고 하기엔 어렵겠지만 매우 최근에 EndoSLAM과 같이 의료계에서도 도입하면서 퍼블릭 데이터셋도 릴리즈 되고있다.

 

그렇다면 기존에는 어떻게 풀었을까? 역시 가장 고전적이라고 하면 local feature를 뽑아 매칭하는 방법이나, SfM으로 뽑은 3d 포인트 클라우를 활용하여 RANSAC을 통해 에러를 최소화 하는 camera pose를 구하는 식이다. 이런 방식들은 높은 정확도를 보이나, 시간과 메모리 측면에서 비용이 많이 든다는 단점이 있다.

 

그러던 중, CNN이 흥행하면서 'PoseNet'이 나왔다. 이 모델은 6 DoF 값을 directly 바로 추정하도록 end-to-end 학습이 가능하게 설계되어있다. 이런 접근법의 매력포인트는 인퍼런스가 몹시 빠르다는 점인데, 3D 모델에 대한 인퍼런스가 필요 없기 때문이다.

 

초기에는 이렇게 성공했지만, 이를 지적하는 논문이 나왔다. "Understanding the limitations of CNN-based absolute camera pose regression." https://arxiv.org/pdf/1903.07504.pdf 이 논문인데, pose regression 모델들은 3D structure 기반의 기법보다는 단지 성능이 더 안좋은 image retrival에 더 가깝다고 한다. 왜냐하면 learning 기반의 기법들은 학습에서 봤었던 포즈 이상의 것들까지 extrapolate 하지 못하기 때문인데, 이게 특히 더 문제인 이유는 우리가 일반적으로 가지고 있는 테스트셋 또한 굉장히 정제된 배경이기 때문이다. (보행자가 그냥 걷거나, 카메라의 variation이 매우 작거나 등) 다시 말해, 학습 기반으로 바로 추정하려고 하는데 카메라 위치같은 경우 워낙 다양하다보니 generalization이 잘 안되는 것. 현존하는 데이터셋 또한 KITTI 정도인데, 좀 더 bias가 없는 다양한 데이터셋도 몹시 필요한 실정이다.

 

그렇다면 그런 다양한 데이터가 확보된다면 directly 추정하도록 딥러닝을 이용해 학습해도 generalization이 잘 될수 있을까? 논문이 바로 이 아이디어로부터 기인한다. 만약 random view에서 학습 할 수 있도록 데이터를 늘린다면? 하지만 이는 연산이 많이 들뿐더러, 성능이 오른다는 보장이 없다.

 

그래서 이 논문은 synthetic 이미지를 생성하기로 한다. 어떻게? probability-guided process를 거쳐서 train-test distribution의 gap을 줄이는 것이 핵심이다. 조금 더 자세히 이 논문의 contribution을 적어보면 다음과 같다.

 

  1. 이 논문 또한 Regression 기반의 방법을 채택하였는데, 그럼에도 불구하고 structured-based 기반의 기법에 준하거나 심지어 뛰어넘는 성능을 보이고 있다. Cambridge Landmarks 벤치마크에서의 실험결과를 보면, Active Search라는 기법의 성능을 능가한 것은 regression모델로서는 최초라고 한다.
  2. camera pose regression를 위한 새로운 파이프라인을 제시하였다.
  3. transformer 기반의 구조가 relative pose regression 하는데에 더욱 적합하며, 기존 MLP 방식을 이겼다고 한다.
  4. view synthesis를 통해 어떻게 localization 성능을 증가하는지를 이 논문에서 보여주는데, 기존에는 indoor, outdoor 벤치마크에서 같이 보여준 사례가 없다고 한다.
  5. 이 논문에서 제안한 것이 가장 크고 복잡한 데이터셋인 Street scene에서 image retrieval을 하는 최초의 regression 기반의 기법이라고 한다.

 

Related Works

<< Visual Localization>>

[Image Retrieval]

이거 보통 이미지 검색할때 쓰지 않나? 왜 난데없이 카메라 포즈추정에 나오는가?

왜냐면 image retrieval은 unseen query image들을 이미 알고 있는 포즈들을 통해 매칭함으로써 카메라 포즈를 추정하기 때문이라고 한다.

다만 이 경우에는 coarse estimation만 하며, 일반적인 place recognition에 사용한다.

그럼에도 불구하고 retrieval 기법들은 다양한 컨디션 속에서도 scalable하며 robust하다. 따라서 hierarchical localization이나 pose regression task에서의 첫번째 단계로 사용하고 있다.

 

[Structured-based]

SLAM, SfM와 같은 3D 모델에 의존하는 기법이다. 주로 local feature들을 추출하고 매칭하여 2D-2D correspondence를 얻고, 2D-3D point cloud로도 한다. RANSAC-loop와 함께 PnP와 같은 solver가 사용된다. 여기 해당하는 기법이 가장 높은 정확도를 보이는 편인데, 피쳐 매칭과 3D 리컨때문에 scalability가 제한적이다.

 

[Absolute pose regression]

이건 PoseNet에서 제안된 기법이며, CNN feature들을 가지고 바로 camera pose regression을 한다. 당연히 3D 모델같은건 명시적ㅇ으로 필요하지는 않고, 데이터로부터 알아서 3D scene 정보를 배우겠거니 하는 편이다.

개선을 위하여 geometric constraints를 추가하거나, uncertainty 등을 추가하기도 한다. 하지만 아까 언급한 그 논문에 의하면 이 방식의 기법들은 image retrieval에 더 가깝다는 문제가 있어 데이터셋에 overfitting되는 경우가 많다고 한다.

 

[Relative pose regression]

여기에 속하는 방법들 또한 3D를 모델은 사용하지 않으며, CNN을 활용한다. 대신 CNN의 피쳐를 가지고 이미지 사이의 relative pose들을 배우는 접근 방식이다. Test time에는 먼저 image retrival을 통해서 coarse pose prediction을 해주고, 여기에 Relative 정보를 추가하여 absolute pose를 배운다. 일반적으로 absolute 방식보다는 성능이 좋은 편이다. 왜냐면 딥러닝이 활용되는 부분인 relative pose의 경우는 train-testset간 distribution 차이가 그리 크지 않기 때문이다.

 

[Scene coordinates regression]

structure-based, regression-based 기법의 하이브리드 형태이다. 2D-3D를 위해 3D scene coordinates을 배우고, minimal solver를 사용하여 푼다. 성능이 몹시 좋으며, small scale에서는 잘 되며, large scale에서는 수렴하는데 실패하기도 한다. 그만큼 학습도 인퍼런스도 시간이 많이 걸리는 편.

 

<< View Synthesis >>

크게 두가지 방법이 있다.

1. surface modeling은 depth map, surface mesh와 같은 geometry 정보를 활용하여 3D structure를 새로운 view에 projection한다. 다양한 뷰를 잘 generalization 할 수 있다는 장점이 있으나 photo-realistic하지 못하다는 단점이 있다. 그래서 블렌딩 기법을 잘 활용하여 이미지의 퀄리티를 많이 개선하는 편이다.

2. volumetric and rendering 기반의 방식은 scene의 appearance를 implicitly & densly represent 하는 기법이다. 이렇게 말하면 뭔소리인가 싶은데, multi-plane images (해당 논문참조)라든가 NeRF (Neural Radiance Fields)와 같은 방식이다. NeRF는 저번에 CVPR 21 best paper인 GIRAFFE를 리뷰하며 잠깐 살펴봤었는데(해당 논문참조), 결국 MLP로 parameterized된 함수이며 3D point와 viewing direction을 RGB 및 density 정보로 맵핑하는 역할이었다. 중간에 sinusoid 함수를 가지고 L octave 단계만큼 position encoding도 해줬고. 아무튼 이런 방식은 굉장히 포토리얼리스틱한데, viewpoint 바뀌는 것에 대해서는 잘 generalization하지 못한다. 최근에는 uncertainty를 모델링함으로써 어려운 scene에서도 잘 일반화하도록 했다. 그럼에도 불구하고, volumetric 기법들은 학습 데이터를 많이 요하며, surface 모델링 기법보다 더 복잡하고 느리다.

 

지금껏 우리가 봐왔던 place recognition, pose verification, pose estimation같은 관련분야에 synthetic view를 활용하려는 시도가 많이 있었다. 먼저, 그냥 일반적인 Augmentation을 통해서는 in-plane transformation밖에 불가능했다. 그러나 depth prediction network를 통해 3D 정보를 이용하기도 했다. 하지만 이렇게 하면 할 수 범위가 여전히 제한적. 아까 언급한 그 문제점 지적했다는 논문 (Sattler et al.)은 multi-view geometry를 통해 grid기반의 pose densification을 했다. 아무튼 그 연구는 absolute pose regression과 retrival에서 성능개선이 있었다고 한다.

 

<< Transformers in visual localization >>

 

반응형

댓글