LoginSignup
1
1

オープンソースによるフォトグラメトリを実行するための環境構築

Last updated at Posted at 2023-02-12

はじめに

この記事は,Ubuntu系の計算機にオープンソースの
フォトグラメトリを行う環境を構築する手順の記載となります.

フォトグラメトリとは

立体復元対象が写っている複数の写真から,
立体復元対象の3Dモデルを生成する手法のことです.

計算機スペック

  • OSはUbuntu20.04で環境構築を行います
    (Ubuntu22.04ではこの方法だとインストールできません.原因はまだ未解決.)
    • Linux Mint 20 や Ubuntu Mate 20.04でも同じ方法で環境構築可能です.
  • CPUとGPUは高スペックであることが望ましい(計算時間がかかります.)
  • CPUはAMD64プロセッサ(arm64はインストールできません.)
  • CUDAが必須(Nvidia系のGPUが必要になります.)
  • make -j32を使っています.(CPUのコア数で適宜変更してください.)

インストールするフォトグラメトリオープンソース

クリーンインストールした状態からの環境構築手順

  • 必要に応じて適宜変更して行ってください.

1. 初期設定およびnvidiaドライバのインストール

ユーザディレクトリの英語化
$ LANG=C xdg-user-dirs-gtk-update
パッケージの更新
$ sudo apt update
$ sudo apt upgrade
vimをインストール(著者はvimを使うので)
$ sudo apt install vim
nouveauの確認
$ lsmod | grep nouveau
# このコマンドを実行後,何か表示されたら,次の内容を行うこと
# 表示されない場合,nvidiaドライバの確認へ
nouveauの無効化の準備
$ sudo vim /etc/modprobe.d/blacklist-nouveau.conf # 次の内容を書き込んでください
blacklist-nouveau.confに書き込む内容
blacklist nouveau
options nouveau modeset=0 
nouveauの無効化,再起動
$ sudo update-initramfs -u 
$ sudo reboot 
nouveauの無効化の確認および,nvidiaドライバの確認
$ lsmod | grep nouveau # 何も表示しないことを確認する
$ ubuntu-drivers devices # Recommendされている nvidia-driver-○○-open の "○○"をメモする
nvidiaドライバのインストール
$ sudo add-apt-repository ppa:graphics-drivers/ppa
$ sudo apt update
$ sudo apt install nvidia-driver-525 # メモした"○○"をインストール(今回の場合は525をインストール)
$ sudo reboot # 再起動すれば,nvidiaドライバが機能します.

2. CUDAのインストール(cuda11.6をインストールします)

  • CUDA Toolkit 11.6 Update 2 Downloadsを参考にインストールします.
  • Select Target Platformは以下を選択
    • Architecture: x86_64
    • Distribution: Ubuntu
    • Version: 20.04
    • Installer Type: deb(local)
  • ただし,cuda-toolkitをインストールします.
CUDAをインストール(最後だけ注意)
$ wget https://developer.download.nvidia.com/compute/cuda/repos/ubuntu2004/x86_64/cuda-ubuntu2004.pin
$ sudo mv cuda-ubuntu2004.pin /etc/apt/preferences.d/cuda-repository-pin-600
$ wget https://developer.download.nvidia.com/compute/cuda/11.6.2/local_installers/cuda-repo-ubuntu2004-11-6-local_11.6.2-510.47.03-1_amd64.deb
$ sudo dpkg -i cuda-repo-ubuntu2004-11-6-local_11.6.2-510.47.03-1_amd64.deb
$ sudo apt-key add /var/cuda-repo-ubuntu2004-11-6-local/7fa2af80.pub
$ sudo apt update
$ sudo apt install cuda-toolkit-11-6
CUDAのパスを通す
$ vim .bashrc
.bashrcの最後に以下を記載する
export PATH="/usr/local/cuda/bin:$PATH"
export LD_LIBRARY_PATH="/usr/local/cuda/lib64:$LD_LIBRARY_PATH"
設定を反映させる
$ source .bashrc
$ nvcc -V # このコマンドが実行できればOK

3. OpenSfMのインストール

