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

こちらの記事は古くなっており非推奨となりました。
最新のドキュメントは以下から閲覧可能です
GitHub FACE01
FACE01 document

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

FACE01 IMAGERとは

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

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

FACE01 GRAPHICSとあわせtolerance(顔距離)指定からsimilar_percentage(類似度)指定へ変更され、より直感的に扱えるようになりました。

デモ

1.2.5を使用していますが動作内容は同一です。

外部プログラムコード

# 変数設定 ==========================
## 説明(default値)

## 類似度(99.0)
similar_percentage=99.0
## ゆらぎ値(0)
jitters=0
## 登録顔画像のゆらぎ値(100)
priset_face_images_jitters=100
## 最小顔検出範囲(0)
upsampling=0
## 顔検出方式(hog)
mode='hog'

# ===================================

import FACE01IMAGER128 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, 
        similar_percentage=similar_percentage,
        jitters=jitters,
        upsampling=upsampling,
        mode=mode
    )

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

オプション変数

# 変数設定 ==========================
## 説明(default値)

## 類似度(99.0)
similar_percentage=99.0
## ゆらぎ値(0)
jitters=0
## 登録顔画像のゆらぎ値(100)
priset_face_images_jitters=100
## 最小顔検出範囲(0)
upsampling=0
## 顔検出方式(hog)
mode='hog'

# ===================================

similar_percentage

[float]類似度。デフォルト値99.0(%)

99.0%より低ければ他人と判断されます。
閾値(tolerance)からこちらへ変更されました。

jitters

[int]ゆらぎ値。デフォルト値0

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

priset_face_images_jitters

[int]登録顔画像のゆらぎ値。デフォルト値100

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

upsampling

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

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

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

mode

[string]顔検出方式。デフォルト値’hog'(自動)

hogを指定しておけばhogで顔検出できない場合自動的にcnnに切り替えられます。顔検出処理が終わると再び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を指定する際は小文字にして下さい。

まとめ

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

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