colmap / glomap

GLOMAP - Global Structured-from-Motion Revisited
BSD 3-Clause "New" or "Revised" License
1.3k stars 76 forks source link

[QUESTION] Why latest version of glomap mapper is slower than before? #53

Closed ichsan2895 closed 2 weeks ago

ichsan2895 commented 1 month ago

I test 3 different version of mapper :

  1. colmap mapper with Colmap 3.11.0-dev ac81c2f
  2. glomap mapper with Glomap 816e06f
  3. glomap mapper with Glomap 1.0.0

In term of speed, here is the result: [1] = 37 minutes 20 seconds [2] = 28 minutes 5 seconds [3] = 54 minutes 7 seconds

image

I tested it on a dataset called Truck from TanksandTemples. It contains 251 images with 1920x1080 resolution. I use colmap for processing colmap feature_exctractor and colmap exhausive_matcher. Then I get database.db from that process.

Additional information:

Ubuntu 22.04.3 LTS
ceres 2.1.0
Eigen 3.4.0
Cmake 3.28.4
CUDA 11.8.89

What should I do, so I can get faster speed with latest glomap?

ichsan2895 commented 1 month ago

Another experiment with different dataset:

the newest glomap (glomap-v1) is 2 times slower than previous glomap (816e06fcc8beaac13255cc996131f64e543b11a5) in desolation dataset from ns-download-data desolation (this is command is came from nerfstudio).

glomap 1.0.0 : 47 minutes 22 seconds glomap 816e06f : 23 minutes 10 seconds

image

ahojnnes commented 1 month ago

Thank you. Could you please post the full output logs of both runs so we can better understand which stage got slower? I assume you made sure nothing else is running on your machine?

ichsan2895 commented 1 month ago

Dataset : Truck from TanksandTemples

glomap mapper with Glomap 1.0.0 = 54 minutes 7 seconds

Loading Images 251 / 251
 Loading Image Pair 17275 / 17275
I0810 03:10:59.387260 56056 colmap_converter.cc:303] Pairs read done. 5380 / 17275 are invalid
I0810 03:10:59.389647 56056 global_mapper.cc:80] Loaded database
-------------------------------------
Running preprocessing ...
-------------------------------------
I0810 03:10:59.393271 56056 view_graph_manipulation.cc:246] Decompose relative pose for 11895 pairs
I0810 03:10:59.782438 56056 view_graph_manipulation.cc:295] Decompose relative pose done. 569 pairs are pure rotation
I0810 03:10:59.782481 56056 timer.cc:87] Elapsed time: 0.39280 [seconds]
-------------------------------------
Running view graph calibration ...
-------------------------------------
I0810 03:10:59.782578 56056 view_graph_calibration.cc:16] Start ViewGraphCalibrator
I0810 03:10:59.790105 56056 view_graph_calibration.cc:33] No cameras to optimize
-------------------------------------
Running relative pose estimation ...
-------------------------------------
I0810 03:10:59.792971 56056 image_undistorter.cc:17] Undistorting images..
I0810 03:11:00.100065 56056 image_undistorter.cc:37] Image undistortion done
I0810 03:11:00.101219 56056 relpose_estimation.cc:24] Estimating relative pose for 11895 pairs
 Estimating relative pose: 100%
I0810 03:12:26.654115 56056 relpose_estimation.cc:69] Estimating relative pose done
I0810 03:12:27.197885 56056 relpose_filter.cc:46] Filtered 4254 relative poses with inlier number < 30
I0810 03:12:27.198285 56056 relpose_filter.cc:63] Filtered 1 relative poses with inlier ratio < 0.25
I0810 03:12:27.200683 56056 timer.cc:87] Elapsed time: 87.40773 [seconds]
-------------------------------------
Running rotation averaging ...
-------------------------------------
I0810 03:13:49.688534 56056 relpose_filter.cc:31] Filtered 335 relative rotation with angle > 10 degrees
I0810 03:15:15.589160 56056 relpose_filter.cc:31] Filtered 0 relative rotation with angle > 10 degrees
I0810 03:15:15.683785 56056 global_mapper.cc:95] 251 / 251 images are within the connected component.
I0810 03:15:15.683825 56056 timer.cc:87] Elapsed time: 168.48312 [seconds]
-------------------------------------
Running track establishment ...
-------------------------------------
 Initializing pairs 17275 / 17275
 Establishing pairs 17275 / 17275
 Establishing tracks 251868 / 251868
