Teaprog.com

とあるエンジニアの日々の記録。エンジニアと関係のないようなことも書きます。

UbuntuでのOpenfaceのインストール

はじめに

 

今回はOpenfaceのインストールにおいて私が実際に行った手順を記録しておこうと思います。

 

かなりのコマンド数がありましたが最終的に問題なくインストールし、使用できるようになったので参考程度にどうぞ。

 

下のURL先のgithub内のコマンドを順に実行しただけですが、途中でエラーでつまづいたりしたのでそれらの対処法も含めて書き残しておきます。

 

https://github.com/TadasBaltrusaitis/OpenFace/wiki

 

なお、これから示す内容は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の実行↓

 

programmatictk0137.hatenablog.com