Coder Social home page Coder Social logo

aibluefisher / dagsfm Goto Github PK

View Code? Open in Web Editor NEW
395.0 29.0 84.0 99.85 MB

Distributed and Graph-based Structure from Motion. This project includes the official implementation of our Pattern Recognition 2020 paper: Graph-Based Parallel Large Scale Structure from Motion.

Home Page: https://aibluefisher.github.io/GraphSfM/

License: BSD 3-Clause "New" or "Revised" License

CMake 0.72% C++ 35.75% C 59.57% Python 1.87% Shell 0.14% Makefile 0.01% MATLAB 0.13% Cuda 1.76% Batchfile 0.02% GLSL 0.01% Dockerfile 0.01%
computer-vision structure-from-motion multi-view-geometry sfm 3d-reconstruction distributed-systems graph clustering solver

dagsfm's People

Contributors

aibluefisher avatar erjanmx avatar lumanyang avatar pmoulon avatar yzhbuaa avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

dagsfm's Issues

distributed mode ? empty file

@AIBluefisher
Sorry to bother you again !
When I run distributed mode,I follow the doc ,I set the config.txt 's image_path i be consistent with the --output_path,but the last result in my output_path is empty,and the merge partition do not work!(of course,the partition is also empty in output_path)
error1

Need some help with the config.txt part of Distributed Approach

I have the config.txt file as

`
server_num

0.0.0.0 8080 /home/a/castle/image

0.0.0.1 8080 /home/b/castle/image

`

the 0.0.0.0 is the IPv4 address, 8080 is the default port run by the application, last part is the image path.

Questions:
What is server_num?
Does the image path have to contain images or it can be empty folder?
Does the image path and the output path of the worker have to be the same?
Does the server or master IPv4 address have to be included in the config.txt?

cmake error: could not find gtest

@AIBluefisher, hello, I compiled the newest version of DAGSfM, and I encountered the problem following when I run cmake ..:

-- Check for gtest
CMake Error at /usr/share/cmake-3.16/Modules/FindPackageHandleStandardArgs.cmake:146 (message):
Could NOT find GTest (missing: GTEST_LIBRARY GTEST_INCLUDE_DIR
GTEST_MAIN_LIBRARY)

I've encountered the same problem several times. And finally I solved it with sudo apt-get install libgtest-dev. I guess the libgtest-dev should be one of the Basic Requirements mentioned in the README.

only one worker run in distributed mode

Thanks for the work of distributed mode. I managed to compile it. However, I only got one worker running while configuring three workers. Here are the details.

  1. When I compiled the code, I change the src/map_reduce/worker.h line 47 to line 55 to (change the std to std_1)
namespace std_1
{
  template <typename T, typename... Ts>
  std::unique_ptr<T> make_unique(Ts &&...params)
  {
    return std::unique_ptr<T>(new T(std::forward<Ts>(params)...));
  }
} // namespace std

Since I got an ambiguous issue with make_unique, and I also add c++ standard 14 into the CMakeLists.txt

  1. For running the binary, I firstly run the script to feature extraction and matching. Then I run the distributed_sfm.sh both in sequential mode and distributed mode. The sequential mode got the correct result, However, only one worker worked in distributed mode. Here are my config file.

Screenshot from 2021-05-11 14-29-37

and my distributed_sfm.sh:
Screenshot from 2021-05-11 14-30-38

and I run the script with

./distributed_sfm.sh path_to_imgs 200

Evey time the master (192.168.17.126 also the worker) only allocated the to the first worker in the config.txt.
Screenshot from 2021-05-11 14-34-11
The data set have exactly 375 images.

So, is my configuration step error?

Thanks.

compare with openMVG

hi ,I see you compared with openMVG as shown in the picture,I want to know that is it the Incremental sfm way in openMVG?

image

Sparse reconstruction gone awry

I used 26577 images to execute the sparse reconstruction in a distributed mode.This is my config file.
config.txt
Here is my log of clusters' merging. Can you tell me how to fix it?

Merging Clusters...

