【ドキュメント】FACE01 IMAGER ver.1.2.5

【ドキュメント】FACE01 IMAGER ver.1.2.5

FACE01 IMAGER ver.1.2.5についてと外部プログラムからの呼び出し方を解説します。

FACE01 IMAGERとは

顔を含む画像に対して顔認証を行います。

非常に軽快なため、サーバやIOT端末で顔認証を行う場合に用いたり、大量にある写真から登録人物を抜き出す用途に用います。

デモ

外部プログラムコード

# 変数設定 ==========================
## 説明(default値)
## 閾値(0.5)
tolerance=0.45
## ゆらぎ値(0)
jitters=0
## 登録顔画像のゆらぎ値(10)
priset_face_images_jitters=10
## 最小顔検出範囲(0)
upsampling=1
## 顔検出方式(cnn)
### ビデオカードがない場合はmode='hog'
mode='cnn'
# ===================================

import FACE01IMAGER125 as fi

kaoninshoDir, priset_face_imagesDir, check_images = fi.home()

known_face_encodings, known_face_names = fi.load_priset_image.load_priset_image(
    kaoninshoDir,
    priset_face_imagesDir, 
    jitters=priset_face_images_jitters
)

while(1):
    xs = fi.face_attestation( 
        check_images, 
        known_face_encodings, 
        known_face_names, 
        tolerance=tolerance, 
        jitters=jitters,
        upsampling=upsampling,
        mode=mode
    )

    for x in xs:
        name, date, distance, original_photo = x['name'], x['date'], x['face_distance'], x['original_photo']
        print(
            'name', name,
            'date', date,
            'face distance',distance,
            'original photo', original_photo
        )

オプション変数

# 変数設定 ==========================
## 説明(default値)
## 閾値(0.5)
tolerance=0.45
## ゆらぎ値(0)
jitters=0
## 登録顔画像のゆらぎ値(10)
priset_face_images_jitters=10
## 最小顔検出範囲(0)
upsampling=1
## 顔検出方式(cnn)
### ビデオカードがない場合はmode='hog'
mode='cnn'
# ===================================

tolerance

閾値。デフォルト値0.5

0.6を基準としてトレーニングしてあり、これより大きければ他人と判断されます。
閾値以上の distance ( 顔データ間の距離 ) は足切りされます。

jitters

ゆらぎ値。デフォルト値0

入力画像を受け取り、色を乱し、ランダムな移動、回転、スケーリングを適用します。
jitters の値を大きくするほどランダムな変換の平均値をとるようになります。
しかしながら大きな値をとることによって入力画像が不確かなものになっていくこと、処理時間が長くなることが懸念されます。

priset_face_images_jitters

登録顔画像のゆらぎ値。デフォルト値10

登録顔画像の計算は最初の1回しか行われないためデフォルト値を10としています。

upsampling

最小顔検出範囲。デフォルト値0

1フレームの画像のうち、顔探索するピクセル範囲を決定する変数。
80×80では80X80ピクセル位上の範囲を、40×40 ピクセルでは40X40ピクセル以上の範囲を顔探索します。

1フレームごとにより細かく顔探索するように指示するため、処理時間とトレードオフになります。
下の例ではそれぞれの顔は80X80ピクセルの面積以上になっています。この場合は80×80を選択する(upsampling=0)ことで良好な結果を出します。

mode

顔検出方式。デフォルト値’hog’

顔検出にCNN方式または HOG方式のどちらを用いるかを選びます。
CNN: Convolutional Neural Network
HOG: Histogram of Oriented Gradients
CPUのみの場合HOG方式の方が処理速度は高くなります。反対にNvideaのGPUが使える場合、CNN方式の処理速度が高くなります。
( …/dlib/python_examples/dnn_mmod_face_detection_ex.cpp 参照 )

HOG方式はマスクをした顔の検出を苦手とします。
マスクをした顔を顔検出する場合はCNN方式を選択すると良い結果を出します。CNNまたはHOGを指定する際は小文字にして下さい。

まとめ

こちらのページもご参照下さい。もし疑問点・不明な点があればご連絡いただけると幸いです。

最後までお読み頂きありがとうございました。