I0810 03:15:21.908317 56056 track_establishment.cc:149] Discarded 1045 tracks due to inconsistency
I0810 03:15:22.945314 56056 global_mapper.cc:115] Before filtering: 251868, after filtering: 139272
I0810 03:15:22.945353 56056 timer.cc:87] Elapsed time: 7.26105 [seconds]
-------------------------------------
Running global positioning ...
-------------------------------------
I0810 03:15:23.067170 56056 image_undistorter.cc:17] Undistorting images..
I0810 03:15:23.185139 56056 image_undistorter.cc:37] Image undistortion done
I0810 03:15:23.185348 56056 global_positioning.cc:43] Setting up the global positioner problem
I0810 03:15:27.986876 56056 global_positioning.cc:68] Solving the global positioner problem
I0810 03:39:50.891803 56056 global_positioning.cc:77] Ceres Solver Report: Iterations: 65, Initial cost: 1.431143e+07, Final cost: 4.907264e+01, Termination: CONVERGENCE
I0810 03:39:50.982862 56056 track_filter.cc:86] Filtered 2799 / 139272 tracks by angle error
I0810 03:39:50.982911 56056 timer.cc:87] Elapsed time: 1467.91577 [seconds]
-------------------------------------
Running bundle adjustment ...
-------------------------------------
I0810 03:39:52.794458 56056 global_mapper.cc:167] Bundle adjustment start
I0810 03:46:20.189857 56056 bundle_adjustment.cc:48] Ceres Solver Report: Iterations: 28, Initial cost: 3.007972e+06, Final cost: 2.298918e+06, Termination: CONVERGENCE
I0810 03:46:20.189962 56056 global_mapper.cc:183] Global bundle adjustment iteration 1 / 3, stage 1 finished (position only)
I0810 03:46:20.189971 56056 timer.cc:87] Elapsed time: 387.39548 [seconds]
I0810 03:54:08.082413 56056 bundle_adjustment.cc:48] Ceres Solver Report: Iterations: 34, Initial cost: 2.298918e+06, Final cost: 5.011432e+05, Termination: CONVERGENCE
I0810 03:54:08.082536 56056 global_mapper.cc:195] Global bundle adjustment iteration 1 / 3, stage 2 finished
I0810 03:54:08.082546 56056 timer.cc:87] Elapsed time: 855.28805 [seconds]
I0810 03:54:08.082618 56056 image_undistorter.cc:17] Undistorting images..
I0810 03:54:08.197299 56056 image_undistorter.cc:37] Image undistortion done
I0810 03:54:08.197340 56056 global_mapper.cc:206] Filtering tracks by reprojection ...
I0810 03:54:08.345047 56056 track_filter.cc:48] Filtered 286 / 139272 tracks by reprojection error
I0810 03:56:37.725657 56056 bundle_adjustment.cc:48] Ceres Solver Report: Iterations: 12, Initial cost: 4.897004e+05, Final cost: 4.893111e+05, Termination: CONVERGENCE
I0810 03:56:37.725780 56056 global_mapper.cc:183] Global bundle adjustment iteration 2 / 3, stage 1 finished (position only)
I0810 03:56:37.725790 56056 timer.cc:87] Elapsed time: 1004.93130 [seconds]
I0810 03:57:02.539398 56056 bundle_adjustment.cc:48] Ceres Solver Report: Iterations: 2, Initial cost: 4.893111e+05, Final cost: 4.892969e+05, Termination: CONVERGENCE
I0810 03:57:02.539464 56056 global_mapper.cc:195] Global bundle adjustment iteration 2 / 3, stage 2 finished
I0810 03:57:02.539474 56056 timer.cc:87] Elapsed time: 1029.74498 [seconds]
I0810 03:57:02.539511 56056 image_undistorter.cc:17] Undistorting images..
I0810 03:57:02.586779 56056 image_undistorter.cc:37] Image undistortion done
I0810 03:57:02.586840 56056 global_mapper.cc:206] Filtering tracks by reprojection ...
I0810 03:57:02.799959 56056 track_filter.cc:48] Filtered 349 / 139272 tracks by reprojection error
I0810 04:00:27.912617 56056 bundle_adjustment.cc:48] Ceres Solver Report: Iterations: 18, Initial cost: 4.821012e+05, Final cost: 4.815972e+05, Termination: CONVERGENCE
I0810 04:00:27.912703 56056 global_mapper.cc:183] Global bundle adjustment iteration 3 / 3, stage 1 finished (position only)
I0810 04:00:27.912711 56056 timer.cc:87] Elapsed time: 1235.11822 [seconds]
I0810 04:00:45.966985 56056 bundle_adjustment.cc:48] Ceres Solver Report: Iterations: 1, Initial cost: 4.815972e+05, Final cost: 4.815972e+05, Termination: CONVERGENCE
I0810 04:00:45.967048 56056 global_mapper.cc:195] Global bundle adjustment iteration 3 / 3, stage 2 finished
I0810 04:00:45.967075 56056 image_undistorter.cc:17] Undistorting images..
I0810 04:00:46.081766 56056 image_undistorter.cc:37] Image undistortion done
I0810 04:00:46.081835 56056 global_mapper.cc:206] Filtering tracks by reprojection ...
I0810 04:00:46.217898 56056 track_filter.cc:48] Filtered 934 / 139272 tracks by reprojection error
I0810 04:00:47.405088 56056 image_undistorter.cc:17] Undistorting images..
I0810 04:00:47.491355 56056 image_undistorter.cc:37] Image undistortion done
I0810 04:00:47.491398 56056 global_mapper.cc:232] Filtering tracks by reprojection ...
I0810 04:00:47.635782 56056 track_filter.cc:48] Filtered 0 / 139272 tracks by reprojection error
I0810 04:00:47.679867 56056 track_filter.cc:123] Filtered 15812 / 139272 tracks by too small triangulation angle
I0810 04:00:47.679909 56056 timer.cc:87] Elapsed time: 1254.88542 [seconds]
-------------------------------------
Running retriangulation ...
-------------------------------------
I0810 04:00:47.680034 56056 database_cache.cc:65] Loading cameras...
I0810 04:00:47.680253 56056 database_cache.cc:75]  1 in 0.000s
I0810 04:00:47.680320 56056 database_cache.cc:83] Loading matches...
I0810 04:00:47.725147 56056 database_cache.cc:89]  11921 in 0.045s
I0810 04:00:47.725180 56056 database_cache.cc:105] Loading images...
I0810 04:00:47.786114 56056 database_cache.cc:155]  251 in 0.061s (connected 251)
I0810 04:00:47.786223 56056 database_cache.cc:166] Building correspondence graph...
I0810 04:00:48.433806 56056 database_cache.cc:195]  in 0.648s (ignored 0)
 Triangulating image 251 / 251
 Global bundle adjustment iteration 5 / 5
I0810 04:01:40.169464 56056 timer.cc:87] Elapsed time: 52.48946 [seconds]
-------------------------------------
Running bundle adjustment ...
-------------------------------------
I0810 04:01:40.169611 56056 global_mapper.cc:263] Bundle adjustment start
I0810 04:04:33.206118 56056 bundle_adjustment.cc:48] Ceres Solver Report: Iterations: 10, Initial cost: 4.942431e+05, Final cost: 4.824064e+05, Termination: CONVERGENCE
I0810 04:04:33.206395 56056 image_undistorter.cc:17] Undistorting images..
I0810 04:04:33.314141 56056 image_undistorter.cc:37] Image undistortion done
I0810 04:04:33.314179 56056 global_mapper.cc:271] Filtering tracks by reprojection ...
I0810 04:04:33.613461 56056 track_filter.cc:48] Filtered 4 / 130674 tracks by reprojection error
I0810 04:04:56.225811 56056 bundle_adjustment.cc:48] Ceres Solver Report: Iterations: 1, Initial cost: 4.824064e+05, Final cost: 4.824064e+05, Termination: CONVERGENCE
I0810 04:04:56.225899 56056 timer.cc:87] Elapsed time: 248.54588 [seconds]
I0810 04:04:57.856669 56056 image_undistorter.cc:17] Undistorting images..
I0810 04:04:57.984745 56056 image_undistorter.cc:37] Image undistortion done
I0810 04:04:57.984783 56056 global_mapper.cc:286] Filtering tracks by reprojection ...
I0810 04:04:58.195732 56056 track_filter.cc:48] Filtered 0 / 130674 tracks by reprojection error
I0810 04:04:58.307062 56056 track_filter.cc:123] Filtered 4 / 130674 tracks by too small triangulation angle
I0810 04:04:58.307122 56056 global_mapper.cc:86] Reconstruction done in 3238.92 seconds
I0810 04:04:58.634246 56056 colmap_io.cc:27] Extracting colors ...
I0810 04:05:04.431320 56056 global_mapper.cc:91] Export to COLMAP reconstruction done
CPU times: user 25 s, sys: 7.93 s, total: 32.9 s
Wall time: 54min 7s

