JetsonNanoで顔認証(face_recognition)②

JetsonNanoで顔認証(face_recognition)②

前回(https://kocoffy.com/programmer_cat/jetson/post-110/)、顔認証を行うための準備で終わってしまいましたので今回はその続きからです。
face_recognitionライブラリのサンプルをまずは実際に動かしてみようと思います。

サンプルの作成

以下のコードをコピーしてテキストエディタに貼り付け.py形式で保存します。
https://github.com/ageitgey/face_recognition/blob/master/examples/facerec_from_webcam_faster.py  

コードは以下のようになっています(サンプルとして使用している画像も同ディレクトリ内にあります。)
コメント欄はGoogle翻訳済み

実行するとこんな感じです。
スマホ越しでも一応認証できてます。(粗くてすみません)

fce_recognition

 

ライブラリの関数について
最後に今回のサンプルで使用したface_recognitionライブラリの関数を簡単に説明します。
・load_image_file
 →画像ファイル(jpeg,pngとか)をnumpy配列に変換します。
・face_encodings
 →指定した画像を長さ128のfloat型配列に変換します。またあらかじめ顔の位置が分かって
  いる場合は続けてface_locationsを指定することができます。(複数人移っている時用?)
  num_jittersはサンプリング回数です。n倍精度が上がりますがn倍遅くなります。
・face_locations
 →指定した画像の顔の位置(上、右、下、左)を返します。
  続けて引数にint方の値(デフォルトは1)を指定することで数値が大きいほど小さい顔でも
  検出できるようになります。
・compare_faces
 →エンコーディング済みのリスト(複数人)、比較する人(エンコード済み)を引数にリスト
  の中に同一人物が存在するか探します。True/Falseで返します。
  また、引数に続けて数値(デフォルトは0.6)を指定することでたとえば0.5を指定するとより
  厳密に比較を行います。
・face_distance
 →エンコーディング済みのリスト(保存してある複数人)、比較する人間(エンコード済み)
  を引数に各比較対象の顔のユークリッド距離を計算します。リストと同じ順序、サイズで
  それぞれユークリッド距離値に差し替えた配列を返します。
  ユークリッド距離は顔がどれほど似ているか(特徴点値の距離の近さ)を示します。小さけ
  れば小さいほど似ているということです。(デフォルトの0.6以下だと一応同一人物と判断
  できる)
 
参考:https://face-recognition.readthedocs.io/en/latest/face_recognition.html