face-api.jsは、畳み込みニューラルネットワークを実行して顔および顔のランドマークを検出・認識するJavaScriptモジュールだ。TensorFlow.jsを利用し、デスクトップおよびモバイルウェブ用に最適化されている。
face-api.jsの作者Vincent Mühler氏が説明するように、ディープラーニングによる顔認識には細かな作業が必要になる。
簡単に言うと、実際にやりたいことは、入力画像などの顔画像を与えて人物を識別することです。そのため、認識したい人の名前をラベル付けした画像(参照データ)を、各人につき1枚(以上)与えます。そして、入力画像と参照データを比較して、最も類似した参照画像を見つけます。画像が十分に類似していれば、その人物の名前を出力し、そうでなければ、‘unknown’ を出力します。いい感じですね。しかし、問題が2つ残っています。一つは、画像に複数の人物が写っていて、その全員を認識したい場合はどうなるのか? もう一つは、比較するには、類似度みたいなものを取得できなくてはならないことです。
face-api.jsでは、顔検出、顔のランドマーク検出、顔認識、表情認識、年齢推定、性別認識といったモデルが利用できる。
face-api.jsを使い始めるには、face-api.jsの最新のJavaScriptリソースをインクルードするか、npm経由でインストールする。
npm i face-api.js
開発者はfaceapis.nets経由で、各種ニューラルネットワークインスタンスをロードし、モデルや名前付きテンソルマップ、Float32Array
を重みとした非圧縮モデルを非同期にロードすることができる。
最近のface-api.jsでは、TensorFlow.jsの最新バージョンに合わせてメンテナンスされており、近づく1.0のリリースに向けて、APIの改良と廃止が行われている。
face-api.js APIドキュメントと多数のサンプルが公開されている。
face-api.jsプロジェクトはオープンソースソフトウェアであり、MITライセンスのもと利用可能だ。face-api.js GitHubリポジトリ経由のコントリビューションが歓迎されている。