glomap mapper with Glomap 816e06f = 28 minutes 5 seconds

Loading Images 251 / 251
 Loading Image Pair 17275 / 17275
WARNING: Logging before InitGoogleLogging() is written to STDERR
I0809 16:53:34.273909 17207 colmap_converter.cc:301] Pairs read done. 5380 / 17275 are invalid
I0809 16:53:34.275255 17207 global_mapper.cc:75] Loaded database
-------------------------------------
Running preprocessing ...
-------------------------------------
I0809 16:53:34.278347 17207 view_graph_manipulation.cc:244] Decompose relative pose for 11895 pairs
I0809 16:53:34.389482 17207 view_graph_manipulation.cc:294] Decompose relative pose done. 569 pairs are pure rotation
I0809 16:53:34.389499 17207 timer.cc:87] Elapsed time: 0.11423 [seconds]
-------------------------------------
Running view graph calibration ...
-------------------------------------
I0809 16:53:34.389564 17207 view_graph_calibration.cc:14] Start ViewGraphCalibrator
I0809 16:53:34.395828 17207 view_graph_calibration.cc:30] No cameras to optimize
-------------------------------------
Running relative pose estimation ...
-------------------------------------
I0809 16:53:34.397984 17207 image_undistorter.cc:17] Undistorting images..
I0809 16:53:34.506913 17207 image_undistorter.cc:43] Image undistortion done
I0809 16:53:34.507787 17207 relpose_estimation.cc:17] Estimating relative pose for 11895 pairs
 Estimating relative pose: 100%
I0809 16:55:16.036262 17207 relpose_estimation.cc:68] Estimating relative pose done
I0809 16:55:16.430272 17207 relpose_filter.cc:46] Filtered 4254 relative poses with inlier number < 30
I0809 16:55:16.430642 17207 relpose_filter.cc:63] Filtered 1 relative poses with inlier ratio < 0.25
I0809 16:55:16.432955 17207 timer.cc:87] Elapsed time: 102.03498 [seconds]
-------------------------------------
Running rotation averaging ...
-------------------------------------
I0809 16:56:44.017477 17207 relpose_filter.cc:31] Filtered 335 relative rotation with angle > 10 degrees
I0809 16:58:12.021565 17207 relpose_filter.cc:31] Filtered 0 relative rotation with angle > 10 degrees
I0809 16:58:12.026521 17207 global_mapper.cc:95] 251 / 251 images are within the connected component.
I0809 16:58:12.026532 17207 timer.cc:87] Elapsed time: 175.59356 [seconds]
-------------------------------------
Running track establishment ...
-------------------------------------
 Initializing pairs 17275 / 17275
 Establishing pairs 17275 / 17275
 Establishing tracks 251868 / 251868I0809 16:58:18.927482 17207 track_establishment.cc:148] Discarded 1045 tracks due to inconsistency
