train superpoint时的超参数设置
Closed this issue · 1 comments
fish258 commented
作者您好,我注意到您在训练superpoint时的descriptor loss部分的lambda_d设置为0.05。这个lambda_d不是添加在正样本上的权重吗?(正样本数量较少,理应设置大点的权重)Superpoint的作者在论文中陈述的设置为250,您为什么使用0.05呢?是您在实际训练中找到的更合适的新参数吗?
https://github.com/shaofengzeng/SuperPoint-Pytorch/blob/master/config/superpoint_train.yaml
我在训练时给正样本设置大的权重也没有获得好的效果,看到您这么设置,能不能问下这么设置的原因呢?
shaofengzeng commented
您好:这里的超参数是按照rpautrat/SuperPoint提供的代码设置的,与论文原文确实不同。
当前参数的设置确实不容易理解,我尝试做一下解释。如果您进行调式时,会发现,当训练趋于稳定时,dot_product_desc中数据会出现大量的负数,亦即,这种设置会保证__非对应点__之间相似度取值处于较小的范围,尽管这会导致__对应点__之间相似度偏小,但对于图像中的关键点,另一幅图像中多数关键点均与它是非对应的,这就保证计算得到的多数对应是“正确的”。
此外,这里提供的代码与原论文代码在计算损失时略有差别,具体在该文件的第129~134行,即本代码增加了对特征点相似度(dot_product_desc)的归一化的步骤。这可能也会影响超参数的设置。