Windows上でUbuntu 20.04を動作させて、その上でDetector-Free Structure from Motionをビルドしてみます。通常のSfMパイプラインの場合、最初に特徴点と呼ばれる点をすべての画像から抽出し、それらを複数画像間でマッチングを行います。これらマッチングされた特徴点をベースにパイプライン後段が実行されます。しかし、特徴点が少ない画像が含まれるとSfM全体の精度に悪影響を与えます。そこでAI(Transformer)を活用して特徴点抽出をしないマッチングDetector-FreeなSfMアルゴリズムがこのDetector-Free Structure from Motionです。このアルゴリズムの詳細についてはこちらの論文を参照ください。
それでは実際にWindows 11(WSL)上でビルドする手順を解説します。
まず、管理者権限でWindows PowerShellを起動して、下記コマンドでWSLを起動します。
wsl
Anacondaをインストールする準備をします。
cd ~/ mkdir Downloads cd Downloads
Anacondaのインストーラをダウンロードします。https://www.anaconda.com/download Python 3.12 64-Bit (x86) Installer (1007.9M)
wget https://repo.anaconda.com/archive/Anaconda3-2024.06-1-Linux-x86_64.sh
Anacondaをインストールします。
bash Anaconda3-2024.06-1-Linux-x86_64.sh
パスの追加をします。
echo "export PATH=~/anaconda3/bin:\$PATH" >> ~/.bashrc source ~/.bashrc
Anacondaのバージョン確認をします。私の環境では「conda 24.5.0」となりました。
conda -V
Anacondaの環境を構築します。environment.yaml を環境に合わせて編集してください。
環境を作成し、有効にします。
conda env create -f environment.yaml conda activate detectorfreesfm
マルチビューのリファインマッチングで必要なRoIAlignをインストールします。
cd third_party/RoIAlign.pytorch && pip install .
通常のシェルに戻ります。ビルドツールをインストールします。
sudo apt update sudo apt upgrade sudo apt-get install -y build-essential sudo apt-get install -y git sudo apt-get install -y cmake sudo apt-get install -y libeigen3-dev sudo apt-get install -y libpcl-dev
ライブラリをインストールします。
sudo apt-get install -y libboost-program-options-dev sudo apt-get install -y libboost-filesystem-dev sudo apt-get install -y libboost-graph-dev sudo apt-get install -y libboost-system-dev sudo apt-get install -y libboost-test-dev sudo apt-get install -y libsuitesparse-dev sudo apt-get install -y libfreeimage-dev sudo apt-get install -y libgoogle-glog-dev sudo apt-get install -y libgflags-dev sudo apt-get install -y libglew-dev sudo apt-get install -y qtbase5-dev sudo apt-get install -y libqt5opengl5-dev sudo apt-get install -y libcgal-dev sudo apt-get install -y libmetis-dev sudo apt-get install -y libcgal-qt5-dev sudo apt-get install -y libatlas-base-dev libsuitesparse-dev
multi-view-evaluationをGitからクローンしてビルドします。
cd ~/ mkdir dev cd dev git clone https://github.com/ETH3D/multi-view-evaluation.git cd multi-view-evaluation mkdir build cd build cmake .. make
ceres-solverをGitからクローンしてビルドします。
cd ~/dev git clone https://github.com/ceres-solver/ceres-solver.git cd ceres-solver git checkout 1.14.x mkdir build cd build cmake .. -DBUILD_TESTING=OFF -DBUILD_EXAMPLES=OFF make -j sudo make install
colmapをGitからクローンしてビルドします。
cd ~/dev git clone https://github.com/hxy-123/colmap.git cd colmap mkdir build cd build cmake .. make -j sudo make install echo "COLMAP_PATH=~/dev/colmap/build/src/exe/colmap" >> ~/.bashrc source ~/.bashrc
DetectorFreeSfMをGitからクローンします。
cd ~/dev git clone https://github.com/zju3dv/DetectorFreeSfM.git cd DetectorFreeSfMt
サードパーティーモジュールをクローンします。
git submodule update --init
DetectorFreeSfMをビルドします。
mkdir build cd build cmake .. make -j sudo make install
以上でDetector-Free Structure from MotionのWindows 11(WSL)上でのビルドに関する解説は終了です。