2016年6月24日金曜日

Windows / Visual Studio環境へのdlibの導入方法

こんにちは.
今日は画像処理や機械学習,顔認識などの便利かつ高性能な機能を有するライブラリ『dlib』を使って色々試していたので,その導入の方法を備忘録としてまとめておこうと思います.

なぜかWindows環境への導入の仕方に関する記事がほとんどなかったので,せっかくだからブログに載せようと思い至りました.


僕の環境なんですが,Windows 10で,Visual Studio 2012を使っています.
dlibのバージョンは2016年現在で最新のもの(dlib 18.18)を試しました.

以下,手順です.



まずはhttp://dlib.net/からdlibのダウンロード.




zipファイルでダウンロードできるので解凍してください.

続いて,dlibを試用するためには,正しくコンパイルしなければなりません.
そこで,公式ではcmakeを使ってコンパイルすることを推奨しています.
http://dlib.netのHow to compile(http://dlib.net/compile.html)にも記載されているリンク(https://cmake.org/)からcmakeをダウンロードしてきます.(すでにcmakeを持っている人は特に新しいものである必要もないです)



2016年6月現在だとcmakeは3.5.2が最新版です.Source distributionsではなく,Binary distributionsという方からWindows用のZIPをダウンロードしてください.
zipをダウンロードしたら解凍して適当な場所に置いてください.

cmakeを使えばGUIでビルドファイルを作ることができますが,今回はdlibの公式で推奨してる方法にのっとってコマンドプロンプトでcmakeによるコンパイルを行います.
How to compile(http://dlib.net/compile.html)の手順に従っていきます.



コマンドプロンプト(Windowsキーを押して,「cmd」と打つと出てきます.)を使って,上の①~⑤のコマンドを打つだけです.
ただし,上記はcmakeのパスやdlibのパスを省略しているので完全にそのまま打てばいいわけではありません.特に,Visual Studioで64bitのアプリケーションを実装したい場合には,④のコマンドが以下のものになります.



ただし,この④もVisual Studio 2010用のコマンドなので注意.
Visual Studio 2012であれば"Visual Studio 11 2012 Win64",2015であれば"Visual Studio 12 2015 Win64"となります.

以下は実際にコマンドプロンプトで打った①~④のコマンドの様子です.
わかりやすくするために,dlibとcmakeを両方ともデスクトップに置いておきました.



①は,dlibのexamplesフォルダに移動するコマンド(僕の場合はデスクトップ上に置いたdlib-18.18フォルダ内にあります),②はexamplesの中に「build」というcmake用のフォルダを作成するコマンド,③はそのbuildフォルダに移動するコマンドです.
④を実行するとcmakeにおけるconfigure,generateという動作が実行されます.cmakeを実行するには,デスクトップ上のcmakeのパス(ダウンロードしたフォルダのbinフォルダ内にある)を打つ必要があります.

以下のように「Configuring done」,「Generating done」って出てBuild files~~ってなってたらOKです.




最後に⑤のコマンドを打てばOKです.ここでも,cmakeのパスはcmakeを置いた場所にします.
このコマンドの完了には数分かかります.




基本的にはこれでいいんですが,dlibを高速に動かしたい場合には,cmakeでコンパイルを行うときにAVXやSSE4みたいなオプションを選択する必要があります.AVXの方がSSE4よりも高速みたいですが,古いPCだとAVXに対応していない場合もあるそうです.
これらのオプションの指定を行いたい場合は,⑤のコマンドの代わりに,「(cmakeのパス)/cmake-gui.exe .」と打って,GUIを使います.AVXやSSE4の欄にチェックを入れてConfigure -> Generateの順にボタンを押していけばOKです.

cmakeを使うのは以上で終わりで,dlibの導入examplesフォルダ内にあるサンプルファイルを実行します.
ダウンロードしたdlibのフォルダ内の「examples」フォルダの中に「build」というフォルダができています.(さっき作ったやつです.)
その中に,”examples.sln”というファイルができているはずです.これをVisual Studioで開きます.
これを開くと,Examplesとして用意されているほとんどのファイルがプロジェクトとして整理されています.この状態でもうgood to goです.



まずはF7キーでソリューションファイル(.sln)全体のビルドを行います.ちょっと待ちます.
これでいよいよサンプルプログラムが実行できます.

まずは試してみたいプログラムを選んでください.
一つにきめたら,そのプロジェクトのみを実行できるようにします.



ソリューショネクスプローラーの一番上の「ソリューション’examples’(85プロジェクト or 86プロジェクト)」を右クリックして,プロパティを選択してください.



「シングル スタートアップ プロジェクト」という項目から,実行したいプロジェクトを選んでください.
これでもうサンプルが実行可能です.

特に入力引数が必要ないサンプルプログラムであれば,F5キーで実行可能です.
画像などのインプットが必要なプログラムの場合には,当該プロジェクトを右クリックし,「プロパティ」⇒「構成プロパティ>デバッグ」の「コマンド引数」欄に画像ファイル名等を入力することで実行できます.それぞれのサンプルコードの中の解説を読んでみてください.

顔器官認識などでは学習済みデータが用意されているので,Webからダウンロードすることで使用できます (http://dlib.net/files/shape_predictor_68_face_landmarks.dat.bz2

また,「Webcam_face_pose_ex」というWebカメラで取得した動画中の顔をリアルタイムで検出するサンプルではOpenCVが必要なので,cmakeからOpenCVが自動で参照されない場合にはプロジェクトファイルが生成されません.OpenCVがない場合には導入すれば,後から手動でcmakeを使うことで実行できます.CMakeList.txtというcmakeに関するファイルを少しいじってあげる必要があります.


以上でdlibの導入のための解説を終わりにします.
もしも間違っている箇所があったらごめんなさい.