I1229 04:45:27.363883 9689 sfm_aligner.cpp:135] Node id: 0
I1229 04:45:27.363890 9689 sfm_aligner.cpp:137] Total images number: 3839
I1229 04:45:27.363895 9689 sfm_aligner.cpp:135] Node id: 1
I1229 04:45:27.363899 9689 sfm_aligner.cpp:137] Total images number: 3749
I1229 04:45:27.363904 9689 sfm_aligner.cpp:135] Node id: 2
I1229 04:45:27.363909 9689 sfm_aligner.cpp:137] Total images number: 3843
I1229 04:45:27.363914 9689 sfm_aligner.cpp:135] Node id: 3
I1229 04:45:27.363919 9689 sfm_aligner.cpp:137] Total images number: 4500
I1229 04:45:27.363922 9689 sfm_aligner.cpp:135] Node id: 4
I1229 04:45:27.363927 9689 sfm_aligner.cpp:137] Total images number: 3242
I1229 04:45:27.363932 9689 sfm_aligner.cpp:135] Node id: 5
I1229 04:45:27.363936 9689 sfm_aligner.cpp:137] Total images number: 4499
I1229 04:45:27.363941 9689 sfm_aligner.cpp:135] Node id: 6
I1229 04:45:27.363946 9689 sfm_aligner.cpp:137] Total images number: 4005
I1229 04:45:27.363951 9689 sfm_aligner.cpp:156] Constructing Reconstructions Graph...
I1229 04:45:27.366039 9689 sfm_aligner.cpp:104] Begin find common 3D points
I1229 04:45:27.590319 9689 sfm_aligner.cpp:122] Find 0 common 3D points.
I1229 04:45:27.590349 9689 sfm_aligner.cpp:281] Common registerd images number: 0
W1229 04:45:27.590358 9689 sfm_aligner.cpp:284] Not found enough common registered images.
I1229 04:45:27.590502 9689 sfm_aligner.cpp:252] weight: 1.79769e+308
I1229 04:45:27.592366 9689 sfm_aligner.cpp:104] Begin find common 3D points
I1229 04:45:28.145555 9689 sfm_aligner.cpp:122] Find 387546 common 3D points.
I1229 04:45:28.145593 9689 sfm_aligner.cpp:281] Common registerd images number: 204
I1229 04:45:28.145598 9689 sfm_aligner.cpp:58] Finding Similarity by RANSAC
I1229 04:45:28.481813 9689 sfm_aligner.cpp:61] inliers size: 386618
I1229 04:45:29.138371 9689 sfm_aligner.cpp:45] Mean Reprojection Error: 0.0155374 (6021.45/387546)
I1229 04:45:29.141289 9689 sfm_aligner.cpp:58] Finding Similarity by RANSAC
I1229 04:45:29.409287 9689 sfm_aligner.cpp:61] inliers size: 386577
I1229 04:45:29.939672 9689 sfm_aligner.cpp:45] Mean Reprojection Error: 0.0190042 (7364.99/387546)
I1229 04:45:29.945278 9689 sfm_aligner.cpp:252] weight: 0.0190042
I1229 04:45:29.945710 9689 sfm_aligner.cpp:104] Begin find common 3D points
I1229 04:45:30.159727 9689 sfm_aligner.cpp:122] Find 0 common 3D points.
I1229 04:45:30.159759 9689 sfm_aligner.cpp:281] Common registerd images number: 0
W1229 04:45:30.159763 9689 sfm_aligner.cpp:284] Not found enough common registered images.
I1229 04:45:30.159797 9689 sfm_aligner.cpp:252] weight: 1.79769e+308
I1229 04:45:30.160231 9689 sfm_aligner.cpp:104] Begin find common 3D points
I1229 04:45:30.278816 9689 sfm_aligner.cpp:122] Find 0 common 3D points.
I1229 04:45:30.278846 9689 sfm_aligner.cpp:281] Common registerd images number: 0
W1229 04:45:30.278851 9689 sfm_aligner.cpp:284] Not found enough common registered images.
I1229 04:45:30.278873 9689 sfm_aligner.cpp:252] weight: 1.79769e+308
I1229 04:45:30.279755 9689 sfm_aligner.cpp:104] Begin find common 3D points
I1229 04:45:30.621914 9689 sfm_aligner.cpp:122] Find 0 common 3D points.
I1229 04:45:30.621943 9689 sfm_aligner.cpp:281] Common registerd images number: 0
W1229 04:45:30.621948 9689 sfm_aligner.cpp:284] Not found enough common registered images.
I1229 04:45:30.621968 9689 sfm_aligner.cpp:252] weight: 1.79769e+308
I1229 04:45:30.622593 9689 sfm_aligner.cpp:104] Begin find common 3D points
I1229 04:45:31.218353 9689 sfm_aligner.cpp:122] Find 234671 common 3D points.
I1229 04:45:31.218389 9689 sfm_aligner.cpp:281] Common registerd images number: 77
I1229 04:45:31.218394 9689 sfm_aligner.cpp:58] Finding Similarity by RANSAC
I1229 04:45:31.393977 9689 sfm_aligner.cpp:61] inliers size: 163991
I1229 04:45:31.676512 9689 sfm_aligner.cpp:45] Mean Reprojection Error: 0.158457 (37185.2/234671)
I1229 04:45:31.679580 9689 sfm_aligner.cpp:58] Finding Similarity by RANSAC
I1229 04:45:31.824123 9689 sfm_aligner.cpp:61] inliers size: 163991
I1229 04:45:32.044814 9689 sfm_aligner.cpp:45] Mean Reprojection Error: 0.179231 (42060.2/234671)
I1229 04:45:32.048002 9689 sfm_aligner.cpp:252] weight: 0.179231
I1229 04:45:32.048887 9689 sfm_aligner.cpp:104] Begin find common 3D points
I1229 04:45:32.506783 9689 sfm_aligner.cpp:122] Find 44714 common 3D points.
I1229 04:45:32.506817 9689 sfm_aligner.cpp:281] Common registerd images number: 46
I1229 04:45:32.506825 9689 sfm_aligner.cpp:58] Finding Similarity by RANSAC
I1229 04:45:32.607309 9689 sfm_aligner.cpp:61] inliers size: 44710
I1229 04:45:32.670723 9689 sfm_aligner.cpp:45] Mean Reprojection Error: 0.0119704 (535.245/44714)
I1229 04:45:32.670778 9689 sfm_aligner.cpp:58] Finding Similarity by RANSAC
I1229 04:45:32.801065 9689 sfm_aligner.cpp:61] inliers size: 39550
I1229 04:45:32.833482 9689 sfm_aligner.cpp:45] Mean Reprojection Error: 0.0185236 (828.263/44714)
I1229 04:45:32.833528 9689 sfm_aligner.cpp:252] weight: 0.0185236
I1229 04:45:32.835462 9689 sfm_aligner.cpp:104] Begin find common 3D points
I1229 04:45:33.444471 9689 sfm_aligner.cpp:122] Find 374054 common 3D points.
I1229 04:45:33.444505 9689 sfm_aligner.cpp:281] Common registerd images number: 137
I1229 04:45:33.444510 9689 sfm_aligner.cpp:58] Finding Similarity by RANSAC
I1229 04:45:33.656566 9689 sfm_aligner.cpp:61] inliers size: 357952
I1229 04:45:34.313136 9689 sfm_aligner.cpp:45] Mean Reprojection Error: 0.0259794 (9717.69/374054)
I1229 04:45:34.317332 9689 sfm_aligner.cpp:58] Finding Similarity by RANSAC
I1229 04:45:34.511260 9689 sfm_aligner.cpp:61] inliers size: 289572
I1229 04:45:35.041162 9689 sfm_aligner.cpp:45] Mean Reprojection Error: 0.0787804 (29468.1/374054)
I1229 04:45:35.043924 9689 sfm_aligner.cpp:252] weight: 0.0787804
I1229 04:45:35.045714 9689 sfm_aligner.cpp:104] Begin find common 3D points
I1229 04:45:35.172158 9689 sfm_aligner.cpp:122] Find 0 common 3D points.
I1229 04:45:35.172183 9689 sfm_aligner.cpp:281] Common registerd images number: 0
W1229 04:45:35.172186 9689 sfm_aligner.cpp:284] Not found enough common registered images.
I1229 04:45:35.172211 9689 sfm_aligner.cpp:252] weight: 1.79769e+308
I1229 04:45:35.176087 9689 sfm_aligner.cpp:104] Begin find common 3D points
I1229 04:45:35.403220 9689 sfm_aligner.cpp:122] Find 0 common 3D points.
I1229 04:45:35.403244 9689 sfm_aligner.cpp:281] Common registerd images number: 0
W1229 04:45:35.403247 9689 sfm_aligner.cpp:284] Not found enough common registered images.
I1229 04:45:35.403285 9689 sfm_aligner.cpp:252] weight: 1.79769e+308
I1229 04:45:35.404291 9689 sfm_aligner.cpp:104] Begin find common 3D points
I1229 04:45:35.865233 9689 sfm_aligner.cpp:122] Find 3918 common 3D points.
I1229 04:45:35.865263 9689 sfm_aligner.cpp:281] Common registerd images number: 5
I1229 04:45:35.865268 9689 sfm_aligner.cpp:58] Finding Similarity by RANSAC
I1229 04:45:35.870172 9689 sfm_aligner.cpp:61] inliers size: 3918
I1229 04:45:35.872757 9689 sfm_aligner.cpp:45] Mean Reprojection Error: 0.00435428 (17.0601/3918)
I1229 04:45:35.872786 9689 sfm_aligner.cpp:58] Finding Similarity by RANSAC
I1229 04:45:35.896416 9689 sfm_aligner.cpp:61] inliers size: 3918
I1229 04:45:35.899204 9689 sfm_aligner.cpp:45] Mean Reprojection Error: 0.00562411 (22.0352/3918)
I1229 04:45:35.899233 9689 sfm_aligner.cpp:252] weight: 0.00562411
I1229 04:45:35.902665 9689 sfm_aligner.cpp:104] Begin find common 3D points
I1229 04:45:36.133203 9689 sfm_aligner.cpp:122] Find 0 common 3D points.
I1229 04:45:36.133231 9689 sfm_aligner.cpp:281] Common registerd images number: 0
W1229 04:45:36.133235 9689 sfm_aligner.cpp:284] Not found enough common registered images.
I1229 04:45:36.133256 9689 sfm_aligner.cpp:252] weight: 1.79769e+308
I1229 04:45:36.133704 9689 sfm_aligner.cpp:104] Begin find common 3D points
I1229 04:45:36.257256 9689 sfm_aligner.cpp:122] Find 0 common 3D points.
I1229 04:45:36.257280 9689 sfm_aligner.cpp:281] Common registerd images number: 0
W1229 04:45:36.257284 9689 sfm_aligner.cpp:284] Not found enough common registered images.
I1229 04:45:36.257318 9689 sfm_aligner.cpp:252] weight: 1.79769e+308
I1229 04:45:36.257550 9689 sfm_aligner.cpp:104] Begin find common 3D points
I1229 04:45:36.476842 9689 sfm_aligner.cpp:122] Find 0 common 3D points.
I1229 04:45:36.476866 9689 sfm_aligner.cpp:281] Common registerd images number: 0
W1229 04:45:36.476868 9689 sfm_aligner.cpp:284] Not found enough common registered images.
I1229 04:45:36.476886 9689 sfm_aligner.cpp:252] weight: 1.79769e+308
I1229 04:45:36.478417 9689 sfm_aligner.cpp:104] Begin find common 3D points
I1229 04:45:37.056543 9689 sfm_aligner.cpp:122] Find 155200 common 3D points.
I1229 04:45:37.056571 9689 sfm_aligner.cpp:281] Common registerd images number: 60
I1229 04:45:37.056578 9689 sfm_aligner.cpp:58] Finding Similarity by RANSAC
I1229 04:45:37.176607 9689 sfm_aligner.cpp:61] inliers size: 125376
I1229 04:45:37.321404 9689 sfm_aligner.cpp:45] Mean Reprojection Error: 0.0230374 (3575.41/155200)
I1229 04:45:37.321470 9689 sfm_aligner.cpp:58] Finding Similarity by RANSAC
I1229 04:45:37.439064 9689 sfm_aligner.cpp:61] inliers size: 134962
I1229 04:45:37.559798 9689 sfm_aligner.cpp:45] Mean Reprojection Error: 0.0205106 (3183.25/155200)
I1229 04:45:37.563163 9689 sfm_aligner.cpp:252] weight: 0.0230374
I1229 04:45:37.563935 9689 sfm_aligner.cpp:104] Begin find common 3D points
I1229 04:45:37.913575 9689 sfm_aligner.cpp:122] Find 58377 common 3D points.
I1229 04:45:37.913604 9689 sfm_aligner.cpp:281] Common registerd images number: 35
I1229 04:45:37.913609 9689 sfm_aligner.cpp:58] Finding Similarity by RANSAC
I1229 04:45:38.012486 9689 sfm_aligner.cpp:61] inliers size: 44558
I1229 04:45:38.052726 9689 sfm_aligner.cpp:45] Mean Reprojection Error: 0.0502982 (2936.26/58377)
I1229 04:45:38.052770 9689 sfm_aligner.cpp:58] Finding Similarity by RANSAC
I1229 04:45:38.254508 9689 sfm_aligner.cpp:61] inliers size: 58343
I1229 04:45:38.304793 9689 sfm_aligner.cpp:45] Mean Reprojection Error: 0.0174129 (1016.52/58377)
I1229 04:45:38.304852 9689 sfm_aligner.cpp:252] weight: 0.0502982
I1229 04:45:38.307466 9689 sfm_aligner.cpp:104] Begin find common 3D points
I1229 04:45:39.832780 9689 sfm_aligner.cpp:122] Find 2839157 common 3D points.
I1229 04:45:39.832850 9689 sfm_aligner.cpp:281] Common registerd images number: 817
I1229 04:45:39.832860 9689 sfm_aligner.cpp:58] Finding Similarity by RANSAC
I1229 04:45:43.088070 9689 sfm_aligner.cpp:61] inliers size: 1138915
I1229 04:45:45.376761 9689 sfm_aligner.cpp:45] Mean Reprojection Error: 1.05743 (3.00222e+06/2839157)
I1229 04:45:45.379458 9689 sfm_aligner.cpp:58] Finding Similarity by RANSAC
I1229 04:45:48.002233 9689 sfm_aligner.cpp:61] inliers size: 1139057
I1229 04:45:50.429663 9689 sfm_aligner.cpp:45] Mean Reprojection Error: 0.420649 (1.19429e+06/2839157)
I1229 04:45:50.438668 9689 sfm_aligner.cpp:252] weight: 1.05743
I1229 04:45:50.442749 9689 sfm_aligner.cpp:104] Begin find common 3D points
I1229 04:45:51.161881 9689 sfm_aligner.cpp:122] Find 742475 common 3D points.
I1229 04:45:51.161918 9689 sfm_aligner.cpp:281] Common registerd images number: 168
I1229 04:45:51.161923 9689 sfm_aligner.cpp:58] Finding Similarity by RANSAC
I1229 04:45:51.785136 9689 sfm_aligner.cpp:61] inliers size: 665476
I1229 04:45:53.292551 9689 sfm_aligner.cpp:45] Mean Reprojection Error: 0.0601869 (44687.3/742475)
I1229 04:45:53.295760 9689 sfm_aligner.cpp:58] Finding Similarity by RANSAC
I1229 04:45:53.836566 9689 sfm_aligner.cpp:61] inliers size: 671004
I1229 04:45:55.038017 9689 sfm_aligner.cpp:45] Mean Reprojection Error: 0.0358768 (26637.6/742475)
I1229 04:45:55.044137 9689 sfm_aligner.cpp:252] weight: 0.0601869
I1229 04:45:55.045604 9689 sfm_aligner.cpp:104] Begin find common 3D points
I1229 04:45:55.419373 9689 sfm_aligner.cpp:122] Find 0 common 3D points.
I1229 04:45:55.419399 9689 sfm_aligner.cpp:281] Common registerd images number: 0
W1229 04:45:55.419409 9689 sfm_aligner.cpp:284] Not found enough common registered images.
I1229 04:45:55.419442 9689 sfm_aligner.cpp:252] weight: 1.79769e+308
I1229 04:45:55.420361 9689 sfm_aligner.cpp:104] Begin find common 3D points
I1229 04:45:55.603348 9689 sfm_aligner.cpp:122] Find 0 common 3D points.
I1229 04:45:55.603392 9689 sfm_aligner.cpp:281] Common registerd images number: 0
W1229 04:45:55.603396 9689 sfm_aligner.cpp:284] Not found enough common registered images.
I1229 04:45:55.603411 9689 sfm_aligner.cpp:252] weight: 1.79769e+308
I1229 04:45:55.603761 9689 sfm_aligner.cpp:104] Begin find common 3D points
I1229 04:45:55.785889 9689 sfm_aligner.cpp:122] Find 0 common 3D points.
I1229 04:45:55.785914 9689 sfm_aligner.cpp:281] Common registerd images number: 0
W1229 04:45:55.785918 9689 sfm_aligner.cpp:284] Not found enough common registered images.
I1229 04:45:55.785938 9689 sfm_aligner.cpp:252] weight: 1.79769e+308
I1229 04:45:55.785953 9689 graph.inl:445] [Graph Info]
I1229 04:45:55.785960 9689 graph.inl:446] Total nodes: 7
I1229 04:45:55.785982 9689 graph.inl:447]
Total edges: 9
I1229 04:45:55.785986 9689 graph.inl:448]
[Node]:
I1229 04:45:55.786016 9689 graph.inl:452]
[Edge]:
0 1 2 3 4 5 6 (3, 6) (3, 5) (3, 4)
(2, 6)
(1, 6) (1, 3) (1, 2)
(0, 6) (0, 2)

