PythonとDeepfaceで始める顔認識 – 初心者から上級者まで

PythonとDeepfaceで始める顔認識 - 初心者から上級者まで AI

顔認識技術は、セキュリティ、マーケティング、エンターテインメントなど、さまざまな分野で応用されています。
特に、ディープラーニングの発展により、顔認識の精度は飛躍的に向上し、より広い範囲で利用されるようになりました。

そんな中、Pythonで顔認識を手軽に実装できるオープンソースのフレームワーク「Deepface」が注目を集めています。
Deepfaceは、複数の最先端の顔認識モデルをラップしており、少ないコード量で高精度な顔認識を実現できます。

この記事では、そんなDeepfaceについて解説しています。

本記事の内容

  • Deepfaceとは?
  • Deepfaceのインストール
  • Deepfaceの動作確認

それでは、上記に沿って解説していきます。

Deepfaceとは?

GitHub - serengil/deepface: A Lightweight Face Recognition and Facial Attribute Analysis (Age, Gender, Emotion and Race) Library for Python
A Lightweight Face Recognition and Facial Attribute Analysis (Age, Gender, Emotion and Race) Library for Python - serengil/deepface

Deepfaceは、Pythonで書かれた顔認識のためのオープンソースフレームワークです。
最先端の顔認識モデルをラップする形となります。

  • VGG-Face
  • FaceNet
  • OpenFace
  • DeepID
  • ArcFace
  • Dlib
  • SFace
  • GhostFaceNet

このことにより、ユーザーはこれらのモデルを簡単に利用できます。
Deepfaceは顔認識だけでなく、年齢、性別、感情、人種などの属性分析も可能です。

また、Deepfaceは、高精度な顔認識を少ないコード量で実現できるのが特徴になります。
ただし、DeepfaceはTensorFlowをバックエンドとして使用しているのです。

このことは、システムを構築する上でネックになる可能性があります。
現時点では、バックエンドにはPyTorchの採用が増えています。

そのため、TensorFlowの導入・利用は負担増になり得ます。

Deepfaceのインストール

Deepfaceのインストールは、次のコマンドを実行するだけです。

pip install deepface

ただし、Windowsの場合には注意が必要となります。
Windowsの場合、GPU版のTensorFlowがそのままで利用できません。

Windows 11へのTensorFlow 2.6.0(GPU版)のインストール
「Windows 11でGPU版のTensorFlowを動かしたい 」「TensorFlow(GPU版)のインストール条件がよくわからない・・・」このような場合には、この記事の内容が参考になります。この記事では、TensorFlow 2.6.0(GPU版)のインストール方法を解説しています。

なんと、WindowsにおけるGPU版のサポートの開発を止めてしまったようです。
2.10が最後のGPU対応バージョンになります。

したがって、GPU版のTensorflowでDeepfaceを動かしたい場合は、それ以前をインストールしましょう。
現時点では、以下のバージョンがpipで見つかります。

(from versions: 2.8.0rc1, 2.8.0, 2.8.1, 2.8.2, 2.8.3, 2.8.4, 2.9.0rc0, 2.9.0rc1, 2.9.0rc2, 2.9.0, 2.9.1, 2.9.2, 2.9.3, 2.10.0rc0, 2.10.0rc1, 2.10.0rc2, 2.10.0rc3, 2.10.0, 2.10.1, 2.11.0rc0, 2.11.0rc1, 2.11.0rc2, 2.11.0, 2.11.1, 2.12.0rc0, 2.12.0rc1, 2.12.0, 2.12.1, 2.13.0rc0, 2.13.0rc1, 2.13.0rc2, 2.13.0, 2.13.1, 2.14.0rc0, 2.14.0rc1, 2.14.0, 2.14.1, 2.15.0rc0, 2.15.0rc1, 2.15.0, 2.15.1, 2.16.0rc0, 2.16.1)

なお、指定しなければ最新のTensorflowがインストールされます。
今なら、2.16.1ですね。

このバージョンのTensorflowの場合、以下が追加でインストール必要となっています。

pip install tf-keras

Deepfaceの動作確認

顔属性分析を行いましょう。
コードは、公式に載っているものを利用しています。

from deepface import DeepFace
import pprint

# DeepFace を使用して画像解析
objs = DeepFace.analyze(
    img_path="img.jpg",
    actions=['age', 'gender', 'race', 'emotion'],
)

pprint.pprint(objs)

画像は、以下を用います。

そして、コードを実行した結果は以下となります。

[{'age': 35,
  'dominant_emotion': 'happy',
  'dominant_gender': 'Woman',
  'dominant_race': 'white',
  'emotion': {'angry': 6.098496213381482e-07,
              'disgust': 1.7798517062275717e-11,
              'fear': 1.0022804962306884e-09,
              'happy': 99.7582912156929,
              'neutral': 0.24169299838757496,
              'sad': 2.0835920719042223e-05,
              'surprise': 1.3021159926003723e-06},
  'face_confidence': 0.91,
  'gender': {'Man': 1.1569126456834056e-05, 'Woman': 99.99998807907104},
  'race': {'asian': 0.059160134920387276,
           'black': 0.010547083563844956,
           'indian': 0.48793455357139665,
           'latino hispanic': 15.77151974779132,
           'middle eastern': 27.63976721289549,
           'white': 56.03106546031648},
  'region': {'h': 105,
             'left_eye': (368, 158),
             'right_eye': (337, 158),
             'w': 105,
             'x': 305,
             'y': 116}}]

「dominant_」で始まる値が、最終結果となるようです。
まあ、無難な結果と言えます。

あと、GPU版Tensorflowだと3.7秒の処理時間となります。
CPU版だと、その2倍の7.5秒となっています。

もちろん、この値はそれぞれの環境によって異なってきます。
とりあえず、CPU版でもそこまで遅いモノではありません。

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