前言:
虽然本段代码的目标是准确率计算,但识别率只是提供了一个简单的思路,单纯计算了正确的概率。代码的主要部分还是图片的匹配识别内容,所有的代码块都有响应的详尽解释,适合初期接触和了解的learner阅读。
在后续准备训练数据时繁琐的工作令人头大,准备了几十个图像就花去了我大半时间,图像处理中往往需要大量图片进行训练,显然这种情况下这种方法是不可行的,不过目前也是一种思路,接下来在接触的过程中会继续了解相关的计算和评测方法,争取找到最佳,计算效果最好的方法进行准确率的计算。本人也是才接触这部分内容,了解内容有限,大家有比较好的方法方式欢迎评论交流。
1 概率计算公式
实现自动计算识别准确概率:
r a t e = n r / ( n c − n u ) rate = n^r/(n^c-n^u) rate=nr/(nc−nu)
其中,上式rate为识别准确概率, nr为正确识别人脸图片个数,nc为文件夹下图片总数量,nu为未识别到人脸区域图像数量。
2 实现代码部分
该方法正确计算前提是:**将测试图像和训练的图像分辨放在一个文件夹下,并将测试图像与已有的训练图像使用相同的图片文件名称和格式。**因为我目前采取的是将图片名称作为图像是否正确识别判断的根据,根据测试图像名称和匹配的图像名称是否相同,判断识别是否正确。也尝试过使用面部编码数据是否相等进行判断,测试结果显然,这种方式是不可行 的,因为同一个人在不同照片中由于角度或者场景等各种因素的影响,编码方式不可能完全相同。
识别方法采用:opencv + face_recognition
识别率计算代码如下:
"""
import os
# class TestAccuracyRate():
import cv2
import face_recognition
import numpy as np
def trainImage():
train_dir = 'rate_train_data' # 训练文件夹
# 将训练文件夹下的图片放到一个列表中
train_image_list = os.listdir(train