OpenSfMをWindows10 WSLのUbuntu 18.04環境下にインストールしてみる。
公式ではWindows10で動作させる場合、Docker推奨であるようだ。
しかしWindows10 Homeを使っている場合はDockerはやや敷居が高い。
代替としてWSLで動作してくれると気軽に試せる。
SfMとはStructure from Motionの略で、単眼カメラ画像複数枚から立体構造を推定するための技術である。
OpenSfMはオープンソースのSfM実装の一つであり前から興味があった。
先ずはインストールを試みる。
OpenSfMは OpenCV, OpenGV, Ceres Solver, その他NumPy等多くのPython関連 のライブラリやモジュールに依存している。
公式に説明があるので一つづつインストールしてゆく。
前提としては以前の記事、「WSLの手動インストール」に従いWSL Ubuntu 18.04がインストールされているものとする。
特にPython3のversionは3.6であることは重要。
先ずはOpenCV。
OpenCVはaptでインストールできる。
sudo apt install -y libopencv-dev python3-opencv
versionは3.2.0。
kuyo@DESKTOP-8O0L9BP:~$ opencv_version 3.2.0 kuyo@DESKTOP-8O0L9BP:~$
OpenGLはgithub上で公開されているsource codeからbuildする。
OpenGLのPython APIをどこにインストールするかに選択肢がある。
sukuyo@DESKTOP-8O0L9BP:~/OpenSfM$ python3 -c "import site; print (site.getsitepackages())" ['/usr/local/lib/python3.6/dist-packages', '/usr/lib/python3/dist-packages', '/usr/lib/python3.6/dist-packages'] kuyo@DESKTOP-8O0L9BP:~/OpenSfM$
以下の二択。
/usr/local/lib/python3.6/dist-packages
/usr/lib/python3.6/dist-packages
本来野良buildしたものは前者に入れるべきだと思うが、簡便の為に後者に突っ込む。
sudo apt install -y build-essential cmake libeigen3-dev cd ~/ git clone https://github.com/laurentkneip/opengv cd opengv/python/ git clone https://github.com/pybind/pybind11.git cd .. mkdir -p build cd build cmake .. -DBUILD_PYTHON=ON -DPYBIND11_PYTHON_VERSION=3.6 -DPYTHON_INSTALL_DIR=/usr/local/lib/python3.6/dist-packages/ make -j3 sudo make install
Ceres Solverをインストールする。
これはgoogleが公開しているsource codeからbuildを行う。
sudo apt install -y cmake libgoogle-glog-dev libatlas-base-dev libeigen3-dev libsuitesparse-dev cd ~/ git clone https://ceres-solver.googlesource.com/ceres-solver cd ceres-solver mkdir -p build cd build cmake .. -DCMAKE_CXX_FLAGS=-fPIC make -j3 make test sudo make install
最後にOpenSfMをインストールする。
OpenSfMディレクトリにrequirements.txtとして依存パッケージのリストが用意されている。
これを用いて事前にインストールする。
cd ~/ git clone --recursive https://github.com/mapillary/OpenSfM cd OpenSfM sudo pip3 install -r requirements.txt cp setup.py setup.py.bak perl -pi -e "s/\-j4/\-j3/g" setup.py python3 setup.py build
特に問題なくインストールできた。
動作確認を行う。
OpenSfNでは予めdataを用意してくれている。
これを用いる。
bin/opensfm_run_all data/berlin
生成した三次元点群データを表示するjavascriptのviewerが用意されている。
Python3では以下のようにするとカレントディレクトリ以下をWEBディレクトリとして公開する簡易HTTPサーバーとすることができる。
python3 -m http.server 8000
google chrome で以下のURLにアクセスすると点群データを閲覧することができる。
特に問題なくインストールできることが分かった。
時間が有れば、実際に写真を集めて試してみようと思う。
コメント