-
Notifications
You must be signed in to change notification settings - Fork 112
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Struggling to get expected results #120
Comments
Hi @carsoncramer, thanks for your question. I am a bit surprise that GLOMAP takes such a long time to finish, but apart from that, I think the result is reasonable. For this particular scene, the error is already quite small (<0.2cm?), so I don't think COLMAP or GLOMAP can do much better there. However, for more difficult cases, the difference might be larger. One thing I notice from your code is that you do not have loop_closure when do image matching (you can do so by changing |
You are right, on more difficult sequences we observe much better performances from COLMAP and GLOMAP than real-time methods. We also found an issue with the third-party evaluation framework we were using which was leading to some confusing results. Now that we fixed it, we are getting results that make sense. Really the only concern was the accuracy problems, the runtime will not be a problem. Thank you so much for your reply! |
Ah apologies for reopening this!! We decided we want to log the runtimes for the systems, so I want to make sure that I accurately represent the runtime for GLOMAP. What runtime information you looking for? I have the shell output from the system, the files "cameras.bin cameras.txt images.bin images.txt points3D.bin points3D.txt" that are the output from the mapper, and then also the database for the run. |
Hi, the raw shell output would tell how long each part of the system takes to finish, and the overall running time is logged at the end. For us, the detailed runtime information would be interesting (as we want to understand the performance of every part), but if you only want to put a single entry for GLOMAP, then the overall runtime would be more relevant. |
Here is the beginning of the glomap output for EuRoC_MH03_Medium:
I don't have the end of the bundle adjustment yet, I will update this comment with the end time when I get it. Is there anything in this that hints to why the runtime is higher than expected? EDIT: Added the rest of the bundle adjustment output |
Thanks for sharing your log. For the steps so far, the run time is about ~(80 + 10 + 760 + 840 + 370 < 2100s). This number is normal for a scene with ~2000 images. In this case, it is strange that MH_01 takes ~20k s. Maybe the number of constructed points is very large, which can be slow. You can potentially speed it up by capping the allowed number of tracks. |
Will capping the allowed number of tracks reduce the accuracy? |
This would unfortunately be the case. However, when the cap is high enough (for example, 1000 x num_img), the difference would not be large and should still be accurate. You would need to decide whether you want to make this trade-off. |
I added the rest of the BA output above. For the last two runs that I have data on for colmap and glomap, the times look like this. MH_01_easy:
MH_03_medium:
So for MH03, it seems like the glomap is performing as expected. I am not sure what's happening with MH01. I'll post again once I get some more results on other datasets, maybe MH01 is just an outlier. |
Hi there,
I have been running several visual odometry systems and measuring their trajectory errors. I have been attempting to use COLMAP as a "baseline" to compare the results of the real-time VO systems to. Then I discovered GLOMAP, and have been using it due to its faster runtime, but I am struggling to get results that beat the real time systems with both colmap and glomap.
For example when running them on EuRoC's MH_01 sequence, I get the following results:
COLMAP trajectory RMSE: 0.00195m after running for 35823.9 seconds
GLOMAP trajectory RMSE: 0.00196m after running for 22299.0 seconds
What has been confusing me is when I compare this to real-time systems like DSO.
DSO trajectory RMSE: 0.00163m when running in real time
I would think colmap and glomap would blow any real-time system out of the water because they do not have the real time constraint, which leads me to think that I must be running colmap and glomap incorrectly.
I have been running colmap and glomap from a python script, here is the important snippet. I am getting the camera model and camera parameters from the datasets I have been running it on.
Do you have any advice on how I can improve the colmap and glomap trajectory errors?
Thank you so much for your time and for developing these awesome systems!!
The text was updated successfully, but these errors were encountered: