PythonのDeepfaceモジュールを使用し顔の表情の検出する

PythonのDeepfaceモジュールを使用し顔の表情の検出してみます。

顔の表情を検出してみますが、「Deepface」フレームワーク・ライブラリは、Pythonの標準ライブラリではありませんので、事前にインストールする必要があります。

■Python

今回のPythonのバージョンは、「3.8.5」を使用しています。(Windows10)(pythonランチャーでの確認)

■人物の顔を含む写真を用意する

顔の表情の検出する前に、人物の顔を含む写真を用意します。

今回用意したのは、「Pixabay: 2.300万点以上の高品質なフリー画像素材(https://pixabay.com/ja/)」からダウンロードした女性の顔写真です。写真のファイルタイプはjpg形式となり、保存されている場所は「C:\Users\user_\test(フォルダパス)」です。

■Deepfaceモジュールを使用し顔の表情の検出する

画像の用意ができましたので、Deepfaceモジュールを使用し顔の表情の検出するスクリプトを書いていきます。

■コード

import cv2
import matplotlib.pyplot as plt
from deepface import DeepFace

img = cv2.imread(r'C:\Users\user_\test\woman.jpg')

plt.imshow(img[:,:,::-1])

plt.show()

result = DeepFace.analyze(img,actions=['emotion'])

print(result)

顔の表情の検出する場合は、OpenCV,Matplotlib,Deepfaceモジュールを呼び出します。

その後に、imgという変数を定義し、その中でcv2.imread()関数を使用します。cv2.imread()関数を括弧内には、引数,パラメータとして、今回用意した画像を渡します。渡した画像を読み取り、img変数に格納します。

格納後、plt.imshow()関数を使用します。img変数内のデータを画像に変換します。変換する際に、全ての要素(全ての画素)を指定するために、「:(コロン)」を使用します。

データを画像に変換後、画像が正しく取り込まれているか確認するために、plt.show()関数で、プロット・描画します。

その後、resultという変数を定義し、その中で、DeepFace.analyze()関数を使用します。この関数で、人物の年齢、性別、顔の表情などの強力な顔属性分析を行います。

DeepFace.analyze()関数の括弧内には、第1の引数,パラメータとしてimg変数を渡します。第2の引数,パラメータには、「actions=」と記述し、「emotion(感情)」と設定します。これで顔の表情の検出することができます。検出結果は、result変数に格納されます。

最後に、result変数の検出結果をprint()関数で出力します。

■実行・検証

このスクリプトを「detecting_facialexpressions.py」という名前で保存し、コマンドプロンプトから実行してみます。

Directory C:\Users\user_ /.deepface created
Directory C:\Users\user_ /.deepface/weights created

実行してみると、コマンドプロンプト上に上記のメッセージが出力され、ウインドウが表示され、画像が描画されます。描画後、ウインドウの「×」ボタンをクリックし、ウインドウを閉じます。

facial_expression_model_weights.h5 will be downloaded…
Downloading…
From: https://github.com/serengil/deepface_models/releases/download/v1.0/facial_expression_model_weights.h5
To: C:\Users\user_\.deepface\weights\facial_expression_model_weights.h5
100%|█████████████████████████████████████████████████████████████████████████████| 5.98M/5.98M [00:01<00:00, 3.67MB/s]
{’emotion’: {‘angry’: 3.234760129389475e-08, ‘disgust’: 1.8760096300709986e-16, ‘fear’: 5.0996004179843786e-05, ‘happy’: 99.75407126497373, ‘sad’: 1.666023509274792e-08, ‘surprise’: 0.23430159316341959, ‘neutral’: 0.011570029240368174}, ‘dominant_emotion’: ‘happy’, ‘region’: {‘x’: 297, ‘y’: 144, ‘w’: 390, ‘h’: 390}}

ウインドウを閉じるとコマンドプロンプトに上記のメッセージが出力されます。facial_expression_model_weights.h5という顔の表情を読み取るモデルがダウンロードされ、今回用意した画像を判別されます。

判別後、「emotion(感情)」の検出結果が「dominant_emotion’: ‘happy’(幸せ)」と出力されました。

コメント

タイトルとURLをコピーしました