01.04 DeepFace ~顔照合モデル評価2~

前回全パターン照合結果を公開しましたが、実際に使用する場合の評価が付きにくいと思います。そこで同じデータを使用して「顔認識モデル(models)」に対する「バックエンド(backends)」の組み合わせでカウントしなおします。
集計用サンプルプログラムは、このようになりますです。

【DF_FaceVerification_Aggregation02.py】
#coding: utf-8
# ////////////////////////////////////////////////////////////////////////////
# ///【DeepFace・顔認証(Facial Verification)】
# ///
# ///  【改訂履歴】
# /// V0.00     2024/03/18 評価プログラム
# /// V0.01     2024/03/18 モデル名表示
# ////////////////////////////////////////////////////////////////////////////
if "__file__" in globals():
    import os, sys
    sys.path.append(os.path.join(os.path.dirname(__file__), ".."))
    sys.path.append(os.path.join(os.path.dirname(__file__), "..") + "//..//")
import csv
import numpy as np

if __name__ == "__main__":
    # /// 顔認識モデル(models)
    # ////////////////////////////////////////////////////////////////////////////
    models = {
        "VGG-Face"  :0,
        "Facenet"   :1,
        "Facenet512":2,
        "OpenFace"  :3,
        "DeepFace"  :4,
        "DeepID"    :5,
        "ArcFace"   :6,
        "Dlib"      :7,
        "SFace"     :8,
    }

    # /// バックエンド(backends)
    # ////////////////////////////////////////////////////////////////////////////
    backends = {
        "opencv"    :0,
        "ssd"       :1,
        "dlib"      :2,
        "mtcnn"     :3,
        "retinaface":4,
        "mediapipe" :5,
        "yolov8"    :6,
        "yunet"     :7,
        "fastmtcnn" :8
    }

    # /// 類似度(metrics)
    # ////////////////////////////////////////////////////////////////////////////
    metrics = {
        "cosine"    :0,
        "euclidean" :1,
        "euclidean_l2":2}

    # /// 正規化(normalizations)
    # ////////////////////////////////////////////////////////////////////////////
    normalizations = {
        "base"      :0,
        "raw"       :1,
        "Facenet"   :2,
        "Facenet2018":3,
        "VGGFace"   :4,
        "VGGFace2"  :5,
        "ArcFace"   :6}

    cnt_OK = np.zeros((len(models), len(backends)))
    cnt_NG = np.zeros((len(models), len(backends)))
    np.set_printoptions(threshold=np.inf)

    with open("v20240616_DF_FaceVerification_test03A.csv") as f:
        for row in csv.reader(f, quoting=csv.QUOTE_NONE):
                #一致
            if  (row[4]=='True'):
                if  (row[17]!=None):
                    cnt_OK[ models[row[0]] , backends[row[1]] ] += 1
                else:
                    cnt_NG[ models[row[0]] , backends[row[1]] ] += 1
            else:
                cnt_NG[ models[row[0]] , backends[row[1]] ] += 1
    print("【DF_FaceVerification_test03A Trueカウント】")
    for model  in models:
        print(model,",", cnt_OK[models[model]])

    print("【NGカウント】")
    for model  in models:
        print(model,",", cnt_NG[models[model]])


    cnt_OK = np.zeros((len(models), len(backends)))
    cnt_NG = np.zeros((len(models), len(backends)))
    with open("v20240616_DF_FaceVerification_test03B.csv") as f:
        for row in csv.reader(f, quoting=csv.QUOTE_NONE):
                #一致
            if  (row[4]=='True'):
                if  (row[17]!=None):
                    cnt_OK[ models[row[0]] , backends[row[1]] ] += 1
                else:
                    cnt_NG[ models[row[0]] , backends[row[1]] ] += 1
            else:
                cnt_NG[ models[row[0]] , backends[row[1]] ] += 1

    print("\n【DF_FaceVerification_test03B Trueカウント】")
    for model  in models:
        print(model,",", cnt_OK[models[model]])

    print("【NGカウント】")
    for model  in models:
        print(model,",", cnt_NG[models[model]])

★ 動作結果 ケース1

集計結果を示し、正解・不正解を問わずカウントが「21」の場合の背景を黄色にしてみました。

【ケース1】


【モデル・バック別集計結果】
【DF_FaceVerification_test03A True】
MODEL opencv ssd dlib mtcnn retinaface mediapipe yolov8 yunet fastmtcnn
VGG-Face 21 21 21 21 21 21 21 21 21
Facenet 20 21 9 21 21 9 21 21 21
Facenet512 17 14 17 17 15 17 15 17 15
OpenFace 9 13 11 15 13 9 11 9 11
DeepFace 0 0 0 0 2 0 0 0 0
DeepID 0 0 0 0 0 0 0 0 0
ArcFace 17 17 17 17 17 17 17 17 17
Dlib 21 21 19 15 19 21 19 21 13
SFace 16 16 17 13 15 17 14 16 14
【NG count】
MODEL opencv ssd dlib mtcnn retinaface mediapipe yolov8 yunet fastmtcnn
VGG-Face 0 0 0 0 0 0 0 0 0
Facenet 1 0 12 0 0 12 0 0 0
Facenet512 4 7 4 4 6 4 6 4 6
OpenFace 12 8 10 6 8 12 10 12 10
DeepFace 21 21 21 21 19 21 21 21 21
DeepID 21 21 21 21 21 21 21 21 21
ArcFace 4 4 4 4 4 4 4 4 4
Dlib 0 0 2 6 2 0 2 0 8
SFace 5 5 4 8 6 4 7 5 7


【モデル・バック別集計評価】

【カウントtest03B True】
MODEL 集計 順位
VGG-Face 189 1
Facenet 164 3
Facenet512 144 5
OpenFace 101 7
DeepFace 2 8
DeepID 0 9
ArcFace 153 4
Dlib 169 2
SFace 138 6
【NG count】
MODEL 集計 順位
VGG-Face 0 9
Facenet 25 7
Facenet512 45 5
OpenFace 88 3
DeepFace 187 2
DeepID 189 1
ArcFace 36 6
Dlib 20 8
SFace 51 4

★ 動作結果 ケース2

ケース2の鼻筋に注目すると右側の写真は横を向いていますし、髪型も写真サイズも異なります。明らかに平面的顔パーツ評価では評価にならないレベルアップした試験です。