I0809 16:58:19.993551 17207 global_mapper.cc:115] Before filtering: 251868, after filtering: 139272
I0809 16:58:19.993587 17207 timer.cc:87] Elapsed time: 7.96680 [seconds]
-------------------------------------
Running global positioning ...
-------------------------------------
I0809 16:58:20.294095 17207 image_undistorter.cc:17] Undistorting images..
I0809 16:58:20.583870 17207 image_undistorter.cc:43] Image undistortion done
I0809 16:58:20.583916 17207 global_positioning.cc:43] Setting up the global positioner problem
I0809 16:58:23.945712 17207 global_positioning.cc:68] Solving the global positioner problem
I0809 17:11:26.411020 17207 global_positioning.cc:77] Ceres Solver Report: Iterations: 64, Initial cost: 1.431143e+07, Final cost: 4.913989e+01, Termination: CONVERGENCE
I0809 17:11:26.506924 17207 track_filter.cc:86] Filtered 2799 / 139272 tracks by angle error
I0809 17:11:26.506949 17207 timer.cc:87] Elapsed time: 786.21288 [seconds]
-------------------------------------
Running bundle adjustment ...
-------------------------------------
I0809 17:11:33.696373 17207 global_mapper.cc:167] Bundle adjustment start
I0809 17:13:00.536206 17207 bundle_adjustment.cc:47] Ceres Solver Report: Iterations: 18, Initial cost: 3.007790e+06, Final cost: 2.299861e+06, Termination: CONVERGENCE
I0809 17:13:00.536253 17207 global_mapper.cc:183] Global bundle adjustment iteration 1 / 3, stage 1 finished (position only)
I0809 17:13:00.536258 17207 timer.cc:87] Elapsed time: 86.83986 [seconds]
I0809 17:14:26.444023 17207 bundle_adjustment.cc:47] Ceres Solver Report: Iterations: 13, Initial cost: 2.299861e+06, Final cost: 5.025031e+05, Termination: CONVERGENCE
I0809 17:14:26.444078 17207 global_mapper.cc:195] Global bundle adjustment iteration 1 / 3, stage 2 finished
I0809 17:14:26.444083 17207 timer.cc:87] Elapsed time: 172.74769 [seconds]
I0809 17:14:26.444108 17207 image_undistorter.cc:17] Undistorting images..
I0809 17:14:26.493177 17207 image_undistorter.cc:43] Image undistortion done
I0809 17:14:26.493203 17207 global_mapper.cc:206] Filtering tracks by reprojection ...
I0809 17:14:26.687494 17207 track_filter.cc:48] Filtered 241 / 139272 tracks by reprojection error
I0809 17:15:18.397917 17207 bundle_adjustment.cc:47] Ceres Solver Report: Iterations: 7, Initial cost: 4.907452e+05, Final cost: 4.902634e+05, Termination: CONVERGENCE
I0809 17:15:18.397965 17207 global_mapper.cc:183] Global bundle adjustment iteration 2 / 3, stage 1 finished (position only)
I0809 17:15:18.397979 17207 timer.cc:87] Elapsed time: 224.70158 [seconds]
I0809 17:15:34.628309 17207 bundle_adjustment.cc:47] Ceres Solver Report: Iterations: 2, Initial cost: 4.902634e+05, Final cost: 4.902475e+05, Termination: CONVERGENCE
I0809 17:15:34.628361 17207 global_mapper.cc:195] Global bundle adjustment iteration 2 / 3, stage 2 finished
I0809 17:15:34.628371 17207 timer.cc:87] Elapsed time: 240.93197 [seconds]
I0809 17:15:34.628397 17207 image_undistorter.cc:17] Undistorting images..
I0809 17:15:34.785624 17207 image_undistorter.cc:43] Image undistortion done
I0809 17:15:34.785770 17207 global_mapper.cc:206] Filtering tracks by reprojection ...
I0809 17:15:34.909463 17207 track_filter.cc:48] Filtered 341 / 139272 tracks by reprojection error
I0809 17:15:59.467975 17207 bundle_adjustment.cc:47] Ceres Solver Report: Iterations: 7, Initial cost: 4.831195e+05, Final cost: 4.826833e+05, Termination: CONVERGENCE
I0809 17:15:59.468027 17207 global_mapper.cc:183] Global bundle adjustment iteration 3 / 3, stage 1 finished (position only)
I0809 17:15:59.468031 17207 timer.cc:87] Elapsed time: 265.77164 [seconds]
I0809 17:16:56.410465 17207 bundle_adjustment.cc:47] Ceres Solver Report: Iterations: 2, Initial cost: 4.826833e+05, Final cost: 4.826782e+05, Termination: CONVERGENCE
I0809 17:16:56.410512 17207 global_mapper.cc:195] Global bundle adjustment iteration 3 / 3, stage 2 finished
I0809 17:16:56.410547 17207 image_undistorter.cc:17] Undistorting images..
I0809 17:16:56.496332 17207 image_undistorter.cc:43] Image undistortion done
I0809 17:16:56.496378 17207 global_mapper.cc:206] Filtering tracks by reprojection ...
I0809 17:16:56.907650 17207 track_filter.cc:48] Filtered 951 / 139272 tracks by reprojection error
I0809 17:16:57.667418 17207 image_undistorter.cc:17] Undistorting images..
I0809 17:16:57.680253 17207 image_undistorter.cc:43] Image undistortion done
I0809 17:16:57.680272 17207 global_mapper.cc:232] Filtering tracks by reprojection ...
I0809 17:16:57.835798 17207 track_filter.cc:48] Filtered 0 / 139272 tracks by reprojection error
I0809 17:16:57.884030 17207 track_filter.cc:123] Filtered 15816 / 139272 tracks by too small triangulation angle
I0809 17:16:57.884055 17207 timer.cc:87] Elapsed time: 324.18767 [seconds]
-------------------------------------
Running retriangulation ...
-------------------------------------
I0809 17:16:57.884119 17207 database_cache.cc:65] Loading cameras...
I0809 17:16:57.884308 17207 database_cache.cc:75]  1 in 0.000s
I0809 17:16:57.884325 17207 database_cache.cc:83] Loading matches...
I0809 17:16:57.925050 17207 database_cache.cc:89]  11921 in 0.041s
I0809 17:16:57.925096 17207 database_cache.cc:105] Loading images...
I0809 17:16:57.989940 17207 database_cache.cc:155]  251 in 0.065s (connected 251)
I0809 17:16:57.990082 17207 database_cache.cc:166] Building correspondence graph...
I0809 17:16:58.740631 17207 database_cache.cc:195]  in 0.751s (ignored 0)
 Triangulating image 251 / 251
 Global bundle adjustment iteration 5 / 5
I0809 17:18:25.276007 17207 timer.cc:87] Elapsed time: 87.39192 [seconds]
-------------------------------------
Running bundle adjustment ...
-------------------------------------
I0809 17:18:25.276088 17207 global_mapper.cc:263] Bundle adjustment start
I0809 17:20:34.534809 17207 bundle_adjustment.cc:47] Ceres Solver Report: Iterations: 10, Initial cost: 4.942312e+05, Final cost: 4.824307e+05, Termination: CONVERGENCE
I0809 17:20:34.534955 17207 image_undistorter.cc:17] Undistorting images..
I0809 17:20:34.691501 17207 image_undistorter.cc:43] Image undistortion done
I0809 17:20:34.691529 17207 global_mapper.cc:271] Filtering tracks by reprojection ...
I0809 17:20:35.299844 17207 track_filter.cc:48] Filtered 4 / 130683 tracks by reprojection error
I0809 17:21:09.321916 17207 bundle_adjustment.cc:47] Ceres Solver Report: Iterations: 1, Initial cost: 4.824307e+05, Final cost: 4.824307e+05, Termination: CONVERGENCE
I0809 17:21:09.321964 17207 timer.cc:87] Elapsed time: 251.43786 [seconds]
I0809 17:21:10.639187 17207 image_undistorter.cc:17] Undistorting images..
I0809 17:21:10.691316 17207 image_undistorter.cc:43] Image undistortion done
I0809 17:21:10.691350 17207 global_mapper.cc:286] Filtering tracks by reprojection ...
I0809 17:21:10.898177 17207 track_filter.cc:48] Filtered 0 / 130683 tracks by reprojection error
I0809 17:21:10.971972 17207 track_filter.cc:123] Filtered 4 / 130683 tracks by too small triangulation angle
I0809 17:21:10.972008 17207 global_mapper.cc:81] Reconstruction done in 1656.7 seconds
I0809 17:21:11.132624 17207 colmap_io.cc:27] Extracting colors ...
I0809 17:21:37.883306 17207 global_mapper.cc:86] Export to COLMAP reconstruction done
CPU times: user 13.3 s, sys: 4.43 s, total: 17.7 s
Wall time: 28min 5s
ichsan2895 commented 1 month ago

