mihaidusmanu/d2-net

What is the usage of edge detection in 'HardDetectionModule' in model_test.py?

Closed this issue · 3 comments

Thanks for sharing such good implementation!
After learning from the code, I was confused about the edge detection part in 'HardDetectionModule' in file 'model_test.py'. The code goes like:
detected = torch.min( is_depth_wise_max, torch.min(is_local_max, is_not_edge) )
Why edges should not be consider as detection? Why feature extracted by VGG16 can be used as the input of edge detection? What's the idea behind it?

Oh, sorry for that. I have found the answer in SIFT paper: 'Eliminating edge responses'. Thanks for sharing code again.

Hello, yes exactly - as for SIFT, we have eliminated the edge responses since they are generally less stable. However, in practice for D2-Net features, this check doesn't make a big difference: if I recall correctly, most of the times ~200 keypoints are discarded because of the edge filtering.

Thanks for the explanation. Really appreciate that.