【ケース2】


モデル単位で全てのパターンが正解であるケースはなく正解率が全体的に低下し、反対に全てNGになったケースがモデル「DeepFace」「DeepID」に追加されました。

【モデル・バック別集計結果】
【DF_FaceVerification_test03BTrueカウント】
MODEL opencv ssd dlib mtcnn retinaface mediapipe yolov8 yunet fastmtcnn
VGG-Face 6 9 0 6 6 0 6 4 6
Facenet 11 10 9 15 13 9 13 11 10
Facenet512 12 14 14 12 12 14 14 14 12
OpenFace 9 9 9 9 9 9 11 9 11
DeepFace 0 0 0 0 0 0 0 0 0
DeepID 0 0 0 0 0 0 0 0 0
ArcFace 8 10 11 9 9 8 8 9 9
Dlib 16 14 18 7 11 8 9 9 9
SFace 15 11 11 11 11 14 11 11 13
【NGカウント】
MODEL opencv ssd dlib mtcnn retinaface mediapipe yolov8 yunet fastmtcnn
VGG-Face 15 12 21 15 15 21 15 17 15
Facenet 10 11 12 6 8 12 8 10 11
Facenet512 9 7 7 9 9 7 7 7 9
OpenFace 12 12 12 12 12 12 10 12 10
DeepFace 21 21 21 21 21 21 21 21 21
DeepID 21 21 21 21 21 21 21 21 21
ArcFace 13 11 10 12 12 13 13 12 12
Dlib 5 7 3 14 10 13 12 12 12
SFace 6 10 10 10 10 7 10 10 8


【モデル・バック別集計評価】
【test03BTrueカウント】
MODEL 集計 順位
VGG-Face 43 7
Facenet 101 3
Facenet512 118 1
OpenFace 85 5
DeepFace 0 8
DeepID 0 8
ArcFace 81 6
Dlib 101 3
SFace 108 2
【NGカウント】
MODEL 集計 順位
VGG-Face 146 3
Facenet 88 6
Facenet512 71 9
OpenFace 104 5
DeepFace 189 1
DeepID 189 1
ArcFace 108 4
Dlib 88 6
SFace 81 8

★ 決定事項

モデル別に各バックエンドのカウント数を合計して順位をつけてみました。

すると、この時点で1つ確定的なのは、NGカウントの1,2位が両方とも「DeepFace」「DeepID」で、「python未来の技術~感情分析~」においても同じ現象が発生しているため、比較処理の対象外(別の用途なのかもしれません)と感がられるため、
  モデル「DeepFace」「DeepID」は選考対象から外す
ということが確定しました。

【カウントtest03B True】
MODEL case 1 case 2
VGG-Face 1 7
Facenet 3 3
Facenet512 5 1
OpenFace 7 5
DeepFace 8 8
DeepID 9 8
ArcFace 4 6
Dlib 2 3
SFace 6 2
【NG count】
MODEL case 1 case 2
VGG-Face 9 3
Facenet 7 6
Facenet512 5 9
OpenFace 3 5
DeepFace 2 1
DeepID 1 1
ArcFace 6 4
Dlib 8 6
SFace 4 8

このため、tensorflowは元のバージョン「2.15.0」に戻しておきましょう。

仮想環境 py36 py39
python 3.6.10 3.9.18
deepface 0.0.75 0.0.86
tensorflow 1.14.0 2.15.0
【使用環境】
Python               3.9.18
opencv-python    4.8.1.78
deepface             0.0.86



次は、ケース1とケース2と合計差が「0」を「ライム」、「1」を黄色背景にしてみました。

【DF_FaceVerification_test03A True】
MODEL opencv ssd dlib mtcnn retinaface mediapipe yolov8 yunet fastmtcnn
VGG-Face 21 21 21 21 21 21 21 21 21
Facenet 20 21 9 21 21 9 21 21 21
Facenet512 17 14 17 17 15 17 15 17 15
OpenFace 9 13 11 15 13 9 11 9 11
ArcFace 17 17 17 17 17 17 17 17 17
Dlib 21 21 19 15 19 21 19 21 13
SFace 16 16 17 13 15 17 14 16 14
【DF_FaceVerification_test03BTrueカウント】
MODEL opencv ssd dlib mtcnn retinaface mediapipe yolov8 yunet fastmtcnn
VGG-Face 6 9 0 6 6 0 6 4 6
Facenet 11 10 9 15 13 9 13 11 10
Facenet512 12 14 14 12 12 14 14 14 12
OpenFace 9 9 9 9 9 9 11 9 11
ArcFace 8 10 11 9 9 8 8 9 9
Dlib 16 14 18 7 11 8 9 9 9
SFace 15 11 11 11 11 14 11 11 13

「ライム」のモデルは「Facenet512」「Dlib」「SFace」で一番数で多いのは「OpenFace」ということになります。但し、ここで言う「合計値」は、「類似度(metrics)」と「正規化(normalizations)」の組み合わせ数を示しているだけで正解率ではないため、1桁だから正解率が低いという意味ではありません。

この値は「顔認識モデル(models)」「バックエンド(backends)」組み合わせで、「類似度(metrics)」と「正規化(normalizations)」で正解数を示しているため「相性」を示しています。
つまり、数が少ないと「類似度(metrics)」と「正規化(normalizations)」との組み合わせが限定される、または特定されるということになります。逆に、数が多いと使用する「類似度(metrics)」と「正規化(normalizations)」との組み合わせは、どれでもよいということになります

一方ケース1とケース2で差に注目すると、差が同じということは顔認証対象が正面を向いていなくても対応できるということ、逆に差があるということは「類似度(metrics)」と「正規化(normalizations)」との組み合わせで対応できないものを多数含んでいるという意味になります。



その考えに基づいてプログラムを変更し、画像ケース1でもケース2でも正解しているモデル・バックエンド・類似度・正規化の組み合わせのみを集計してみることにしましょう。

