AIBluefisher / DAGSfM

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.
https://aibluefisher.github.io/GraphSfM/
BSD 3-Clause "New" or "Revised" License
395 stars 84 forks source link

Issue about Sequential Mode #56

Closed yamiefun closed 2 years ago

yamiefun commented 2 years ago

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?

AIBluefisher commented 2 years ago

Refer to this issue: https://github.com/AIBluefisher/DAGSfM/issues/54