2020 NAVER LABS Mapping & Localization Challenge 의 Indoor 트랙에 참가 하여 3등의 결과를 얻기까지의 과정과 소감을 기록하고자 합니다.
캡스톤의 주제를 Indoor 환경에서의 visual localization 으로 정하면서 본 대회 참가를 하게 되었습니다. 시작할 때, Visual localization 을 처음 해 보는 것이라 image retrieval 을 우선적으로 하게 되었습니다. 그러나 image retrieval 또한 처음하는 task 였기에 서베이하는데 시간이 많이 걸리기도 하고 challenge 에서 baseline이라고 설명한 rootSIFT+NetVLAD 도 잘못 이해해서 삽질을 하는 등 여러 한달 정도의 시간이 지나게 되었습니다. 이렇게 시간이 지난 후 어느정도 image retrieval 에 감을 잡게 되었고 여러 실험을 거치면서 좀 더 좋은 retrieval network를 찾아 내는데 시간을 쏟게 되었습니다. 이런 실험들 속에서 결과는 사실 맘에 들지 않았었습니다. Challenge 의 평가 metric인 (0.25m,10도 / 0.5m,10도 / 5m,10도) 기준으로 baseline 성능은 (33.15 / 39.42 / 70.47) 이었는데 retrieval 실험으로 얻은 제일 좋았던 결과가 (1.xx, 7.xx, 4x.xx) 정도로 baseline 에 많이 못미쳤기 때문에 retrieval 이 잘 되어가고 있는지에 대한 의심이 되기도 했었습니다. 그렇지만 학습할 때 positive*negative를 정하는 방식, 하이퍼 파라미터, 여러 종류의 network 에대해 많은 실험을 했기에 일단은 잘하고 있다고 생각을 하고 pose estimation 까지 하게 된다면 baseline 성능이 나올 거라는 가정하에 pose estimation 부분을 시작하게 되었습니다.
이전에 calibration, depth estimation 같은 내용들을 공부하긴 했었으나 pose estimation 은 처음 하는 부분이라 retrieval 과 마찬가지로 시작엔 헤매게 되었습니다. PnP 알고리즘을 사용하기 위해서는 이미지에 해당하는 3D point가 있어야하는데 test 이미지에 해당하는 3D point가 없어서 여러 다른 방법이 있는지 서베이를 하느라 시간을 보내기도 하고, 주최측에서 pose estimation 을 할 때 PnP 알고리즘을 사용했다고 언급했을 때 test 이미지의 3D point를 어떻게 얻을까를 고민하느라 시간을 보내기도 했으며, 일련의 방법으로 test 이미지의 3D point를 얻을 수 있게 되었을 때 가공과정이 느려 이를 가속화 하는 방법을 고민하느라 시간을 보내기도 했습니다. 이러한 헤매는 시간들이 retrieval 실험을 할 때부터 누적되어 지치기도 하고 무기력했던 적도 있었습니다. 잘 알지 못하는 내용들이라 어디가 문제인지도 모르겠고 감도 잘 안잡혔었습니다. 이러한 좌절 속에서 시간은 점점 흘러가고 있었지만 포기는 하고 싶지 않아서 문제가 매번 풀리지 않을 때 처음부터 디버깅하기 시작했습니다. 이전에 디버깅할 때는 빠르게 문제를 찾아내기위해 아주 자잘한 것은 넘어가며 큼지막한 모듈 별로 확인을 했는데 이번에는 문제를 해결하지 못했기에 처음부터 디버깅할 때 아주 자잘한 변수의 값까지 확인해나갔습니다. 모든 곳을 전부 훑어본 후에 문제를 해결할 수 있게 되고 헤매던 곳을 풀어나가면서 문제가 안풀려 무기력할 때 대처할 수 있는 방법을 배울 수 있었던 것 같습니다.
앞선 과정들 후에 몇몇의 오류를 수정하고 더 좋은 방법론을 추가하여 마감 전날에는 1등까지 순위가 오르기도 했었습니다. 그러나 마지막에 자만을 하게 되었고 (물론 하지않았더라도 뒤집힐 수 있었던 순위였지만) 항상 그랬듯이 자만에 따른 댓가로 마지막 날에 3등까지 순위가 떨어지게 되었습니다. 그래서 이 계기로 마지막까지 자만하지 않고 최선을 다하는 것이 중요하다는 것을 다시 한번 되새기게 되었습니다.
Challenge 를 참가하는 중간중간에는 저는 항상 제자리에 머물러 있는 줄 알았으나 끝나고 보니 처음 시작할 때의 저에 비해 꽤 성장했다는 것을 느끼게 되었으며, 다음 번 다른 task의 어떤 challenge에 참가하게 된다면 이번에 얻은 것들을 기반으로 좀 더 성장하며 1등을 목표로 하고자 합니다.
함께 참가했던 팀원들 모두 수고하셨으며, 4개월 간의 경험을 흐름대로 적고자 약간 두서가 없는 글일 수도 있었겠지만 읽어주셔서 감사합니다.