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

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

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

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

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

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

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

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

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

顔認識のプロセス

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

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

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

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

2. SVM (Support Vector Machine)

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

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

3. HoG (Histogram of Oriented Gradient fetaures)

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

ソースコード

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

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


  1. Histogram of Oriented Gradient fetaures

  2. Support Vector Machine

  3. Support Vector Machine

  4. Histogram of Oriented Gradient fetaures

  5. Histogram of Oriented Gradient fetaures

  6. Support Vector Machine

  7. Support Vector Machine

  8. Histogram of Oriented Gradient fetaures

【ロカラボからのお知らせ】
自社事業にAIを活用しようとする前にこれだけは押さえておいてください。

【無料ダウンロード】成功するAIプロジェクトに共通する3つの最重要ポイント

事業でAIを活用する企業様が多くなってきました。
弊社でも主に製造業・医療業を中心にAIシステムの開発や導入支援をおこなってきました。

その中で見えてきた、成功するAIプロジェクトに共通する最重要ポイントをまとめたPDFファイルを無料で配布しています。

AI導入プロジェクトをスタートする際には是非ご参考にいただけたらと思います。
こちらのページからダウンロードしてください。

AI・機械学習・ディープラーニング
ロカラボをフォローする
株式会社ロカラボ