Dataset : desolation from ns-process-data in Nerfstudio

glomap mapper with Glomap 1.0.0 = 47 minutes 22 seconds

Loading Images 207 / 207
 Loading Image Pair 8316 / 8316
I0810 04:39:36.185542 160925 colmap_converter.cc:303] Pairs read done. 1798 / 8316 are invalid
I0810 04:39:36.186715 160925 global_mapper.cc:80] Loaded database
-------------------------------------
Running preprocessing ...
-------------------------------------
I0810 04:39:36.187765 160925 view_graph_manipulation.cc:246] Decompose relative pose for 0 pairs
I0810 04:39:36.385485 160925 view_graph_manipulation.cc:295] Decompose relative pose done. 0 pairs are pure rotation
I0810 04:39:36.385535 160925 timer.cc:87] Elapsed time: 0.19881 [seconds]
-------------------------------------
Running view graph calibration ...
-------------------------------------
I0810 04:39:36.386910 160925 view_graph_calibration.cc:16] Start ViewGraphCalibrator
I0810 04:39:37.191917 160925 view_graph_calibration.cc:155] 0 cameras are rejected in view graph calibration
I0810 04:39:37.194278 160925 view_graph_calibration.cc:189] invalid / total number of two view geometry: 457 / 7250
-------------------------------------
Running relative pose estimation ...
-------------------------------------
I0810 04:39:37.286543 160925 image_undistorter.cc:17] Undistorting images..
I0810 04:39:37.987447 160925 image_undistorter.cc:37] Image undistortion done
I0810 04:39:37.988440 160925 relpose_estimation.cc:24] Estimating relative pose for 6061 pairs
 Estimating relative pose: 100%
I0810 04:39:57.028359 160925 relpose_estimation.cc:69] Estimating relative pose done
I0810 04:39:57.133253 160925 relpose_filter.cc:46] Filtered 1039 relative poses with inlier number < 30
I0810 04:39:57.133450 160925 relpose_filter.cc:63] Filtered 0 relative poses with inlier ratio < 0.25
I0810 04:39:57.134884 160925 timer.cc:87] Elapsed time: 19.84836 [seconds]
-------------------------------------
Running rotation averaging ...
-------------------------------------
I0810 04:41:18.429863 160925 relpose_filter.cc:31] Filtered 104 relative rotation with angle > 10 degrees
I0810 04:42:41.703155 160925 relpose_filter.cc:31] Filtered 0 relative rotation with angle > 10 degrees
I0810 04:42:41.707059 160925 global_mapper.cc:95] 207 / 207 images are within the connected component.
I0810 04:42:41.707078 160925 timer.cc:87] Elapsed time: 164.57217 [seconds]
-------------------------------------
Running track establishment ...
-------------------------------------
 Initializing pairs 8316 / 8316
 Establishing pairs 8316 / 8316
 Establishing tracks 208454 / 208454
