INTRODUCTION
이번 ICRA2020에서 AwardPaper로 선정된 한양대학교 임종우 교수님 연구실의 논문이다. ICRA2020에서 관심있는 페이퍼 리스트를 선정하기가 어려워서 수상한 페이퍼들위주로 (특히, 한국대학들 먼저) 리뷰를 진행할 예정이다.
우선 이 논문은 Fisheye camera를 기반 Omnidirectional localization과 dense mapping 시스템을 구축한 논문이다. 해당 논문에서 이야기하는 Contribution은 다음과 같다.
- 저자는 효율적이면서도 정확한 Omnidirectional depth estimation 네트워크를 제안하고 있다. 저자는 이전 연구보다 처리속도가 빠르고 파라미터 수가 적으며 높은 성능을 나타내고 있어 실용적이라고 이야기한다.
- 저자는 depth map estimation module과 a loop closing module이 추가된 강인한 Omnidirectional visual SLAM 시스템을 설계하였다. 이는 이전의 연구보다 챌린지한 실내와 대규모의 실외 환경에서도 더 높은 정확도를 나타냈다.
- 저자는 Omnidirectinal localization과 dense mapping system을 통합한 방법을 소개한다. 그리고 이 방법은 실제 실내외 환경에서도 다양한 장면에 대해서 well reconstructed 3D dense map 생성하였다.
METHOD
현 논문에서 전방위 SLAM을 수행하기 위한 Flowchart이다 각 모듈에 대한 디테일은 후에 하나씩 풀어서 설명한다. 큰 흐름을 먼저 파악해보면 가장먼저 Fisheye Images를 입력으로 넣고 이를 가지고 Depth Estimation을 수행한다. 그리고 예측한 Depth와 Visual Odometry를 통해 카메라의 Motion을 추정한다. 그리고 이렇게 구한 Motion과 Depth Map을 가지고 Dense Mapping을 수행한다. 이때 Omnidirectional stereo system을 위한 Loop Closing을 설계하였다.
Omnidirectional Depth Estimation
2019 ICCV에서 현 논문의 저자는 4개의 어안렌즈 카메라를 통해 촬영한 영상의 stereo matching을 수행하는 네트워크 OmniMVS를 발표했다. 현 논문에서는 OmniMVS를 더 가볍고(빠르고) 더 높은 성능을 나타내도록 개선한 OmniMVS+ 네트워크를 제안한다. OmniMVS+는 OmniMVS와 비교해 다음과 같은 개선점을 가진다.
- 더 나은 학습을 위해 negative features와 invisible regions을 구별하였다.
- disparity regression의 적용을 통한 높은 정확도의 depth map 생성
- 일부 채널을 제거하여 네트워크가 가벼워지도록 개선하였다.
1. negative features와 invisible regions을 구별하였다.
OmniMVS 네트워크에서는 invisible regions의 경우 warping에 의해 negative features의 경우 ReLu에 의해서 모두 값이 0으로 표기돼, invisible regions과 negative feature를 구별할 수 없었다. 이러한 부분을 개선하고자 OmniMVS+에서는 ReLU가 없는 Conv을 추가하여 enegative의 값이 0이 아니도록 하고, 이를 통해 negative feature와 invisible regions을 구별할 수 있었다. 이를통해 Negative feature를 구별해 정확도를 높일 수 있었다.
2. disparity regression의 적용을 통한 높은 정확도의 depth map 생성
OmniMVS에서는 L1 loss를 통해 구한 integer 형태의 output depth index와 반올림한 만든 GT index의 차이를 최소화 하도록 학습을 진행하였다. 반면 OmniMVS+에서는 disparity regression을 적용하고 모든 경우의 가중합으로 output index가 만들어지도록 하였다. 이를 통해 quantization error를 줄이고 더 높은 정확도의 depth map을 생성할 수 있었다.
3. 일부 채널을 제거하여 네트워크가 가벼워지도록 개선하였다.
기존 OmniMVS를 사용할때 네트워크의 사이즈를 1/ 2W × 1/2H × 1/2N × 4C (C = 32 )까지 키워야했다. 이론인해 OmniMVS는 거대한 GPU 메모리와 computational resources를 요구했다. 따라서 저자는 OmniMVS를 경량화하여 더 실용적인 OmniMVS+를 만들었다. 네트워크의 경량화 방법으로는 채널의 수를 감소시켰다.
Ominidrectional Visual SLAM
실제 앞서 개선한 OmniMVS+로 SLAM을 수행한는 방법에 대해서 설명한다.
1. Visual odometry에 depth map을 추가하였다.‘
예측된 depth값을 가지고 hybird projection 이미지에 다시 Projection 한다. 그리고 이 값으로 Omidirectional visual Odometry를수행한다.
2. Omnidirectional stereo system을 위한 Loop closing을 제안했다.
SLAM에서 많이 사용되는 LOOP closing은 이전에 방문했던 위치를 다시 방문했을 때, 같은 위치임을 인식하고 현재 위치에 대한 uncertainty를 줄이는 방법을 이야기한다. 기존 SLAM과 다르게 이 논문은 Omnidirectional SLAM이기 때문에 이에 알맞는 Loop closing 기법이 필요하고, 저자는 이 Loop Closing 제안한다. 저자는 Loop Closing에 처음으로(?) vocabulary tree를 사용하였고, 360도 카메라를 사용하기 때문에 360도 모든 방면에서 관측되는 모든 기술자를 축적해 place recognition을 수행하였다. 이때 해당 시스템은 filp이나 skew는 발생하지 않는다고 가정하여 rotation이 일어나는 경우들을 모두 고려해 피처간 매칭을 수행하였다.
TSDF-based Dense Mapping
저자는 최종적으로 앞서 Depth Estimation을 통해 추정한 Depth와 Ominidrectional Visual SLAM 과정에서 구한 Pose 값을 통해서 Dense Mapping을 수행하였다. Dense Mapping에는 TSDF 수식을 사용하였는데, Voxblox library에 있는 TSDF integrator를 reproduce하여 single CPU core에서 실시간으로 처리가 가능하도록 하였다. 또한 *Voxel을 linear drop-off strategy를 통해 carving 하였다. 해당 논문에서 이야기하는 시스템은 360도로 충분히 표면을 관찰하기 때문에 Mapping 결과를 신뢰할 수 있다고 이야기한다. 실제 이러한 시스템을 통해서 왕십리 데이터셋을 구축하고 실험적인 결과를 증명하며 논문은 마무리된다.
*Voxel : 복셀은 체적 요소이며, 3차원 공간에서 정규 격자 단위의 값을 나타낸다. 복셀이라는 용어는 부피 와 픽셀 을 조합한 혼성어이다. 이것은 2차원 이미지 데이터가 픽셀로 표시되는 것에 대한 비유이다. 복셀은 의료 및 과학 데이터 시각화 및 분석에 자주 사용된다.
한양대학교 임종우 교수님 연구실도 ‘360도 어안렌즈 카메라’라는 어떻게 보면 새로운 시스템 체계에 현재 활발히 연구가 진행되고 있는 연구들을 접목시켜 새로운 방향을 제시하고 있는 부분이 높게 평가 받는것 같다고 생각이 든다. 남들이 잘 구축해놓은 시스템에서 자신의 아이디어를 추가해 성능을 높이는 것도 학회에 기여하는 것이 될 수 있지만, 이처럼 남들이 잘 접근하지 않는 시스템에 체계를 새롭게 구축하고 연구의 방향을 확장시키는 것도 학회에서는 큰 기여일 것 같다는 생각이 들었다. 비슷한 맥락으로 최유경 교수님도 ‘Thermal 카메라’라는 새로운 시스템 체계를 구축한것이고 이러한 점들이 학회에서 인정받는게 아닐까라는 생각도 함께 할 수 있었다. 이와 같은 선구자들의 모습처럼 나도 나만의 새로운 정체성을 찾는 연구자가 되겠다고 생각했다.
2. Omnidirectional stereo system을 위한 Loop closing을 제안했다. 부분에 질문 드립니다.
닫혀진 경로를 이용하여 localization의 오차를 수정하는 방법을 slam에서의 Loop closure라고 이해를 하고 있었습니다. 여기서 언급된 Loop closure 방법은 고정된 위치에서 카메라를 360도 회전하는 방법으로 오차를 수정하는 식인거 같은데…. 아닌가요???
생소한 방법들과 많은 기술들이 들어가서인지 이해하기가 어려운 논문으로 보이는데 리뷰하느라 고생하셨습니다.
Loop closure는 결국 SLAM 중 기존에 지나간 경로를 다시 지나칠경우 매칭을 통해서 shift 된 경로를 제대로 다시 맞추는것 입니다. 흔히 SLAM관련 데모를 보면 자동차가 한바퀴 돌아 시작부분으로 돌아오면 실제 SLAM에서는 약간의 격차가 발생해 완전히 닫힌 Loop을 만들지 못합니다. 이떄 매칭을 통해서 자신이 지나간 경로라는 것을 파악하면 이를 연결시켜서 온전한 Loop으로 만들어주는 것이라고 생각하시면 됩니다. 현 논문에서는 4개의 어안렌즈 카메라를 통한 360 뷰를 커버하는 Omnidirectional streo 시스템에서 사용할 Loop closure 모듈을 제안하고 있습니다. 해당 세팅의 카메라를 통해서 360 모든 방면에 대해서 vocabulary tree를 만들어 가지고 있다가 실제 기존에 지나간 장소와 매칭되는 장소를 찾으면 이를 통해 경로를 업데이트하고 오차를 수정해 경로가 이어지게(닫히게) 만듭니다. 현 논문에서는 이미지 매칭과정에서 나타날 수 있는 이미지의 변화가 자동차가 회전하는 경우 밖에 없기 때문에 실제 360도 rotation하면서 이미지의 매칭여부를 판단하는 것을 이야기하는 내용입니다. (당연히 자동차가 뒤짚힐 일은 없으니 Flip과 같은 상황은 없다고 가정합니다.)
실제 카메라를 360도 회전하는게 아니라 4개의 카메라를 통해서 얻는 360도의 경우의 수를 조합한다고 생각하시면 됩니다. (1-2-3-4) (2-3-4-1) (3-4-1-2) (4-1-2-3) 이와같이요
negative feature가 무엇인지 알 수 있을까요?
감사합니다
음수 값을 가지는 feature를 의미합니다. 실제 feature output에서 음수값이 나오면 Relu에 의해서 0이되고있는데 이로인해서 중간중간에 0이 많이 나오게 되고, 이를 warping에 의해서 0으로 처리되는 부분과 구별할 수 없었습니다. 그래서 이를 구별시켜준 것입니다.
맨 처음 그림에서 Loop closing 과 Dense mapping 사이에 post processing 이라는 과정이 따로 나와 있어 그런데 이는 Loop closing으로 후처리를 한다는 뜻으로 받아들이면 될까요? 아니면 그 외의 적용된 방법이 있는 것 인가요? 혹시 그 외의 방법이 있다면 알려주실 수 있을까요?