mapillary / OpenSfM

Open source Structure-from-Motion pipeline
https://www.opensfm.org/
BSD 2-Clause "Simplified" License
3.34k stars 852 forks source link

Can't run Akaze binary descriptor MLDB #153

Closed bigw124 closed 7 years ago

bigw124 commented 7 years ago

I have Ubuntu 16.04 installed on Virtualbox. I am running OpenSfM in Docker, where I have successfully created several dense point clouds using Akaze for feature detection and MSurf for feature description.

I want to try the binary descriptor MLDB. So I changed the config file, but I am getting an error where the computer gets frozen on the attached screen. The error occurs almost immediately after starting the feature detection/description.

I know this isn't a "wrong descriptor" error that occurs from providing an invalid descriptor such as M-LDB. I have tried running it with different min_frames, descriptor size, threshold, and matcher types and I have no luck. What is going on here? What feature matching should I use for MLDB, Flann?

image

zwn commented 7 years ago

Try to switch to running with only one process. You could be experiencing something similar to https://github.com/mapillary/OpenSfM/issues/140#issuecomment-277994232 . By using just one process, the possible error is not swallowed and you might find out what is going on.

paulinus commented 7 years ago

The problem is that the python wrapper of Akaze assumes the descriptor is of floating point type here https://github.com/mapillary/OpenSfM/blob/d301856e920af2f999267e53032ecf1b18154813/opensfm/src/akaze.cc#L45-L46 A case should be added for binary descriptors.

paulinus commented 7 years ago

I've just added the case. It is now working on current master. Thanks for reporting!