I0810 04:42:43.194803 160925 track_establishment.cc:149] Discarded 309 tracks due to inconsistency
I0810 04:42:43.737779 160925 global_mapper.cc:115] Before filtering: 208454, after filtering: 105137
I0810 04:42:43.737825 160925 timer.cc:87] Elapsed time: 2.03050 [seconds]
-------------------------------------
Running global positioning ...
-------------------------------------
I0810 04:42:43.802008 160925 image_undistorter.cc:17] Undistorting images..
I0810 04:42:43.885285 160925 image_undistorter.cc:37] Image undistortion done
I0810 04:42:43.885341 160925 global_positioning.cc:43] Setting up the global positioner problem
I0810 04:42:44.987314 160925 global_positioning.cc:68] Solving the global positioner problem
I0810 04:54:12.851419 160925 global_positioning.cc:77] Ceres Solver Report: Iterations: 79, Initial cost: 4.205278e+06, Final cost: 2.641509e+01, Termination: CONVERGENCE
I0810 04:54:12.947635 160925 track_filter.cc:86] Filtered 3280 / 105137 tracks by angle error
I0810 04:54:12.947683 160925 timer.cc:87] Elapsed time: 689.14570 [seconds]
-------------------------------------
Running bundle adjustment ...
-------------------------------------
I0810 04:54:15.224331 160925 global_mapper.cc:167] Bundle adjustment start
I0810 05:03:15.834949 160925 bundle_adjustment.cc:48] Ceres Solver Report: Iterations: 73, Initial cost: 4.119951e+06, Final cost: 2.308401e+06, Termination: CONVERGENCE
I0810 05:03:15.835081 160925 global_mapper.cc:183] Global bundle adjustment iteration 1 / 3, stage 1 finished (position only)
I0810 05:03:15.835112 160925 timer.cc:87] Elapsed time: 540.61074 [seconds]
I0810 05:15:02.728114 160925 bundle_adjustment.cc:48] Ceres Solver Report: Iterations: 76, Initial cost: 2.308401e+06, Final cost: 4.875129e+05, Termination: CONVERGENCE
I0810 05:15:02.728201 160925 global_mapper.cc:195] Global bundle adjustment iteration 1 / 3, stage 2 finished
I0810 05:15:02.728209 160925 timer.cc:87] Elapsed time: 1247.50384 [seconds]
I0810 05:15:02.728245 160925 image_undistorter.cc:17] Undistorting images..
I0810 05:15:02.788170 160925 image_undistorter.cc:37] Image undistortion done
I0810 05:15:02.788192 160925 global_mapper.cc:206] Filtering tracks by reprojection ...
I0810 05:15:02.936795 160925 track_filter.cc:48] Filtered 1112 / 105137 tracks by reprojection error
I0810 05:17:39.737493 160925 bundle_adjustment.cc:48] Ceres Solver Report: Iterations: 23, Initial cost: 4.332975e+05, Final cost: 4.326059e+05, Termination: CONVERGENCE
I0810 05:17:39.737627 160925 global_mapper.cc:183] Global bundle adjustment iteration 2 / 3, stage 1 finished (position only)
I0810 05:17:39.737641 160925 timer.cc:87] Elapsed time: 1404.51327 [seconds]
I0810 05:21:57.493745 160925 bundle_adjustment.cc:48] Ceres Solver Report: Iterations: 39, Initial cost: 4.326059e+05, Final cost: 4.317574e+05, Termination: CONVERGENCE
I0810 05:21:57.493844 160925 global_mapper.cc:195] Global bundle adjustment iteration 2 / 3, stage 2 finished
I0810 05:21:57.493852 160925 timer.cc:87] Elapsed time: 1662.26948 [seconds]
I0810 05:21:57.493891 160925 image_undistorter.cc:17] Undistorting images..
I0810 05:21:57.587899 160925 image_undistorter.cc:37] Image undistortion done
I0810 05:21:57.587983 160925 global_mapper.cc:206] Filtering tracks by reprojection ...
I0810 05:21:57.732326 160925 track_filter.cc:48] Filtered 480 / 105137 tracks by reprojection error
I0810 05:24:03.185732 160925 bundle_adjustment.cc:48] Ceres Solver Report: Iterations: 16, Initial cost: 4.295608e+05, Final cost: 4.292205e+05, Termination: CONVERGENCE
I0810 05:24:03.185863 160925 global_mapper.cc:183] Global bundle adjustment iteration 3 / 3, stage 1 finished (position only)
I0810 05:24:03.185870 160925 timer.cc:87] Elapsed time: 1787.96150 [seconds]
I0810 05:25:03.345834 160925 bundle_adjustment.cc:48] Ceres Solver Report: Iterations: 6, Initial cost: 4.292205e+05, Final cost: 4.291865e+05, Termination: CONVERGENCE
I0810 05:25:03.345978 160925 global_mapper.cc:195] Global bundle adjustment iteration 3 / 3, stage 2 finished
I0810 05:25:03.346030 160925 image_undistorter.cc:17] Undistorting images..
I0810 05:25:03.388139 160925 image_undistorter.cc:37] Image undistortion done
I0810 05:25:03.388160 160925 global_mapper.cc:206] Filtering tracks by reprojection ...
I0810 05:25:03.564947 160925 track_filter.cc:48] Filtered 958 / 105137 tracks by reprojection error
I0810 05:25:04.396481 160925 image_undistorter.cc:17] Undistorting images..
I0810 05:25:04.409750 160925 image_undistorter.cc:37] Image undistortion done
I0810 05:25:04.409762 160925 global_mapper.cc:232] Filtering tracks by reprojection ...
I0810 05:25:04.562089 160925 track_filter.cc:48] Filtered 0 / 105137 tracks by reprojection error
I0810 05:25:04.590642 160925 track_filter.cc:123] Filtered 29352 / 105137 tracks by too small triangulation angle
I0810 05:25:04.590660 160925 timer.cc:87] Elapsed time: 1849.36629 [seconds]
-------------------------------------
Running retriangulation ...
-------------------------------------
I0810 05:25:04.590724 160925 database_cache.cc:65] Loading cameras...
I0810 05:25:04.590806 160925 database_cache.cc:75]  1 in 0.000s
I0810 05:25:04.590819 160925 database_cache.cc:83] Loading matches...
I0810 05:25:04.610821 160925 database_cache.cc:89]  6521 in 0.020s
I0810 05:25:04.610842 160925 database_cache.cc:105] Loading images...
I0810 05:25:04.652190 160925 database_cache.cc:155]  207 in 0.041s (connected 207)
I0810 05:25:04.652277 160925 database_cache.cc:166] Building correspondence graph...
I0810 05:25:04.986716 160925 database_cache.cc:195]  in 0.334s (ignored 0)
 Triangulating image 207 / 207
 Global bundle adjustment iteration 5 / 5
I0810 05:25:53.704849 160925 timer.cc:87] Elapsed time: 49.11414 [seconds]
-------------------------------------
Running bundle adjustment ...
-------------------------------------
I0810 05:25:53.704974 160925 global_mapper.cc:263] Bundle adjustment start
I0810 05:26:37.748193 160925 bundle_adjustment.cc:48] Ceres Solver Report: Iterations: 9, Initial cost: 2.102714e+05, Final cost: 1.944808e+05, Termination: CONVERGENCE
I0810 05:26:37.748373 160925 image_undistorter.cc:17] Undistorting images..
I0810 05:26:37.801471 160925 image_undistorter.cc:37] Image undistortion done
I0810 05:26:37.801515 160925 global_mapper.cc:271] Filtering tracks by reprojection ...
I0810 05:26:37.946785 160925 track_filter.cc:48] Filtered 60 / 83212 tracks by reprojection error
I0810 05:26:48.326716 160925 bundle_adjustment.cc:48] Ceres Solver Report: Iterations: 1, Initial cost: 1.944808e+05, Final cost: 1.944808e+05, Termination: CONVERGENCE
I0810 05:26:48.326777 160925 timer.cc:87] Elapsed time: 103.73606 [seconds]
I0810 05:26:49.165402 160925 image_undistorter.cc:17] Undistorting images..
I0810 05:26:49.205266 160925 image_undistorter.cc:37] Image undistortion done
I0810 05:26:49.205302 160925 global_mapper.cc:286] Filtering tracks by reprojection ...
I0810 05:26:49.362457 160925 track_filter.cc:48] Filtered 0 / 83212 tracks by reprojection error
I0810 05:26:49.402202 160925 track_filter.cc:123] Filtered 60 / 83212 tracks by too small triangulation angle
I0810 05:26:49.402230 160925 global_mapper.cc:86] Reconstruction done in 2833.22 seconds
I0810 05:26:49.566906 160925 colmap_io.cc:27] Extracting colors ...
I0810 05:26:56.866111 160925 global_mapper.cc:91] Export to COLMAP reconstruction done
CPU times: user 22.3 s, sys: 6.73 s, total: 29 s
Wall time: 47min 22s

glomap mapper with Glomap 816e06f = 23 minutes 10 seconds

Loading Images 207 / 207
 Loading Image Pair 8316 / 8316
