openxrlab / xrsfm

OpenXRLab Structure-from-Motion Toolbox and Benchmark
Apache License 2.0
191 stars 22 forks source link

covisibility match失败 #22

Closed drlssl closed 10 months ago

drlssl commented 12 months ago

大佬们好呀,我想再请教一下,在使用covisibility方式运行run_matching时发生了如下的情况,这里我使用的是tank&temple的temple数据集,然后用每秒2帧的切片运行就失败了,换成了euroc的mh05数据集也是一样的情况, 但是用retrieval和sequential的方式或者是用更少图片量数据集的covisibility方式也都可以成功运行,查看运行时候的内存和显存占用,发现运行的时候占满并不高,所以想来询问一下,这种产生的原因会是哪些?

noir@noir-Nitro-AN515-58:~/SfM/xrsfm$ ./bin/run_matching /home/noir/SfM/xrsfm/ws01/temple/images/ /home/noir/SfM/xrsfm/ws01/temple/retrieval_50.txt covisibility /home/noir/SfM/xrsfm/ws01/temple/ Load Image Info Done. Extract Features Done. Load Retrieval Info Done. Init Matching Done. init: 5726 5815 ////////Iter (0)///////// match_expansion.cc:469 Check failed: retrieval_rank_of_frames.count(i) Error: frame 1155 is missing in retrieval_rank_of_frames.

已放弃 (核心已转储)

oneLOH commented 11 months ago

可以检查下retrieval_50.txt文件,是否所有图像都有对应的检索结果。

drlssl commented 11 months ago

您好,我已经检查了,检索的图片都是在的,尝试打印了报错那行for循环的最大值后发现,找不到的那个 frame i 正好是对应for循环边界-1的值,我把for循环边界值改成原来的-1就可以运行了,但不知道这样改会有什么负面效果,也想请教出现这种情况的可能原因是什么? https://github.com/openxrlab/xrsfm/blob/86109e9b1283ed83f3e3215f0befcb04e3c312a9/src/feature/match_expansion.cc#L467

oneLOH commented 11 months ago

如果retrieval_50.txt包含所有数据,但是retrieval_rank_of_frames缺失了1155帧。一个可能的原因是读取时由于格式等问题出错了,可以检查下函数LoadRetrievalRank是否正常。方便的话也可以提供一下输入数据,这是我的邮箱:503417472@qq.com。

oneLOH commented 11 months ago

最新的xrloc已经修复了这个问题,需要重新生成检索文件