pyenvのインストール(OpenSfMのbuildでPython3.7系を使用するため)
$ sudo apt install make build-essential libssl-dev zlib1g-dev libbz2-dev libreadline-dev libsqlite3-dev wget curl llvm libncursesw5-dev xz-utils tk-dev libxml2-dev libxmlsec1-dev libffi-dev liblzma-dev git
$ git clone https://github.com/pyenv/pyenv.git ~/.pyenv
pyenvのパスを通す
$ vim .bashrc
.bashrcの最後に以下を記載する
export PYENV_ROOT="$HOME/.pyenv"
command -v pyenv >/dev/null || export PATH="$PYENV_ROOT/bin:$PATH"
eval "$(pyenv init -)"
設定を反映させる
$ source .bashrc
$ pyenv -v # このコマンドが実行できればOK
python3.7系のインストール
$ pyenv install --list # どのバージョンがインストールできるか確認する
$ pyenv install 3.7.16
作業ディレクトリを作成する
# 作業ディレクトリ(3d)を作成し,そのディレクトリ以下はpython3.7.16で動作するようにする
$ mkdir 3d
$ cd 3d
$ pyenv local 3.7.16 # ディレクトリ(3d)以下はpython3.7.16でpythonを動かす
$ pyenv versions # python3.7.16が使用されているかどうかを確認する
OpenSfMに必要なパッケージをインストールする
$ sudo apt install cmake libatlas-base-dev libeigen3-dev libgoogle-glog-dev libopencv-dev libsuitesparse-dev python3-dev python3-numpy python3-opencv python3-pip python3-pyproj python3-scipy python3-yaml meshlab
ceres-solverをインストールする(3dディレクトリで行うこと)
$ curl -L http://ceres-solver.org/ceres-solver-1.14.0.tar.gz | tar xz && cd ceres-solver-1.14.0 && mkdir -p build && cd build
$ cmake .. -DCMAKE_C_FLAGS=-fPIC -DCMAKE_CXX_FLAGS=-fPIC -DBUILD_EXAMPLES=OFF -DBUILD_TESTING=OFF
$ make -j32
$ sudo make install
$ cd ../../
opengvをインストールする(3dディレクトリで行うこと)
$ git clone https://github.com/paulinus/opengv.git && cd opengv && git submodule update --init --recursive && mkdir -p build && cd build
$ cmake .. -DBUILD_TESTS=OFF -DBUILD_PYTHON=ON -DPYBIND11_PYTHON_VERSION=3.7 -DPYTHON_INSTALL_DIR=~/.pyenv/versions/3.7.16/lib/python3.7/site-packages/
$ make -j32
$ sudo make install
$ cd ../../
OpenSfM(v0.5.1)をインストール(3dディレクトリで行うこと)
$ git clone --recursive https://github.com/mapillary/OpenSfM -b v0.5.1
$ cd OpenSfM
$ pip3 install -U pip setuptools
$ pip3 install opencv-python opencv-contrib-python wheel
$ pip3 install -r requirements.txt
$ python3 setup.py build # エラーが出なければOK
$ cd ../

4. OpenMVSのインストール

OpenSfMに必要なパッケージをインストールする
$ sudo apt install git cmake libpng-dev libjpeg-dev libtiff-dev libglu1-mesa-dev
Eigen(3.2)をインストールする(3dディレクトリで行うこと)
$ git clone https://gitlab.com/libeigen/eigen.git --branch 3.2
$ cd eigen
$ mkdir build && cd build
$ cmake . ..
$ make -j32
$ sudo make install
$ cd ../../
必要なパッケージをインストールする
# Boostのインストール
$ sudo apt install libboost-iostreams-dev libboost-program-options-dev libboost-system-dev libboost-serialization-dev
# OpenCVのインストール
$ sudo apt install libopencv-dev
# CGALのインストール
$ sudo apt install libcgal-dev libcgal-qt5-dev
# VCGLibのインストール(3dディレクトリで行うこと)
$ git clone -b master https://github.com/cdcseacave/VCG.git vcglib
$ cd vcglib
$ git checkout 88f12f212a1645d1fa6416592a434c29e63b57f0
$ cd ../
# GLFW3のインストール
$ sudo apt install freeglut3-dev libglew-dev libglfw3-dev
OpenMVSのインストール
$ git clone -b v1.1.1 https://github.com/cdcseacave/openMVS.git
$ cd openMVS
$ mkdir openMVS_build && cd openMVS_build
$ cmake . .. -DCMAKE_BUILD_TYPE=Release -DVCG_ROOT="~/3d/vcglib"
$ make -j32 # エラーが出なければOK
$ sudo make install
$ cd # COLMAPインストールのため,ホームディレクトリに移動する

5. COLMAPのインストール

  • ホームディレクトリで行っています.
必要なパッケージをインストールする
$ sudo apt install git cmake build-essential libboost-program-options-dev libboost-filesystem-dev libboost-graph-dev libboost-system-dev libboost-test-dev libeigen3-dev libsuitesparse-dev libfreeimage-dev libmetis-dev libgoogle-glog-dev libgflags-dev libglew-dev qtbase5-dev libqt5opengl5-dev libcgal-dev libcgal-qt5-dev libatlas-base-dev libsuitesparse-dev
cmakeをアップデートする
$ sudo apt purge cmake 
$ sudo apt autoremove
$ wget https://github.com/Kitware/CMake/releases/download/v3.25.1/cmake-3.25.1.tar.gz
$ tar xvf cmake-3.25.1.tar.gz
$ cd cmake-3.25.1/
$ ./bootstrap && make -j32 && sudo make install
$ hash -r # bashの場合,このコマンドを行う
$ cmake --version # 3.25.1かどうかを確認する
$ cd
最新版のceres-solverをインストールする(OpenSfMを先にインストールしておくこと)
$ git clone https://ceres-solver.googlesource.com/ceres-solver
$ cd ceres-solver
$ git checkout $(git describe --tags)
$ mkdir build && cd build
$ cmake .. -DBUILD_TESTING=OFF -DBUILD_EXAMPLES=OFF
$ make -j32
$ sudo make install
$ cd
Eigen(3.3.7)をインストールする(OpenMVSを先にインストールしておくこと)
$ git clone https://gitlab.com/libeigen/eigen.git --branch 3.3.7
$ cd eigen
$ mkdir build && cd build
$ cmake . ..
$ make -j32
$ sudo make install
$ cd
COLMAPをインストールする
$ git clone https://github.com/colmap/colmap.git --branch 3.7
$ cd colmap
$ git checkout 079518040b4437c1d1b8067f0167be3fd1a4157b
$ mkdir build && cd build
$ cmake ..
$ make -j32 # エラーが出なければOK
$ sudo make install
$ cd

ここまでエラーが出なければ,環境構築成功となります.
このオープンソースの使用方法に関しては,
次ページ(オープンソースによるフォトグラメトリの実行方法)に記載しました.

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1