WARNING: Logging before InitGoogleLogging() is written to STDERR
I0810 05:34:23.372784 198711 colmap_converter.cc:301] Pairs read done. 1798 / 8316 are invalid
I0810 05:34:23.373488 198711 global_mapper.cc:75] Loaded database
-------------------------------------
Running preprocessing ...
-------------------------------------
I0810 05:34:23.374469 198711 view_graph_manipulation.cc:244] Decompose relative pose for 0 pairs
I0810 05:34:23.401512 198711 view_graph_manipulation.cc:294] Decompose relative pose done. 0 pairs are pure rotation
I0810 05:34:23.401556 198711 timer.cc:87] Elapsed time: 0.02805 [seconds]
-------------------------------------
Running view graph calibration ...
-------------------------------------
I0810 05:34:23.401639 198711 view_graph_calibration.cc:14] Start ViewGraphCalibrator
I0810 05:34:23.521937 198711 view_graph_calibration.cc:155] 0 cameras are rejected in view graph calibration
I0810 05:34:23.522614 198711 view_graph_calibration.cc:190] invalid / total number of two view geometry: 457 / 7250
-------------------------------------
Running relative pose estimation ...
-------------------------------------
I0810 05:34:23.524588 198711 image_undistorter.cc:17] Undistorting images..
I0810 05:34:23.612573 198711 image_undistorter.cc:43] Image undistortion done
I0810 05:34:23.612978 198711 relpose_estimation.cc:17] Estimating relative pose for 6061 pairs
 Estimating relative pose: 100%
I0810 05:34:36.622067 198711 relpose_estimation.cc:68] Estimating relative pose done
I0810 05:34:36.719262 198711 relpose_filter.cc:46] Filtered 1039 relative poses with inlier number < 30
I0810 05:34:36.719483 198711 relpose_filter.cc:63] Filtered 0 relative poses with inlier ratio < 0.25
I0810 05:34:36.721145 198711 timer.cc:87] Elapsed time: 13.19657 [seconds]
-------------------------------------
Running rotation averaging ...
-------------------------------------
I0810 05:35:58.816598 198711 relpose_filter.cc:31] Filtered 104 relative rotation with angle > 10 degrees
I0810 05:37:22.921464 198711 relpose_filter.cc:31] Filtered 0 relative rotation with angle > 10 degrees
I0810 05:37:22.924903 198711 global_mapper.cc:95] 207 / 207 images are within the connected component.
I0810 05:37:22.924917 198711 timer.cc:87] Elapsed time: 166.20375 [seconds]
-------------------------------------
Running track establishment ...
-------------------------------------
 Initializing pairs 8316 / 8316
 Establishing pairs 8316 / 8316
 Establishing tracks 208454 / 208454I0810 05:37:24.115367 198711 track_establishment.cc:148] Discarded 309 tracks due to inconsistency
I0810 05:37:24.441570 198711 global_mapper.cc:115] Before filtering: 208454, after filtering: 105137
I0810 05:37:24.441604 198711 timer.cc:87] Elapsed time: 1.51645 [seconds]
-------------------------------------
Running global positioning ...
-------------------------------------
I0810 05:37:24.502079 198711 image_undistorter.cc:17] Undistorting images..
I0810 05:37:24.583094 198711 image_undistorter.cc:43] Image undistortion done
I0810 05:37:24.585600 198711 global_positioning.cc:43] Setting up the global positioner problem
I0810 05:37:25.694860 198711 global_positioning.cc:68] Solving the global positioner problem
I0810 05:43:50.667496 198711 global_positioning.cc:77] Ceres Solver Report: Iterations: 81, Initial cost: 4.205278e+06, Final cost: 2.632315e+01, Termination: CONVERGENCE
I0810 05:43:50.728596 198711 track_filter.cc:86] Filtered 3258 / 105137 tracks by angle error
I0810 05:43:50.728632 198711 timer.cc:87] Elapsed time: 386.22659 [seconds]
-------------------------------------
Running bundle adjustment ...
-------------------------------------
I0810 05:43:51.654896 198711 global_mapper.cc:167] Bundle adjustment start
I0810 05:47:28.921141 198711 bundle_adjustment.cc:47] Ceres Solver Report: Iterations: 87, Initial cost: 4.100806e+06, Final cost: 2.300256e+06, Termination: CONVERGENCE
I0810 05:47:28.921195 198711 global_mapper.cc:183] Global bundle adjustment iteration 1 / 3, stage 1 finished (position only)
I0810 05:47:28.921200 198711 timer.cc:87] Elapsed time: 217.26629 [seconds]
I0810 05:50:41.284178 198711 bundle_adjustment.cc:47] Ceres Solver Report: Iterations: 85, Initial cost: 2.300256e+06, Final cost: 4.824724e+05, Termination: CONVERGENCE
I0810 05:50:41.284233 198711 global_mapper.cc:195] Global bundle adjustment iteration 1 / 3, stage 2 finished
I0810 05:50:41.284240 198711 timer.cc:87] Elapsed time: 409.62933 [seconds]
I0810 05:50:41.284263 198711 image_undistorter.cc:17] Undistorting images..
I0810 05:50:41.401324 198711 image_undistorter.cc:43] Image undistortion done
I0810 05:50:41.401392 198711 global_mapper.cc:206] Filtering tracks by reprojection ...
I0810 05:50:41.509699 198711 track_filter.cc:48] Filtered 998 / 105137 tracks by reprojection error
I0810 05:52:02.390492 198711 bundle_adjustment.cc:47] Ceres Solver Report: Iterations: 20, Initial cost: 4.402218e+05, Final cost: 4.337661e+05, Termination: CONVERGENCE
I0810 05:52:02.390661 198711 global_mapper.cc:183] Global bundle adjustment iteration 2 / 3, stage 1 finished (position only)
I0810 05:52:02.390676 198711 timer.cc:87] Elapsed time: 490.73577 [seconds]
I0810 05:54:16.220324 198711 bundle_adjustment.cc:47] Ceres Solver Report: Iterations: 65, Initial cost: 4.337661e+05, Final cost: 4.325616e+05, Termination: CONVERGENCE
I0810 05:54:16.220414 198711 global_mapper.cc:195] Global bundle adjustment iteration 2 / 3, stage 2 finished
I0810 05:54:16.220422 198711 timer.cc:87] Elapsed time: 624.56551 [seconds]
I0810 05:54:16.220445 198711 image_undistorter.cc:17] Undistorting images..
I0810 05:54:16.283643 198711 image_undistorter.cc:43] Image undistortion done
I0810 05:54:16.283797 198711 global_mapper.cc:206] Filtering tracks by reprojection ...
I0810 05:54:16.349584 198711 track_filter.cc:48] Filtered 477 / 105137 tracks by reprojection error
I0810 05:55:18.482970 198711 bundle_adjustment.cc:47] Ceres Solver Report: Iterations: 63, Initial cost: 4.301869e+05, Final cost: 4.290840e+05, Termination: CONVERGENCE
I0810 05:55:18.483023 198711 global_mapper.cc:183] Global bundle adjustment iteration 3 / 3, stage 1 finished (position only)
I0810 05:55:18.483029 198711 timer.cc:87] Elapsed time: 686.82812 [seconds]
I0810 05:56:23.069931 198711 bundle_adjustment.cc:47] Ceres Solver Report: Iterations: 61, Initial cost: 4.290840e+05, Final cost: 4.279875e+05, Termination: CONVERGENCE
I0810 05:56:23.069981 198711 global_mapper.cc:195] Global bundle adjustment iteration 3 / 3, stage 2 finished
I0810 05:56:23.070004 198711 image_undistorter.cc:17] Undistorting images..
I0810 05:56:23.106969 198711 image_undistorter.cc:43] Image undistortion done
I0810 05:56:23.106999 198711 global_mapper.cc:206] Filtering tracks by reprojection ...
I0810 05:56:23.232625 198711 track_filter.cc:48] Filtered 1000 / 105137 tracks by reprojection error
I0810 05:56:24.298941 198711 image_undistorter.cc:17] Undistorting images..
I0810 05:56:24.383677 198711 image_undistorter.cc:43] Image undistortion done
I0810 05:56:24.383692 198711 global_mapper.cc:232] Filtering tracks by reprojection ...
I0810 05:56:24.445924 198711 track_filter.cc:48] Filtered 0 / 105137 tracks by reprojection error
I0810 05:56:24.473917 198711 track_filter.cc:123] Filtered 29297 / 105137 tracks by too small triangulation angle
I0810 05:56:24.473935 198711 timer.cc:87] Elapsed time: 752.81903 [seconds]
-------------------------------------
Running retriangulation ...
-------------------------------------
I0810 05:56:24.474036 198711 database_cache.cc:65] Loading cameras...
I0810 05:56:24.474146 198711 database_cache.cc:75]  1 in 0.000s
I0810 05:56:24.474160 198711 database_cache.cc:83] Loading matches...
I0810 05:56:24.501024 198711 database_cache.cc:89]  6521 in 0.027s
I0810 05:56:24.501057 198711 database_cache.cc:105] Loading images...
I0810 05:56:24.555958 198711 database_cache.cc:155]  207 in 0.055s (connected 207)
I0810 05:56:24.556057 198711 database_cache.cc:166] Building correspondence graph...
I0810 05:56:24.805909 198711 database_cache.cc:195]  in 0.250s (ignored 0)
 Triangulating image 207 / 207
 Global bundle adjustment iteration 5 / 5