I1229 04:45:55.786058 9689 sfm_aligner.cpp:182] Finding Minimum Spanning Tree...
I1229 04:45:55.786077 9689 graph.inl:445] [Graph Info]
I1229 04:45:55.786082 9689 graph.inl:446] Total nodes: 7
I1229 04:45:55.786087 9689 graph.inl:447]
Total edges: 6
I1229 04:45:55.786092 9689 graph.inl:448]
[Node]:
I1229 04:45:55.786098 9689 graph.inl:452]
[Edge]:
0 1 2 3 4 5 6 (3, 5) (3, 6) (3, 4)
(0, 2)
(1, 2) (1, 6)

I1229 04:45:55.786114 9689 sfm_aligner.cpp:202] Finding Anchor Node...
I1229 04:45:55.786123 9689 sfm_aligner.cpp:340] Merging the 1-th layer leaf nodes
I1229 04:45:55.786132 9689 sfm_aligner.cpp:353] node: 0, degree: 1
I1229 04:45:55.786137 9689 sfm_aligner.cpp:353] node: 2, degree: 2
I1229 04:45:55.786142 9689 sfm_aligner.cpp:353] node: 6, degree: 2
I1229 04:45:55.786149 9689 sfm_aligner.cpp:353] node: 5, degree: 1
I1229 04:45:55.786152 9689 sfm_aligner.cpp:353] node: 4, degree: 1
I1229 04:45:55.786157 9689 sfm_aligner.cpp:353] node: 3, degree: 3
I1229 04:45:55.786162 9689 sfm_aligner.cpp:353] node: 1, degree: 2
I1229 04:45:55.786168 9689 sfm_aligner.cpp:364] Find node [degree = 1]: 0
I1229 04:45:55.786173 9689 sfm_aligner.cpp:365] 0->2: 0.0190042
I1229 04:45:55.786180 9689 sfm_aligner.cpp:371] Merge Clusters: 0->2: 0.0190042
I1229 04:45:55.786188 9689 graph.inl:445] [Graph Info]
I1229 04:45:55.786195 9689 graph.inl:446] Total nodes: 6
I1229 04:45:55.786199 9689 graph.inl:447]
Total edges: 5
I1229 04:45:55.786204 9689 graph.inl:448]
[Node]:
I1229 04:45:55.786211 9689 graph.inl:452]
[Edge]:
1 2 3 4 5 6 (3, 5) (3, 6) (3, 4)
(1, 2) (1, 6)

I1229 04:45:55.786226 9689 sfm_aligner.cpp:364] Find node [degree = 1]: 5
I1229 04:45:55.786231 9689 sfm_aligner.cpp:365] 3->5: 1.05743
I1229 04:45:55.786237 9689 sfm_aligner.cpp:371] Merge Clusters: 5->3: 1.05743
I1229 04:45:55.786244 9689 graph.inl:445] [Graph Info]
I1229 04:45:55.786249 9689 graph.inl:446] Total nodes: 5
I1229 04:45:55.786255 9689 graph.inl:447]
Total edges: 4
I1229 04:45:55.786260 9689 graph.inl:448]
[Node]:
I1229 04:45:55.786265 9689 graph.inl:452]
[Edge]:
1 2 3 4 6 (3, 6) (3, 4)
(1, 2) (1, 6)

I1229 04:45:55.786279 9689 sfm_aligner.cpp:364] Find node [degree = 1]: 4
I1229 04:45:55.786283 9689 sfm_aligner.cpp:365] 3->4: 0.0502983
I1229 04:45:55.786289 9689 sfm_aligner.cpp:371] Merge Clusters: 4->3: 0.0502983
I1229 04:45:55.786295 9689 graph.inl:445] [Graph Info]
I1229 04:45:55.786301 9689 graph.inl:446] Total nodes: 4
I1229 04:45:55.786306 9689 graph.inl:447]
Total edges: 3
I1229 04:45:55.786312 9689 graph.inl:448]
[Node]:
I1229 04:45:55.786317 9689 graph.inl:452]
[Edge]:
1 2 3 6 (3, 6)
(1, 2) (1, 6)

I1229 04:45:55.786332 9689 sfm_aligner.cpp:340] Merging the 2-th layer leaf nodes
I1229 04:45:55.786339 9689 sfm_aligner.cpp:353] node: 2, degree: 1
I1229 04:45:55.786345 9689 sfm_aligner.cpp:353] node: 6, degree: 2
I1229 04:45:55.786348 9689 sfm_aligner.cpp:353] node: 1, degree: 2
I1229 04:45:55.786355 9689 sfm_aligner.cpp:353] node: 3, degree: 1
I1229 04:45:55.786360 9689 sfm_aligner.cpp:364] Find node [degree = 1]: 2
I1229 04:45:55.786365 9689 sfm_aligner.cpp:365] 1->2: 0.0185236
I1229 04:45:55.786370 9689 sfm_aligner.cpp:371] Merge Clusters: 2->1: 0.0185236
I1229 04:45:55.786376 9689 graph.inl:445] [Graph Info]
I1229 04:45:55.786381 9689 graph.inl:446] Total nodes: 3
I1229 04:45:55.786399 9689 graph.inl:447]
Total edges: 2
I1229 04:45:55.786403 9689 graph.inl:448]
[Node]:
I1229 04:45:55.786409 9689 graph.inl:452]
[Edge]:
1 3 6 (3, 6)
(1, 6)

I1229 04:45:55.786422 9689 sfm_aligner.cpp:364] Find node [degree = 1]: 3
I1229 04:45:55.786425 9689 sfm_aligner.cpp:365] 3->6: 0.0601869
I1229 04:45:55.786432 9689 sfm_aligner.cpp:371] Merge Clusters: 3->6: 0.0601869
I1229 04:45:55.786438 9689 graph.inl:445] [Graph Info]
I1229 04:45:55.786443 9689 graph.inl:446] Total nodes: 2
I1229 04:45:55.786448 9689 graph.inl:447]
Total edges: 1
I1229 04:45:55.786453 9689 graph.inl:448]
[Node]:
I1229 04:45:55.786458 9689 graph.inl:452]
[Edge]:
1 6 (1, 6)

