18. Hierarchical Localization

Mở đầu

Tham khảo Hierarchical Localization model từ https://github.com/cvg/Hierarchical-Localization (winner of indoor/outdoor localization challenges at CVPR 2020ECCV 2020) và xem trong đó có gì:

Được build theo COLMAP pipeline, nhưng không xài COLMAP để dựng 3D nữa vì đã có thư viện pycolmap

General Pipeline 

    1. Extract Superpoint để có local features cho cả databasequery images

       2. Xây dựng 1 mô hình 3D SfM làm khung:
            - Tìm các hình ành phổ biến trong database, với retrieval image hoặc 1 SfM model trước đó
            - Match database bằng SuperGlue
            - Triangulate mô hình SfM mới với COLMAP
       3. Tìm database image gần với mỗi query, dựa vào retrieval
       4. Match query images với SuperGlue
       5. Chạy localization
       6. Visualize
Task
Ta tìm hiểu kĩ hơn pipeline sử dụng với từng task trong CVPR 2020
Aachen - outdoor localization
Dataset của ta gồm 2 phần day và night https://www.visuallocalization.net/datasets/ của các địa điểm (image tại day và night tương ứng không đổi pose và coordination)
Ta xem qua các model 
Ta chọn:
    - superpoint_aachen cho feature configuration
    - superglue cho matcher configuration
    - netvlad cho retrieval configuration
Generate pairs cho SfM reconstruction: thay vì matching cả database, ta dùng SIFT để tìm image pairs dễ thấy nhất (convert SIFT từ NVM đến COLMAP format, rồi chọn 20 neighbors gần nhất theo NN (Euclide distance)
Extract 
-> Generate
-> Match 
-> Triangulate 
-> Image trieval
-> Match query images
-> Localize
-> Visualizing SfM model: theo 2 kiểu: 
        + Được triangulated - không có matched (visibility)

        + Gần và xa (depth)

-> Visualizing the localization: plot nối của query image và 1 vài image trong database (SuperGlue, đỏ là outlier, xanh là inlier)
InLoc - indoor localization
Ta lấy kết quả của pre-trained netVLAD top 40 rồi chọn:
    - superpoint_inloc cho feature configuration
    - superglue cho matcher_conf
Extract
-> Match : do đã retrieval nên chỉ generate new pairs từ global descriptors
-> Localize: không cần 3D SfM như Aachen, chỉ cần estimated query pose
-> Visualization:
SfM reconstruction from scratch
Bài toán làm sao 3D reconstruction từ 1 dataset chưa xếp thứ tự -> sparse 3D model
Ta extract global descriptor với NetVLAD. Còn nếu tập nhỏ thì ta tìm n(n-1)/2 images pairs
image retrieval
-> extract and match
-> 3D reconstruction
-> visualization
Test với tập data khác

Tham khảo

https://github.com/cvg/Hierarchical-Localization

https://nbviewer.org/github/cvg/Hierarchical-Localization/blob/master/pipeline_Aachen.ipynb

https://nbviewer.org/github/cvg/Hierarchical-Localization/blob/master/pipeline_InLoc.ipynb

https://nbviewer.org/github/cvg/Hierarchical-Localization/blob/master/pipeline_SfM.ipynb

https://colab.research.google.com/drive/1MrVs9b8aQYODtOGkoaGNF9Nji3sbCNMQ#scrollTo=71ab5306

https://www.visuallocalization.net/datasets/

Nhận xét