【Trueカウント】
MODEL opencv ssd dlib mtcnn retinaface mediapipe yolov8 yunet fastmtcnn 集計 順位
VGG-Face 6 9 0 6 6 0 6 4 6 43 6
Facenet 11 10 9 15 13 9 13 11 10 101 3
Facenet512 12 14 14 12 12 14 14 14 12 118 1
OpenFace 9 9 9 9 9 9 11 9 11 85 5
DeepFace 0 0 0 0 0 0 0 0 0 0 8
DeepID 0 0 0 0 0 0 0 0 0 0 8
ArcFace 8 10 11 9 9 8 8 9 9 81 6
Dlib 16 14 16 7 11 8 9 9 9 99 4
SFace 14 11 11 10 11 14 11 11 13 106 2

そうすると、横向き画像で正解しているケースよりさらに少なくなりますが、以降使用できる有効な組み合わせは下記であることが分かりました。
但し、この結果はあくまでも「DeepFace.verify」メソッドに対し出た結果で、以降の使用していく全ての結果ではありません。

【DF_FaceVerification 正解組み合わせ表】
【DF_FaceVerification 正解組み合わせ表】
VGG-Face , opencv , cosine , base
VGG-Face , opencv , cosine , raw
VGG-Face , opencv , euclidean , base
VGG-Face , opencv , euclidean , raw
VGG-Face , opencv , euclidean_l2 , base
VGG-Face , opencv , euclidean_l2 , raw
VGG-Face , ssd , cosine , base
VGG-Face , ssd , cosine , raw
VGG-Face , ssd , cosine , Facenet
VGG-Face , ssd , euclidean , base
VGG-Face , ssd , euclidean , raw
VGG-Face , ssd , euclidean , Facenet
VGG-Face , ssd , euclidean_l2 , base
VGG-Face , ssd , euclidean_l2 , raw
VGG-Face , ssd , euclidean_l2 , Facenet
VGG-Face , mtcnn , cosine , base
VGG-Face , mtcnn , cosine , raw
VGG-Face , mtcnn , euclidean , base
VGG-Face , mtcnn , euclidean , raw
VGG-Face , mtcnn , euclidean_l2 , base
VGG-Face , mtcnn , euclidean_l2 , raw
VGG-Face , retinaface , cosine , base
VGG-Face , retinaface , cosine , raw
VGG-Face , retinaface , euclidean , base
VGG-Face , retinaface , euclidean , raw
VGG-Face , retinaface , euclidean_l2 , base
VGG-Face , retinaface , euclidean_l2 , raw
VGG-Face , yolov8 , cosine , base
VGG-Face , yolov8 , cosine , raw
VGG-Face , yolov8 , euclidean , base
VGG-Face , yolov8 , euclidean , raw
VGG-Face , yolov8 , euclidean_l2 , base
VGG-Face , yolov8 , euclidean_l2 , raw
VGG-Face , yunet , euclidean , base
VGG-Face , yunet , euclidean , raw
VGG-Face , yunet , euclidean_l2 , base
VGG-Face , yunet , euclidean_l2 , raw
VGG-Face , fastmtcnn , cosine , base
VGG-Face , fastmtcnn , cosine , raw
VGG-Face , fastmtcnn , euclidean , base
VGG-Face , fastmtcnn , euclidean , raw
VGG-Face , fastmtcnn , euclidean_l2 , base
VGG-Face , fastmtcnn , euclidean_l2 , raw
Facenet , opencv , cosine , raw
Facenet , opencv , cosine , Facenet
Facenet , opencv , cosine , VGGFace
Facenet , opencv , cosine , VGGFace2
Facenet , opencv , euclidean , raw
Facenet , opencv , euclidean , Facenet
Facenet , opencv , euclidean , VGGFace
Facenet , opencv , euclidean , VGGFace2
Facenet , opencv , euclidean_l2 , raw
Facenet , opencv , euclidean_l2 , VGGFace
Facenet , opencv , euclidean_l2 , VGGFace2
Facenet , ssd , cosine , raw
Facenet , ssd , cosine , VGGFace
Facenet , ssd , cosine , VGGFace2
Facenet , ssd , euclidean , base
Facenet , ssd , euclidean , raw
Facenet , ssd , euclidean , VGGFace
Facenet , ssd , euclidean , VGGFace2
Facenet , ssd , euclidean_l2 , raw
Facenet , ssd , euclidean_l2 , VGGFace
Facenet , ssd , euclidean_l2 , VGGFace2
Facenet , dlib , cosine , raw
Facenet , dlib , cosine , VGGFace
Facenet , dlib , cosine , VGGFace2
Facenet , dlib , euclidean , raw
Facenet , dlib , euclidean , VGGFace
Facenet , dlib , euclidean , VGGFace2
Facenet , dlib , euclidean_l2 , raw
Facenet , dlib , euclidean_l2 , VGGFace
Facenet , dlib , euclidean_l2 , VGGFace2
Facenet , mtcnn , cosine , raw
Facenet , mtcnn , cosine , Facenet
Facenet , mtcnn , cosine , Facenet2018
Facenet , mtcnn , cosine , VGGFace
Facenet , mtcnn , cosine , VGGFace2
Facenet , mtcnn , cosine , ArcFace
Facenet , mtcnn , euclidean , base
Facenet , mtcnn , euclidean , Facenet
Facenet , mtcnn , euclidean , Facenet2018
Facenet , mtcnn , euclidean , VGGFace
Facenet , mtcnn , euclidean , VGGFace2
Facenet , mtcnn , euclidean , ArcFace
Facenet , mtcnn , euclidean_l2 , raw
Facenet , mtcnn , euclidean_l2 , VGGFace
Facenet , mtcnn , euclidean_l2 , VGGFace2
Facenet , retinaface , cosine , raw
Facenet , retinaface , cosine , Facenet
Facenet , retinaface , cosine , Facenet2018
Facenet , retinaface , cosine , VGGFace
Facenet , retinaface , cosine , VGGFace2
Facenet , retinaface , euclidean , Facenet
Facenet , retinaface , euclidean , Facenet2018
Facenet , retinaface , euclidean , VGGFace
Facenet , retinaface , euclidean , VGGFace2
Facenet , retinaface , euclidean , ArcFace
Facenet , retinaface , euclidean_l2 , raw
Facenet , retinaface , euclidean_l2 , VGGFace
Facenet , retinaface , euclidean_l2 , VGGFace2
Facenet , mediapipe , cosine , raw
Facenet , mediapipe , cosine , VGGFace
Facenet , mediapipe , cosine , VGGFace2
Facenet , mediapipe , euclidean , raw
Facenet , mediapipe , euclidean , VGGFace
Facenet , mediapipe , euclidean , VGGFace2
Facenet , mediapipe , euclidean_l2 , raw
Facenet , mediapipe , euclidean_l2 , VGGFace
Facenet , mediapipe , euclidean_l2 , VGGFace2
Facenet , yolov8 , cosine , raw
Facenet , yolov8 , cosine , Facenet
Facenet , yolov8 , cosine , Facenet2018
Facenet , yolov8 , cosine , VGGFace
Facenet , yolov8 , cosine , VGGFace2
Facenet , yolov8 , cosine , ArcFace
Facenet , yolov8 , euclidean , raw
Facenet , yolov8 , euclidean , Facenet
Facenet , yolov8 , euclidean , VGGFace
Facenet , yolov8 , euclidean , VGGFace2
Facenet , yolov8 , euclidean_l2 , raw
Facenet , yolov8 , euclidean_l2 , VGGFace
Facenet , yolov8 , euclidean_l2 , VGGFace2
Facenet , yunet , cosine , base
Facenet , yunet , cosine , raw
Facenet , yunet , cosine , VGGFace
Facenet , yunet , cosine , VGGFace2
Facenet , yunet , euclidean , base
Facenet , yunet , euclidean , raw
Facenet , yunet , euclidean , VGGFace
Facenet , yunet , euclidean , VGGFace2
Facenet , yunet , euclidean_l2 , raw
Facenet , yunet , euclidean_l2 , VGGFace
Facenet , yunet , euclidean_l2 , VGGFace2
Facenet , fastmtcnn , cosine , raw
Facenet , fastmtcnn , cosine , Facenet
Facenet , fastmtcnn , cosine , VGGFace
Facenet , fastmtcnn , cosine , VGGFace2
Facenet , fastmtcnn , euclidean , Facenet
Facenet , fastmtcnn , euclidean , VGGFace
Facenet , fastmtcnn , euclidean , VGGFace2
Facenet , fastmtcnn , euclidean_l2 , raw
Facenet , fastmtcnn , euclidean_l2 , VGGFace
Facenet , fastmtcnn , euclidean_l2 , VGGFace2
Facenet512 , opencv , cosine , raw
Facenet512 , opencv , cosine , VGGFace
Facenet512 , opencv , cosine , VGGFace2
Facenet512 , opencv , euclidean , Facenet
Facenet512 , opencv , euclidean , Facenet2018
Facenet512 , opencv , euclidean , ArcFace
Facenet512 , opencv , euclidean_l2 , base
Facenet512 , opencv , euclidean_l2 , raw
Facenet512 , opencv , euclidean_l2 , Facenet2018
Facenet512 , opencv , euclidean_l2 , VGGFace
Facenet512 , opencv , euclidean_l2 , VGGFace2
Facenet512 , opencv , euclidean_l2 , ArcFace
Facenet512 , ssd , cosine , raw
Facenet512 , ssd , cosine , VGGFace
Facenet512 , ssd , cosine , VGGFace2
Facenet512 , ssd , euclidean , base
Facenet512 , ssd , euclidean , Facenet
Facenet512 , ssd , euclidean , Facenet2018
Facenet512 , ssd , euclidean , ArcFace
Facenet512 , ssd , euclidean_l2 , base
Facenet512 , ssd , euclidean_l2 , raw
Facenet512 , ssd , euclidean_l2 , Facenet
Facenet512 , ssd , euclidean_l2 , Facenet2018
Facenet512 , ssd , euclidean_l2 , VGGFace
Facenet512 , ssd , euclidean_l2 , VGGFace2
Facenet512 , ssd , euclidean_l2 , ArcFace
Facenet512 , dlib , cosine , raw
Facenet512 , dlib , cosine , VGGFace
Facenet512 , dlib , cosine , VGGFace2
Facenet512 , dlib , euclidean , base
Facenet512 , dlib , euclidean , Facenet
Facenet512 , dlib , euclidean , Facenet2018
Facenet512 , dlib , euclidean , ArcFace
Facenet512 , dlib , euclidean_l2 , base
Facenet512 , dlib , euclidean_l2 , raw
Facenet512 , dlib , euclidean_l2 , Facenet
Facenet512 , dlib , euclidean_l2 , Facenet2018
Facenet512 , dlib , euclidean_l2 , VGGFace
Facenet512 , dlib , euclidean_l2 , VGGFace2
Facenet512 , dlib , euclidean_l2 , ArcFace
Facenet512 , mtcnn , cosine , raw
Facenet512 , mtcnn , cosine , VGGFace
Facenet512 , mtcnn , cosine , VGGFace2
Facenet512 , mtcnn , euclidean , base
Facenet512 , mtcnn , euclidean , Facenet2018
Facenet512 , mtcnn , euclidean , ArcFace
Facenet512 , mtcnn , euclidean_l2 , base
Facenet512 , mtcnn , euclidean_l2 , raw
Facenet512 , mtcnn , euclidean_l2 , Facenet2018
Facenet512 , mtcnn , euclidean_l2 , VGGFace
Facenet512 , mtcnn , euclidean_l2 , VGGFace2
Facenet512 , mtcnn , euclidean_l2 , ArcFace
Facenet512 , retinaface , cosine , raw
Facenet512 , retinaface , cosine , VGGFace
Facenet512 , retinaface , cosine , VGGFace2
Facenet512 , retinaface , euclidean , base
Facenet512 , retinaface , euclidean , Facenet2018
Facenet512 , retinaface , euclidean , ArcFace
Facenet512 , retinaface , euclidean_l2 , base
Facenet512 , retinaface , euclidean_l2 , raw
Facenet512 , retinaface , euclidean_l2 , Facenet2018
Facenet512 , retinaface , euclidean_l2 , VGGFace
Facenet512 , retinaface , euclidean_l2 , VGGFace2
Facenet512 , retinaface , euclidean_l2 , ArcFace
Facenet512 , mediapipe , cosine , raw
Facenet512 , mediapipe , cosine , VGGFace
Facenet512 , mediapipe , cosine , VGGFace2
Facenet512 , mediapipe , euclidean , base
Facenet512 , mediapipe , euclidean , Facenet
Facenet512 , mediapipe , euclidean , Facenet2018
Facenet512 , mediapipe , euclidean , ArcFace
Facenet512 , mediapipe , euclidean_l2 , base
Facenet512 , mediapipe , euclidean_l2 , raw
Facenet512 , mediapipe , euclidean_l2 , Facenet
Facenet512 , mediapipe , euclidean_l2 , Facenet2018
Facenet512 , mediapipe , euclidean_l2 , VGGFace
Facenet512 , mediapipe , euclidean_l2 , VGGFace2
Facenet512 , mediapipe , euclidean_l2 , ArcFace
Facenet512 , yolov8 , cosine , raw
Facenet512 , yolov8 , cosine , VGGFace
Facenet512 , yolov8 , cosine , VGGFace2
Facenet512 , yolov8 , euclidean , base
Facenet512 , yolov8 , euclidean , Facenet
Facenet512 , yolov8 , euclidean , Facenet2018
Facenet512 , yolov8 , euclidean , ArcFace
Facenet512 , yolov8 , euclidean_l2 , base
Facenet512 , yolov8 , euclidean_l2 , raw
Facenet512 , yolov8 , euclidean_l2 , Facenet
Facenet512 , yolov8 , euclidean_l2 , Facenet2018
Facenet512 , yolov8 , euclidean_l2 , VGGFace
Facenet512 , yolov8 , euclidean_l2 , VGGFace2
Facenet512 , yolov8 , euclidean_l2 , ArcFace
Facenet512 , yunet , cosine , raw
Facenet512 , yunet , cosine , VGGFace
Facenet512 , yunet , cosine , VGGFace2
Facenet512 , yunet , euclidean , base
Facenet512 , yunet , euclidean , Facenet
Facenet512 , yunet , euclidean , Facenet2018
Facenet512 , yunet , euclidean , ArcFace
Facenet512 , yunet , euclidean_l2 , base
Facenet512 , yunet , euclidean_l2 , raw
Facenet512 , yunet , euclidean_l2 , Facenet
Facenet512 , yunet , euclidean_l2 , Facenet2018
Facenet512 , yunet , euclidean_l2 , VGGFace
Facenet512 , yunet , euclidean_l2 , VGGFace2
Facenet512 , yunet , euclidean_l2 , ArcFace
Facenet512 , fastmtcnn , cosine , raw
Facenet512 , fastmtcnn , cosine , VGGFace
Facenet512 , fastmtcnn , cosine , VGGFace2
Facenet512 , fastmtcnn , euclidean , base
Facenet512 , fastmtcnn , euclidean , Facenet2018
Facenet512 , fastmtcnn , euclidean , ArcFace
Facenet512 , fastmtcnn , euclidean_l2 , base
Facenet512 , fastmtcnn , euclidean_l2 , raw
Facenet512 , fastmtcnn , euclidean_l2 , Facenet2018
Facenet512 , fastmtcnn , euclidean_l2 , VGGFace
Facenet512 , fastmtcnn , euclidean_l2 , VGGFace2
Facenet512 , fastmtcnn , euclidean_l2 , ArcFace
OpenFace , opencv , cosine , raw
OpenFace , opencv , cosine , VGGFace
OpenFace , opencv , cosine , VGGFace2
OpenFace , opencv , euclidean , raw
OpenFace , opencv , euclidean , VGGFace
OpenFace , opencv , euclidean , VGGFace2
OpenFace , opencv , euclidean_l2 , raw
OpenFace , opencv , euclidean_l2 , VGGFace
OpenFace , opencv , euclidean_l2 , VGGFace2
OpenFace , ssd , cosine , raw
OpenFace , ssd , cosine , VGGFace
OpenFace , ssd , cosine , VGGFace2
OpenFace , ssd , euclidean , raw
OpenFace , ssd , euclidean , VGGFace
OpenFace , ssd , euclidean , VGGFace2
OpenFace , ssd , euclidean_l2 , raw
OpenFace , ssd , euclidean_l2 , VGGFace
OpenFace , ssd , euclidean_l2 , VGGFace2
OpenFace , dlib , cosine , raw
OpenFace , dlib , cosine , VGGFace
OpenFace , dlib , cosine , VGGFace2
OpenFace , dlib , euclidean , raw
OpenFace , dlib , euclidean , VGGFace
OpenFace , dlib , euclidean , VGGFace2
OpenFace , dlib , euclidean_l2 , raw
OpenFace , dlib , euclidean_l2 , VGGFace
OpenFace , dlib , euclidean_l2 , VGGFace2
OpenFace , mtcnn , cosine , raw
OpenFace , mtcnn , cosine , VGGFace
OpenFace , mtcnn , cosine , VGGFace2
OpenFace , mtcnn , euclidean , raw
OpenFace , mtcnn , euclidean , VGGFace
OpenFace , mtcnn , euclidean , VGGFace2
OpenFace , mtcnn , euclidean_l2 , raw
OpenFace , mtcnn , euclidean_l2 , VGGFace
OpenFace , mtcnn , euclidean_l2 , VGGFace2
OpenFace , retinaface , cosine , raw
OpenFace , retinaface , cosine , VGGFace
OpenFace , retinaface , cosine , VGGFace2
OpenFace , retinaface , euclidean , raw
OpenFace , retinaface , euclidean , VGGFace
OpenFace , retinaface , euclidean , VGGFace2
OpenFace , retinaface , euclidean_l2 , raw
OpenFace , retinaface , euclidean_l2 , VGGFace
OpenFace , retinaface , euclidean_l2 , VGGFace2
OpenFace , mediapipe , cosine , raw
OpenFace , mediapipe , cosine , VGGFace
OpenFace , mediapipe , cosine , VGGFace2
OpenFace , mediapipe , euclidean , raw
OpenFace , mediapipe , euclidean , VGGFace
OpenFace , mediapipe , euclidean , VGGFace2
OpenFace , mediapipe , euclidean_l2 , raw
OpenFace , mediapipe , euclidean_l2 , VGGFace
OpenFace , mediapipe , euclidean_l2 , VGGFace2
OpenFace , yolov8 , cosine , raw
OpenFace , yolov8 , cosine , VGGFace
OpenFace , yolov8 , cosine , VGGFace2
OpenFace , yolov8 , euclidean , raw
OpenFace , yolov8 , euclidean , Facenet
OpenFace , yolov8 , euclidean , VGGFace
OpenFace , yolov8 , euclidean , VGGFace2
OpenFace , yolov8 , euclidean_l2 , raw
OpenFace , yolov8 , euclidean_l2 , Facenet
OpenFace , yolov8 , euclidean_l2 , VGGFace
OpenFace , yolov8 , euclidean_l2 , VGGFace2
OpenFace , yunet , cosine , raw
OpenFace , yunet , cosine , VGGFace
OpenFace , yunet , cosine , VGGFace2
OpenFace , yunet , euclidean , raw
OpenFace , yunet , euclidean , VGGFace
OpenFace , yunet , euclidean , VGGFace2
OpenFace , yunet , euclidean_l2 , raw
OpenFace , yunet , euclidean_l2 , VGGFace
OpenFace , yunet , euclidean_l2 , VGGFace2
OpenFace , fastmtcnn , cosine , raw
OpenFace , fastmtcnn , cosine , VGGFace
OpenFace , fastmtcnn , cosine , VGGFace2
OpenFace , fastmtcnn , euclidean , raw
OpenFace , fastmtcnn , euclidean , Facenet
OpenFace , fastmtcnn , euclidean , VGGFace
OpenFace , fastmtcnn , euclidean , VGGFace2
OpenFace , fastmtcnn , euclidean_l2 , raw
OpenFace , fastmtcnn , euclidean_l2 , Facenet
OpenFace , fastmtcnn , euclidean_l2 , VGGFace
OpenFace , fastmtcnn , euclidean_l2 , VGGFace2
ArcFace , opencv , cosine , raw
ArcFace , opencv , cosine , Facenet
ArcFace , opencv , cosine , VGGFace
ArcFace , opencv , cosine , VGGFace2
ArcFace , opencv , euclidean_l2 , raw
ArcFace , opencv , euclidean_l2 , Facenet
ArcFace , opencv , euclidean_l2 , VGGFace
ArcFace , opencv , euclidean_l2 , VGGFace2
ArcFace , ssd , cosine , raw
ArcFace , ssd , cosine , Facenet
ArcFace , ssd , cosine , VGGFace
ArcFace , ssd , cosine , VGGFace2
ArcFace , ssd , euclidean , base
ArcFace , ssd , euclidean , Facenet2018
ArcFace , ssd , euclidean_l2 , raw
ArcFace , ssd , euclidean_l2 , Facenet
ArcFace , ssd , euclidean_l2 , VGGFace
ArcFace , ssd , euclidean_l2 , VGGFace2
ArcFace , dlib , cosine , raw
ArcFace , dlib , cosine , Facenet
ArcFace , dlib , cosine , VGGFace
ArcFace , dlib , cosine , VGGFace2
ArcFace , dlib , euclidean , base
ArcFace , dlib , euclidean , Facenet2018
ArcFace , dlib , euclidean , ArcFace
ArcFace , dlib , euclidean_l2 , raw
ArcFace , dlib , euclidean_l2 , Facenet
ArcFace , dlib , euclidean_l2 , VGGFace
ArcFace , dlib , euclidean_l2 , VGGFace2
ArcFace , mtcnn , cosine , raw
ArcFace , mtcnn , cosine , Facenet
ArcFace , mtcnn , cosine , VGGFace
ArcFace , mtcnn , cosine , VGGFace2
ArcFace , mtcnn , euclidean , base
ArcFace , mtcnn , euclidean_l2 , raw
ArcFace , mtcnn , euclidean_l2 , Facenet
ArcFace , mtcnn , euclidean_l2 , VGGFace
ArcFace , mtcnn , euclidean_l2 , VGGFace2
ArcFace , retinaface , cosine , raw
ArcFace , retinaface , cosine , Facenet
ArcFace , retinaface , cosine , VGGFace
ArcFace , retinaface , cosine , VGGFace2
ArcFace , retinaface , euclidean , base
ArcFace , retinaface , euclidean_l2 , raw
ArcFace , retinaface , euclidean_l2 , Facenet
ArcFace , retinaface , euclidean_l2 , VGGFace
ArcFace , retinaface , euclidean_l2 , VGGFace2
ArcFace , mediapipe , cosine , raw
ArcFace , mediapipe , cosine , Facenet
ArcFace , mediapipe , cosine , VGGFace
ArcFace , mediapipe , cosine , VGGFace2
ArcFace , mediapipe , euclidean_l2 , raw
ArcFace , mediapipe , euclidean_l2 , Facenet
ArcFace , mediapipe , euclidean_l2 , VGGFace
ArcFace , mediapipe , euclidean_l2 , VGGFace2
ArcFace , yolov8 , cosine , raw
ArcFace , yolov8 , cosine , Facenet
ArcFace , yolov8 , cosine , VGGFace
ArcFace , yolov8 , cosine , VGGFace2
ArcFace , yolov8 , euclidean_l2 , raw
ArcFace , yolov8 , euclidean_l2 , Facenet
ArcFace , yolov8 , euclidean_l2 , VGGFace
ArcFace , yolov8 , euclidean_l2 , VGGFace2
ArcFace , yunet , cosine , raw
ArcFace , yunet , cosine , Facenet
ArcFace , yunet , cosine , VGGFace
ArcFace , yunet , cosine , VGGFace2
ArcFace , yunet , euclidean , base
ArcFace , yunet , euclidean_l2 , raw
ArcFace , yunet , euclidean_l2 , Facenet
ArcFace , yunet , euclidean_l2 , VGGFace
ArcFace , yunet , euclidean_l2 , VGGFace2
ArcFace , fastmtcnn , cosine , raw
ArcFace , fastmtcnn , cosine , Facenet
ArcFace , fastmtcnn , cosine , VGGFace
ArcFace , fastmtcnn , cosine , VGGFace2
ArcFace , fastmtcnn , euclidean , base
ArcFace , fastmtcnn , euclidean_l2 , raw
ArcFace , fastmtcnn , euclidean_l2 , Facenet
ArcFace , fastmtcnn , euclidean_l2 , VGGFace
ArcFace , fastmtcnn , euclidean_l2 , VGGFace2
Dlib , opencv , cosine , base
Dlib , opencv , cosine , raw
Dlib , opencv , cosine , Facenet
Dlib , opencv , cosine , ArcFace
Dlib , opencv , euclidean , base
Dlib , opencv , euclidean , raw
Dlib , opencv , euclidean , Facenet
Dlib , opencv , euclidean , Facenet2018
Dlib , opencv , euclidean , VGGFace
Dlib , opencv , euclidean , VGGFace2
Dlib , opencv , euclidean , ArcFace
Dlib , opencv , euclidean_l2 , base
Dlib , opencv , euclidean_l2 , raw
Dlib , opencv , euclidean_l2 , Facenet
Dlib , opencv , euclidean_l2 , Facenet2018
Dlib , opencv , euclidean_l2 , ArcFace
Dlib , ssd , cosine , Facenet
Dlib , ssd , cosine , Facenet2018
Dlib , ssd , cosine , VGGFace
Dlib , ssd , cosine , ArcFace
Dlib , ssd , euclidean , Facenet
Dlib , ssd , euclidean , Facenet2018
Dlib , ssd , euclidean , VGGFace
Dlib , ssd , euclidean , VGGFace2
Dlib , ssd , euclidean , ArcFace
Dlib , ssd , euclidean_l2 , Facenet
Dlib , ssd , euclidean_l2 , Facenet2018
Dlib , ssd , euclidean_l2 , VGGFace
Dlib , ssd , euclidean_l2 , VGGFace2
Dlib , ssd , euclidean_l2 , ArcFace
Dlib , dlib , cosine , Facenet
Dlib , dlib , cosine , VGGFace
Dlib , dlib , euclidean , base
Dlib , dlib , euclidean , raw
Dlib , dlib , euclidean , Facenet
Dlib , dlib , euclidean , Facenet2018
Dlib , dlib , euclidean , VGGFace
Dlib , dlib , euclidean , VGGFace2
Dlib , dlib , euclidean , ArcFace
Dlib , dlib , euclidean_l2 , base
Dlib , dlib , euclidean_l2 , raw
Dlib , dlib , euclidean_l2 , Facenet
Dlib , dlib , euclidean_l2 , Facenet2018
Dlib , dlib , euclidean_l2 , VGGFace
Dlib , dlib , euclidean_l2 , VGGFace2
Dlib , dlib , euclidean_l2 , ArcFace
Dlib , mtcnn , cosine , Facenet
Dlib , mtcnn , euclidean , Facenet
Dlib , mtcnn , euclidean , Facenet2018
Dlib , mtcnn , euclidean , ArcFace
Dlib , mtcnn , euclidean_l2 , Facenet
Dlib , mtcnn , euclidean_l2 , Facenet2018
Dlib , mtcnn , euclidean_l2 , ArcFace
Dlib , retinaface , cosine , Facenet
Dlib , retinaface , cosine , Facenet2018
Dlib , retinaface , cosine , ArcFace
Dlib , retinaface , euclidean , Facenet
Dlib , retinaface , euclidean , Facenet2018
Dlib , retinaface , euclidean , VGGFace
Dlib , retinaface , euclidean , VGGFace2
Dlib , retinaface , euclidean , ArcFace
Dlib , retinaface , euclidean_l2 , Facenet
Dlib , retinaface , euclidean_l2 , Facenet2018
Dlib , retinaface , euclidean_l2 , ArcFace
Dlib , mediapipe , cosine , Facenet
Dlib , mediapipe , euclidean , Facenet
Dlib , mediapipe , euclidean , Facenet2018
Dlib , mediapipe , euclidean , VGGFace
Dlib , mediapipe , euclidean , VGGFace2
Dlib , mediapipe , euclidean , ArcFace
Dlib , mediapipe , euclidean_l2 , Facenet
Dlib , mediapipe , euclidean_l2 , Facenet2018
Dlib , yolov8 , cosine , Facenet
Dlib , yolov8 , euclidean , Facenet
Dlib , yolov8 , euclidean , Facenet2018
Dlib , yolov8 , euclidean , VGGFace
Dlib , yolov8 , euclidean , VGGFace2
Dlib , yolov8 , euclidean , ArcFace
Dlib , yolov8 , euclidean_l2 , Facenet
Dlib , yolov8 , euclidean_l2 , Facenet2018
Dlib , yolov8 , euclidean_l2 , ArcFace
Dlib , yunet , cosine , Facenet
Dlib , yunet , euclidean , Facenet
Dlib , yunet , euclidean , Facenet2018
Dlib , yunet , euclidean , VGGFace
Dlib , yunet , euclidean , VGGFace2
Dlib , yunet , euclidean , ArcFace
Dlib , yunet , euclidean_l2 , Facenet
Dlib , yunet , euclidean_l2 , Facenet2018
Dlib , yunet , euclidean_l2 , ArcFace
Dlib , fastmtcnn , cosine , Facenet
Dlib , fastmtcnn , euclidean , Facenet
Dlib , fastmtcnn , euclidean , Facenet2018
Dlib , fastmtcnn , euclidean , VGGFace
Dlib , fastmtcnn , euclidean , VGGFace2
Dlib , fastmtcnn , euclidean , ArcFace
Dlib , fastmtcnn , euclidean_l2 , Facenet
Dlib , fastmtcnn , euclidean_l2 , Facenet2018
Dlib , fastmtcnn , euclidean_l2 , ArcFace
SFace , opencv , cosine , raw
SFace , opencv , cosine , Facenet
SFace , opencv , cosine , VGGFace
SFace , opencv , cosine , VGGFace2
SFace , opencv , euclidean , raw
SFace , opencv , euclidean , Facenet
SFace , opencv , euclidean , Facenet2018
SFace , opencv , euclidean , VGGFace
SFace , opencv , euclidean , VGGFace2
SFace , opencv , euclidean , ArcFace
SFace , opencv , euclidean_l2 , raw
SFace , opencv , euclidean_l2 , Facenet
SFace , opencv , euclidean_l2 , VGGFace
SFace , opencv , euclidean_l2 , VGGFace2
SFace , ssd , cosine , Facenet
SFace , ssd , cosine , VGGFace2
SFace , ssd , euclidean , base
SFace , ssd , euclidean , raw
SFace , ssd , euclidean , Facenet
SFace , ssd , euclidean , Facenet2018
SFace , ssd , euclidean , VGGFace
SFace , ssd , euclidean , VGGFace2
SFace , ssd , euclidean , ArcFace
SFace , ssd , euclidean_l2 , Facenet
SFace , ssd , euclidean_l2 , VGGFace2
SFace , dlib , cosine , Facenet
SFace , dlib , cosine , VGGFace
SFace , dlib , cosine , VGGFace2
SFace , dlib , euclidean , raw
SFace , dlib , euclidean , Facenet
SFace , dlib , euclidean , Facenet2018
SFace , dlib , euclidean , VGGFace
SFace , dlib , euclidean , VGGFace2
SFace , dlib , euclidean , ArcFace
SFace , dlib , euclidean_l2 , Facenet
SFace , dlib , euclidean_l2 , VGGFace
SFace , mtcnn , cosine , Facenet
SFace , mtcnn , cosine , VGGFace
SFace , mtcnn , cosine , VGGFace2
SFace , mtcnn , euclidean , raw
SFace , mtcnn , euclidean , Facenet
SFace , mtcnn , euclidean , Facenet2018
SFace , mtcnn , euclidean , VGGFace
SFace , mtcnn , euclidean , VGGFace2
SFace , mtcnn , euclidean , ArcFace
SFace , mtcnn , euclidean_l2 , VGGFace
SFace , retinaface , cosine , Facenet
SFace , retinaface , cosine , VGGFace2
SFace , retinaface , euclidean , base
SFace , retinaface , euclidean , raw
SFace , retinaface , euclidean , Facenet
SFace , retinaface , euclidean , Facenet2018
SFace , retinaface , euclidean , VGGFace
SFace , retinaface , euclidean , VGGFace2
SFace , retinaface , euclidean , ArcFace
SFace , retinaface , euclidean_l2 , Facenet
SFace , retinaface , euclidean_l2 , VGGFace2
SFace , mediapipe , cosine , raw
SFace , mediapipe , cosine , Facenet
SFace , mediapipe , cosine , VGGFace
SFace , mediapipe , cosine , VGGFace2
SFace , mediapipe , euclidean , raw
SFace , mediapipe , euclidean , Facenet
SFace , mediapipe , euclidean , Facenet2018
SFace , mediapipe , euclidean , VGGFace
SFace , mediapipe , euclidean , VGGFace2
SFace , mediapipe , euclidean , ArcFace
SFace , mediapipe , euclidean_l2 , raw
SFace , mediapipe , euclidean_l2 , Facenet
SFace , mediapipe , euclidean_l2 , VGGFace
SFace , mediapipe , euclidean_l2 , VGGFace2
SFace , yolov8 , cosine , Facenet
SFace , yolov8 , cosine , VGGFace
SFace , yolov8 , cosine , VGGFace2
SFace , yolov8 , euclidean , raw
SFace , yolov8 , euclidean , Facenet
SFace , yolov8 , euclidean , Facenet2018
SFace , yolov8 , euclidean , VGGFace
SFace , yolov8 , euclidean , VGGFace2
SFace , yolov8 , euclidean , ArcFace
SFace , yolov8 , euclidean_l2 , Facenet
SFace , yolov8 , euclidean_l2 , VGGFace2
SFace , yunet , cosine , Facenet
SFace , yunet , cosine , VGGFace
SFace , yunet , cosine , VGGFace2
SFace , yunet , euclidean , raw
SFace , yunet , euclidean , Facenet
SFace , yunet , euclidean , Facenet2018
SFace , yunet , euclidean , VGGFace
SFace , yunet , euclidean , VGGFace2
SFace , yunet , euclidean , ArcFace
SFace , yunet , euclidean_l2 , Facenet
SFace , yunet , euclidean_l2 , VGGFace2
SFace , fastmtcnn , cosine , raw
SFace , fastmtcnn , cosine , Facenet
SFace , fastmtcnn , cosine , VGGFace
SFace , fastmtcnn , cosine , VGGFace2
SFace , fastmtcnn , euclidean , raw
SFace , fastmtcnn , euclidean , Facenet
SFace , fastmtcnn , euclidean , Facenet2018
SFace , fastmtcnn , euclidean , VGGFace
SFace , fastmtcnn , euclidean , VGGFace2
SFace , fastmtcnn , euclidean , ArcFace
SFace , fastmtcnn , euclidean_l2 , Facenet
SFace , fastmtcnn , euclidean_l2 , VGGFace
SFace , fastmtcnn , euclidean_l2 , VGGFace2

