トップページ -> 最新情報技術の実習と研究ツール -> 顔検出、顔識別 -> 頭部の向きの推定を行ってみる(mpatacchiola/DeepGaze を使用)
[サイトマップへ]  

頭部の向きの推定を行ってみる(mpatacchiola/DeepGaze を使用)

目次

利用条件などは利用者において確認してください

サイト内の関連Webページ:

謝辞:DeepGaze の作者に感謝します

参考Webページ https://www.github.com/mpatacchiola/DeepGaze


前準備

Anaconda, git のインストール

前準備として,Python 開発環境のAnaconda, git のインストールが終わっていること.

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

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

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


mpatacchiola/DeepGaze のインストール

  1. Windows のコマンドプロンプトを管理者として実行する.

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

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

    activate ai 
    

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

  3. DeepGaze のインストール

    mkdir c:\pytools
    cd c:\pytools
    rmdir /s /q deepgaze
    

    git clone https://github.com/mpatacchiola/deepgaze 
    cd deepgaze
    python setup.py build
    python setup.py install 
    

この Web ページで説明のために使用するビデオ、写真


mpatacchiola/DeepGaze を用いて頭部の向きの推定を行ってみる

  1. C:\face-image のような作業用のディレクトリ(フォルダ)を作る

  2. mp4 形式ビデオファイル: sample2.mp4 を、C:\face-image の下にダウンロード

  3. Window でコマンドプロンプトを実行

  4. Python 環境(ここでは ai としている)を有効にする

    次のコマンドを実行

    activate ai 
    

  5. c:\pytools\deepgaze の下の examples の下の ex_cnn_head_pose_estimation_images の下にあるファイルを使いたい

    ファイルのコピー

    cd c:\pytools
    cd deepgaze\examples\ex_cnn_head_pose_estimation_images
    copy ex_cnn_head_pose_estimation_images.py a.py 
    

  6. いまコピーしてできた新しいファイル a.py をエディタで開く

  7. このプログラムファイルの後半部分を次のように書き換え
    v = cv2.VideoCapture("C:/face-image/sample2.mp4")
    while(v.isOpened()):
        r, img = v.read()
        if ( r == False ):
            break
        img = cv2.resize(img, (480, 480))
        roll = my_head_pose_estimator.return_roll(img)  # Evaluate the roll angle using a CNN
        pitch = my_head_pose_estimator.return_pitch(img)  # Evaluate the pitch angle using a CNN
        yaw = my_head_pose_estimator.return_yaw(img)  # Evaluate the yaw angle using a CNN
        print("roll %s, pitch %s, yaw %s" % ( str(roll[0,0,0]), str(pitch[0,0,0]), str(yaw[0,0,0]) ) )
    
        cv2.imshow("", img)
    
        if cv2.waitKey(1) & 0xFF == ord('q'):
            break
    
    v.release()
    cv2.destroyAllWindows()
    

  8. ファイルを「上書き保存」する

  9. プログラムを実行する
    python a.py 
    

  10. 結果の確認

ビデオカメラで確認

次のように書き換える.書き換えたら保存する

v = cv2.VideoCapture(0)

v = cv2.VideoCapture(0)
while(v.isOpened()):
    r, img = v.read()
    if ( r == False ):
        break
    img = cv2.resize(img, (480, 480))
    roll = my_head_pose_estimator.return_roll(img)  # Evaluate the roll angle using a CNN
    pitch = my_head_pose_estimator.return_pitch(img)  # Evaluate the pitch angle using a CNN
    yaw = my_head_pose_estimator.return_yaw(img)  # Evaluate the yaw angle using a CNN
    print("roll %s, pitch %s, yaw %s" % ( str(roll[0,0,0]), str(pitch[0,0,0]), str(yaw[0,0,0]) ) )

    cv2.imshow("", img)

    if cv2.waitKey(1) & 0xFF == ord('q'):
        break

v.release()
cv2.destroyAllWindows()

  • プログラムを実行する
    python a.py 
    

  • 結果の確認