I1229 04:45:55.786468 9689 sfm_aligner.cpp:340] Merging the 3-th layer leaf nodes
I1229 04:45:55.786474 9689 sfm_aligner.cpp:364] Find node [degree = 1]: 6
I1229 04:45:55.786479 9689 sfm_aligner.cpp:365] 1->6: 0.00562411
I1229 04:45:55.786485 9689 sfm_aligner.cpp:371] Merge Clusters: 6->1: 0.00562411
I1229 04:45:55.786492 9689 graph.inl:445] [Graph Info]
I1229 04:45:55.786497 9689 graph.inl:446] Total nodes: 1
I1229 04:45:55.786502 9689 graph.inl:447]
Total edges: 0
I1229 04:45:55.786507 9689 graph.inl:448]
[Node]:
I1229 04:45:55.786512 9689 graph.inl:452]
[Edge]:
1
I1229 04:45:55.786520 9689 sfm_aligner.cpp:209] Computing Final Similarity Transformations...
I1229 04:45:55.786525 9689 sfm_aligner.cpp:388] Computing Path: 0->1
I1229 04:45:55.786531 9689 sfm_aligner.cpp:397] v: 0
I1229 04:45:55.786536 9689 sfm_aligner.cpp:403] v: 2
I1229 04:45:55.786540 9689 sfm_aligner.cpp:403] v: 1
I1229 04:45:55.786545 9689 sfm_aligner.cpp:388] Computing Path: 2->1
I1229 04:45:55.786551 9689 sfm_aligner.cpp:397] v: 2
I1229 04:45:55.786556 9689 sfm_aligner.cpp:403] v: 1
I1229 04:45:55.786561 9689 sfm_aligner.cpp:388] Computing Path: 3->1
I1229 04:45:55.786566 9689 sfm_aligner.cpp:397] v: 3
I1229 04:45:55.786571 9689 sfm_aligner.cpp:403] v: 6
I1229 04:45:55.786576 9689 sfm_aligner.cpp:403] v: 1
I1229 04:45:55.786581 9689 sfm_aligner.cpp:388] Computing Path: 6->1
I1229 04:45:55.786586 9689 sfm_aligner.cpp:397] v: 6
I1229 04:45:55.786590 9689 sfm_aligner.cpp:403] v: 1
I1229 04:45:55.786595 9689 sfm_aligner.cpp:388] Computing Path: 5->1
I1229 04:45:55.786599 9689 sfm_aligner.cpp:397] v: 5
I1229 04:45:55.786604 9689 sfm_aligner.cpp:403] v: 3
I1229 04:45:55.786609 9689 sfm_aligner.cpp:403] v: 6
I1229 04:45:55.786613 9689 sfm_aligner.cpp:403] v: 1
I1229 04:45:55.786618 9689 sfm_aligner.cpp:388] Computing Path: 4->1
I1229 04:45:55.786623 9689 sfm_aligner.cpp:397] v: 4
I1229 04:45:55.786628 9689 sfm_aligner.cpp:403] v: 3
I1229 04:45:55.786633 9689 sfm_aligner.cpp:403] v: 6
I1229 04:45:55.786638 9689 sfm_aligner.cpp:403] v: 1
I1229 04:45:55.786643 9689 sfm_aligner.cpp:221] Merging Reconstructions...
I1229 04:48:28.850807 9689 distributed_mapper_controller.cpp:735] 409599 3D points are filtered
W1229 04:48:28.875150 9689 distributed_mapper_controller.cpp:535] cameras, images, points3D files do not exist at /home/hadoop/data/data/1229/LOG
I1229 04:49:06.876660 9689 reconstruction.cc:861] Cameras number: 26138
I1229 04:49:06.876879 9689 reconstruction.cc:862] Registered images number: 26138
I1229 04:49:06.876888 9689 reconstruction.cc:863] Added points3D: 18634508
I1229 04:49:06.876893 9689 reconstruction.cc:864] Reconstructed 3D points: 15767853
I1229 04:49:08.070725 9689 reconstruction.cc:865] Mean Reprojection Error: 0.848918
I1229 04:49:08.072942 9689 reconstruction.cc:866] Observations number: 113886769
I1229 04:49:08.074332 9689 reconstruction.cc:867] Mean Track Length: 7.22272
I1229 04:49:08.074915 9689 reconstruction.cc:868] Mean Observations Per Image: 4357.13
I1229 04:50:19.942024 9689 distributed_mapper_controller.cpp:198] Final Global Bundle Adjustment
I1229 04:50:26.478338 9689 distributed_mapper_controller.cpp:828] Total separators: 1529
I1229 04:50:26.478376 9689 distributed_mapper_controller.cpp:829] Total points3D observed by separators: 3114514
I1229 04:52:18.179558 9689 distributed_mapper_controller.cpp:868] 6257742 / 15767853(0.4%) tracks are selected for bundle adjustment.
I1229 05:01:41.917393 9689 block_sparse_matrix.cc:81] Allocating values array with 15982965248 bytes.
I1229 05:01:41.917619 9689 detect_structure.cc:95] Dynamic f block size because the block size changed from 2 to 3
I1229 05:01:42.127158 9689 detect_structure.cc:113] Schur complement static structure <2,3,-1>.
iter cost cost_change |gradient| |step| tr_ratio tr_radius ls_iter iter_time total_time
0 8.756585e+07 0.00e+00 7.68e+06 0.00e+00 0.00e+00 1.00e+04 0 4.87e+01 3.18e+02
I1229 05:02:35.346835 9689 detect_structure.cc:95] Dynamic f block size because the block size changed from 2 to 3
I1229 05:02:35.557556 9689 detect_structure.cc:113] Schur complement static structure <2,3,-1>.
I1229 05:02:37.292327 9689 block_sparse_matrix.cc:81] Allocating values array with 450556848 bytes.
I1229 05:02:45.316612 9689 block_random_access_diagonal_matrix.cc:66] Matrix Size [209113,209113] 575063
1 8.680448e+07 7.61e+05 3.02e+06 9.33e+01 1.00e+00 3.00e+04 4 1.57e+02 4.75e+02
2 8.668503e+07 1.19e+05 3.56e+06 1.02e+03 9.93e-01 9.00e+04 100 9.07e+02 1.38e+03
3 8.664898e+07 3.60e+04 2.04e+06 1.74e+03 9.73e-01 2.70e+05 100 8.59e+02 2.24e+03
4 8.662882e+07 2.02e+04 3.77e+06 7.30e+02 9.96e-01 8.10e+05 100 8.30e+02 3.07e+03
5 8.661352e+07 1.53e+04 1.51e+06 9.48e+02 9.93e-01 2.43e+06 100 8.35e+02 3.91e+03
6 8.660153e+07 1.20e+04 3.39e+05 2.38e+03 9.31e-01 6.80e+06 100 8.36e+02 4.74e+03
7 8.659032e+07 1.12e+04 2.33e+05 1.46e+03 9.39e-01 2.04e+07 100 8.39e+02 5.58e+03
8 8.657986e+07 1.05e+04 1.97e+05 9.21e+02 9.94e-01 6.12e+07 100 8.39e+02 6.42e+03
9 8.657104e+07 8.82e+03 1.40e+05 9.00e+02 9.95e-01 1.84e+08 100 8.41e+02 7.26e+03
10 8.656302e+07 8.02e+03 1.58e+05 8.97e+02 9.97e-01 5.51e+08 100 8.44e+02 8.10e+03
I1229 07:12:17.144408 9689 trust_region_minimizer.cc:631] Terminating: Maximum number of iterations reached. Number of iterations: 10.

Bundle adjustment report

0000Residuals : 227773538
000Parameters : 18982315
000Iterations : 11
000000000Time : 8.1e+03 [s]
0Initial cost : 0.620034 [px]
000Final cost : 0.616474 [px]
00Termination : No convergence

I1229 07:12:49.726022 9689 distributed_mapper_controller.cpp:893] RMSE for separators(before BA): 1.00812
I1229 07:12:49.726284 9689 distributed_mapper_controller.cpp:894] RMSE for all images(before BA): 0.990598
I1229 07:12:52.248788 9689 distributed_mapper_controller.cpp:895] RMSE for separators(after BA): 0.970511
I1229 07:13:10.379519 9689 distributed_mapper_controller.cpp:897] RMSE for all images(after BA): 0.985952
I1229 07:13:10.379556 9689 distributed_mapper_controller.cpp:899] Selected 6257742 to optimize.
I1229 07:13:10.379560 9689 distributed_mapper_controller.cpp:900] Total tracks: 15767853
I1229 07:14:39.350056 9689 distributed_mapper_controller.cpp:206] Time elapsed:
-[image indexing]: 0 seconds.
-[extraction + matching]: 0 seconds.
-[Rotation Averaging]: 48.6444 seconds.
-[Image Clustering]: 114.19 seconds.
-[SfM]: 14785.9 seconds.
-[Triangulate]: 0 seconds.
-[Bundle Adjustment]: 8659.4 seconds.
I1229 07:14:39.351442 9689 reconstruction.cc:861] Cameras number: 26138
I1229 07:14:39.352648 9689 reconstruction.cc:862] Registered images number: 26138
I1229 07:14:39.353776 9689 reconstruction.cc:863] Added points3D: 18634508
I1229 07:14:39.358817 9689 reconstruction.cc:864] Reconstructed 3D points: 15767853
I1229 07:14:39.777616 9689 reconstruction.cc:865] Mean Reprojection Error: 0.842957
I1229 07:14:39.801369 9689 reconstruction.cc:866] Observations number: 113886769
I1229 07:14:39.804697 9689 reconstruction.cc:867] Mean Track Length: 7.22272
I1229 07:14:39.806843 9689 reconstruction.cc:868] Mean Observations Per Image: 4357.13
hadoop@master:~/yq/DAGSfM/scripts/shell$ 2] Registered images number: 26138

expected constructor, destructor, or type conversion before '(' token DEFINE_string(log_directory, "", "directory to store log file.");

build error

[ 95%] Built target ransac_test
[ 95%] Built target misc_test
[ 95%] Built target cache_test
[ 97%] Built target timer_test
[ 97%] Built target endian_test
[ 98%] Built target bitmap_test
[ 98%] Built target opengl_utils_test
[ 98%] Built target matrix_test
[ 98%] Built target threading_test
[ 98%] Built target string_test
[ 98%] Built target random_test
/home/i23d/data1/dependency/GraphCompileTest/GraphSfM/src/exe/colmap.cc:58:14: error: expected constructor, destructor, or type conversion before '(' token
 DEFINE_string(log_directory, "", "directory to store log file.");
              ^
