LoginSignup
0
0

顔認証システムを評価する方法

Posted at

マイナンバーカードのような顔認識ソフトを評価する方法

次の形で定義する関数を評価する

evaluate(img_camera,img_card)

入力

img_camaera: カメラで撮影した画像データ
img_card: カード内に保管された画像データ

出力

True: カメラとカードの人物は同一
False: カメラとカードの人物は異なる

比較に使う関数

1) evaluate00
	常に、False を返す

2) evaluate01
	10回に1回は True を返し、9回は、False を返す

3) evaluate02
	10回に2回は True を返し、8回は、False を返す

4) evaluate03
	10回に3回は True を返し、7回は、False を返す

5) evaluate04
	10回に4回は True を返し、6回は、False を返す

6) evaluate05
	10回に5回は True を返し、5回は、False を返す

7) evaluate06
	10回に6回は True を返し、4回は、False を返す

8) evaluate07
	10回に7回は True を返し、3回は、False を返す

9) evaluate08
	10回に8回は True を返し、2回は、False を返す

10) evaluate09
	10回に9回は True を返し、1回は、False を返す

11) evaluate10
	常に、True を返す

関数

evaluate.py
# ---------------------------------------------------------------------
#   evaluate.py
#
#                                       Aug/31/2023
# ---------------------------------------------------------------------
import random
#
# ---------------------------------------------------------------------
def evaluate00(img_camaera,img_card):
    return False
#
# ---------------------------------------------------------------------
def evaluate01(img_camaera,img_card):
    rvalue = False
    aa = random.randint(1, 10)
    if (aa <= 1):
        rvalue = True
    return rvalue
#
# ---------------------------------------------------------------------
def evaluate02(img_camaera,img_card):
    rvalue = False
    aa = random.randint(1, 10)
    if (aa <= 2):
        rvalue = True
    return rvalue
#
# ---------------------------------------------------------------------
def evaluate03(img_camaera,img_card):
    rvalue = False
    aa = random.randint(1, 10)
    if (aa <= 3):
        rvalue = True
    return rvalue
#
# ---------------------------------------------------------------------
def evaluate04(img_camaera,img_card):
    rvalue = False
    aa = random.randint(1, 10)
    if (aa <= 4):
        rvalue = True
    return rvalue
#
# ---------------------------------------------------------------------
def evaluate05(img_camaera,img_card):
    rvalue = False
    aa = random.randint(1, 10)
    if (aa <= 5):
        rvalue = True
    return rvalue
#
# ---------------------------------------------------------------------
def evaluate06(img_camaera,img_card):
    rvalue = False
    aa = random.randint(1, 10)
    if (aa <= 6):
        rvalue = True
    return rvalue
#
# ---------------------------------------------------------------------
def evaluate07(img_camaera,img_card):
    rvalue = False
    aa = random.randint(1, 10)
    if (aa <= 7):
        rvalue = True
    return rvalue
#
# ---------------------------------------------------------------------
def evaluate08(img_camaera,img_card):
    rvalue = False
    aa = random.randint(1, 10)
    if (aa <= 8):
        rvalue = True
    return rvalue
#
# ---------------------------------------------------------------------
def evaluate09(img_camaera,img_card):
    rvalue = False
    aa = random.randint(1, 10)
    if (aa <= 9):
        rvalue = True
    return rvalue
#
# ---------------------------------------------------------------------
def evaluate10(img_camaera,img_card):
    return True
#
# ---------------------------------------------------------------------

テストプログラム

test00.py
#! /usr/bin/python
#
#   test00.py
#
#                           Aug/31/2023
# ---------------------------------------------------------------------
from PIL import Image
from evaluate import evaluate00
from evaluate import evaluate01
from evaluate import evaluate02
from evaluate import evaluate03
from evaluate import evaluate04
from evaluate import evaluate05
from evaluate import evaluate06
from evaluate import evaluate07
from evaluate import evaluate08
from evaluate import evaluate09
from evaluate import evaluate10
# ---------------------------------------------------------------------

file_camera = "camera.png"
file_card = "card.png"

img_camaera = Image.open(file_camera)
img_card = Image.open(file_card)

print(evaluate00(img_camaera,img_card))
print(evaluate01(img_camaera,img_card))
print(evaluate02(img_camaera,img_card))
print(evaluate03(img_camaera,img_card))
print(evaluate04(img_camaera,img_card))
print(evaluate05(img_camaera,img_card))
print(evaluate06(img_camaera,img_card))
print(evaluate07(img_camaera,img_card))
print(evaluate08(img_camaera,img_card))
print(evaluate09(img_camaera,img_card))
print(evaluate10(img_camaera,img_card))

# ---------------------------------------------------------------------

実行結果

$ ./test00.py 
False
False
False
False
False
True
False
True
False
True
True

テスト方法

11個のプログラムと、評価対象のプログラムで、
カメラ画像と、保存された画像の組み合わせを変えてテストを行う。

例えば、10人の協力者が、それぞれのマイナンバーカード相当のデータを持ち込むと、
10 x 10 で、100回のテストを行い。その正当率で評価する。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0