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


スポンサーリンク

関連記事

Unity Scriptコーディング→Unreal Engine Scriptコーディング
今年もSSII
OpenMesh:オープンソースの3Dメッシュデータライブラリ
pythonもかじってみようかと
Pythonのベイズ統計ライブラリ『PyMC』
Quartus II
フォトンの放射から格納までを可視化した動画
Google XML Sitemap Generatorプラグインを3.4.1へダウングレード
OpenMVSのサンプルを動かしてみる
プログラムによる景観の自動生成
OpenCV 3.1とopencv_contribモジュールをVisual Studio 2015で...
オープンソースのSLAMライブラリ『Cartographer』
Unreal Engineの薄い本
WordPressプラグインによるサイトマップの自動生成
NumSharp:C#で使えるNumPyライクな数値計算ライブラリ
Google App EngineでWordPress
自前のShaderがおかしい件
fSpy:1枚の写真からカメラパラメーターを割り出すツール
オープンソースのStructure from Motionライブラリ『Theia』
なんかすごいサイト
組み込み向けのWindows OS 『Windows Embedded』
RefineNet (Multi-Path Refinement Network):ディープラーニン...
WordPress on Windows Azure
Raspberry PiのGPIOを操作するPythonライブラリ『RPi.GPIO』の使い方
html5のcanvasの可能性
Mayaのプラグイン開発
HD画質の無駄遣い
仮想関数
ブログをGoogle App EngineからAmazon EC2へ移行
Adobe MAX 2015
AnacondaとTensorFlowをインストールしてVisual Studio 2015で使う
Raspberry Piでセンサーの常時稼働を検討する
ベイズ推定とグラフィカルモデル
このブログのデザインに飽きてきた
機械学習で流体シミュレーションを近似する『Physics Forests』
オープンソースの取引プラットフォーム
GeForce RTX 30シリーズ発表
PythonでMayaのShapeノードプラグインを作る
ドットインストールのWordPress入門レッスン
NVIDIA Quadro OpenGL DriverのDeep Color不具合の対処方法
オープンソースのIT資産・ライセンス管理システム『Snipe-IT』
iOSデバイスと接続して連携するガジェットの開発方法

コメント