raulmur / ORB_SLAM2

Real-Time SLAM for Monocular, Stereo and RGB-D Cameras, with Loop Detection and Relocalization Capabilities
Other
9.37k stars 4.69k forks source link

FPS evolution with higher frames #614

Open caap95 opened 6 years ago

caap95 commented 6 years ago

Hi,

I'm a finalist student and for my thesis I'm working on various SLAM algorithms and studying their performance. One test that I made was to check if the FPS would vary for datasets with different number of frames.

For ORB SLAM2 I got the following result:

fps_orb

I'm having an hard time understanding this result. The FPS stabilizes has it would be expected, but until then it has a growing behavior. I was expecting quite the opposite, that it would start at higher FPS and descend until stabilization.

Can you help me interpreting this result? Maybe it has something to do with the initialization map.

Thanks.

B0Bftl commented 6 years ago

I'm no expert but i have a guess: ORB-SLAM2 does not decrease in performance when maintaining a bigger map (except when a loop i closed i'd say). During map construction and trackung, all calculations are focused on locality, meaning only keyframes connected to the current frame add to the computational cost of pose Estimation and the local BundleAdjustment. Also, ORB-SLAM performs a culling on generated KeyFrames, meaning that redundant or very weak keyframes get deleted. This makes ORB SLAM viable for long term operation, as it hits a upper boundary of keyframes in a bounded Map. I think this might be why the performance increases with more frames. After a while, the map is saturated, so there are next to no new Keyframes, resulting in faster computation per frame. Also no new Loops are closed, which is the most expensive operation of the Algorithm, as this triggers a full Bundle Adjustment over all existing KeyFrames.

Hope this helps, good luck with your thesis (Iam working on mine right now :D )