ロカラボは日本のモノづくりを全力で応援する会社です

メイドインジャパンを盛り上げる

・AI/IoT/RPAの導入支援
・地に足のついたムダのない適切な技術活用
・大手にはできない柔軟性と親身な対応

御社の価値を最大限に引き出し一緒に成果を出していく一歩を踏み出しませんか?

詳細はこちら

【機械学習】シンプルな顔認識システムを作ってみる

シンプルな顔検出システムを作ってみる AI・機械学習・ディープラーニング
シンプルな顔検出システムを作ってみる

こんにちは、荒井(@yutakarai)です。

機械学習を使った顔認識は、画像内で顔を見つける機能として、カメラアプリなどのいくつかの製品で使われています。

顔認識機能は、分類の問題になります。

顔を検出するタスクを実行するための一般的な方法のひとつは、SVMや画像変換をする方法です。

今回は、オープンソースの機械学習ライブラリのdlibライブラリを使って顔検出のプログラムを作ってみます。(必要ライブラリのインストールの解説は割愛します)

dlibライブラリには、画像からの人の顔やその他オブジェクトを検出するためのクラスが用意されています。

ライブラリの中身はHoG1とSVM2を利用したシンプルな構成ですが、HoGフィルターのパラメータ調整や学習を行ってくれる便利なAPIがあり、人気のライブラリです。

顔認識のプロセス

ここで利用するdlib顔認識ライブラリは、3つのコンセプトに基づいています。

1. ウィンドウがスライドしながら対象オブジェクトをチェック

小さなウインドウが画像全体にスライドし、検出器が各ウインドウの内容を対象オブジェクトに対してチェックします。

以下の図は、検出された顔を含むすべてのウィンドウ(緑色の四角形)が緑で輪郭が描かれ、その他は赤で塗りつぶされていることがわかります。

2. SVM (Support Vector Machine)

顔か顔でないかを分離するために使用されるSVM3を利用します。

サポートベクターマシン(SVM)は、1995年頃にAT&TのV.Vapnikが発表したパターン識別用の教師あり機械学習方法であり、局所解収束の問題が無い長所がある。 「マージン最大化」というアイデア等で汎化能力も高め、現在知られている方法としては、最も優秀なパターン識別能力を持つとされている。(参照ページ

3. HoG (Histogram of Oriented Gradient fetaures)

HoG4は、さまざまなオブジェクトを検出するために使用される勾配ベースの特徴量です。

ソースコード

以下ソースコードを貼り付けておきます。

以下ソースコードのリンクです。
face_detection_sample.py


  1. Histogram of Oriented Gradient fetaures

  2. Support Vector Machine

  3. Support Vector Machine

  4. Histogram of Oriented Gradient fetaures