src/exe/CMakeFiles/colmap_exe.dir/build.make:62: recipe for target 'src/exe/CMakeFiles/colmap_exe.dir/colmap.cc.o' failed
make[2]: *** [src/exe/CMakeFiles/colmap_exe.dir/colmap.cc.o] Error 1
CMakeFiles/Makefile2:4576: recipe for target 'src/exe/CMakeFiles/colmap_exe.dir/all' failed
make[1]: *** [src/exe/CMakeFiles/colmap_exe.dir/all] Error 2
Makefile:138: recipe for target 'all' failed
make: *** [all] Error 2```

Global SfM available?

Hi @AIBluefisher ,

Thanks for your good. work to improve speed of SfM. I notice you have implemented
global SfM ChangeLog.

Will you release the code in the future?

Thanks a lot for your help.

Issue about Sequential Mode

I'd like to run in sequential mode, but encounter some issue.
First, I extract feature with extract_feature.sh.
I've modify the script as

DATASET_PATH=~/F/iii_office/new

/home/apple/F/DAGSfM/build/src/exe/colmap feature_extractor \
--database_path=$DATASET_PATH/database.db \
--image_path=$DATASET_PATH/images \
--SiftExtraction.num_threads=8 \
--SiftExtraction.use_gpu=1 \
--SiftExtraction.gpu_index=0

All image features are extracted. But at the end of the process, an error occured.

Could not create logging file: No such file or directory

I can't figure how to fix this error.

Then I run distributed_sfm.sh.
The error message is shown below.

0215 16:38:25.510536 24396 distributed_mapper_controller.cpp:586] Reading images...
I0215 16:38:25.513655 24396 distributed_mapper_controller.cpp:595] Reading two view geometries...
I0215 16:38:25.513778 24396 distributed_mapper_controller.cpp:605] Estimating two view geometries
I0215 16:38:25.513797 24396 distributed_mapper_controller.cpp:622] Elapsed Time[database reading]: 0.002854 seconds
I0215 16:38:25.513839 24396 distributed_mapper_controller.cpp:624] image pairs: 0
terminate called after throwing an instance of 'std::bad_alloc'
  what():  std::bad_alloc
*** Aborted at 1644914305 (unix time) try "date -d @1644914305" if you are using GNU date ***
PC: @     0x7f076ff40438 gsignal
*** SIGABRT (@0x3e800005f4b) received by PID 24395 (TID 0x7f076638b700) from PID 24395; stack trace: ***
    @     0x7f0772bc4390 (unknown)
    @     0x7f076ff40438 gsignal
    @     0x7f076ff4203a abort
    @     0x7f0770ac6dde (unknown)
    @     0x7f0770ad27a6 (unknown)
    @     0x7f0770ad2811 std::terminate()
    @     0x7f0770ad2a65 __cxa_throw
    @     0x7f0770ac6a7e (unknown)
    @           0x6dd420 colmap::retrieval::VisualIndex<>::Read()
    @           0x82c674 DAGSfM::VocabSimilarityGraph::Run()
    @           0x93658c colmap::Thread::RunFunc()
    @     0x7f0770afdd4e (unknown)
    @     0x7f0772bba6ba start_thread
    @     0x7f077001251d clone
    @                0x0 (unknown)
./distributed_sfm.sh: line 58: 24395 Aborted                 (core dumped) /home/apple/F/DAGSfM/build/src/exe/colmap distributed_mapper $DATASET_PATH/$output_folder --database_path=$DATASET_PATH/database.db --image_path=$DATASET_PATH/images --output_path=$DATASET_PATH/$output_folder --vocab_tree_path=$DATASET_PATH --config_file_name=$CONFIG_FILE_PATH/config.txt --num_workers=8 --distributed=0 --num_images=100 --assign_cluster_id=1 --write_binary=1 --retriangulate=0 --final_ba=1 --select_tracks_for_bundle_adjustment=1 --long_track_length_threshold=10 --graph_dir=$DATASET_PATH/$output_folder --num_images_ub=$num_images_ub --completeness_ratio=0.7 --relax_ratio=1.3 --cluster_type=SPECTRA

I don't know why it can't find image pairs.
I tried to modify the shell script and checked all the path, but nothing helps.
Here's my script.

DATASET_PATH=~/F/iii_office/new
num_images_ub=100
output_folder=log
CONFIG_FILE_PATH=~/F/iii_office/new

/home/apple/F/DAGSfM/build/src/exe/colmap distributed_mapper \
$DATASET_PATH/$output_folder \
--database_path=$DATASET_PATH/database.db \
--image_path=$DATASET_PATH/images \
--output_path=$DATASET_PATH/$output_folder \
--vocab_tree_path=$DATASET_PATH \
--config_file_name=$CONFIG_FILE_PATH/config.txt \
--num_workers=8 \
--distributed=0 \
--num_images=100 \
--assign_cluster_id=1 \
--write_binary=1 \
--retriangulate=0 \
--final_ba=1 \
--select_tracks_for_bundle_adjustment=1 \
--long_track_length_threshold=10 \
--graph_dir=$DATASET_PATH/$output_folder \
--num_images_ub=$num_images_ub \
--completeness_ratio=0.7 \
--relax_ratio=1.3 \
--cluster_type=SPECTRA

I'm not sure if this is caused by wrong config.txt. How should I put in config.txt if I want to run in sequential mode?

make install error

CMake Error at cmake_install.cmake:61 (file):
file INSTALL cannot find "/home/sunny/GraphSfMcolmap/doc/COLMAP.desktop".
Makefile:96: recipe for target 'install' failed
make: *** [install] Error 1

There are no such path of doc and COLMAP.desktop.

I'm not sure if there's an impact.

Segmented small maps can not be converted to .nvm files using model_converter

@AIBluefisher, hello, I found that the segmented small maps can not be converted to .nvm files using model_converter. I am sure that I can convert the map in folder 0 or folder partition_0 to partition_x(x denotes the total number of partitions) to .nvm files successfully. Here is is the output of model_converter. Thank you!

terminate called after throwing an instance of 'std::out_of_range'
what(): _Map_base::at
*** Aborted at 1599813927 (unix time) try "date -d @1599813927" if you are using GNU date ***
PC: @ 0x7fe1ad59ef47 gsignal
*** SIGABRT (@0x3e8000054a6) received by PID 21670 (TID 0x7fe1b249d980) from PID 21670; stack trace: ***
@ 0x7fe1b0a808a0 (unknown)
@ 0x7fe1ad59ef47 gsignal
@ 0x7fe1ad5a08b1 abort
@ 0x7fe1adfa087e (unknown)
@ 0x7fe1adfac486 (unknown)
@ 0x7fe1adfac4f1 std::terminate()
@ 0x7fe1adfac745 __cxa_throw
@ 0x7fe1adfa300e std::__throw_out_of_range()
@ 0x55828280efe7 (unknown)
@ 0x55828275219d (unknown)
@ 0x558282744bc8 (unknown)
@ 0x7fe1ad581b97 __libc_start_main
@ 0x55828274ef4a (unknown)
[1] 21670 abort (core dumped)

I notice that all the segmented small maps have the same number of cameras(in my case, 461).

after Merging Clusters ,coordinate error?

@AIBluefisher sorry to bother you! I use DAGSFM run my data , final result is not correct, but the result of the partition is correct. I did not optimize the camera intrinsics during reconstruction, and I use gps constraint ,so each partition result align gps-coordinate . You can see that Figure 1 is the result of partition 3, the coordinate system and Thecamera intrinsics are correct, but the final merged result is shown in Figure 2. The coordinates seem to be normalized and the final camera intrinsics have optimized. May I need to modify the result parameters of the merged version to ensure that my final result is correct?
figure 1 is correct :
g1
figure 2 merge final result is error:
g2

compile error

hello ,when i try gcc-6 or 5 or 4.8 4.7 there always error
can you tell me your gcc g++ version? thank you

gcc-5 error:
/usr/lib/gcc/x86_64-linux-gnu/5/include/avx512fintrin.h(9220): error: argument of type "const void *" is incompatible with parameter of type "const float *"

/usr/lib/gcc/x86_64-linux-gnu/5/include/avx512fintrin.h(9231): error: argument of type "const void *" is incompatible with parameter of type "const float *"

/usr/lib/gcc/x86_64-linux-gnu/5/include/avx512fintrin.h(9244): error: argument of type "const void *" is incompatible with parameter of type "const double *"

/usr/lib/gcc/x86_64-linux-gnu/5/include/avx512fintrin.h(9255): error: argument of type "const void *" is incompatible with parameter of type "const double *"

/usr/lib/gcc/x86_64-linux-gnu/5/include/avx512fintrin.h(9268): error: argument of type "const void *" is incompatible with parameter of type "const float *"

/usr/lib/gcc/x86_64-linux-gnu/5/include/avx512fintrin.h(9279): error: argument of type "const void *" is incompatible with parameter of type "const float *"

/usr/lib/gcc/x86_64-linux-gnu/5/include/avx512fintrin.h(9292): error: argument of type "const void *" is incompatible with parameter of type "const double *"

/usr/lib/gcc/x86_64-linux-gnu/5/include/avx512fintrin.h(9303): error: argument of type "const void *" is incompatible with parameter of type "const double *"

/usr/lib/gcc/x86_64-linux-gnu/5/include/avx512fintrin.h(9316): error: argument of type "const void *" is incompatible with parameter of type "const int *"

/usr/lib/gcc/x86_64-linux-gnu/5/include/avx512fintrin.h(9327): error: argument of type "const void *" is incompatible with parameter of type "const int *"

/usr/lib/gcc/x86_64-linux-gnu/5/include/avx512fintrin.h(9340): error: argument of type "const void *" is incompatible with parameter of type "const long long *"


gcc-4,9 error:

/usr/local/include/ceres/internal/integer_sequence_algorithm.h:64:21: error: no member named 'integer_sequence' in namespace 'std'
struct SumImpl<std::integer_sequence<T, N, Ns...>> {
~~~~~^
/usr/local/include/ceres/internal/integer_sequence_algorithm.h:64:38: error: 'T' does not refer to a value
struct SumImpl<std::integer_sequence<T, N, Ns...>> {
^
/usr/local/include/ceres/internal/integer_sequence_algorithm.h:63:20: note: declared here
template <typename T, T N, T... Ns>
^
/usr/local/include/ceres/internal/integer_sequence_algorithm.h:70:21: error: no member named 'integer_sequence' in namespace 'std'
struct SumImpl<std::integer_sequence<T, N1, N2, Ns...>> {
~~~~~^
/usr/local/include/ceres/internal/integer_sequence_algorithm.h:70:38: error: 'T' does not refer to a value
struct SumImpl<std::integer_sequence<T, N1, N2, Ns...>> {
^
/usr/local/include/ceres/internal/integer_sequence_algorithm.h:69:20: note: declared here
template <typename T, T N1, T N2, T... Ns>
^
/usr/local/include/ceres/internal/integer_sequence_algorithm.h:77:21: error: no member named 'integer_sequence' in namespace 'std'
struct SumImpl<std::integer_sequence<T, N1, N2, N3, N4, Ns...>> {
~~~~~^
/usr/local/include/ceres/internal/integer_sequence_algorithm.h:77:38: error: 'T' does not refer to a value
struct SumImpl<std::integer_sequence<T, N1, N2, N3, N4, Ns...>> {
^
/usr/local/include/ceres/internal/integer_sequence_algorithm.h:76:20: note: declared here
template <typename T, T N1, T N2, T N3, T N4, T... Ns>
^
/usr/local/include/ceres/internal/integer_sequence_algorithm.h:84:21: error: no member named 'integer_sequence' in namespace 'std'
struct SumImpl<std::integer_sequence<T, N>> {
~~~~~^
/usr/local/include/ceres/internal/integer_sequence_algorithm.h:84:38: error: 'T' does not refer to a value
struct SumImpl<std::integer_sequence<T, N>> {
^
/usr/local/include/ceres/internal/integer_sequence_algorithm.h:83:20: note: declared here
template <typename T, T N>
^
/usr/local/include/ceres/internal/integer_sequence_algorithm.h:90:21: error: no member named 'integer_sequence' in namespace 'std'
struct SumImpl<std::integer_sequence> {
~~~~~^
/usr/local/include/ceres/internal/integer_sequence_algorithm.h:90:38: error: 'T' does not refer to a value
struct SumImpl<std::integer_sequence> {
^
/usr/local/include/ceres/internal/integer_sequence_algorithm.h:89:20: note: declared here
template
^
/usr/local/include/ceres/internal/integer_sequence_algorithm.h:132:39: error: no member named 'integer_sequence' in namespace 'std'
struct ExclusiveScanImpl<T, Sum, std::integer_sequence<T, N, Ns...>,
~~~~~^
/usr/local/include/ceres/internal/integer_sequence_algorithm.h:132:56: error: 'T' does not refer to a value
struct ExclusiveScanImpl<T, Sum, std::integer_sequence<T, N, Ns...>,
^
/usr/local/include/ceres/internal/integer_sequence_algorithm.h:131:20: note: declared here
template <typename T, T Sum, T N, T... Ns, T... Rs>
^
/usr/local/include/ceres/internal/integer_sequence_algorithm.h:133:31: error: cannot define or redeclare 'integer_sequence' here because namespace 'internal' does
not enclose namespace 'std'
std::integer_sequence<T, Rs...>> {
~~~~~^
/usr/local/include/ceres/internal/integer_sequence_algorithm.h:133:31: error: no member named 'integer_sequence' in namespace 'std'
std::integer_sequence<T, Rs...>> {
~~~~~^
/usr/local/include/ceres/internal/integer_sequence_algorithm.h:131:40: error: template parameter pack must be the last template parameter
template <typename T, T Sum, T N, T... Ns, T... Rs>
^
/usr/local/include/ceres/internal/integer_sequence_algorithm.h:133:47: error: expected ';' at end of declaration
std::integer_sequence<T, Rs...>> {
^
/usr/local/include/ceres/internal/integer_sequence_algorithm.h:133:47: error: expected unqualified-id
/usr/local/include/ceres/internal/integer_sequence_algorithm.h:141:34: error: template argument for template type parameter must be a type
struct ExclusiveScanImpl<T, Sum, std::integer_sequence, SeqOut> {
^~~~~~~~~~~~~~~~~~~~~~~~
/usr/local/include/ceres/internal/integer_sequence_algorithm.h:128:39: note: template parameter is declared here
template <typename T, T Sum, typename SeqIn, typename SeqOut>
^
/usr/local/include/ceres/internal/integer_sequence_algorithm.h:155:48: error: template argument for template type parameter must be a type
typename ExclusiveScanImpl<T, T(0), Seq, std::integer_sequence>::Type;

Large data set processing

Hello, I wonder how many images can GraphSfM process at a time. Does GraphSfM have the potential to process millions of images at a time? Thank you.

Segment the sparse point cloud regularly?

@AIBluefisher. Hello, can I segment the sparse point cloud regularly(e.g. rectangular regions without overlap) using GraphSfM? Currently I find point_cloud_segmenter, but I also find there is overlap between regions after I segment sparse point cloud using point_cloud_segmenter.

As my goal is to obtain large scale mesh model. If I continue to perform Multi-View Stereo algorithm on these regions and further surface reconstruction algorithm, I will end up with several mesh models with overlap.

Could you please give me some suggestions? Thank you!

Sequential mode error

Hi, thanks for this great work. When I try the sequential mode, I come across the following issue:
image

How can I solve it? Thanks!

compile error

I followed your instructions to compile DAGSfM,but I run into some errors.My gcc's version is 5.4.0.Could you help me?

                                       ^

/usr/local/include/ceres/internal/parameter_dims.h:101:20: error: ‘std::integer_sequence’ has not been declared
T* ptr, std::integer_sequence<int, Indices...>) {
^
/usr/local/include/ceres/internal/parameter_dims.h:101:36: error: expected ‘,’ or ‘...’ before ‘<’ token
T* ptr, std::integer_sequence<int, Indices...>) {
^
/usr/local/include/ceres/internal/parameter_dims.h: In static member function ‘static std::array<T*, ceres::internal::ParameterDims<IsDynamic, Ns>::kNumParameterBlocks> ceres::internal::ParameterDims<IsDynamic, Ns>::GetUnpackedParameters(T*)’:
/usr/local/include/ceres/internal/parameter_dims.h:94:35: error: ‘Parameters’ was not declared in this scope
using Offsets = ExclusiveScan;
^
/usr/local/include/ceres/internal/parameter_dims.h:94:45: error: template argument 1 is invalid
using Offsets = ExclusiveScan;
^
/usr/local/include/ceres/internal/parameter_dims.h:95:47: error: there are no arguments to ‘Offsets’ that depend on a template parameter, so a declaration of ‘Offsets’ must be available [-fpermissive]
return GetUnpackedParameters(ptr, Offsets());
^
In file included from /usr/local/include/ceres/internal/autodiff.h:152:0,
from /usr/local/include/ceres/autodiff_cost_function.h:130,
from /usr/local/include/ceres/ceres.h:37,
from /home/hadoop/yq/DAGSfM/src/base/camera_models.h:42,
from /home/hadoop/yq/DAGSfM/src/base/database_cache.h:43,
from /home/hadoop/yq/DAGSfM/src/sfm/incremental_mapper.h:36,
from /home/hadoop/yq/DAGSfM/src/controllers/incremental_mapper_controller.h:39,
from /home/hadoop/yq/DAGSfM/src/ui/main_window.h:40,
from /home/hadoop/yq/DAGSfM/src/ui/automatic_reconstruction_widget.cc:34:
/usr/local/include/ceres/internal/variadic_evaluate.h: At global scope:
/usr/local/include/ceres/internal/variadic_evaluate.h:53:39: error: ‘std::integer_sequence’ has not been declared
std::integer_sequence<int, Indices...>) {
^
/usr/local/include/ceres/internal/variadic_evaluate.h:53:55: error: expected ‘,’ or ‘...’ before ‘<’ token
std::integer_sequence<int, Indices...>) {
^
/usr/local/include/ceres/internal/variadic_evaluate.h:66:39: error: ‘std::integer_sequence’ has not been declared
std::integer_sequence) {
^
/usr/local/include/ceres/internal/variadic_evaluate.h:66:55: error: expected ‘,’ or ‘...’ before ‘<’ token
std::integer_sequence) {
^
/usr/local/include/ceres/internal/variadic_evaluate.h: In function ‘bool ceres::internal::VariadicEvaluateImpl(const Functor&, const T* const*, T*, const void*)’:
/usr/local/include/ceres/internal/variadic_evaluate.h:77:12: error: ‘make_integer_sequence’ in namespace ‘std’ does not name a template type
std::make_integer_sequence<int, ParameterDims::kNumParameterBlocks>;
^
/usr/local/include/ceres/internal/variadic_evaluate.h:80:66: error: there are no arguments to ‘ParameterBlockIndices’ that depend on a template parameter, so a declaration of ‘ParameterBlockIndices’ must be available [-fpermissive]
functor, input, output, IsDynamic(), ParameterBlockIndices());
^
In file included from /usr/local/include/ceres/autodiff_cost_function.h:130:0,
from /usr/local/include/ceres/ceres.h:37,
from /home/hadoop/yq/DAGSfM/src/base/camera_models.h:42,
from /home/hadoop/yq/DAGSfM/src/base/database_cache.h:43,
from /home/hadoop/yq/DAGSfM/src/sfm/incremental_mapper.h:36,
from /home/hadoop/yq/DAGSfM/src/controllers/incremental_mapper_controller.h:39,
from /home/hadoop/yq/DAGSfM/src/ui/main_window.h:40,
from /home/hadoop/yq/DAGSfM/src/ui/automatic_reconstruction_widget.cc:34:
/usr/local/include/ceres/internal/autodiff.h: At global scope:
/usr/local/include/ceres/internal/autodiff.h:217:34: error: ‘integer_sequence’ is not a member of ‘std’
struct Make1stOrderPerturbations<std::integer_sequence<int, N, Ns...>,
^
/usr/local/include/ceres/internal/autodiff.h:217:34: error: ‘integer_sequence’ is not a member of ‘std’
/usr/local/include/ceres/internal/autodiff.h:217:69: error: template argument 1 is invalid
struct Make1stOrderPerturbations<std::integer_sequence<int, N, Ns...>,
^
/usr/local/include/ceres/internal/autodiff.h:232:34: error: ‘integer_sequence’ is not a member of ‘std’
struct Make1stOrderPerturbations<std::integer_sequence,
^
/usr/local/include/ceres/internal/autodiff.h:232:34: error: ‘integer_sequence’ is not a member of ‘std’
/usr/local/include/ceres/internal/autodiff.h:232:59: error: template argument 1 is invalid
struct Make1stOrderPerturbations<std::integer_sequence,
^
/usr/local/include/ceres/internal/autodiff.h:282:26: error: ‘integer_sequence’ is not a member of ‘std’
struct Take1stOrderParts<std::integer_sequence<int, N, Ns...>,
^
/usr/local/include/ceres/internal/autodiff.h:282:26: error: ‘integer_sequence’ is not a member of ‘std’
/usr/local/include/ceres/internal/autodiff.h:282:61: error: template argument 1 is invalid
struct Take1stOrderParts<std::integer_sequence<int, N, Ns...>,
^
/usr/local/include/ceres/internal/autodiff.h:298:26: error: ‘integer_sequence’ is not a member of ‘std’
struct Take1stOrderParts<std::integer_sequence, ParameterIdx, Offset> {
^
/usr/local/include/ceres/internal/autodiff.h:298:26: error: ‘integer_sequence’ is not a member of ‘std’
/usr/local/include/ceres/internal/autodiff.h:298:51: error: template argument 1 is invalid
struct Take1stOrderParts<std::integer_sequence, ParameterIdx, Offset> {
^
In file included from /usr/local/include/ceres/ceres.h:42:0,
from /home/hadoop/yq/DAGSfM/src/base/camera_models.h:42,
from /home/hadoop/yq/DAGSfM/src/base/database_cache.h:43,
from /home/hadoop/yq/DAGSfM/src/sfm/incremental_mapper.h:36,
from /home/hadoop/yq/DAGSfM/src/controllers/incremental_mapper_controller.h:39,
from /home/hadoop/yq/DAGSfM/src/ui/main_window.h:40,
from /home/hadoop/yq/DAGSfM/src/ui/automatic_reconstruction_widget.cc:34:
/usr/local/include/ceres/cost_function_to_functor.h:160:29: error: ‘std::integer_sequence’ has not been declared
std::integer_sequence<int, Indices...>) {
^
/usr/local/include/ceres/cost_function_to_functor.h:160:45: error: expected ‘,’ or ‘...’ before ‘<’ token
std::integer_sequence<int, Indices...>) {
^
/usr/local/include/ceres/cost_function_to_functor.h: In member function ‘bool ceres::CostFunctionToFunctor<kNumResiduals, Ns>::operator()(const T*, Ts* ...) const’:
/usr/local/include/ceres/cost_function_to_functor.h:147:14: error: ‘make_integer_sequence’ in namespace ‘std’ does not name a template type
std::make_integer_sequence<int, ParameterDims::kNumParameterBlocks>;
^
/usr/local/include/ceres/cost_function_to_functor.h:149:49: error: there are no arguments to ‘Indices’ that depend on a template parameter, so a declaration of ‘Indices’ must be available [-fpermissive]
GetParameterPointers(params, Indices());
^
In file included from /usr/local/include/ceres/dynamic_numeric_diff_cost_function.h:44:0,
from /usr/local/include/ceres/ceres.h:48,
from /home/hadoop/yq/DAGSfM/src/base/camera_models.h:42,
from /home/hadoop/yq/DAGSfM/src/base/database_cache.h:43,
from /home/hadoop/yq/DAGSfM/src/sfm/incremental_mapper.h:36,
from /home/hadoop/yq/DAGSfM/src/controllers/incremental_mapper_controller.h:39,
from /home/hadoop/yq/DAGSfM/src/ui/main_window.h:40,
from /home/hadoop/yq/DAGSfM/src/ui/automatic_reconstruction_widget.cc:34:
/usr/local/include/ceres/internal/numeric_diff.h: At global scope:
/usr/local/include/ceres/internal/numeric_diff.h:445:43: error: ‘integer_sequence’ is not a member of ‘std’
std::integer_sequence<int, N, Ns...>,
^
/usr/local/include/ceres/internal/numeric_diff.h:445:43: error: ‘integer_sequence’ is not a member of ‘std’
/usr/local/include/ceres/internal/numeric_diff.h:445:78: error: template argument 2 is invalid
std::integer_sequence<int, N, Ns...>,
^

Support for windows?

As far as I know, COLMAP supports Windows 10. I am wondering whether GraphSfM support Windows 10? Thank you!

Efficiency problem

Hello, I run the pipeline on my dataset, which contains 18,384 images. The resolution of the images is 6000*4000. The total time consumption is 49 hours on my ubuntu server(Intel(R) Xeon(R) CPU E5-2609 v4 @ 1.70GHz 64GB Nvidia GTX 2080TI).

I noticed in the README.md file, that "Based on this work, we have been successfully reconstructed Peking University (contains 12306 images) within 2 hours on a laptop".

I am wondering what is the primary cause of the huge distinction of the time consumption.

Thank you!

About corresponding paper in arxiv

Hi!Thank you for your open source of the excellent SfM system. And I wonder when could I get the corresponding paper in arxiv or any other way?

terminate called after throwing an instancec of 'flann::FLANNException'

I have compiled DAGSfM on 2 PCs. I ran './colmap local_sfm_worker --output_path=/home/hadoop/data/test_239_DAG_out' on my worker whose address is 192.168.50.17,and start master like this and ran into some errors:
3
It seems like I have the wrong version of opencv?I 'm not sure.And my settings are as follows:
4
5
6

Image pairs:0

I follow the tutorial and run on several datasets but got the same error。
error
I didn‘t install the Python Modules, does this matter?

Person Hall dataset

Hi,
Can you please provide Person Hall images you used in your tests? We want to be able to compare to your results.
Thank you!

Sequential Mode failed on Trafalgar dataset (contains more than 15000 images)

Hello! Thank you for your great work. I run the Sequential Mode pipeline. Both feature extraction and feature matching were successful. But I encountered a problem when running distributed_mapper:

terminate called after throwing an instance of 'std::out_of_range'
what(): vector::_M_range_check: __n (which is 0) >= this->size() (which is 0)
*** Aborted at 1597376966 (unix time) try "date -d @1597376966" if you are using GNU date ***
PC: @ 0x7f54580dff47 gsignal
*** SIGABRT (@0x4c90) received by PID 19600 (TID 0x7f542943b700) from PID 19600; stack trace:

@     0x7f545b5c18a0 (unknown)                                                           
@     0x7f54580dff47 gsignal                                                             
@     0x7f54580e18b1 abort                                                               
@     0x7f5458ae187e (unknown)                                                           
@     0x7f5458aed486 (unknown)                                                           
@     0x7f5458aed4f1 std::terminate()                                                    
@     0x7f5458aed745 __cxa_throw                                                         
@     0x7f5458ae4037 (unknown)                                                           
@     0x5600dc12f4fa colmap::ReconstructionManager::Get()                                
@     0x5600dc19ef2d colmap::IncrementalMapperController::Run()                          
@     0x5600dc373d9c colmap::Thread::RunFunc()                                           
@     0x7f5458b18870 (unknown)                                                           
@     0x7f545b5b66db start_thread                                                        
@     0x7f54581c2a3f clone                                                               

Aborted (core dumped)
./distributed_sfm.sh: 46: ./distributed_sfm.sh: --num_images_ub=120: not found

I do not know how to solve it. It seems there is no --num_images_ub option for the distributed_mapper.

build error

791308564
I fellow the command:
cd GraphSfM
mkdir build && cd build
cmake -D CUDA_USE_STATIC_CUDA_RUNTIME=OFF ..
make -j4
But when the project is built to 95%, it breaks.
Does it have relation with opencv version? My opencv version is 4.0.
Can anybody knows how to deal with it ?
Thanks and wish your reply.!

Scene partitioning for large scale MVS

@AIBluefisher, hello, is it possible to partition the scene like CMVS or method introduced by Maura, Massimo et al. using GraphSfM? Should I just use lower completeness ratio when performing point_cloud_segmenter?

I found there is huge overlapping area(e.g. 50% when I set completeness_ratio=0.5) between clusters of my sfm result. Is it possible to use lower completeness_ratio when performing distributed_mapper? I think, perhaps, using lower completeness_ratio will greatly improve the efficiency distributed_mapper, cause there will be less views in each cluster.

Thank you!

Seems there is a problem with Feature Extraction

image

I think my previous example worked because feature extraction was already done.

The problem is from the colmap Sift Feature Extractor, the extraction.cc in feature folder.

It breaks here in the file.

` if (sift_options_.max_image_size > 0) {
// Breaks at this line here 
      CHECK(resizer_queue_->Push(image_data));
    } else {
      CHECK(extractor_queue_->Push(image_data));
    }`

make install error

when i cd GraphSfM-dev and make install, the error occurs:
`-- The C compiler identification is GNU 5.4.0
-- The CXX compiler identification is GNU 5.4.0
-- Check for working C compiler: /usr/bin/cc
-- Check for working C compiler: /usr/bin/cc -- works
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Detecting C compile features
-- Detecting C compile features - done
-- Check for working CXX compiler: /usr/bin/c++
-- Check for working CXX compiler: /usr/bin/c++ -- works
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Detecting CXX compile features
-- Detecting CXX compile features - done
-- Found installed version of Eigen: /usr/lib/cmake/eigen3
-- Found required Ceres dependency: Eigen version 3.2.92 in /usr/include/eigen3
-- Found required Ceres dependency: glog
-- Performing Test GFLAGS_IN_GOOGLE_NAMESPACE
-- Performing Test GFLAGS_IN_GOOGLE_NAMESPACE - Success
-- Found required Ceres dependency: gflags
-- Found Ceres version: 1.14.0 installed in: /usr/local with components: [EigenSparse, SparseLinearAlgebraLibrary, LAPACK, SuiteSparse, CXSparse, SchurSpecializations, OpenMP, Multithreading]
-- Boost version: 1.58.0
-- Found the following Boost libraries:
-- program_options
-- filesystem
-- graph
-- regex
-- system
-- unit_test_framework
-- Found Eigen3: /usr/include/eigen3 (Required is at least version "2.91.0")
-- Found Eigen
-- Includes : /usr/include/eigen3
-- Found FreeImage
-- Includes : /usr/include
-- Libraries : /usr/lib/x86_64-linux-gnu/libfreeimage.so
-- Found Glog
-- Includes : /usr/include
-- Libraries : /usr/lib/x86_64-linux-gnu/libglog.so
-- Found OpenGL: /usr/lib/x86_64-linux-gnu/libGL.so
-- Found Glew
-- Includes : /usr/include
-- Libraries : /usr/lib/x86_64-linux-gnu/libGLEW.so
-- Found Git: /usr/bin/git (found version "2.7.4")
-- Found RPCLib
-- Include : /usr/local/include
-- Libraries : /usr/local/lib/librpc.a
-- Found rpclib: /usr/local/include
-- Found Threads: TRUE
-- A library with BLAS API found.
-- Found AMD headers in: /usr/include/suitesparse
-- Found AMD library: /usr/lib/x86_64-linux-gnu/libamd.so
-- Found CAMD headers in: /usr/include/suitesparse
-- Found CAMD library: /usr/lib/x86_64-linux-gnu/libcamd.so
-- Found COLAMD headers in: /usr/include/suitesparse
-- Found COLAMD library: /usr/lib/x86_64-linux-gnu/libcolamd.so
-- Found CCOLAMD headers in: /usr/include/suitesparse
-- Found CCOLAMD library: /usr/lib/x86_64-linux-gnu/libccolamd.so
-- Found CHOLMOD headers in: /usr/include/suitesparse
-- Found CHOLMOD library: /usr/lib/x86_64-linux-gnu/libcholmod.so
-- Found SUITESPARSEQR headers in: /usr/include/suitesparse
-- Found SUITESPARSEQR library: /usr/lib/x86_64-linux-gnu/libspqr.so
-- Did not find TBB library (optional SuiteSparse dependency)
-- Did not find Intel TBB library, assuming SuiteSparseQR was not compiled with TBB.
-- Found SUITESPARSE_CONFIG headers in: /usr/include/suitesparse
-- Found SUITESPARSE_CONFIG library: /usr/lib/x86_64-linux-gnu/libsuitesparseconfig.so
-- Found LIBRT library: /usr/lib/x86_64-linux-gnu/librt.so
-- Adding librt: /usr/lib/x86_64-linux-gnu/librt.so to SuiteSparse_config libraries (required on Linux & Unix [not OSX] if SuiteSparse is compiled with timing).
-- Did not find METIS library (optional SuiteSparse dependency)
-- Found SuiteSparse: TRUE (found version "4.4.6")
-- Found SuiteSparse 4.4.6
-- Check for gtest
CMake Error at /usr/share/cmake-3.5/Modules/FindPackageHandleStandardArgs.cmake:148 (message):
Could NOT find GTest (missing: GTEST_LIBRARY GTEST_INCLUDE_DIR
GTEST_MAIN_LIBRARY)
Call Stack (most recent call first):
/usr/share/cmake-3.5/Modules/FindPackageHandleStandardArgs.cmake:388 (_FPHSA_FAILURE_MESSAGE)
/usr/share/cmake-3.5/Modules/FindGTest.cmake:205 (FIND_PACKAGE_HANDLE_STANDARD_ARGS)
CMakeLists.txt:145 (find_package)

