データセットを処理するためにcolmapをインストールするために、多くの落とし穴を経験したので、それらを簡単にメモしておきます。
1.住所:
ソースコードアドレス: GitHub -colmap/colmap:COLMAP - Structure-from-Motion および Multi-View Stereo
ドキュメントのアドレス:インストール — COLMAP 3.9-dev ドキュメント
2. インストール手順
2.1 ceres-solver のインストール
今回の 1.14.0 のインストールでは、公式 Web サイトから直接入手したものと 2.0 の 1 つ、合計 3 つのバージョンを試しましたが、すべてのエラーが報告されました。
1.14.0をネットで見つけてすんなりインストールできました。
解凍後は基本的には
mkdir ceres-bin
cd ceres-bin
cmake ..
make -j4
2.2 Colmap のインストール時の問題の概要
主な参考資料: 一部のエラー レポートについては、これを参照してください。
ubuntu16 に Colmap をインストールする場合の問題と解決策_cudasetupargument 未定義の参照_WZJ&LSK のブログ - CSDN ブログ
まず、非常に重要な点はバージョンです。
つまり、バージョン 3.7 に戻せば問題なく進むはずですが、その背後にある問題のほとんどは他のバージョンにあります。
git checkout 3.7
公式サイトからのインストール紹介は以下の通りです。
1. 依存ライブラリをインストールする
2. Colmap をダウンロードし、バージョンを dev にロールバックしてから、cmake make install 3 点セットを実行します。
しかし、実際には問題があります。
現在、依存ライブラリと git をインストールするのは簡単です。その後バージョンのロールバックに失敗し、いろいろ探してみると開発者によってdevタグが削除されてしまったようです。その後、9 月 23 日にダウンロードされた 3.8 バージョンでは多くのエラーが報告されました。
バージョン 3.8 および 3.6 を使用したいくつかのバージョンの問題の一部を要約すると、すべて失敗しました (3.7 が機能しない場合は、他のバージョンを試してください)。
以前に発生した問題は次のとおりです。
1. cuda の問題:
CMake Error at CMakeLists.txt:255 (message):
You must set CMAKE_CUDA_ARCHITECTURES to e.g. 'native', 'all-major', '70',
etc. More information at
https://cmake.org/cmake/help/latest/prop_tgt/CUDA_ARCHITECTURES.html
-- Configuring incomplete, errors occurred!
See also "/home/mona/OnePose_Plus_Plus/submodules/colmap/build/CMakeFiles/CMakeOutput.log".
解決策は次のとおりです。
cmake .. -DCMAKE_CUDA_ARCHITECTURES=native
cmake .. -DCMAKE_CUDA_ARCHITECTURES=all
cmake .. -DCMAKE_CUDA_ARCHITECTURES=70
ただし、最初の 2 つは解決できない可能性があり、次の 70 はコマンド ライン入力が必要です。
nvidia-smi --query-gpu=compute_cap --format=csv
ほら、8.6 の場合は 86 と書き、6.1 の場合は 61 と書きますが、70 ではない可能性があります。
2. gcc g++ のバージョンでは不十分です。7.0 に変更します。
おおよそのエラー: 数値リテラル演算子 'operator""Q' が見つかりません
すっかり忘れていて、ネットで調べたら gcc と g++ のバージョンが足りなかったので確認したら 5.5 だったので、7.0 にアップグレードしました。
お問い合わせ:
gcc -v
g++ -v
3. 未定義の参照
未定義の参照がたくさんあるので、上記の記事を読んで、anaconda3 のフォルダー名を変更し、インストールが完了したら最終的に元に戻します。
undefined reference to `TIFFReadEncodedStrip@LIBTIFF_4.0`
undefined reference to `TIFFReadEXIFDirectory@LIBTIFF_4.0`
undefined reference to `TIFFFieldReadCount@LIBTIFF_4.0`
undefined reference to `TIFFSetTagExtender@LIBTIFF_4.0`
undefined reference to `TIFFCurrentDirectory@LIBTIFF_4.0`
undefined reference to `TIFFReadTile@LIBTIFF_4.0`
undefined reference to `TIFFSetDirectory@LIBTIFF_4.0`
undefined reference to `TIFFClientOpen@LIBTIFF_4.0`
ubuntu16 に Colmap をインストールする場合の問題と解決策_cudasetupargument 未定義の参照_WZJ&LSK のブログ - CSDN ブログ
4. 未定義の参照
上記と同様に、バージョン 3.6 をインストールする場合、100% を作成すると未定義の参照が発生します。
../libcolmap.a(misc.cc.o):在函数‘colmap::FileCopy(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, colmap::CopyType)’中:
misc.cc:(.text+0x57a):对‘boost::filesystem::detail::copy_file(boost::filesystem::path const&, boost::filesystem::path const&, boost::filesystem::copy_option, boost::system::error_code*)’未定义的引用
collect2: error: ld returned 1 exit status
src/exe/CMakeFiles/colmap_exe.dir/build.make:270: recipe for target 'src/exe/colmap' failed
make[2]: *** [src/exe/colmap] Error 1
その時点では別のファイルでしたが、変更は成功しませんでした。