★ まとめ

前述まででモデル「DeepFace」「DeepID」は使用できないことが確定しましたが、モデル「VGG-Face」はケース2では7位でしたから選ばないと思います。

【カウントtest03B True】
MODEL case 1 case 2
VGG-Face 1 7
Facenet 3 3
Facenet512 5 1
OpenFace 7 5
DeepFace 8 8
DeepID 9 8
ArcFace 4 6
Dlib 2 3
SFace 6 2
【NG count】
MODEL case 1 case 2
VGG-Face 9 3
Facenet 7 6
Facenet512 5 9
OpenFace 3 5
DeepFace 2 1
DeepID 1 1
ArcFace 6 4
Dlib 8 6
SFace 4 8

ところが、「DeepFace.verify」メソッドのデフォルトパラメータは「VGG-Face , opencv , cosine , base」となっておりモデル「VGG-Face」を選択しています。

【DF_FaceVerification_Aggregation02.py】
# img1_path: Union[str, np.ndarray, List[float]]
# img2_path: Union[str, np.ndarray, List[float]]
# model_name: str = "VGG-Face"
# detector_backend: str = "opencv"
# distance_metric: str = "cosine"
# enforce_detection: bool = True
# align: bool = True
# expand_percentage: int = 0
# normalization: str = "base"
# silent: bool = False

「VGG-Face , opencv , cosine , base」の組み合わせを「DF_FaceVerification 正解組み合わせ表」でみると、一番初めに出てきます。先にも解説したように、モデル単位の合計値は正解率ではありません。このため、前述組み合わせパターンの中にあれば、OKということになります。
つまり、モデル・バックエンド・類似度・正規化の組み合わせは自由度はあるものの、「DF_FaceVerification 正解組み合わせ表」によって使用の有無は限定されてしまうということです。

やはり、「万能」を期待するなら平均的デフォルトを使用するのがよいようです。


≪清須電脳倶楽部メインページへ戻る場合はここをクリックしてください≫
Copyright(c)2018 GGE Kiyosu Cyber Club Allrights Reserved
inserted by FC2 system