はじめに
今回はOpenfaceのインストールにおいて私が実際に行った手順を記録しておこうと思います。
かなりのコマンド数がありましたが最終的に問題なくインストールし、使用できるようになったので参考程度にどうぞ。
下のURL先のgithub内のコマンドを順に実行しただけですが、途中でエラーでつまづいたりしたのでそれらの対処法も含めて書き残しておきます。
なお、これから示す内容はUbuntu20.04下の環境での実行になります。
実行内容
以下に示すコマンドは上から順に途切れることなく実行しましたので、途中で回線が切れたりファイルの中身をいじったりしないように注意してください。
私はホームディレクトリ(~/)を基準にしてインストールしています。
今回は、この基準のディレクトリより上で作業することはないので、各自インストールしたいディレクトリを決め、それを基準にコマンドを実行して下さい。
大まかに下のように分かれます。
それでは手順に移ります。
Dependency installation
ここではOpenfaceを使用するためのcmake, OpenCV 4.0.0, OpenBLAS, dlib, C++17等のコンパイラを用意。
Get newest GCC, done using
tk@tk-VirtualBox:~$ sudo apt-get update tk@tk-VirtualBox:~$ sudo apt-get install build-essential tk@tk-VirtualBox:~$ sudo apt-get install g++-8 tk@tk-VirtualBox:~$ sudo add-apt-repository ppa:ubuntu-toolchain-r/test -y tk@tk-VirtualBox:~$ sudo apt-get -y update
ログがだらだらと流れますが、ここまでは書いてある通りにコマンドを撃てば順調に進んだ。
Cmake
tk@tk-VirtualBox:~$ sudo apt-get install cmake
上のコマンドを実行するとYの入力を求められるので標準入力で打ち込んで実行。
このように実行者に許可を求めるためコマンド入力を要求されることがこの先もあるので、迂闊に目を離さないように注意。
tk@tk-VirtualBox:~$ sudo apt-get --purge remove cmake-qt-gui -y
上のコマンドを実行すると
「パッケージ ‘cmake-qt-gui’ はインストールされていないため削除もされません」
というようなログが表示されて不安になりますが、これでOK。
このようにremoveを使ってもともとあるファイルを削除して新しいファイルのインストールやアップデート時に支障が出ないようにするための作業。
はじめてインストールする場合は実行する必要はないが一応。
tk@tk-VirtualBox:~$ sudo apt-get --purge remove cmake -y tk@tk-VirtualBox:~$ mkdir -p cmake_tmp tk@tk-VirtualBox:~$ cd cmake_tmp tk@tk-VirtualBox:~/cmake_tmp$ wget https://cmake.org/files/v3.10/cmake-3.10.1.tar.gz
ここまで言うとおりにコマンドを実行してきたが、下のコマンドで初めてのエラー吐き出されたので少し焦る。
tk@tk-VirtualBox:~/cmake_tmp$ tar -xzvf cmake-3.10.1.tar.gz -qq tar: 無効なオプション -- 'q' より詳しい情報は 'tar --help' または 'tar --usage' で.
どこを調べてもtarコマンドの「-qq」なんてオプションの説明が見あたらないので、指示に背くことになってしまうがとりあえずこのオプションを外し、下のように実行。
tk@tk-VirtualBox:~/cmake_tmp$ tar -xzvf cmake-3.10.1.tar.gz
とりあえず問題なさそうなので、このまま作業を継続。
tk@tk-VirtualBox:~/cmake_tmp$ cd cmake-3.10.1/ tk@tk-VirtualBox:~/cmake_tmp/cmake-3.10.1$ ./bootstrap tk@tk-VirtualBox:~/cmake_tmp/cmake-3.10.1$ make -j4 tk@tk-VirtualBox:~/cmake_tmp/cmake-3.10.1$ sudo make install tk@tk-VirtualBox:~/cmake_tmp/cmake-3.10.1$ cd ../.. tk@tk-VirtualBox:~$ sudo rm -rf cmake_tmp
Get OpenBLAS
tk@tk-VirtualBox:~$ sudo apt-get install libopenblas-dev
ここでも実行の許可を求められるので指示にしたがって入力。
以下、同様の作業を「Yを入力」と示しておく。
Download and compile OpenCV 4.1.0
tk@tk-VirtualBox:~$ sudo apt-get install git libgtk2.0-dev pkg-config libavcodec-dev libavformat-dev libswscale-dev
Yを入力。
tk@tk-VirtualBox:~$ sudo apt-get install python-dev python-numpy libtbb2 libtbb-dev libjpeg-dev libpng-dev libtiff-dev libdc1394-22-de
Yを入力。
tk@tk-VirtualBox:~$ wget https://github.com/opencv/opencv/archive/4.1.0.zip tk@tk-VirtualBox:~$ sudo unzip 4.1.0.zip tk@tk-VirtualBox:~$ cd opencv-4.1.0
下のコマンドを実行したときに問題発生。
tk@tk-VirtualBox:~/opencv-4.1.0$ mkdir build
mkdir: ディレクトリ `build’ を作成できません: 許可がありません
というエラーが出たので、sudoコマンドを付与することによって管理者権限で実行する。このようなエラーがこの先も出現するので、同様にsudoを実行することで対応した。
tk@tk-VirtualBox:~/opencv-4.1.0$ sudo mkdir build
無事に関門を通過。
tk@tk-VirtualBox:~/opencv-4.1.0$ cd build
下のコマンドでまたしてもエラーが発生する。
tk@tk-VirtualBox:~/opencv-4.1.0/build$ cmake -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=/usr/local -D BUILD_TIFF=ON -D WITH_TBB=ON ..
CMake Error: : System Error: Permission denied
このような実行許可が与えられないことによるエラーには同じくsudoで対応する。
tk@tk-VirtualBox:~/opencv-4.1.0/build$ sudo cmake -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=/usr/local -D BUILD_TIFF=ON -D WITH_TBB=ON ..
実行が成功。
tk@tk-VirtualBox:~/opencv-4.1.0/build$ make -j2
Scanning dependencies of target libtiff CMake Error: Cannot open file for write: /home/tk/opencv-4.1.0/build/3rdparty/libtiff/CMakeFiles/libtiff.dir/depend.make.tmp
CMake Error: : System Error: Permission denied
長いエラーが出たが、一番最後にPermission deniedの文字が出たのでsudoを先頭に付ける。
tk@tk-VirtualBox:~/opencv-4.1.0/build$ sudo make -j2
実行が成功。
私は1時間くらい時間がかかったので、終わらなさそうであればしばらく別作業して気長に待つ。
tk@tk-VirtualBox:~/opencv-4.1.0/build$ sudo make install
Download and compile dlib
ここでdlibのインストールを行う。
tk@tk-VirtualBox:~/opencv-4.1.0/build$ wget http://dlib.net/files/dlib-19.13.tar.bz2; --2020-06-28 23:40:46-- http://dlib.net/files/dlib-19.13.tar.bz2 dlib.net (dlib.net) をDNSに問いあわせています... 107.180.26.78, 2001:260:306:c::6bb4:1a4e dlib.net (dlib.net)|107.180.26.78|:80 に接続しています... 接続しました。 HTTP による接続要求を送信しました、応答を待っています... 200 OK 長さ: 11032425 (11M) [application/x-tar] dlib-19.13.tar.bz2: 許可がありません
また許可を求められたのでsudoで実行。
tk@tk-VirtualBox:~/opencv-4.1.0/build$ sudo wget http://dlib.net/files/dlib-19.13.tar.bz2;
成功。
tk@tk-VirtualBox:~/opencv-4.1.0/build$ tar xf dlib-19.13.tar.bz2; tar: dlib-19.13/CMakeLists.txt: open 不能:
上のコマンドで「ファイルのオープンが不能」と示された。何が原因か見当もつかなかったが、とりあえずいつも通りsudoで実行してみる。
tk@tk-VirtualBox:~/opencv-4.1.0/build$ sudo tar xf dlib-19.13.tar.bz2; [sudo] tk のパスワード:
どうやら成功したようです。
とりあえずsudoでこの先も解決できそう。
tk@tk-VirtualBox:~/opencv-4.1.0/build$ cd dlib-19.13; tk@tk-VirtualBox:~/opencv-4.1.0/build/dlib-19.13$ mkdir build;
ここでも
mkdir: ディレクトリ `build’ を作成できません: 許可がありません
と出たのでsudoで実行。
tk@tk-VirtualBox:~/opencv-4.1.0/build/dlib-19.13$ sudo mkdir build;
難なくクリア。
tk@tk-VirtualBox:~/opencv-4.1.0/build/dlib-19.13$ cd build; tk@tk-VirtualBox:~/opencv-4.1.0/build/dlib-19.13/build$ cmake ..;
CMake Error: : System Error: Permission denied
これもsudoで実行。
tk@tk-VirtualBox:~/opencv-4.1.0/build/dlib-19.13/build$ sudo cmake ..;
tk@tk-VirtualBox:~/opencv-4.1.0/build/dlib-19.13/build$ cmake --build . --config Release;
ここでも
CMake Error: : System Error: Permission denied
が発生。
すごくPermission deniedで引っかかるけどcmakeコマンドに何か制約がかかっているのか?けどすべてのコマンドでsudo無しでは実行できないというわけでもないし、今回は許可が求められるたびにsudoで実行する方針に。
tk@tk-VirtualBox:~/opencv-4.1.0/build/dlib-19.13/build$ sudo cmake --build . --config Release; tk@tk-VirtualBox:~/opencv-4.1.0/build/dlib-19.13/build$ sudo make install; tk@tk-VirtualBox:~/opencv-4.1.0/build/dlib-19.13/build$ sudo ldconfig;
一番の山場を超えた気がします。
ここで次のGet Boostのフェーズを行うため~/opencv-4.1.0/buildに戻ります。
tk@tk-VirtualBox:~/opencv-4.1.0/build/dlib-19.13/build$ cd../..
Get Boost (optional)
sudo apt-get install libboost-all-dev
Yを選択。
Actual openface installation
ここでようやくOpenfaceをインストールしていきます。
tk@tk-VirtualBox: git clone https://github.com/TadasBaltrusaitis/OpenFace.git
10分くらいかかったのでしばらく待機。
tk@tk-VirtualBox:~$ cd OpenFace tk@tk-VirtualBox:~/OpenFace$ mkdir build tk@tk-VirtualBox:~/OpenFace$ cd build tk@tk-VirtualBox:~/OpenFace/build$ cmake -D CMAKE_CXX_COMPILER=g++-8 -D CMAKE_C_COMPILER=gcc-8 -D CMAKE_BUILD_TYPE=RELEASE .. tk@tk-VirtualBox:~/OpenFace/build$ make
これで全ての過程が終了し、いよいよOpenface実行への入口へたどり着けました。
最後に
実際にOpenfaceを実行し、出力結果を残した記事もあるのでそちらも是非参考にしてください。
Openfaceの実行↓
コメント