最近、物体検出に興味がありネットの記事を調べていたら、こちらの記事で使われていたdlibによるHOG特徴量+SVGが検出精度が高いらしい。
dlibはC++の総合的な機械学習のライブラリで、Python用のインターフェースも用意されている。
自分でも試してみようと思い、WindowsのAnacondaでインストールしたPython上に構築しようとしたが、依存ライブラリがうまくいれられず断念した。
※2016/9/22追記:インストールできました。
そこで、Bash on Windowsを使ってインストールしてみたところ、動作させることができたので、その方法を示す。
PythonはBash on Windows標準のものを使用して、ライブラリも基本はapt-getでインストールした。
はじめpipでのインストールやソースからビルドしたりして何度か失敗したが、apt-getにあるものはapt-getからインストールすればすんなりと動かすことができた。
以下に順を追って説明する。
Bash on Windowsのインストール
Bash on Windowsをインストールしていない場合は、この記事とかを参考にBash on Windowsをインストールする。
リポジトリの変更を行わないとインストールに時間がかかるので注意。
途中でインストールに失敗してやり直す場合は、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のウィンドウを表示するため、WindowsにXmingをインストールする。
また、以下のコマンドで.bashrcに設定を追加し、bashを再起動する。
echo 'export DISPLAY=localhost:0.0' >> ~/.bashrc
ipythonは、インタラクティブにPythonを実行するために必要。
jupyterなど別の方法でもよい。
unzipはサンプルソースの解凍に必要。
dlibインストール
pipでdlibをインストールする。
sudo pip install dlib
ビルドに数分かかる。
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を学習し、テスト画像で顔検出が行われる。