-- Configuring incomplete, errors occurred!
See also "/home/coolhao/桌面/sfm/GraphSfM-dev/build/CMakeFiles/CMakeOutput.log".
See also "/home/coolhao/桌面/sfm/GraphSfM-dev/build/CMakeFiles/CMakeError.log".
`

build successfully! but can't run with error ,,,,

hello ,I 've tried the command
python build/software/SfM/SfM_SequentialPipeline.py $image_dir $output_dir
with this error"
File "build/software/SfM/SfM_SequentialPipeline.py", line 36, in
max_image_number = sys.argv[3]
IndexError: list index out of range
and then I add the max_image_number ,still an error:
gms=sys.argv[4]

then I tried the command
python build/software/SfM/SfM_DC_Pipeline_singlematch.py $image_dir $output_dir $max_img_num
with errors:
Traceback (most recent call last):
File "build/software/SfM/SfM_DC_Pipeline_singlematch.py", line 94, in
f = open(cluster_dirs_file, 'r')
IOError: [Errno 2] No such file or directory: 'phone_data/clusters.txt'
I yumenle^^^^^^^

make error

Hi @AIBluefisher Thanks for your great work!

[ 66%] Building CXX object src/base/CMakeFiles/pose_test.dir/pose_test.cc.o
make[2]: *** No rule to make target '/usr/local/lib/libgtest_main.a', needed by 'src/base/essen tial_matrix_utils_test'. Stop.
make[2]: *** Waiting for unfinished jobs....
[ 68%] Building CXX object src/base/CMakeFiles/essential_matrix_utils_test.dir/essential_matrix _test.cc.o
CMakeFiles/Makefile2:916: recipe for target 'src/base/CMakeFiles/camera_database_test.dir/all' failed
make[1]: *** [src/base/CMakeFiles/camera_database_test.dir/all] Error 2
make[1]: *** Waiting for unfinished jobs....
CMakeFiles/Makefile2:772: recipe for target 'src/base/CMakeFiles/visibility_pyramid_test.dir/al l' failed
make[1]: *** [src/base/CMakeFiles/visibility_pyramid_test.dir/all] Error 2
CMakeFiles/Makefile2:1024: recipe for target 'src/base/CMakeFiles/database_cache_test.dir/all' failed
make[1]: *** [src/base/CMakeFiles/database_cache_test.dir/all] Error 2
CMakeFiles/Makefile2:808: recipe for target 'src/base/CMakeFiles/triangulation_test.dir/all' fa iled
make[1]: *** [src/base/CMakeFiles/triangulation_test.dir/all] Error 2
CMakeFiles/Makefile2:736: recipe for target 'src/base/CMakeFiles/warp_test.dir/all' failed
make[1]: *** [src/base/CMakeFiles/warp_test.dir/all] Error 2
CMakeFiles/Makefile2:1132: recipe for target 'src/base/CMakeFiles/point3d_test.dir/all' failed
make[1]: *** [src/base/CMakeFiles/point3d_test.dir/all] Error 2
CMakeFiles/Makefile2:880: recipe for target 'src/base/CMakeFiles/track_test.dir/all' failed
make[1]: *** [src/base/CMakeFiles/track_test.dir/all] Error 2
CMakeFiles/Makefile2:1276: recipe for target 'src/base/CMakeFiles/similarity_transform_test.dir /all' failed
make[1]: *** [src/base/CMakeFiles/similarity_transform_test.dir/all] Error 2
CMakeFiles/Makefile2:952: recipe for target 'src/base/CMakeFiles/essential_matrix_utils_test.di r/all' failed
make[1]: *** [src/base/CMakeFiles/essential_matrix_utils_test.dir/all] Error 2
CMakeFiles/Makefile2:1096: recipe for target 'src/base/CMakeFiles/camera_test.dir/all' failed
make[1]: *** [src/base/CMakeFiles/camera_test.dir/all] Error 2
CMakeFiles/Makefile2:1060: recipe for target 'src/base/CMakeFiles/correspondence_graph_test.dir /all' failed
make[1]: *** [src/base/CMakeFiles/correspondence_graph_test.dir/all] Error 2
CMakeFiles/Makefile2:988: recipe for target 'src/base/CMakeFiles/image_test.dir/all' failed
make[1]: *** [src/base/CMakeFiles/image_test.dir/all] Error 2
CMakeFiles/Makefile2:844: recipe for target 'src/base/CMakeFiles/undistortion_test.dir/all' fai led
make[1]: *** [src/base/CMakeFiles/undistortion_test.dir/all] Error 2
CMakeFiles/Makefile2:1204: recipe for target 'src/base/CMakeFiles/pose_test.dir/all' failed
make[1]: *** [src/base/CMakeFiles/pose_test.dir/all] Error 2
CMakeFiles/Makefile2:1240: recipe for target 'src/base/CMakeFiles/projection_test.dir/all' fail ed
make[1]: *** [src/base/CMakeFiles/projection_test.dir/all] Error 2
CMakeFiles/Makefile2:1168: recipe for target 'src/base/CMakeFiles/database_test.dir/all' failed
make[1]: *** [src/base/CMakeFiles/database_test.dir/all] Error 2
Makefile:140: recipe for target 'all' failed
make: *** [all] Error 2

gtest cause this error, any suggestions? Thanks!

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.