FACE01 GRAPHICS 1.2.4 ドキュメント

FACE01 GRAPHICS

Pythonやコマンドラインで顔検出、顔認識を行うライブラリです。オプションを指定することで様々な操作を可能にします。dlibを使用して構築されています。

デモ

無名パイプでVideo Streamを他のアプリケーションに流す例

インストール

こちらからダウンロードします。FACE01 GRAPHICSはEXEファイルとスクリプトファイルの2種類が存在します。

メリットデメリット
EXEPython実行環境を用意しなくて良いCPU動作となり実行速度に劣る
スクリプトファイルPython実行環境を用意する必要があるCPU動作・GPU動作を選択できる

Windows 10、Ubuntu 18.04.5に対応しています。スクリプトファイル版にはPython 3.6以降が必要です。

shape_predictor_68_face_landmarks.dat

本番環境構築の際、shape_predictor_68_face_landmarks.datを東海顔認証が配布するものに差し替えることにより商用利用を可能にします。配布元のshape_predictor_68_face_landmarks.datは商用利用できません。ご注意下さい。

Python実行環境構築

EXE版には必要ありません

## Ubuntu版
## venv仮想環境作成手順
python3 -m venv ./
## 仮想環境に入る
source ./bin/activate
## pip3アップデート
(****_UBUNTU_VENV) pip3 install -U pip  ## 文末のpipはpip3ではなくpip
## pip3のバージョン確認
pip3 -V
## ライブラリ確認
(****_UBUNTU_VENV) pip3 freeze
## ライブラリ一括インストール
(****_UBUNTU_VENV) pip3 install -r requirements_FACE01_UBUNTU.txt (OR requirements_GRAPHICS_UBUNTU.txt)
## ライブラリ確認
(****_UBUNTU_VENV) pip3 freeze

## Windows版
## venv仮想環境作成手順
## 仮想環境を作成する
python -m venv .\
## 仮想環境にはいる
>.\Scripts\activate
## pipアップデート
pip install -U pip
## ライブラリ一括インストール
>pip install -r requirements_LOCATION_windows.txt
## ライブラリ確認
pip freeze

## requirementsの内容
dlib
face-recognition
face-recognition-models
numpy
opencv-python
Pillow
PySimpleGUI

使用方法

設定ファイル作成

設定のためのPythonスクリプトを作成します。オプション引数はこちらのページで解説しています。

import FACE01GRAPHICS124 as f
from face01lib import load_priset_image  # face01libからインポート

kaoninshoDir, priset_face_imagesDir = f.home()
    
known_face_encodings, known_face_names = load_priset_image.load_priset_image(
    kaoninshoDir,
    priset_face_imagesDir, 
    jitters = 10, 
    upsampling=0, 
    mode='hog', 
    model='small'
)

# パイプ処理関連
output_frame_data_bool=True
print_property=False

xs = f.face_attestation(
    kaoninshoDir, 
    known_face_encodings, 
    known_face_names, 
    tolerance=0.45, 
    jitters=0,
    upsampling=0,
    mode='cnn', 
    model='small',
    frame_skip = 1,
    movie="test.mp4",
    rectangle='false',
    target_rectangle='true',
    show_video='true',
    frequency_crop_image=5,
    set_area='NONE',
    face_learning_bool=True,
    how_many_face_learning_images=1,
    output_frame_data=output_frame_data_bool,
    print_property=print_property
)

for x in xs:
    if output_frame_data_bool==True and print_property==False:
        sys.stdout.buffer.write(x['stream'].tobytes())  ## 'stream'を出力する
    else:
        name, pict, date, img, location, percentage_and_symbol, stream = x['name'], x['pict'], x['date'], x['img'], x['location'], x['percentage_and_symbol'], x['stream']
        print(name, percentage_and_symbol, location, date)

サンプルアプリケーションの引数指定に慣れていない場合SETTING MANAGERをお使いいただくことも出来ます。

顔の登録方法

priset_fase_imagesフォルダに’PNG’形式のファイルを配置して下さい。ファイル名は以下の形式に従って下さい。

名前_default.png

同一人物について2つ以上の顔を登録する場合には以下の形式に従って下さい。同一人物について登録数に上限はありません。マスクをはめた顔に対応させる場合はマスクをはめた顔もここに登録して下さい。

名前_1.png, 名前_2.png

顔は正面を向いた画像にして下さい。斜めを向いていたりうつむいた顔は避けて下さい。

極端に濃い化粧は精度を悪化させます。また眉毛が隠れるような長い前髪は避けて下さい。

可能な限り顔認証を行うカメラと登録を行うカメラを同一にして下さい。スマートフォンやコンパクトカメラの使用は精度を悪化させます。

高速化

GPU使用

良いパフォーマンスを出すにはGPUアクセラレーション(NVidiaのCUDAライブラリ経由)が必要です。またdlibをコンパイルする際にCUDAサポートを有効にする必要あります。

load_priset_image()メソッド

ver. 1.2.4からload_priset_image()メソッドにおけるmode選択が自動になりました。特に理由がない限り’hog’を指定して下さい。

jitters値指定は可能であれば大きめの値を設定して下さい。(5〜50) データベースを構築する最初の1回目のみ時間がかかります。

face_attestation()メソッド

特に理由のない限りupsampling値を大きく設定しないで下さい。通常値: 0

GPU利用時においては’hog’よりも’cnn’の方が処理速度が高くより正確です。

複数同時認証では人数と処理時間に相関があります。

Follow me!