C++の機械学習ライブラリ『Dlib』

画像認識系の人達の間では、高性能な顔の器官検出(Face Alignment)が手軽に利用できることで知られているC++のライブラリ Dlib。(表記は大文字、小文字どっちなんでしょう?)
英語のWikipediaによると、2002年から開発されているかなり歴史のあるライブラリみたい。

公式ブログによると、最新バージョンのdlib 19.0からDeep Learning APIが備わったようです。

Dlib C++ Library

dlib

Dlibは、現実世界の問題を扱う高度なソフトウェアを実装するための機械学習アルゴリズムやツールを備えたモダンなC++ツールキットです。Dlibはロボット工学、組み込みデバイス、携帯電話、巨大なハイパフォーマンスコンピューティング環境など、産業・アカデミック分野を問わず幅広い分野で利用されています。Dlibのオープンソースライセンシングにより、任意のアプリケーションに無料で利用できます。

Dlibの開発ソースコードのフォロー、または開発への参加はdlib on githubから。また、プロジェクトにコードを提出する予定であればHow to Contributeのページをお読みください。

dlibのライセンスはBoost Software License 1.0(BSL 1.0)なので、ソースコードも丸ごと配布する場合を除き、著作権表示なしでも商用利用可。(とても緩いライセンスですね)

C++で使えることを強調してるけど、Pythonバインドもある。機械学習以外の様々なツールも盛り込まれていて、一見すると何がメインのライブラリなのか良くわからないですが、オイラは機械学習のライブラリと捉えています。


スポンサーリンク


ということで、GitHub上のリポジトリはこちら↓
https://github.com/davisking/dlib

Face Alignment

Face Alignmentに関する公式ブログの記事はこちら↓
http://blog.dlib.net/2014/08/real-time-face-pose-estimation.html
Real-Time Face Pose Estimation

データをOpenCV形式に変換する関数も用意されているし、公式にWebカメラの画像からリアルタイムにFace Alignmentを実行するサンプルコードが公開されているので、本当に簡単なんですよね↓
http://dlib.net/webcam_face_pose_ex.cpp.html

こちらがDlibのFace Alignment↓


スポンサーリンク
Real-Time Face Pose Estimation

ちなみに、顔の検出処理もOpenCVと異なっているらしく、OpenCVの顔検出との性能比較動画が公開されている。
青い丸がOpenCV、赤い矩形がdlibによる顔検出。↓

dlib vs OpenCV face detection

4月に第33回 コンピュータビジョン勉強会@関東でも紹介されてた。↓



2018年5月 追記:現在は同じ検出アルゴリズムがOpenCVのFacemark APIにも実装されています↓


Deep Learning API

Dlibバージョン19.0で新しく入ったDeep Learning APIについて公式ブログで説明されている↓

A Clean C++11 Deep Learning API

A Clean C++11 Deep Learning API

ざっと要約すると、

C++11規格に則ったDeep Learning APIで、CPU, GPUでの演算に対応。NVIDIAのDeep LearningライブラリcuDNNにバインドされていて、複数GPUを利用した学習が可能。
ImageNetを34層 Deep Residual Learningに基づいて訓練したモデル(?)が付属し、それを利用した実装サンプルはこちら

追記:バージョン19.3からDeep Learningによる顔認識(認証とか照合?)ツールが加わったらしい。
http://blog.dlib.net/2017/02/high-quality-face-recognition-with-deep.html

本リリースで多くの新機能が追加されましたが、最も注目すべきはdlibのdeep learning APIを使った最先端の顔認識サンプルを含むdeep learningツールです。
詳しくは http://dlib.net/dnn_face_recognition_ex.cpp.html をご覧ください。

Deep Face Recognitionのサンプルコードはこちら↓

http://dlib.net/dnn_face_recognition_ex.cpp.html


スポンサーリンク

関連記事

HD画質の無駄遣い その2
OpenCV 3.3.0 contribのsfmモジュールのサンプルを動かしてみる
機械学習で流体シミュレーションを近似する『Physics Forests』
Mean Stack開発の最初の一歩
WordPress on Google App Engineを1週間運用してみて
SSD (Single Shot Multibox Detector):ディープラーニングによる一般...
C++ 標準テンプレートライブラリ (STL)
自前のShaderがおかしい件
NVIDIA Quadro OpenGL DriverのDeep Color不具合の対処方法
Unityで強化学習できる『Unity ML-Agents』
Point Cloud Consortiumのセミナー「3D点群の未来」に行ってきたよ
FCN (Fully Convolutional Network):ディープラーニングによるSema...
今年もSSII
OpenMayaRender
PCA (主成分分析)
ブラウザ操作自動化ツール『Selenium』を試す
Amazon Web ServicesでWordPress
BlenderでPhotogrammetryできるアドオン
動的なメモリの扱い
書籍『ROSプログラミング』
Open Shading Language (OSL)
3Dグラフィックスの入門書
Boost オープンソースライブラリ
JavaScriptとかWebGLとかCanvasとか
RSSフィードを読込んで表示するWordpressプラグイン『RSSImport』
コンピュータビジョンの技術マップ
スクラッチで既存のキャラクターを立体化したい
人間の顔をそっくりそのままCGで復元する『Digital Emily Project』
WinSCP
SONY製のニューラルネットワークライブラリ『NNabla』
クラスの基本
OpenCVの顔検出過程を可視化した動画
フォトンの放射から格納までを可視化した動画
Mask R-CNN:ディープラーニングによる一般物体検出・Instance Segmentatio...
PythonのHTML・XMLパーサー『BeautifulSoup』
UnityでShaderの入力パラメータとして行列を渡す
C#で使える機械学習ライブラリ『Accord.NET Framework』
MRenderUtil::raytrace
AR (Augmented Reality)とDR (Diminished Reality)
写真から3Dメッシュの生成・編集ができる無料ツール『Autodesk Memento』
CGレンダラ研究開発のためのフレームワーク『Lightmetrica (ライトメトリカ)』
OpenCVで平均顔を作るチュートリアル

コメント