マイナンバーカードのような顔認識ソフトを評価する方法
次の形で定義する関数を評価する
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回のテストを行い。その正当率で評価する。