TadaoYamaokaの開発日記

個人開発しているスマホアプリや将棋AIの開発ネタを中心に書いていきます。

Bash on Windowsでdlibを使って顔検出する

最近、物体検出に興味がありネットの記事を調べていたら、こちらの記事で使われていたdlibによるHOG特徴量+SVGが検出精度が高いらしい。

bohemia.hatenablog.com

dlibはC++の総合的な機械学習のライブラリで、Python用のインターフェースも用意されている。

自分でも試してみようと思い、WindowsのAnacondaでインストールしたPython上に構築しようとしたが、依存ライブラリがうまくいれられず断念した。
※2016/9/22追記:インストールできました。

そこで、Bash on Windowsを使ってインストールしてみたところ、動作させることができたので、その方法を示す。

PythonBash on Windows標準のものを使用して、ライブラリも基本はapt-getでインストールした。

はじめpipでのインストールやソースからビルドしたりして何度か失敗したが、apt-getにあるものはapt-getからインストールすればすんなりと動かすことができた。

以下に順を追って説明する。

Bash on Windowsのインストール

Bash on Windowsをインストールしていない場合は、この記事とかを参考にBash on Windowsをインストールする。

qiita.com

リポジトリの変更を行わないとインストールに時間がかかるので注意。

途中でインストールに失敗してやり直す場合は、Bash on Windows自体をインストールし直すとよい。自分は手順を試すために何度かやり直した。

lxrun /uninstall /full
lxrun /install

関連ライブラリインストール

bashの初期設定を済ませたら、apt-getで関連ライブラリをインストールする。

sudo apt-get install python-matplotlib
sudo apt-get install python-skimage

sudo apt-get install python-pip
sudo apt-get install cmake
sudo apt-get install libboost-all-dev
sudo apt-get install libqt4-dev

sudo apt-get install ipython
sudo apt-get install unzip

python-matplotlibをインストールすると、python-numpyもインストールされる。

python-pip、cmake、libboost-all-dev、libqt4-devは、dlibのビルド/インストールに必要。

サンプルでX11のウィンドウを表示するため、WindowsXmingをインストールする。
また、以下のコマンドで.bashrcに設定を追加し、bashを再起動する。

echo 'export DISPLAY=localhost:0.0' >> ~/.bashrc


ipythonは、インタラクティブPythonを実行するために必要。
jupyterなど別の方法でもよい。

unzipはサンプルソースの解凍に必要。

dlibインストール

pipでdlibをインストールする。

sudo pip install dlib

ビルドに数分かかる。

動作確認

ipythonを起動し、以下のスクリプトを実行する。

import dlib
dlib.__version__

以下のように表示される。

'19.1.0'

dlibのサンプル顔検出の実行

dlibのソースをダウンロードし、解凍する。

wget https://github.com/davisking/dlib/archive/v19.1.zip
unzip v19.1.zip

サンプルを実行する。

cd dlib-19.1
cd python_examples
./train_object_detector.py ../examples/faces

成功すれば学習データの画像からSVMを学習し、テスト画像で顔検出が行われる。
f:id:TadaoYamaoka:20160920213459p:plain