Dlib http://dlib.net/
Dlib is a modern C++ toolkit containing machine learning algorithms and tools for creating complex software in C++ to solve real world problems.
Real-Time Face Pose Estimation (YouTube)
このDlibは、画像処理、機械学習系のすごーーーいライブラリなんですが、OpenCVなんかに比べて日本語の情報が少ないです。
OpenCVよりも顔検出精度が良かったり、OpenCVにはない顔器官検出など備えてます。PythonのAPIもあって簡単に使える感じですね。
githubはこちら https://github.com/davisking/dlib
この記事について
今回、ウェブカメラで撮影した画像からリアルタイムで顔器官検出する、Dlibに付属のサンプルコードをMacで試してみました。
下の写真のように顔の中から68点の特徴点(口角とか鼻のあたまとか)を自動抽出します。
機械学習で、顔の特徴点を自動判定するんですね。ライブラリを使えば最先端の顔器官検出を簡単に使える時代なんですねー。すごいですね。
Dlib: face_landmark_detection
写真素材: http://www.ashinari.com/
#インストールから実行までの手順
所要時間は30分です。参りましょうー
##わたしの環境
普通のマックです。
- Mac OSX El Capitan 10.11.3
- python2.7
Dlib のバージョンは 18.18 ( 2016/2/4 時点で最新 ) を利用しました。
##必要なソフトウェア
このへんが入ってなければ入れてくださいませ。
- homebrew
- command line tools in Xcode
- boost
- boost-python
- cmake
- opencv (ウェブカメラを使うサンプルを動かすために必要デス)
boost、boost-python、cmake、opencvは入ってなかったらbrewでさくっとインストールしてーー。
boost
$ brew install boost
boost-python
$ brew install boost-python
cmake
$ brew install cmake
opencvはこんな感じでインストールします。
$ brew tap homebrew/science
$ brew install opencv
###X11のインストール
GUIのサンプルを実行するのに必要です。
XQuartz http://www.xquartz.org/ から.dmgをダウンロードしてインストールしてください。インストールしたら Xlib.hが見えるように下記のようにシンボリックリンクを張るーー
$ ln -s /opt/X11/include/X11 /usr/local/include/X11
Dlibのインストール
Dlib本体のインストールです。ダウンロードして解凍して
$ wget http://dlib.net/files/dlib-18.18.tar.bz2
$ tar zxvf dlib-18.18.tar.bz2
セットアップスクリプトを実行してくださいー
$ cd dlib-18.18
$ sudo python setup.py install
これでDlibはインストールは完了です。
##サンプルプログラムのビルド
C++のサンプルプログラムをビルドします。buildというディレクトリを作ってそこに実行ファイルを置くことにします。
$ cd dlib-18.18/examples
$ mkdir build
$ cd build
$ cmake ..
$ cmake --build . --config Release
###cmake --buildでDLIB_NO_GUI_SUPPORTエラーになる場合の対処について
自分の環境では、”DLIB_NO_GUI_SUPPORTがオンになってるぞ”という旨のエラーになってbuildが通らなかった。謎い。
とりあえず下記のように CMakeCache.txt を直接編集して解決しました。
#(修正前)
# DLIB_NO_GUI_SUPPORT:STRING=ON # GUIサポートを使わない
#(修正後)
DLIB_NO_GUI_SUPPORT:STRING=OFF # GUIサポートを使う
###顔器官検出用の学習済みデータの準備
顔器官検出のために学習データが必要です。
下記のように顔器官の学習済みデータをダウンロードして解凍してサンプルプログラムと同じ場所に置いてくださいー
$ wget http://dlib.net/files/shape_predictor_68_face_landmarks.dat.bz2
$ bzip2 -d shape_predictor_68_face_landmarks.dat.bz2
$ mv shape_predictor_68_face_landmarks.dat ~/dlib-18.18/examples/build/
##サンプルプログラムの実行
example/build/にあるwebcam_face_pose_ex が実行ファイルです。
$ ./webcam_face_pose_ex
MacのFacetimeカメラが起動して、リアルタイムに顔器官が検出されるはずです。あなたのお顔でぜひお試しくださいー
個別の画像データの入力
おなじ example/build/ にある face_landmark_detection_ex を使えばウェブカメラ経由でなく、個別の写真データを読み込ませて顔器官検出することができます。
$ ./face_landmark_detection_ex ./shape_predictor_68_face_landmarks.dat ~/myphoto/*.jpg
写真素材: http://www.ashinari.com/
#感想
Dlibを使って顔器官を検出するサンプルプログラムを動かしました。
画像処理といえばOpenCVが主流ですが、このDlibも高性能ですし、もっと使われていいと思いますねー。
いろいろと応用できそうですねーーー