alicevision / Meshroom

3D Reconstruction Software
http://alicevision.org
Other
11.15k stars 1.08k forks source link

[bug] FeatureMatching with MatchFromKnownCamerasPoses checked, fail #1241

Open remmel opened 3 years ago

remmel commented 3 years ago

Hi,

I'm following the tuto Using-known-camera-positions, but when checking FeatureMatching.MatchFromKnownCamerasPoses, the step fail. Uncheck this is fine.

I have an old cuda (c.c. 2), but I'm not expecting that step to use CUDA, right? [edit]

Seg fault on MR 2020.1.0 Ubuntu 20.04 LTS cc 2.0 ``` [13:09:13.726240][error] cudaGetDeviceCount failed: CUDA driver version is insufficient for CUDA runtime version [13:09:13.726402][info] Can't find CUDA-Enabled GPU. *************************************************** [13:09:13.955834][info] Putative matches from known poses: 1190 image pairs. Compute pairwise fundamental guided matching: 0% 10 20 30 40 50 60 70 80 90 100% |----|----|----|----|----|----|----|----|----|----| Segmentation fault (core dumped) ```

Error on W10 MR 2021.1 cc3.5 [edit]

[14:22:06.339389][info] Number of pairs: 3
[14:22:06.339389][info] There are 3 views and 3 image pairs.
[14:22:06.339389][info] Load features and descriptors
Loading regions
0%   10   20   30   40   50   60   70   80   90   100%
|----|----|----|----|----|----|----|----|----|----|
[14:22:06.393715][info] Supported CUDA-Enabled GPU detected.
***************************************************
[14:22:06.555326][info] Putative matches from known poses: 3 image pairs.
Compute pairwise fundamental guided matching:
0%   10   20   30   40   50   60   70   80   90   100%
|----|----|----|----|----|----|----|----|----|----|

What does that option do? This is not documented in https://meshroom-manual.readthedocs.io/en/latest/feature-documentation/nodes/FeatureMatching.html Do it optimize the featureMatching avoiding to search for feature in image which are posed in a totally different place? If it's only optimize the featureMatching, that option is mandatory, isn't it?

remmel commented 3 years ago

After testing that in new MR 2021.1, it seems that it has been fixed - EDIT: WRONG

[19:15:20.025454][error] cudaGetDeviceCount failed: CUDA driver version is insufficient for CUDA runtime version
[19:15:20.025596][info] Can't find CUDA-Enabled GPU.
***************************************************
[19:15:21.672911][info] Putative matches (unknown poses): 1190 image pairs.
[19:15:21.673010][info] sift Regions Matching

0%   10   20   30   40   50   60   70   80   90   100%
|----|----|----|----|----|----|----|----|----|----|
*****
remmel commented 3 years ago

I've just tested with new MR 2021.1, and the problem is still here (I made a mistake in my previous comment as I tested without replacing cameraInit.sfm with my camerasWithPoses.sfm, and it works if I don't change that cameraInit.sfm file)

remmel commented 3 years ago

As an update, I was able to reconstruct a scene importing poses without checking that option FeatureMatching.Match From Know Camera I suspect it to be optional and only here to save computing time

fabiencastan commented 3 years ago

I'm not sure to fully understand the pbl you have. This option is not mandatory and not enabled by default.

When you have known poses, this option allows you to use the epipolar constraint to only match descriptors that makes sense in term of geometry.

This can help to deal with repetitive structures, etc. and thus could improve the number of matches that you retrieve. But this is only true if your known poses are good enough. Else it can also destroy the quality as we may only search features in the wrong areas.

Does that answer your question? If not, could you re-explain in detail what is the problem?

remmel commented 3 years ago

thanks @fabiencastan it answers a part of my question: that that is optional parameter to import poses. But why does that option fail? I uploaded a simpler dataset (with 3 pictures) which also fail: https://github.com/remmel/rgbd-dataset/tree/main/2021-04-10_114859_pcchessboard (with that dataset normal pipeline reconstruction works, reconstruction following the tutorial with that option uncheck also work)