トップページ -> 最新情報技術の実習と研究ツール -> 顔検出、顔識別 -> Dlib で顔検出を行ってみる,カメラともつなぐ
[サイトマップへ]  

Dlib で顔検出を行ってみる,カメラともつなぐ

Dlibは,機械学習のアルゴリズムやトールの機能を持つソフトウエア.

Dlib の次の機能を使います


前準備

Anaconda のインストール

Windows での Anaconda のインストール手順は、 別の Web ページに記載しています

Ubuntu での Anaconda のインストール手順は、 別の Web ページに記載しています

隔離された Python 環境の作成.spyder, Tensorflow, Keras, Dlib のインストール

Windows での 手順は、 「Windows で,隔離された Python 環境 + Keras + TensorFlow + OpenCV + spyder + Dlib 環境を作る(Anaconda を利用)」の Web ページに記載しています

以下,Windows での Anaconda をインストール済み, 隔離された Python 環境(名前は ai)に、spyder, Tensorflow, Keras, Dlib をインストール済みであるものとして説明を続けます.

Dlib は C:\pytools\dlib にインストールされているとします


学習データの準備

  1. 学習済みデータ mmod_human_face_detector.datのダウンロード

    http://dlib.net/files/ を開き、 mmod_human_face_detector.dat.bz2をダウンロード

  2. ダウンロードした .bz2 ファイルを展開(解凍)する.

    ※ Windows での展開(解凍)のためのソフトは「7-Zip」をおすすめ.

  3. 学習済みデータ mmod_human_face_detector.dat のファイルを C:\pytools\dlib\python_examples に置く

    ※ 「C:\pytools\dlib」は,Dlib をインストールしたディレクトリに読み替えること。

    ※ まだ Dlib のインストールを行っていないときは、 「Windows で,隔離された Python 環境 + Keras + TensorFlow + OpenCV + spyder + Dlib 環境を作る(Anaconda を利用)」の Web ページ の「Dlib のインストール」を見て、Dlib のインストールを行うこと

動かしてみる

  1. まずは、DLib に同封の顔画像ファイルに何があるかを、簡単にみておく

    C:\pytools\dlib\examples\faces の下の顔画像のファイルを確認する

  2. Windows のコマンドプロンプトを開く

  3. Python 環境(名前は ai)を有効にする

    「activate ai 」は Python 環境(名前はai)を有効にするためのコマンド(各自の環境の名前にあわせること

    activate ai
    

    「Could not find conda environment: ai」というメッセージが出たときは、 隔離された Python 環境の作成(名前は ai) を行う.

  4. 実行してみる
    cd C:\pytools\dlib\python_examples
    python cnn_face_detector.py mmod_human_face_detector.dat ..\examples\faces\2007_007763.jpg
    

    結果が表示されるまで少し待つ

    うまく動かないときのヒント

    • 次のように「RuntimeError: Unable to open mmod_human_face_detector.dat for reading」というエラーメッセージが出たときは、 上の前準備をやり直して、もう一度実行

    • python にパスが通っていないときは、うまくいかない. Windows で,python にパスが通っているかは、次のコマンドで確認
      where python
      

      回避策: Anaconda の python のパスの設定については別のWebページに書いています

  5. 別の画像で試してみる
    cd C:\pytools\dlib\python_examples
    python cnn_face_detector.py mmod_human_face_detector.dat ..\examples\faces\2008_001009.jpg 
    

  6. さらに別の画像で試してみる
    cd C:\pytools\dlib\python_examples
    python cnn_face_detector.py mmod_human_face_detector.dat ..\examples\faces\2008_001322.jpg 
    

  7. ./cnn_face_detector.py をエディタなどで開いて、中身を確認

    Dlib には Convolutional Network による顔検出の機能があり、顔検出させるためのプログラムは実質2行. 画面を開く、画像ファイルを読み込む、画像データを表示する、顔部分を四角で描くといったことも簡単なコマンド.


パソコンにつないだカメラで試してみる

Python プログラムを動かしたい. そのために, IPython シェルのコンソールで、Python 環境(名前は ai)を使う

Anacondaに入っている開発環境 spyder を実行し,右下の ipython コンソールを使うのが簡単.

※ Windows のスタートメニューで、 「spyder」の方ではなく、 「spyder(ai)」を開く。 これで、spyder の中で、Python環境aiが有効になる

※「spyder(ai)」がない!というときは、Windowsのコマンドプロントで次を実行して、spyder をインストールする

activate ai
conda install -y spyder

※ Windows のスタートメニューで起動できないときは、Windowsのコマンドプロントで次を実行

activate ai
spyder

dlib に付属の「face_detector.py」を参考にして、次のプログラムを作成してみた

import sys

import dlib
from skimage import io


detector = dlib.get_frontal_face_detector()

import cv2
import numpy as np

v = cv2.VideoCapture(0)
while(v.isOpened()):
    r, f = v.read()
    if ( r == False ):
        break
    cv2.imwrite("hoge.png", f)
    img = io.imread("hoge.png")
    dets, scores, idx = detector.run(img, 1, -1)
    for i, d in enumerate(dets):
        cv2.rectangle(f, (d.left(), d.top()), (d.right(), d.bottom()), (0,255,255), 4)
    cv2.imshow("", f)
    if cv2.waitKey(1) & 0xFF == ord('q'):
        break
v.release()
cv2.destroyAllWindows()