jiexiong2016 / GCNv2_SLAM

Real-time SLAM system with deep features
Other
769 stars 194 forks source link

DNN descriptor with DBoW #64

Open carlin314 opened 2 years ago

carlin314 commented 2 years ago

I have two questions about dnn descriptor with DBoW3:

  1. dnn descriptor seems too small for DBoW3: for example, superpoint, it is float 256 descriptor and I normalize to [0,1], it seems DBoW3 don't work when it is [0,1], when I scale it 1000.0 times, it works just fine. How you handle or understand this?

  2. vocabulary training seem stuck or just take too long time: for example, superpoint descriptor uses DBoW3 to train a vocabulary seems needs very long time, refer to this issue: Problems about float format descriptors. #34 , how you train it in Dataset "Bovisa (outdoor + mixed)", does it just need wait or have some tricks?

gse95 commented 2 years ago

I think the issue is that while create the Voc, in the HKmeansStep function, we wait for the associations to converge. But that might be tricky for descriptors that have similar distance to two clusters. Adding a check to limit the max number of iterations helps. I see that this is already there in fbow but not in DBoW3. Hope this helps.