OpenSfMをWSL Ubuntu環境下にインストールする

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にアクセスすると点群データを閲覧することができる。

http://localhost:8000/viewer/reconstruction.html#file=/data/berlin/reconstruction.meshed.json

特に問題なくインストールできることが分かった。
時間が有れば、実際に写真を集めて試してみようと思う。

コメント

タイトルとURLをコピーしました