YungeCui / BoW3D

[RA-L] BoW3D: Bag of Words for Real-Time Loop Closing in 3D LiDAR SLAM.
277 stars 39 forks source link

请问应当如何计算Bow3D的PR曲线? #10

Open ZhangZh3ng opened 1 year ago

ZhangZh3ng commented 1 year ago

崔博您好! 首先感谢你开源这项优秀的工作!我们有打算将该算法作为baseline进行对比,但是有一些疑问因此特来向您请教。 问题1:应当如何获得该算法的精度-召回率(PR)曲线?据我所知很多算法会给出一个类似于相似度的指标,PR曲线可以通过调整该指标进行绘制,然而在BoW3D中判别回环是否发生的指标是通过判断帧间相对距离是否小于设定得到的,所以似乎只有回环(1)和没有回环(0)两种情况,不存在中间情况,这种想法对吗? 问题2:应当如何调整改算法从而获取距离更远的loop上的性能?这个问题曾经有人问过 #8 ,但从这个issue中我未能领悟具体的方法,如果提升此算法远距离loop性能的确可行的话还望您能给与指点,谢谢!

YungeCui commented 1 year ago

你好,对第一个问题,其它方法还存在除回环(1)和没有回环(0)这两种以外的中间情况吗?关于PR曲线,一些论文及网上应该有很多相应的解释,请你自行查阅一下。对第二个问题,你可以增加添加到database里的特征数量,另外你也可以通过计算特征距离雷达中心的距离,将远距离的添加到database中,然后将判决阈值设置的大一些,应该就可以得到距离更远的loop。

ZhangZh3ng commented 1 year ago

你好,对第一个问题,其它方法还存在除回环(1)和没有回环(0)这两种以外的中间情况吗?关于PR曲线,一些论文及网上应该有很多相应的解释,请你自行查阅一下。对第二个问题,你可以增加添加到database里的特征数量,另外你也可以通过计算特征距离雷达中心的距离,将远距离的添加到database中,然后将判决阈值设置的大一些,应该就可以得到距离更远的loop。

感谢你的回复!

  1. 或许是我没有表达清楚,我想知道的是Bow3D(而不是其它方法)是否存在除了回环(1)或没有回环(0)这两种情况以外的中间情况,例如给出一个发生回环的概率。 在这里说一下我对精度召回率曲线的理解:一些算法例如scan context会给出一个介于0-1之间的相似度,表示有多大可能性发生回环。通过将判断回环发生的阈值设定到某个特定值(如0.8)可以的到一组回环数据,从而获取PR曲线上的一个点,通过改变这个阈值可以得到完整的曲线。不知这种理解是否与您的理解相同?

  2. 我目前改变了代码中的判决阈值即 BoW3D.ccp retrive函数中最后的判断部分 if(returnValue != 1 && loopRelativet.norm() < 3 / 我改了这个值 / && loopRelativet.norm() > 0) {....} 请问这是否就是您所说的“判决阈值”, 另外关于将远距离特征添加到database中我还是不太明白应该修改哪个参数。在原本的参数中我只看到了distanceTh = 0.4 和minimumRange=0.1, matchTh=6,请问是修改这些参数吗?

  3. 另外,即使在保持原先参数不变的情况下(loopRelativet.norm() < 3 ),我在kitti数据集上测试的结果似乎与论文中有所差异,我猜测可能与参数设置有关,因此可否给出您在论文中在测试kitti上效果时使用的参数?

endlesshi commented 1 year ago

崔博您好! 我在运行您的算法时也遇上了和ZhangZh3ng一样的参数设置和结果显示的问题,还望崔博解惑。