I0810 05:57:13.132736 198711 timer.cc:87] Elapsed time: 48.65873 [seconds]
-------------------------------------
Running bundle adjustment ...
-------------------------------------
I0810 05:57:13.132828 198711 global_mapper.cc:263] Bundle adjustment start
I0810 05:57:21.927593 198711 bundle_adjustment.cc:47] Ceres Solver Report: Iterations: 9, Initial cost: 2.102342e+05, Final cost: 1.945270e+05, Termination: CONVERGENCE
I0810 05:57:21.927726 198711 image_undistorter.cc:17] Undistorting images..
I0810 05:57:21.986218 198711 image_undistorter.cc:43] Image undistortion done
I0810 05:57:21.986249 198711 global_mapper.cc:271] Filtering tracks by reprojection ...
I0810 05:57:22.047595 198711 track_filter.cc:48] Filtered 57 / 83213 tracks by reprojection error
I0810 05:57:24.902325 198711 bundle_adjustment.cc:47] Ceres Solver Report: Iterations: 1, Initial cost: 1.945270e+05, Final cost: 1.945270e+05, Termination: CONVERGENCE
I0810 05:57:24.902382 198711 timer.cc:87] Elapsed time: 60.42836 [seconds]
I0810 05:57:25.760757 198711 image_undistorter.cc:17] Undistorting images..
I0810 05:57:25.805934 198711 image_undistorter.cc:43] Image undistortion done
I0810 05:57:25.805966 198711 global_mapper.cc:286] Filtering tracks by reprojection ...
I0810 05:57:25.950541 198711 track_filter.cc:48] Filtered 0 / 83213 tracks by reprojection error
I0810 05:57:25.979750 198711 track_filter.cc:123] Filtered 57 / 83213 tracks by too small triangulation angle
I0810 05:57:25.979771 198711 global_mapper.cc:81] Reconstruction done in 1382.61 seconds
I0810 05:57:26.061383 198711 colmap_io.cc:27] Extracting colors ...
I0810 05:57:33.052809 198711 global_mapper.cc:86] Export to COLMAP reconstruction done
CPU times: user 11.3 s, sys: 3.8 s, total: 15.1 s
Wall time: 23min 10s
ahojnnes commented 1 month ago

Thank you. It appears that all operations related to Ceres became slower.

There is a chance that this change here causes the difference on your end: https://github.com/colmap/glomap/commit/eb8e5884bd5dd45d87796ef3948e2c51d81b8e13#diff-4bd49c871f91795f9edfeb71aaa5291ccede08041c991d6dd1b3ecdc6c016febR25

Can you try reverting to the fixed 16 threads and report back? Can you also share some details about your machine (CPU, RAM, OS, ...).

ichsan2895 commented 2 weeks ago

Thank you. It appears that all operations related to Ceres became slower.

There is a chance that this change here causes the difference on your end: eb8e588#diff-4bd49c871f91795f9edfeb71aaa5291ccede08041c991d6dd1b3ecdc6c016febR25

Can you try reverting to the fixed 16 threads and report back? Can you also share some details about your machine (CPU, RAM, OS, ...).

Sorry for late reply. I run colmap & glomap with 2 different machine. The machine that I feel it slower is Runpod cloud environment. Maybe This changes https://github.com/colmap/glomap/commit/eb8e5884bd5dd45d87796ef3948e2c51d81b8e13#diff-4bd49c871f91795f9edfeb71aaa5291ccede08041c991d6dd1b3ecdc6c016febR25 seems affect that since cloud provider limit the number of CPU cores in that virtualized machine.

On my local computer, the speed remains same, fortunatelly.